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/SuperSpark.txt
1480 views
1
// ----------------------------------
2
// RSDK Project: Sonic 2
3
// Script Description: Super Spark 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.propertyValue : object.isChild
13
private alias object.value0 : object.timer
14
15
private alias 0 : SUPERSPARK_SETUP
16
private alias 1 : SUPERSPARK_ANIMATE1
17
private alias 2 : SUPERSPARK_ANIMATE2
18
private alias 3 : SUPERSPARK_DELAY
19
private alias 4 : SUPERSPARK_FINISHED
20
21
// Player aliases
22
private alias object.xpos : player.xpos
23
private alias object.ypos : player.ypos
24
private alias object.speed : player.speed
25
private alias object.value18 : player.sortedDrawOrder
26
private alias object.value42 : player.prevGravity
27
28
private alias -1 : DRAWORDER_PLAYER
29
30
31
// ========================
32
// Events
33
// ========================
34
35
36
event ObjectUpdate
37
if object.isChild == false
38
object.xpos = player[-playerCount].xpos
39
object.ypos = player[-playerCount].ypos
40
end if
41
42
switch object.state
43
case SUPERSPARK_SETUP
44
if player[-playerCount].prevGravity == 0
45
temp0 = player[-playerCount].speed
46
Abs(temp0)
47
48
if temp0 >= 0x80000
49
object.drawOrder = DRAWORDER_PLAYER
50
object.timer = 0
51
object.frame = 0
52
object.state++
53
end if
54
end if
55
break
56
57
case SUPERSPARK_ANIMATE1
58
object.timer++
59
if object.timer >= 3
60
object.timer = 1
61
object.frame++
62
if object.frame >= 2
63
object.state++
64
end if
65
end if
66
break
67
68
case SUPERSPARK_ANIMATE2
69
object.timer++
70
if object.timer >= 3
71
object.timer = 1
72
object.frame--
73
if object.frame <= 0
74
object.state++
75
end if
76
end if
77
break
78
79
case SUPERSPARK_DELAY
80
object.timer++
81
if object.timer >= 3
82
object.timer = 9
83
object.state++
84
end if
85
break
86
87
case SUPERSPARK_FINISHED
88
if object.isChild == true
89
object.type = TypeName[Blank Object]
90
end if
91
92
object.timer++
93
if object.timer >= 13
94
temp0 = player[-playerCount].speed
95
Abs(temp0)
96
CheckLower(temp0, 0x80000)
97
temp0 = checkResult
98
CheckEqual(player[-playerCount].prevGravity, 0)
99
temp0 &= checkResult
100
CheckEqual(object[-playerCount].state, Player_State_Climb)
101
temp0 |= checkResult
102
103
if temp0 == true
104
object.state = SUPERSPARK_SETUP
105
else
106
object.timer = 0
107
CreateTempObject(TypeName[Super Spark], true, object[-playerCount].xpos, object[-playerCount].ypos)
108
object[tempObjectPos].frame = 0
109
object[tempObjectPos].state = SUPERSPARK_ANIMATE1
110
object[tempObjectPos].drawOrder = player[-playerCount].sortedDrawOrder
111
end if
112
end if
113
break
114
115
end switch
116
end event
117
118
119
event ObjectDraw
120
switch object.state
121
default
122
case SUPERSPARK_SETUP
123
case SUPERSPARK_FINISHED
124
break
125
126
case SUPERSPARK_ANIMATE1
127
case SUPERSPARK_ANIMATE2
128
case SUPERSPARK_DELAY
129
DrawSprite(object.frame)
130
break
131
132
end switch
133
end event
134
135
136
event ObjectStartup
137
LoadSpriteSheet("Global/Items.gif")
138
139
SpriteFrame(-8, -8, 16, 16, 200, 33)
140
SpriteFrame(-16, -16, 32, 32, 223, 116)
141
SpriteFrame(-24, -24, 48, 48, 207, 149)
142
end event
143
144
145
// ========================
146
// Editor Events
147
// ========================
148
149
event RSDKDraw
150
DrawSprite(0)
151
end event
152
153
154
event RSDKLoad
155
LoadSpriteSheet("Global/Items.gif")
156
SpriteFrame(-8, -8, 16, 16, 200, 33)
157
158
SetVariableAlias(ALIAS_VAR_PROPVAL, "unused")
159
end event
160