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/Credits/CreditsEggman.txt
1482 views
1
// ----------------------------------
2
// RSDK Project: Sonic 1
3
// Script Description: Credits Eggman 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.value1 : object.delay
14
private alias object.value2 : object.frameID
15
16
// Priority Aliases
17
private alias 6 : PRIORITY_BOUNDS_SMALL
18
19
20
// ========================
21
// Tables
22
// ========================
23
24
private table CreditsEggman_delayTable
25
7, 113, 7, 113
26
end table
27
28
private table CreditsEggman_frameTable
29
4, 5, 6, 5, 4, 5, 6, 5, 4, 5, 6, 5, 7, 5, 6, 5
30
end table
31
32
33
// ========================
34
// Events
35
// ========================
36
37
event ObjectUpdate
38
switch object.propertyValue
39
case 0
40
GetTableValue(object.delay, object.frame, CreditsEggman_delayTable)
41
object.timer++
42
if object.timer == object.delay
43
object.timer = 0
44
object.frame++
45
object.frame &= 3
46
end if
47
48
switch object.frame
49
case 1
50
if object.timer == 0
51
object[+1].angle = 32
52
object[+2].angle = 32
53
object[+3].angle = 32
54
object[+4].angle = 32
55
object[+5].angle = 32
56
object[+6].angle = 32
57
object[+7].angle = 32
58
else
59
arrayPos0 = 1
60
while arrayPos0 < 8
61
if object.timer > object[+arrayPos0].timer
62
object[+arrayPos0].angle += 4
63
if object[+arrayPos0].angle > 256
64
object[+arrayPos0].angle = 256
65
end if
66
end if
67
68
arrayPos0++
69
loop
70
end if
71
break
72
73
case 3
74
if object.timer == 0
75
object[+1].angle = 224
76
object[+2].angle = 224
77
object[+3].angle = 224
78
object[+4].angle = 224
79
object[+5].angle = 224
80
object[+6].angle = 224
81
object[+7].angle = 224
82
else
83
arrayPos0 = 1
84
while arrayPos0 < 8
85
if object.timer > object[+arrayPos0].timer
86
object[+arrayPos0].angle -= 4
87
if object[+arrayPos0].angle < 0
88
object[+arrayPos0].angle = 0
89
end if
90
end if
91
92
arrayPos0++
93
loop
94
end if
95
break
96
97
end switch
98
99
arrayPos0 = 1
100
while arrayPos0 < 8
101
Cos(object[+arrayPos0].xpos, object[+arrayPos0].angle)
102
object[+arrayPos0].xpos *= -0xE00
103
104
Sin(object[+arrayPos0].ypos, object[+arrayPos0].angle)
105
object[+arrayPos0].ypos *= -0xE00
106
object[+arrayPos0].ypos -= 0x80000
107
object[+arrayPos0].xpos += object.xpos
108
object[+arrayPos0].ypos += object.ypos
109
110
arrayPos0++
111
loop
112
break
113
114
case 1
115
object.timer++
116
if object.timer == 8
117
object.timer = 0
118
GetTableValue(object.frame, object.frameID, CreditsEggman_frameTable)
119
object.frameID++
120
object.frameID &= 15
121
end if
122
break
123
124
end switch
125
end event
126
127
128
event ObjectDraw
129
DrawSprite(object.frame)
130
end event
131
132
133
event ObjectStartup
134
LoadSpriteSheet("Ending/Credits.gif")
135
136
// 0-3 - Eggman Juggle Frames
137
SpriteFrame(-29, -23, 60, 50, 1, 1)
138
SpriteFrame(-29, -24, 58, 51, 62, 1)
139
SpriteFrame(-31, -23, 60, 50, 121, 1)
140
SpriteFrame(-29, -24, 58, 51, 182, 1)
141
142
// 4-7 - Eggman Tantrum Frames
143
SpriteFrame(-29, -19, 58, 55, 1, 53)
144
SpriteFrame(-29, -46, 58, 82, 62, 53)
145
SpriteFrame(-29, -60, 58, 96, 121, 53)
146
SpriteFrame(-32, -12, 64, 48, 182, 53)
147
148
// 8 - Emerald Flash Frame
149
SpriteFrame(-6, -6, 12, 12, 1, 109)
150
151
// 9-15 - Emerald Frames
152
SpriteFrame(-6, -6, 12, 12, 14, 109) // Blue
153
SpriteFrame(-6, -6, 12, 12, 27, 109) // Orange
154
if options.superStates == false
155
SpriteFrame(-6, -6, 12, 12, 40, 109) // Pink
156
else
157
SpriteFrame(-6, -6, 12, 12, 14, 135) // Purple
158
end if
159
SpriteFrame(-6, -6, 12, 12, 1, 122) // Green
160
SpriteFrame(-6, -6, 12, 12, 14, 122) // Red
161
SpriteFrame(-6, -6, 12, 12, 27, 122) // Grey
162
SpriteFrame(-6, -6, 12, 12, 1, 135) // Light blue
163
164
// (The dark orange one at 27, 135 is unused)
165
166
foreach (TypeName[Credits Eggman], arrayPos0, ALL_ENTITIES)
167
object[arrayPos0].priority = PRIORITY_BOUNDS_SMALL
168
switch object[arrayPos0].propertyValue
169
case 0 // Eggman - Tease
170
arrayPos1 = arrayPos0
171
arrayPos1 += 7
172
temp0 = 0
173
temp2 = 0
174
while temp0 < 7
175
GetBit(temp1, specialStage.emeralds, temp0)
176
if temp0 == 6
177
if options.superStates == false
178
temp1 = true
179
end if
180
end if
181
182
if temp1 == false
183
object[arrayPos1].propertyValue = temp0
184
object[arrayPos1].propertyValue += 2
185
object[arrayPos1].timer = temp2
186
object[arrayPos1].timer *= 9
187
arrayPos1--
188
temp2++
189
end if
190
temp0++
191
loop
192
193
while arrayPos1 > arrayPos0
194
object[arrayPos1].type = TypeName[Blank Object]
195
arrayPos1--
196
loop
197
break
198
199
case 1 // Eggman - Angry
200
object[arrayPos0].frame = 4
201
break
202
203
case 2 // Emeralds, each type gets its own Property Value
204
case 3
205
case 4
206
case 5
207
case 6
208
case 7
209
case 8
210
object[arrayPos0].frame = object[arrayPos0].propertyValue
211
object[arrayPos0].frame += 7
212
break
213
214
end switch
215
next
216
end event
217
218
219
// ========================
220
// Editor Events
221
// ========================
222
223
event RSDKEdit
224
if editor.returnVariable == true
225
switch editor.variableID
226
case EDIT_VAR_PROPVAL // property value
227
checkResult = object.propertyValue
228
break
229
230
case 0 // type
231
checkResult = object.propertyValue
232
break
233
234
end switch
235
else
236
switch editor.variableID
237
case EDIT_VAR_PROPVAL // property value
238
object.propertyValue = editor.variableValue
239
break
240
241
case 0 // type
242
object.propertyValue = editor.variableValue
243
break
244
245
end switch
246
end if
247
end event
248
249
250
event RSDKDraw
251
switch object.propertyValue
252
case 0
253
// Eggman Tease
254
object.frame = 0
255
break
256
257
case 1
258
// Eggman Angry
259
object.frame = 4
260
break
261
262
// Emeralds
263
case 2
264
case 3
265
case 4
266
case 5
267
case 6
268
case 7
269
case 8
270
object.frame = object.propertyValue
271
object.frame += 7
272
break
273
274
end switch
275
276
DrawSprite(object.frame)
277
end event
278
279
280
event RSDKLoad
281
LoadSpriteSheet("Ending/Credits.gif")
282
SpriteFrame(-29, -23, 60, 50, 1, 1)
283
SpriteFrame(-29, -24, 58, 51, 62, 1)
284
SpriteFrame(-31, -23, 60, 50, 121, 1)
285
SpriteFrame(-29, -24, 58, 51, 182, 1)
286
SpriteFrame(-29, -19, 58, 55, 1, 53)
287
SpriteFrame(-29, -46, 58, 82, 62, 53)
288
SpriteFrame(-29, -60, 58, 96, 121, 53)
289
SpriteFrame(-32, -12, 64, 48, 182, 53)
290
SpriteFrame(-6, -6, 12, 12, 1, 109)
291
SpriteFrame(-6, -6, 12, 12, 14, 109)
292
SpriteFrame(-6, -6, 12, 12, 27, 109)
293
SpriteFrame(-6, -6, 12, 12, 40, 109)
294
SpriteFrame(-6, -6, 12, 12, 1, 122)
295
SpriteFrame(-6, -6, 12, 12, 14, 122)
296
SpriteFrame(-6, -6, 12, 12, 27, 122)
297
SpriteFrame(-6, -6, 12, 12, 1, 135)
298
299
AddEditorVariable("type")
300
SetActiveVariable("type")
301
AddEnumVariable("Eggman (Juggling)", 0)
302
AddEnumVariable("Eggman (Tantrum)", 1)
303
AddEnumVariable("Chaos Emerald 1", 2)
304
AddEnumVariable("Chaos Emerald 2", 3)
305
AddEnumVariable("Chaos Emerald 3", 4)
306
AddEnumVariable("Chaos Emerald 4", 5)
307
AddEnumVariable("Chaos Emerald 5", 6)
308
AddEnumVariable("Chaos Emerald 6", 7)
309
AddEnumVariable("Chaos Emerald 7", 8)
310
end event
311
312