Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
rubberduckycooly
GitHub Repository: rubberduckycooly/Sonic-1-Sonic-2-2013-Script-Decompilation
Path: blob/master/Sonic 2/Scripts/Global/FireShield.txt
1480 views
1
// ----------------------------------
2
// RSDK Project: Sonic 2
3
// Script Description: Fire Shield 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.value0 : object.timer
13
private alias object.value18 : object.sortedDrawOrder
14
15
private alias -1 : DRAWORDER_PLAYER
16
17
private alias object.state : player.state
18
private alias object.xpos : player.xpos
19
private alias object.ypos : player.ypos
20
21
// Flame shield states
22
private alias 0 : FIRESHIELD_IDLE_SETUP
23
private alias 1 : FIRESHIELD_IDLE
24
private alias 2 : FIRESHIELD_DASH_SETUP
25
private alias 3 : FIRESHIELD_DASH
26
27
// Super States
28
private alias 1 : SUPERSTATE_SUPER
29
30
31
// ========================
32
// Tables
33
// ========================
34
35
// Passive/idle ver - just staying around the player normally
36
private table FireShield_idleFrameTable
37
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 6, 7, 4, 5, 2, 3, 0, 1
38
end table
39
40
// Active - During flame dash
41
private table FireShield_dashFrameTable
42
10, 11, 12, 10, 12, 13, 10, 11, 12, 10, 12, 13, 0
43
end table
44
45
46
// ========================
47
// Editor Events
48
// ========================
49
50
event ObjectUpdate
51
object.drawOrder = DRAWORDER_PLAYER
52
53
// Unload if the player shouldn't have a shield
54
if player[-playerCount].state == Player_State_Death
55
object.type = TypeName[Blank Object]
56
end if
57
58
if player[-playerCount].state == Player_State_Drown
59
object.type = TypeName[Blank Object]
60
end if
61
62
switch object.state
63
case FIRESHIELD_IDLE_SETUP
64
object.animationTimer = 0
65
object.timer = 0
66
object.sortedDrawOrder = 0
67
object.direction = FLIP_NONE
68
GetTableValue(object.frame, object.timer, FireShield_idleFrameTable)
69
object.state++
70
// Fall through to below
71
case FIRESHIELD_IDLE
72
object.animationTimer++
73
74
if object.animationTimer >= 3
75
object.animationTimer = 1
76
object.timer++
77
object.sortedDrawOrder ^= 1
78
79
if object.timer >= 10
80
object.direction = FLIP_Y
81
if object.timer >= 18
82
object.timer = 0
83
object.direction = FLIP_NONE
84
end if
85
end if
86
87
GetTableValue(object.frame, object.timer, FireShield_idleFrameTable)
88
end if
89
break
90
91
case FIRESHIELD_DASH_SETUP
92
object.animationTimer = 0
93
object.timer = 0
94
object.sortedDrawOrder = 0
95
GetTableValue(object.frame, object.timer, FireShield_dashFrameTable)
96
object.state++
97
// Fall through again
98
case FIRESHIELD_DASH
99
object.animationTimer++
100
101
if object.animationTimer >= 3
102
103
object.animationTimer = 1
104
object.timer++
105
106
if object.timer >= 12
107
object.state = FIRESHIELD_IDLE_SETUP
108
end if
109
110
GetTableValue(object.frame, object.timer, FireShield_dashFrameTable)
111
end if
112
break
113
114
end switch
115
end event
116
117
118
event ObjectDraw
119
if Player_superState != SUPERSTATE_SUPER
120
DrawSpriteFX(object.frame, FX_FLIP, player[-playerCount].xpos, player[-playerCount].ypos)
121
end if
122
end event
123
124
125
event ObjectStartup
126
127
LoadSpriteSheet("Global/Items3.gif")
128
129
// Flame shield frames
130
SpriteFrame(-16, 9, 37, 15, 131, 52)
131
SpriteFrame(-20, -24, 39, 15, 131, 68)
132
SpriteFrame(-20, 3, 40, 21, 148, 101)
133
SpriteFrame(-23, -24, 47, 23, 189, 101)
134
SpriteFrame(-24, -9, 48, 29, 148, 125)
135
SpriteFrame(-24, -19, 48, 27, 197, 125)
136
SpriteFrame(-24, -15, 48, 28, 1, 132)
137
SpriteFrame(-24, -21, 48, 34, 50, 140)
138
SpriteFrame(-23, -17, 46, 32, 99, 140)
139
SpriteFrame(-24, -22, 48, 42, 1, 161)
140
SpriteFrame(-4, -21, 20, 43, 64, 175)
141
SpriteFrame(-24, -23, 48, 46, 85, 175)
142
SpriteFrame(-32, -19, 56, 38, 135, 175)
143
SpriteFrame(-40, -24, 63, 47, 192, 166)
144
SpriteFrame(0, 0, 1, 1, 1, 1) // (Empty)
145
end event
146
147
148
// ========================
149
// Editor Events
150
// ========================
151
152
event RSDKDraw
153
DrawSprite(0)
154
end event
155
156
157
event RSDKLoad
158
LoadSpriteSheet("Global/Display.gif")
159
SpriteFrame(-16, -16, 32, 32, 1, 143)
160
161
SetVariableAlias(ALIAS_VAR_PROPVAL, "unused")
162
end event
163
164