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/Global/SuperSpark.txt
1482 views
1
// ----------------------------------
2
// RSDK Project: Sonic 1
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
event ObjectUpdate
36
if object.isChild == false
37
object.xpos = player[-playerCount].xpos
38
object.ypos = player[-playerCount].ypos
39
end if
40
41
switch object.state
42
case SUPERSPARK_SETUP
43
if player[-playerCount].prevGravity == GRAVITY_GROUND
44
temp0 = player[-playerCount].speed
45
Abs(temp0)
46
47
if temp0 >= 0x80000
48
object.drawOrder = DRAWORDER_PLAYER
49
object.timer = 0
50
object.frame = 0
51
object.state++
52
end if
53
end if
54
break
55
56
case SUPERSPARK_ANIMATE1 // play the 3 frames in order
57
object.timer++
58
if object.timer >= 3
59
object.timer = 1
60
object.frame++
61
if object.frame >= 2
62
object.state++
63
end if
64
end if
65
break
66
67
case SUPERSPARK_ANIMATE2 // then, play the 3 frames in reverse
68
object.timer++
69
if object.timer >= 3
70
object.timer = 1
71
object.frame--
72
if object.frame <= 0
73
object.state++
74
end if
75
end if
76
break
77
78
case SUPERSPARK_DELAY
79
object.timer++
80
if object.timer >= 3
81
object.timer = 9
82
object.state++
83
end if
84
break
85
86
case SUPERSPARK_FINISHED
87
if object.isChild == true
88
object.type = TypeName[Blank Object]
89
end if
90
91
object.timer++
92
if object.timer >= 13
93
temp0 = player[-playerCount].speed
94
Abs(temp0)
95
CheckLower(temp0, 0x80000)
96
temp0 = checkResult
97
CheckEqual(player[-playerCount].prevGravity, 0)
98
temp0 &= checkResult
99
100
if temp0 == true
101
object.state = SUPERSPARK_SETUP
102
else
103
object.timer = 0
104
CreateTempObject(TypeName[Super Spark], true, player[-playerCount].xpos, player[-playerCount].ypos)
105
object[tempObjectPos].frame = 0
106
object[tempObjectPos].state = SUPERSPARK_ANIMATE1
107
object[tempObjectPos].drawOrder = player[-playerCount].sortedDrawOrder
108
end if
109
end if
110
break
111
112
end switch
113
end event
114
115
116
event ObjectDraw
117
switch object.state
118
default
119
case SUPERSPARK_SETUP
120
case SUPERSPARK_FINISHED
121
break
122
123
case SUPERSPARK_ANIMATE1
124
case SUPERSPARK_ANIMATE2
125
case SUPERSPARK_DELAY
126
DrawSprite(object.frame)
127
break
128
129
end switch
130
end event
131
132
133
event ObjectStartup
134
LoadSpriteSheet("Global/Items3.gif")
135
SpriteFrame(-8, -8, 16, 16, 168, 158)
136
SpriteFrame(-16, -16, 32, 32, 50, 223)
137
SpriteFrame(-24, -24, 48, 48, 1, 207)
138
end event
139
140
141
// ========================
142
// Editor Events
143
// ========================
144
145
event RSDKDraw
146
DrawSprite(0)
147
end event
148
149
150
event RSDKLoad
151
LoadSpriteSheet("Global/Items3.gif")
152
SpriteFrame(-16, -16, 32, 32, 50, 223)
153
154
// Although used by the object, it shouldn't be set by the editor
155
SetVariableAlias(ALIAS_VAR_PROPVAL, "unused")
156
end event
157
158