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/Mission/MissionEggmanChemicalDropper.txt
1487 views
1
// ----------------------------------
2
// RSDK Project: Sonic 2
3
// Script Description: Chemical Dropper Object
4
// Script Author: Christian Whitehead/Simon Thomley
5
// Unpacked by Rubberduckycooly's script unpacker
6
// ----------------------------------
7
8
// This Object is used in Mission "Eggman: Blue Beam" - M049 - Mission_Zone02
9
10
// ========================
11
// Aliases
12
// ========================
13
14
private alias object.value0 : object.originPos.x
15
private alias object.value1 : object.originPos.y
16
private alias object.value2 : object.oscillationAngle
17
private alias object.value3 : object.timer
18
private alias object.value4 : object.boundsL
19
private alias object.value5 : object.boundsR
20
private alias object.value6 : object.machineAnim
21
private alias object.value7 : object.tubeAnimTimer
22
private alias object.value8 : object.dropperLength
23
private alias object.value9 : object.tubeFrame
24
private alias object.value10 : object.dropletNodeID
25
private alias object.value11 : object.dropperOffset
26
private alias object.value12 : object.dropperAnim
27
private alias object.value13 : object.dropperFrame
28
private alias object.value14 : object.dropletAnimTimer
29
private alias object.value15 : object.chemicalFrame
30
private alias object.value16 : object.dropletFrame
31
private alias object.value17 : object.hatchFrame
32
private alias object.value18 : object.nextDir
33
private alias object.value19 : object.dropTrackSpeed // these last two values are new to the Mission ver of this script, they're configured by EggmanSignPost
34
private alias object.value20 : object.extraSpeed
35
36
// States
37
private alias 0 : CHEMICALDROPPER_MOVERIGHT
38
private alias 1 : CHEMICALDROPPER_GETCHEMICALS
39
private alias 2 : CHEMICALDROPPER_DROPCHEMICALS
40
private alias 3 : CHEMICALDROPPER_MOVELEFT
41
private alias 4 : CHEMICALDROPPER_DESTROYED
42
private alias 5 : CHEMICALDROPPER_DEBRISEXPLODE
43
private alias 6 : CHEMICALDROPPER_DEBRISDELAY
44
private alias 7 : CHEMICALDROPPER_DEBRIS
45
46
// Machine Animations
47
private alias 0 : CHEMICALDROPPER_MANI_IDLE
48
private alias 1 : CHEMICALDROPPER_MANI_EXTEND
49
private alias 2 : CHEMICALDROPPER_MANI_FILLING
50
private alias 3 : CHEMICALDROPPER_MANI_RETRACT
51
52
// Dropper Animations
53
private alias 0 : CHEMICALDROPPER_DANI_CLOSED
54
private alias 1 : CHEMICALDROPPER_DANI_FILLING
55
private alias 2 : CHEMICALDROPPER_DANI_WAIT
56
private alias 3 : CHEMICALDROPPER_DANI_EXTEND
57
private alias 4 : CHEMICALDROPPER_DANI_OPENHATCH
58
private alias 5 : CHEMICALDROPPER_DANI_RETRACT
59
60
// Player Aliases
61
private alias object.xpos : player.xpos
62
63
64
// ========================
65
// Function Declarations
66
// ========================
67
68
reserve function ChemicalDropper_SpawnDebris
69
reserve function ChemicalDropper_Oscillate
70
71
72
// ========================
73
// Tables
74
// ========================
75
76
private table ChemicalDropper_tubeFrames
77
2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2
78
end table
79
80
private table ChemicalDropper_dropletFrames
81
18, 4, 4, 4, 5, 5, 5, 6, 6, 6, 7, 7, 7, 8, 8, 9, 10, 10, 10
82
end table
83
84
private table ChemicalDropper_dropperFrames
85
12, 31, 33
86
end table
87
88
// Unused table
89
private table ChemicalDropper_hatchFrames
90
13, 18, 14, 16, 15, 17
91
end table
92
93
94
// ========================
95
// Function Definitions
96
// ========================
97
98
private function ChemicalDropper_SpawnDebris
99
CreateTempObject(TypeName[Chemical Dropper], 0, temp0, temp1)
100
object[tempObjectPos].state = CHEMICALDROPPER_DEBRISEXPLODE
101
object[tempObjectPos].direction = object.direction
102
103
Rand(object[tempObjectPos].xvel, 8)
104
object[tempObjectPos].xvel -= 4
105
object[tempObjectPos].xvel <<= 16
106
object[tempObjectPos].yvel = -0x38000
107
108
Rand(object[tempObjectPos].timer, 255)
109
object[tempObjectPos].timer += 30
110
object[tempObjectPos].timer &= 0x7F
111
end function
112
113
114
private function ChemicalDropper_Oscillate
115
object.ypos = object.originPos.y
116
Sin256(temp0, object.oscillationAngle)
117
temp0 <<= 10
118
object.ypos += temp0
119
object.oscillationAngle += 2
120
object.oscillationAngle &= 0xFF
121
122
object[-1].xpos = object.xpos
123
object[-1].ypos = object.ypos
124
CheckGreater(player[0].xpos, object.xpos)
125
object.direction = checkResult
126
object[-1].direction = object.direction
127
end function
128
129
130
// ========================
131
// Events
132
// ========================
133
134
event ObjectUpdate
135
switch object.state
136
case CHEMICALDROPPER_MOVERIGHT
137
if object.xpos == object.boundsR
138
if object.dropperAnim == CHEMICALDROPPER_DANI_CLOSED
139
object.machineAnim = CHEMICALDROPPER_MANI_EXTEND
140
object.tubeAnimTimer = 0
141
object.state++
142
end if
143
else
144
if object.xpos > object.boundsR
145
object.xpos -= object.extraSpeed
146
if object.xpos <= object.boundsR
147
object.xpos = object.boundsR
148
end if
149
else
150
object.xpos += object.extraSpeed
151
if object.xpos >= object.boundsR
152
object.xpos = object.boundsR
153
end if
154
end if
155
end if
156
CallFunction(ChemicalDropper_Oscillate)
157
break
158
159
case CHEMICALDROPPER_GETCHEMICALS
160
CallFunction(ChemicalDropper_Oscillate)
161
break
162
163
case CHEMICALDROPPER_DROPCHEMICALS
164
temp0 = object.xpos
165
if player[0].xpos <= object.xpos
166
temp2 = -0x480000
167
else
168
temp2 = 0x480000
169
end if
170
temp0 += temp2
171
temp0 &= 0xFFFF0000
172
173
temp1 = player[0].xpos
174
temp1 &= 0xFFFF0000
175
176
if temp1 == temp0
177
if object.dropperOffset == 0x580000
178
object.dropperAnim = CHEMICALDROPPER_DANI_OPENHATCH
179
end if
180
else
181
if player[0].xpos < temp0
182
temp0 = stage.newXBoundary1
183
temp0 -= 16
184
temp0 <<= 16
185
if object.xpos > temp0
186
object.xpos -= object.dropTrackSpeed
187
temp0 = object.xpos
188
temp0 += temp2
189
temp0 &= 0xFFFF0000
190
temp1 = player[0].xpos
191
temp1 &= 0xFFFF0000
192
if temp1 > temp0
193
object.xpos = player[0].xpos
194
FlipSign(temp2)
195
object.xpos += temp2
196
end if
197
end if
198
else
199
temp0 = stage.newXBoundary2
200
temp0 += 16
201
temp0 <<= 16
202
if object.xpos < temp0
203
object.xpos += object.dropTrackSpeed
204
temp0 = object.xpos
205
temp0 += temp2
206
temp0 &= 0xFFFF0000
207
temp1 = player[0].xpos
208
temp1 &= 0xFFFF0000
209
if temp1 < temp0
210
object.xpos = player[0].xpos
211
FlipSign(temp2)
212
object.xpos += temp2
213
end if
214
end if
215
end if
216
end if
217
218
CallFunction(ChemicalDropper_Oscillate)
219
break
220
221
case CHEMICALDROPPER_MOVELEFT
222
if object.xpos == object.boundsL
223
if object.dropperAnim == CHEMICALDROPPER_DANI_CLOSED
224
object.machineAnim = CHEMICALDROPPER_MANI_EXTEND
225
object.tubeAnimTimer = 0
226
object.state = CHEMICALDROPPER_GETCHEMICALS
227
end if
228
else
229
if object.xpos > object.boundsL
230
object.xpos -= object.extraSpeed
231
if object.xpos <= object.boundsL
232
object.xpos = object.boundsL
233
end if
234
else
235
object.xpos += object.extraSpeed
236
if object.xpos >= object.boundsL
237
object.xpos = object.boundsL
238
end if
239
end if
240
end if
241
CallFunction(ChemicalDropper_Oscillate)
242
break
243
244
case CHEMICALDROPPER_DESTROYED
245
object.machineAnim = CHEMICALDROPPER_MANI_IDLE
246
object.dropperAnim = CHEMICALDROPPER_DANI_CLOSED
247
temp0 = object.xpos
248
if object.direction == FLIP_NONE
249
temp0 -= object.dropperOffset
250
else
251
temp0 += object.dropperOffset
252
end if
253
temp1 = object.ypos
254
temp1 -= 0x380000
255
CallFunction(ChemicalDropper_SpawnDebris)
256
object[tempObjectPos].frame = 35
257
temp1 += 0x80000
258
temp2 = object.dropperOffset
259
temp2 >>= 16
260
temp2 -= 16
261
temp2 /= 24
262
while temp2 >= 0
263
if object.direction == FLIP_NONE
264
temp0 += 0x180000
265
else
266
temp0 -= 0x180000
267
end if
268
CallFunction(ChemicalDropper_SpawnDebris)
269
object[tempObjectPos].frame = 36
270
temp2--
271
loop
272
temp0 = object.xpos
273
temp1 = object.ypos
274
275
CallFunction(ChemicalDropper_SpawnDebris)
276
object[tempObjectPos].frame = 37
277
278
CallFunction(ChemicalDropper_SpawnDebris)
279
object[tempObjectPos].frame = 38
280
281
CallFunction(ChemicalDropper_SpawnDebris)
282
object[tempObjectPos].frame = 39
283
284
if object.direction == FLIP_NONE
285
temp0 += 0x40000
286
else
287
temp0 -= 0x40000
288
end if
289
temp1 += 0x190000
290
temp2 = 0
291
while temp2 < object.dropperLength
292
CallFunction(ChemicalDropper_SpawnDebris)
293
object[tempObjectPos].frame = 1
294
temp1 += 0x80000
295
temp2++
296
loop
297
object.type = TypeName[Blank Object]
298
break
299
300
case CHEMICALDROPPER_DEBRISEXPLODE
301
object.timer--
302
if object.timer <= 0
303
object.timer = 30
304
CreateTempObject(TypeName[Explosion], 0, object.xpos, object.ypos)
305
object[tempObjectPos].drawOrder = 5
306
PlaySfx(SfxName[Explosion 2], false)
307
object.state++
308
end if
309
break
310
311
case CHEMICALDROPPER_DEBRISDELAY
312
object.timer--
313
if object.timer <= 0
314
object.state++
315
end if
316
break
317
318
case CHEMICALDROPPER_DEBRIS
319
object.xpos += object.xvel
320
object.ypos += object.yvel
321
object.yvel += 0x3800
322
temp1 = object.ypos
323
temp1 >>= 16
324
temp1 -= camera[0].ypos
325
Abs(temp1)
326
temp1 -= 128
327
if temp1 >= screen.ycenter
328
object.type = TypeName[Blank Object]
329
end if
330
break
331
332
end switch
333
334
switch object.machineAnim
335
default
336
case CHEMICALDROPPER_MANI_IDLE
337
break
338
339
case CHEMICALDROPPER_MANI_EXTEND
340
object.tubeFrame = 1
341
object.dropperLength++
342
if object.dropperLength == 8
343
object.machineAnim = CHEMICALDROPPER_MANI_FILLING
344
object.dropletNodeID = 8
345
object.tubeAnimTimer = 0
346
object.dropperAnim = CHEMICALDROPPER_DANI_FILLING
347
object.chemicalFrame = 18
348
object.dropletFrame = 4
349
end if
350
break
351
352
case CHEMICALDROPPER_MANI_FILLING
353
object.tubeAnimTimer++
354
if object.tubeAnimTimer == 18
355
object.tubeAnimTimer = 0
356
object.dropletNodeID--
357
if object.dropletNodeID < 0
358
object.dropletNodeID = 9
359
end if
360
end if
361
GetTableValue(object.tubeFrame, object.tubeAnimTimer, ChemicalDropper_tubeFrames)
362
break
363
364
case CHEMICALDROPPER_MANI_RETRACT
365
object.tubeFrame = 1
366
object.dropperLength--
367
if object.dropperLength == 0
368
object.machineAnim = CHEMICALDROPPER_MANI_IDLE
369
object.dropletNodeID = 8
370
object.tubeAnimTimer = 0
371
object.dropperAnim = CHEMICALDROPPER_DANI_EXTEND
372
object.state = CHEMICALDROPPER_DROPCHEMICALS
373
end if
374
break
375
376
end switch
377
378
switch object.dropperAnim
379
case CHEMICALDROPPER_DANI_CLOSED
380
object.dropperOffset = 0x100000
381
object.dropperFrame = 12
382
break
383
384
case CHEMICALDROPPER_DANI_FILLING
385
object.dropletAnimTimer++
386
if object.dropletAnimTimer == 19
387
object.dropletAnimTimer = 0
388
object.chemicalFrame++
389
if object.chemicalFrame >= 30
390
object.chemicalFrame = 30
391
object.machineAnim = CHEMICALDROPPER_MANI_RETRACT
392
object.dropperAnim = CHEMICALDROPPER_DANI_WAIT
393
end if
394
end if
395
396
GetTableValue(object.dropletFrame, object.dropletAnimTimer, ChemicalDropper_dropletFrames)
397
break
398
399
case CHEMICALDROPPER_DANI_WAIT
400
break
401
402
case CHEMICALDROPPER_DANI_EXTEND
403
object.dropperOffset += 0x10000
404
if object.dropperOffset >= 0x580000
405
object.dropperOffset = 0x580000
406
end if
407
temp0 = object.dropperOffset
408
temp0 >>= 16
409
temp0 -= 16
410
temp0 /= 24
411
GetTableValue(object.dropperFrame, temp0, ChemicalDropper_dropperFrames)
412
break
413
414
case CHEMICALDROPPER_DANI_OPENHATCH
415
object.dropletAnimTimer++
416
switch object.dropletAnimTimer
417
case 8
418
object.hatchFrame = 1
419
break
420
421
case 20
422
object.hatchFrame = 2
423
break
424
425
case 32
426
temp0 = object.xpos
427
if object.direction == FLIP_NONE
428
temp0 -= object.dropperOffset
429
temp0 += 0xC0000
430
else
431
temp0 += object.dropperOffset
432
temp0 -= 0xC0000
433
end if
434
temp1 = object.ypos
435
temp1 -= 0x260000
436
CreateTempObject(TypeName[Chemical Drop], 0, temp0, temp1)
437
object[tempObjectPos].drawOrder = 2
438
break
439
440
case 40
441
object.hatchFrame = 1
442
break
443
444
case 48
445
object.hatchFrame = 0
446
object.dropperAnim = CHEMICALDROPPER_DANI_RETRACT
447
object.dropletAnimTimer = 0
448
if object.nextDir == 0
449
object.state = CHEMICALDROPPER_MOVELEFT
450
else
451
object.state = CHEMICALDROPPER_MOVERIGHT
452
end if
453
object.nextDir ^= 1
454
break
455
456
end switch
457
break
458
459
case CHEMICALDROPPER_DANI_RETRACT
460
object.dropperOffset -= 0x10000
461
if object.dropperOffset <= 0x100000
462
object.dropperOffset = 0x100000
463
object.dropperAnim = CHEMICALDROPPER_DANI_CLOSED
464
end if
465
466
temp0 = object.dropperOffset
467
temp0 >>= 16
468
temp0 -= 16
469
temp0 /= 24
470
GetTableValue(object.dropperFrame, temp0, ChemicalDropper_dropperFrames)
471
break
472
473
end switch
474
end event
475
476
477
event ObjectDraw
478
if object.state < CHEMICALDROPPER_DESTROYED
479
temp0 = object.xpos
480
if object.direction == FLIP_NONE
481
temp0 -= object.dropperOffset
482
else
483
temp0 += object.dropperOffset
484
end if
485
486
temp1 = object.ypos
487
temp1 -= 0x380000
488
if object.dropperAnim == CHEMICALDROPPER_DANI_FILLING
489
DrawSpriteFX(object.dropletFrame, FX_FLIP, object.xpos, object.ypos)
490
DrawSpriteFX(object.chemicalFrame, FX_FLIP, temp0, temp1)
491
end if
492
493
if object.dropperAnim == CHEMICALDROPPER_DANI_WAIT
494
DrawSpriteFX(object.chemicalFrame, FX_FLIP, temp0, temp1)
495
end if
496
497
if object.dropperAnim == CHEMICALDROPPER_DANI_EXTEND
498
DrawSpriteFX(object.chemicalFrame, FX_FLIP, temp0, temp1)
499
end if
500
501
if object.dropperAnim == CHEMICALDROPPER_DANI_OPENHATCH
502
if object.dropletAnimTimer < 32
503
DrawSpriteFX(object.chemicalFrame, FX_FLIP, temp0, temp1)
504
end if
505
end if
506
507
temp0 = object.xpos
508
if object.direction == FLIP_NONE
509
temp0 -= object.dropperOffset
510
else
511
temp0 += object.dropperOffset
512
end if
513
temp1 = object.ypos
514
temp1 -= 0x380000
515
DrawSpriteFX(object.dropperFrame, FX_FLIP, temp0, temp1)
516
517
switch object.hatchFrame
518
case 0
519
DrawSpriteFX(18, FX_FLIP, temp0, temp1)
520
DrawSpriteFX(13, FX_FLIP, temp0, temp1)
521
break
522
523
case 1
524
DrawSpriteFX(16, FX_FLIP, temp0, temp1)
525
DrawSpriteFX(14, FX_FLIP, temp0, temp1)
526
break
527
528
case 2
529
DrawSpriteFX(17, FX_FLIP, temp0, temp1)
530
DrawSpriteFX(15, FX_FLIP, temp0, temp1)
531
break
532
533
end switch
534
535
temp0 = object.xpos
536
if object.direction == FLIP_NONE
537
temp0 += 0x40000
538
else
539
temp0 -= 0x40000
540
end if
541
542
temp1 = object.ypos
543
temp1 += 0x190000
544
temp2 = 0
545
while temp2 < object.dropperLength
546
if temp2 == object.dropletNodeID
547
DrawSpriteFX(object.tubeFrame, FX_FLIP, temp0, temp1)
548
else
549
DrawSpriteFX(1, FX_FLIP, temp0, temp1)
550
end if
551
temp1 += 0x80000
552
temp2++
553
loop
554
DrawSpriteFX(0, FX_FLIP, object.xpos, object.ypos)
555
else
556
DrawSpriteFX(object.frame, FX_FLIP, object.xpos, object.ypos)
557
end if
558
end event
559
560
561
event ObjectStartup
562
CheckCurrentStageFolder("Zone02")
563
564
if checkResult == true
565
LoadSpriteSheet("CPZ/Objects.gif")
566
567
// Dropper Sprite Frames
568
SpriteFrame(-5, -68, 37, 52, 55, 74) // Chemical Machine - #0
569
SpriteFrame(-4, -4, 8, 8, 61, 147) // Chemical Tube (Normal) - #1
570
SpriteFrame(-5, -4, 10, 8, 59, 138) // Chemical Tube (Wide) - #2
571
SpriteFrame(-6, -4, 12, 8, 57, 129) // Chemical Tube (Widest) - #3
572
SpriteFrame(-5, -60, 8, 3, 93, 74) // Chemical Droplet 1 - #4
573
SpriteFrame(-5, -60, 8, 5, 93, 78) // Chemical Droplet 2 - #5
574
SpriteFrame(-4, -60, 6, 8, 93, 84) // Chemical Droplet 3 - #6
575
SpriteFrame(-4, -60, 6, 13, 93, 93) // Chemical Droplet 4 - #7
576
SpriteFrame(-5, -60, 8, 14, 93, 107) // Chemical Droplet 5 - #8
577
SpriteFrame(-4, -50, 8, 8, 93, 122) // Chemical Droplet 6 - #9
578
SpriteFrame(-4, -46, 8, 8, 93, 122) // Chemical Droplet 7 - #10
579
SpriteFrame(-4, -4, 8, 8, 93, 122) // Chemical Droplet 8 - #11
580
SpriteFrame(0, 0, 48, 24, 93, 131) // Chemical Dropper - #12
581
SpriteFrame(1, 24, 22, 2, 74, 189) // Dropper Hatch (Closed) - #13
582
SpriteFrame(6, 24, 16, 6, 74, 192) // Dropper Hatch (Opening 1) - #14
583
SpriteFrame(11, 24, 16, 8, 74, 199) // Dropper Hatch (Opening 2) - #15
584
SpriteFrame(-2, 24, 14, 6, 74, 208) // Dropper Hatch (Opening 3) - #16
585
SpriteFrame(-4, 24, 15, 8, 74, 215) // Dropper Hatch (Opened) - #17
586
SpriteFrame(0, 0, 0, 0, 0, 0) // Empty - #18
587
SpriteFrame(1, 22, 22, 2, 70, 131) // Chemicals (Empty) - #19
588
SpriteFrame(1, 20, 22, 4, 70, 131) // Chemicals (Filling 1) - #20
589
SpriteFrame(1, 18, 22, 6, 70, 131) // Chemicals (Filling 2) - #21
590
SpriteFrame(1, 16, 22, 8, 70, 131) // Chemicals (Filling 3) - #22
591
SpriteFrame(1, 14, 22, 10, 70, 131) // Chemicals (Filling 4) - #23
592
SpriteFrame(1, 12, 22, 12, 70, 131) // Chemicals (Filling 5) - #24
593
SpriteFrame(1, 10, 22, 14, 70, 131) // Chemicals (Filling 6) - #25
594
SpriteFrame(1, 8, 22, 16, 70, 131) // Chemicals (Filling 7) - #26
595
SpriteFrame(1, 6, 22, 18, 70, 131) // Chemicals (Filling 8) - #27
596
SpriteFrame(1, 4, 22, 20, 70, 131) // Chemicals (Filling 9) - #28
597
SpriteFrame(1, 2, 22, 22, 70, 131) // Chemicals (Filling 10) - #29
598
SpriteFrame(1, 0, 22, 24, 70, 131) // Chemicals (Filled) - #30
599
SpriteFrame(0, 0, 72, 24, 93, 131) // Chemical Dropper (Shorter) - #31
600
SpriteFrame(3, 3, 18, 29, 97, 189) // Chemical Drop 1 - #32
601
SpriteFrame(0, 0, 96, 24, 93, 131) // Chemical Dropper (Full) - #33
602
SpriteFrame(3, 3, 18, 29, 117, 189) // Chemical Drop 2 - #34
603
SpriteFrame(0, 0, 28, 24, 93, 131) // Chemical Dropper (Standalone) - #35
604
SpriteFrame(0, 2, 24, 4, 121, 141) // Dropper Debris - #36
605
SpriteFrame(-5, -68, 29, 12, 55, 74) // Dropper Machine Debris 1 - #37
606
SpriteFrame(8, -56, 24, 24, 68, 86) // Dropper Machine Debris 2 - #38
607
SpriteFrame(17, -32, 14, 16, 77, 110) // Dropper Machine Debris 3 - #39
608
609
// Below three are unused, but their mappings exist anyway
610
SpriteFrame(-15, -32, 22, 24, 81, 156) // Chemical Drops on eggman - #40
611
SpriteFrame(-15, -24, 30, 16, 104, 156) // Chemical Splashes on eggman - #41
612
SpriteFrame(-15, -23, 31, 15, 104, 173) // Chemical on eggman - #42
613
else
614
LoadSpriteSheet("MBZ/Objects.gif")
615
616
SpriteFrame(-5, -68, 37, 52, 34, 138) // Chemical Machine - #0
617
SpriteFrame(-4, -4, 8, 8, 38, 130) // Chemical Tube (Normal) - #1
618
SpriteFrame(-5, -4, 10, 8, 36, 121) // Chemical Tube (Wide) - #2
619
SpriteFrame(-6, -4, 12, 8, 34, 112) // Chemical Tube (Widest) - #3
620
SpriteFrame(-5, -60, 8, 3, 72, 138) // Chemical Droplet 1 - #4
621
SpriteFrame(-5, -60, 8, 5, 72, 142) // Chemical Droplet 2 - #5
622
SpriteFrame(-4, -60, 6, 8, 72, 148) // Chemical Droplet 3 - #6
623
SpriteFrame(-4, -60, 6, 13, 72, 157) // Chemical Droplet 4 - #7
624
SpriteFrame(-5, -60, 8, 14, 72, 171) // Chemical Droplet 5 - #8
625
SpriteFrame(-4, -50, 8, 8, 104, 155) // Chemical Droplet 6 - #9
626
SpriteFrame(-4, -46, 8, 8, 104, 155) // Chemical Droplet 7 - #10
627
SpriteFrame(-4, -4, 8, 8, 104, 155) // Chemical Droplet 8 - #11
628
SpriteFrame(0, 0, 48, 24, 70, 113) // Chemical Dropper - #12
629
SpriteFrame(1, 24, 22, 2, 81, 163) // Dropper Hatch (Closed) - #13
630
SpriteFrame(6, 24, 16, 6, 81, 166) // Dropper Hatch (Opening 1) - #14
631
SpriteFrame(11, 24, 16, 8, 81, 173) // Dropper Hatch (Opening 2) - #15
632
SpriteFrame(-2, 24, 14, 6, 81, 182) // Dropper Hatch (Opening 3) - #16
633
SpriteFrame(-4, 24, 15, 8, 113, 156) // Dropper Hatch (Opened) - #17
634
SpriteFrame(0, 0, 0, 0, 0, 0) // Dropper Hatch (Gone) - #18
635
SpriteFrame(1, 22, 22, 2, 47, 113) // Chemicals (Empty) - #19
636
SpriteFrame(1, 20, 22, 4, 47, 113) // Chemicals (Filling 1) - #20
637
SpriteFrame(1, 18, 22, 6, 47, 113) // Chemicals (Filling 2) - #21
638
SpriteFrame(1, 16, 22, 8, 47, 113) // Chemicals (Filling 3) - #22
639
SpriteFrame(1, 14, 22, 10, 47, 113) // Chemicals (Filling 4) - #23
640
SpriteFrame(1, 12, 22, 12, 47, 113) // Chemicals (Filling 5) - #24
641
SpriteFrame(1, 10, 22, 14, 47, 113) // Chemicals (Filling 6) - #25
642
SpriteFrame(1, 8, 22, 16, 47, 113) // Chemicals (Filling 7) - #26
643
SpriteFrame(1, 6, 22, 18, 47, 113) // Chemicals (Filling 8) - #27
644
SpriteFrame(1, 4, 22, 20, 47, 113) // Chemicals (Filling 9) - #28
645
SpriteFrame(1, 2, 22, 22, 47, 113) // Chemicals (Filling 10) - #29
646
SpriteFrame(1, 0, 22, 24, 47, 113) // Chemicals (Filled) - #30
647
SpriteFrame(0, 0, 72, 24, 70, 113) // Chemical Dropper (Shorter) - #31
648
SpriteFrame(3, 3, 18, 29, 1, 64) // Chemical Drop 1 - #32
649
SpriteFrame(0, 0, 96, 24, 70, 113) // Chemical Dropper (Full) - #33
650
SpriteFrame(3, 3, 18, 29, 21, 64) // Chemical Drop 2 - #34
651
SpriteFrame(0, 0, 28, 24, 70, 113) // Chemical Dropper (Standalone) - #35
652
SpriteFrame(0, 2, 24, 4, 98, 123) // Dropper Debris - #36
653
SpriteFrame(-5, -68, 29, 12, 34, 138) // Dropper Machine Debris 1 - #37
654
SpriteFrame(8, -56, 24, 24, 47, 150) // Dropper Machine Debris 2 - #38
655
SpriteFrame(17, -32, 14, 16, 56, 174) // Dropper Machine Debris 3 - #39
656
657
// Below three are unused, but their mappings exist anyway
658
SpriteFrame(-15, -32, 22, 24, 81, 138) // Chemical Drops on eggman - #40
659
SpriteFrame(-15, -24, 30, 16, 104, 138) // Chemical Splashes on eggman - #41
660
SpriteFrame(-15, -23, 31, 15, 135, 138) // Chemical on eggman - #42
661
end if
662
end event
663
664
665
// ========================
666
// Editor Events
667
// ========================
668
669
event RSDKDraw
670
DrawSprite(0)
671
end event
672
673
674
event RSDKLoad
675
CheckCurrentStageFolder("Zone02")
676
if checkResult == true
677
LoadSpriteSheet("CPZ/Objects.gif")
678
SpriteFrame(-5, -68, 37, 52, 55, 74) // 0 - Main Dropper Frame
679
else
680
LoadSpriteSheet("MBZ/Objects.gif")
681
SpriteFrame(-5, -68, 37, 52, 34, 138) // 0 - Main Dropper Frame
682
end if
683
684
SetVariableAlias(ALIAS_VAR_PROPVAL, "unused")
685
end event
686
687