Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
rubberduckycooly
GitHub Repository: rubberduckycooly/Sonic-1-Sonic-2-2013-Script-Decompilation
Path: blob/master/Sonic 1/Scripts/Special/TailsObject.txt
1480 views
1
// ----------------------------------
2
// RSDK Project: Sonic 1
3
// Script Description: Tails Object
4
// Script Author: Christian Whitehead/Simon Thomley
5
// Unpacked by Rubberduckycooly's script unpacker
6
// ----------------------------------
7
8
// ========================
9
// Aliases
10
// ========================
11
12
private alias object.xpos : player.xpos
13
private alias object.ypos : player.ypos
14
private alias object.xvel : player.xvel
15
private alias object.yvel : player.yvel
16
private alias object.direction : player.direction
17
private alias object.drawOrder : player.drawOrder
18
private alias object.visible : player.visible
19
private alias object.value8 : player.moveVelocity.x
20
private alias object.value9 : player.moveVelocity.y
21
22
23
// ========================
24
// Events
25
// ========================
26
27
event ObjectUpdate
28
arrayPos0 = player[0].drawOrder
29
screen[arrayPos0].drawListSize = 2
30
GetDrawListEntityRef(temp0, arrayPos0, 0)
31
SetDrawListEntityRef(object.entityPos, arrayPos0, 0)
32
SetDrawListEntityRef(temp0, arrayPos0, 1)
33
end event
34
35
36
event ObjectDraw
37
object.direction = player[0].direction
38
object.xvel = player[0].xvel
39
object.xvel += player[0].moveVelocity.x
40
object.yvel = player[0].yvel
41
object.yvel += player[0].moveVelocity.y
42
43
temp0 = object.frame
44
temp0 >>= 2
45
CheckEqual(object.xvel, 0)
46
temp1 = checkResult
47
CheckEqual(object.yvel, 0)
48
temp1 &= checkResult
49
if temp1 == false
50
ATan2(object.rotation, object.xvel, object.yvel)
51
object.rotation += 16
52
temp2 = 512
53
temp2 -= Player_stageRotation
54
temp2 >>= 1
55
object.rotation += temp2
56
object.rotation &= 255
57
object.rotation >>= 5
58
59
switch object.rotation
60
case 0
61
case 8
62
temp0 += 5
63
object.rotation = 0
64
break
65
66
case 1
67
temp0 += 8
68
if object.direction == FACING_RIGHT
69
object.rotation = 64
70
else
71
object.rotation = 0
72
end if
73
break
74
75
case 2
76
temp0 += 5
77
object.rotation = 64
78
break
79
80
case 3
81
temp0 += 8
82
if object.direction == FACING_RIGHT
83
object.rotation = 128
84
else
85
object.rotation = 64
86
end if
87
break
88
89
case 4
90
temp0 += 5
91
object.rotation = 128
92
break
93
94
case 5
95
temp0 += 8
96
if object.direction == FACING_RIGHT
97
object.rotation = 192
98
else
99
object.rotation = 128
100
end if
101
break
102
103
case 6
104
temp0 += 5
105
object.rotation = 192
106
break
107
108
case 7
109
temp0 += 8
110
if object.direction == FACING_RIGHT
111
object.rotation = 0
112
else
113
object.rotation = 192
114
end if
115
break
116
117
end switch
118
119
if object.direction == FACING_LEFT
120
object.rotation += 128
121
end if
122
else
123
temp0 += 5
124
object.rotation = 0
125
end if
126
127
object.rotation <<= 1
128
if player[0].visible == true
129
DrawSpriteFX(temp0, FX_ROTATE, player[0].xpos, player[0].ypos)
130
end if
131
132
object.frame++
133
object.frame %= 12
134
end event
135
136
137
event ObjectStartup
138
if stage.playerListPos == PLAYER_TAILS_A
139
LoadSpriteSheet("Players/Tails1.gif")
140
141
// Place the Tails Object into the scene
142
object[1].type = TypeName[Tails Object]
143
object[1].drawOrder = 8 // In the official scripts this would be 7, but we're setting it to 8 as a workaround for an Origins bug
144
object[1].priority = PRIORITY_ACTIVE
145
146
SpriteFrame(-22, -8, 16, 24, 82, 199)
147
SpriteFrame(-26, -8, 20, 24, 99, 199)
148
SpriteFrame(-26, -8, 20, 24, 120, 199)
149
SpriteFrame(-26, -8, 20, 24, 141, 199)
150
SpriteFrame(-26, -8, 20, 24, 162, 199)
151
SpriteFrame(-35, -8, 24, 16, 231, 166)
152
SpriteFrame(-35, -8, 24, 16, 231, 183)
153
SpriteFrame(-35, -8, 24, 16, 231, 200)
154
SpriteFrame(-25, 9, 20, 16, 235, 217)
155
SpriteFrame(-25, 9, 18, 16, 237, 234)
156
SpriteFrame(-25, 9, 20, 16, 216, 234)
157
SpriteFrame(-30, -6, 24, 16, 231, 166)
158
SpriteFrame(-30, -6, 24, 16, 231, 183)
159
SpriteFrame(-30, -6, 24, 16, 231, 200)
160
end if
161
end event
162
163
164
// ========================
165
// Editor Events
166
// ========================
167
168
event RSDKDraw
169
DrawSprite(0)
170
end event
171
172
173
event RSDKLoad
174
LoadSpriteSheet("Players/Tails1.gif")
175
SpriteFrame(-22, -8, 16, 24, 82, 199)
176
177
SetVariableAlias(ALIAS_VAR_PROPVAL, "unused")
178
end event
179
180