Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
rubberduckycooly
GitHub Repository: rubberduckycooly/Sonic-CD-2011-Script-Decompilation
Path: blob/main/Scripts/R5/TunnelPath1.txt
1319 views
1
//---------------Sonic CD Tunnel Path 1 Script----------------//
2
//--------Scripted by Christian Whitehead 'The Taxman'--------//
3
//-------Unpacked By Rubberduckycooly's Script Unpacker-------//
4
5
// Aliases
6
#alias Object.Value0 : Object.Timer
7
8
// States
9
#alias 0 : TUNNELPATH_IDLE
10
#alias 1 : TUNNELPATH_ACTIVE
11
12
// Global SFX
13
#alias 7 : SFX_G_RELEASE
14
15
// Priority
16
#alias 0 : PRIORITY_BOUNDS
17
#alias 1 : PRIORITY_ACTIVE
18
19
20
sub ObjectMain
21
22
if Object.State == TUNNELPATH_ACTIVE
23
if Player.State == Player_State_Death
24
Object.State = TUNNELPATH_IDLE
25
end if
26
27
TempValue0 = Object.Timer
28
29
Object.Timer++
30
31
Player.Speed = Player.XPos
32
Player.Animation = ANI_JUMPING
33
Player.AnimationSpeed = 240
34
switch TempValue0
35
case 0
36
Player.XPos = 0xDA00
37
Player.YPos = 0xBA00
38
break
39
case 1
40
Player.XPos = 0xDA00
41
Player.YPos = 0xABA00
42
break
43
case 2
44
Player.XPos = 0xDA00
45
Player.YPos = 0x14BA00
46
break
47
case 3
48
Player.XPos = 0xDA00
49
Player.YPos = 0x1EBA00
50
break
51
case 4
52
Player.XPos = 0xDA00
53
Player.YPos = 0x28BA00
54
break
55
case 5
56
Player.XPos = 0xDA00
57
Player.YPos = 0x32BA00
58
break
59
case 6
60
Player.XPos = 0xDA00
61
Player.YPos = 0x38BA00
62
break
63
case 7
64
Player.XPos = 0xADA00
65
Player.YPos = 0x403A00
66
break
67
case 8
68
Player.XPos = 0x14DA00
69
Player.YPos = 0x47BA00
70
break
71
case 9
72
Player.XPos = 0x1EDA00
73
Player.YPos = 0x4F3A00
74
break
75
case 10
76
Player.XPos = 0x20DA00
77
Player.YPos = 0x503A00
78
break
79
case 11
80
Player.XPos = 0x16DA00
81
Player.YPos = 0x52BA00
82
break
83
case 12
84
Player.XPos = 0xCDA00
85
Player.YPos = 0x553A00
86
break
87
case 13
88
Player.XPos = 0x2DA00
89
Player.YPos = 0x57BA00
90
break
91
case 14
92
Player.XPos = -0x72600
93
Player.YPos = 0x5A3A00
94
break
95
case 15
96
Player.XPos = -0x112600
97
Player.YPos = 0x5CBA00
98
break
99
case 16
100
Player.XPos = -0x1B2600
101
Player.YPos = 0x5F3A00
102
break
103
case 17
104
Player.XPos = -0x252600
105
Player.YPos = 0x61BA00
106
break
107
case 18
108
Player.XPos = -0x2F2600
109
Player.YPos = 0x643A00
110
break
111
case 19
112
Player.XPos = -0x392600
113
Player.YPos = 0x66BA00
114
break
115
case 20
116
Player.XPos = -0x432600
117
Player.YPos = 0x693A00
118
break
119
case 21
120
Player.XPos = -0x4D2600
121
Player.YPos = 0x6BBA00
122
break
123
case 22
124
Player.XPos = -0x572600
125
Player.YPos = 0x6E3A00
126
break
127
case 23
128
Player.XPos = -0x5F2600
129
Player.YPos = 0x703A00
130
break
131
case 24
132
Player.XPos = -0x552600
133
Player.YPos = 0x72BA00
134
break
135
case 25
136
Player.XPos = -0x4B2600
137
Player.YPos = 0x753A00
138
break
139
case 26
140
Player.XPos = -0x412600
141
Player.YPos = 0x77BA00
142
break
143
case 27
144
Player.XPos = -0x372600
145
Player.YPos = 0x7A3A00
146
break
147
case 28
148
Player.XPos = -0x2D2600
149
Player.YPos = 0x7CBA00
150
break
151
case 29
152
Player.XPos = -0x232600
153
Player.YPos = 0x7F3A00
154
break
155
case 30
156
Player.XPos = -0x192600
157
Player.YPos = 0x81BA00
158
break
159
case 31
160
Player.XPos = -0xF2600
161
Player.YPos = 0x843A00
162
break
163
case 32
164
Player.XPos = -0x52600
165
Player.YPos = 0x86BA00
166
break
167
case 33
168
Player.XPos = 0x4DA00
169
Player.YPos = 0x893A00
170
break
171
case 34
172
Player.XPos = 0xEDA00
173
Player.YPos = 0x8BBA00
174
break
175
case 35
176
Player.XPos = 0x18DA00
177
Player.YPos = 0x8E3A00
178
break
179
case 36
180
Player.XPos = 0x20DA00
181
Player.YPos = 0x903A00
182
break
183
case 37
184
Player.XPos = 0x16DA00
185
Player.YPos = 0x92BA00
186
break
187
case 38
188
Player.XPos = 0xCDA00
189
Player.YPos = 0x953A00
190
break
191
case 39
192
Player.XPos = 0x2DA00
193
Player.YPos = 0x97BA00
194
break
195
case 40
196
Player.XPos = -0x72600
197
Player.YPos = 0x9A3A00
198
break
199
case 41
200
Player.XPos = -0x112600
201
Player.YPos = 0x9CBA00
202
break
203
case 42
204
Player.XPos = -0x1B2600
205
Player.YPos = 0x9F3A00
206
break
207
case 43
208
Player.XPos = -0x252600
209
Player.YPos = 0xA1BA00
210
break
211
case 44
212
Player.XPos = -0x2F2600
213
Player.YPos = 0xA43A00
214
break
215
case 45
216
Player.XPos = -0x392600
217
Player.YPos = 0xA6BA00
218
break
219
case 46
220
Player.XPos = -0x432600
221
Player.YPos = 0xA93A00
222
break
223
case 47
224
Player.XPos = -0x4D2600
225
Player.YPos = 0xABBA00
226
break
227
case 48
228
Player.XPos = -0x572600
229
Player.YPos = 0xAE3A00
230
break
231
case 49
232
Player.XPos = -0x5F2600
233
Player.YPos = 0xB03A00
234
break
235
case 50
236
Player.XPos = -0x552600
237
Player.YPos = 0xB2BA00
238
break
239
case 51
240
Player.XPos = -0x4B2600
241
Player.YPos = 0xB53A00
242
break
243
case 52
244
Player.XPos = -0x412600
245
Player.YPos = 0xB7BA00
246
break
247
case 53
248
Player.XPos = -0x372600
249
Player.YPos = 0xBA3A00
250
break
251
case 54
252
Player.XPos = -0x2D2600
253
Player.YPos = 0xBCBA00
254
break
255
case 55
256
Player.XPos = -0x232600
257
Player.YPos = 0xBF3A00
258
break
259
case 56
260
Player.XPos = -0x192600
261
Player.YPos = 0xC1BA00
262
break
263
case 57
264
Player.XPos = -0xF2600
265
Player.YPos = 0xC43A00
266
break
267
case 58
268
Player.XPos = -0x52600
269
Player.YPos = 0xC6BA00
270
break
271
case 59
272
Player.XPos = 0x4DA00
273
Player.YPos = 0xC93A00
274
break
275
case 60
276
Player.XPos = 0xEDA00
277
Player.YPos = 0xCBBA00
278
break
279
case 61
280
Player.XPos = 0x18DA00
281
Player.YPos = 0xCE3A00
282
break
283
case 62
284
Player.XPos = 0x20DA00
285
Player.YPos = 0xD03A00
286
break
287
case 63
288
Player.XPos = 0x2ADA00
289
Player.YPos = 0xE0BA00
290
break
291
case 64
292
Player.XPos = 0x34DA00
293
Player.YPos = 0xE87200
294
295
Object.State = TUNNELPATH_IDLE
296
Object.Priority = PRIORITY_BOUNDS
297
298
Player.XVelocity = 0xA0000
299
Player.Speed = 0xA0000
300
Player.YVelocity = 0x60000
301
302
#platform: Use_Origins
303
Player.State = Player_State_Air_NoDropDash
304
#endplatform
305
306
#platform: Use_Standalone
307
Player.State = Player_State_Air
308
#endplatform
309
310
Player.ObjectInteraction = true
311
break
312
end switch
313
314
Player.XPos += Object.XPos
315
Player.YPos += Object.YPos
316
if Object.State > TUNNELPATH_IDLE
317
Player.Speed -= Player.XPos
318
FlipSign(Player.Speed)
319
end if
320
end if
321
end sub
322
323
324
sub ObjectPlayerInteraction
325
326
if Object.PropertyValue == 0
327
if Player.State != Player_State_Static
328
PlayerObjectCollision(C_TOUCH, -8, -16, 8, 16)
329
330
if CheckResult == true
331
// Engage the Player with the Tunnel
332
333
Player.State = Player_State_Static
334
Player.ObjectInteraction = false
335
336
Object.State = TUNNELPATH_ACTIVE
337
Object.Timer = 0
338
// Make this Object always active, as if it ever stops running,
339
// then the Player will be stuck in the Tube forever
340
Object.Priority = PRIORITY_ACTIVE
341
342
PlaySfx(SFX_G_RELEASE, false)
343
end if
344
end if
345
end if
346
347
end sub
348
349
350
// ========================
351
// Editor Subs
352
// ========================
353
354
sub RSDKDraw
355
DrawSprite(0)
356
357
if Editor.ShowGizmos == true
358
// heh i hope this works lol
359
// gonna ignore editor.drawingoverlay for this because i don't imagine this'll be kept anyway
360
361
TempValue2 = 0
362
while TempValue2 < 64
363
switch TempValue2
364
case 0
365
TempValue0 = 55808
366
TempValue1 = 47616
367
break
368
369
case 1
370
TempValue0 = 55808
371
TempValue1 = 702976
372
break
373
374
case 2
375
TempValue0 = 55808
376
TempValue1 = 1358336
377
break
378
379
case 3
380
TempValue0 = 55808
381
TempValue1 = 2013696
382
break
383
384
case 4
385
TempValue0 = 55808
386
TempValue1 = 2669056
387
break
388
389
case 5
390
TempValue0 = 55808
391
TempValue1 = 3324416
392
break
393
394
case 6
395
TempValue0 = 55808
396
TempValue1 = 3717632
397
break
398
399
case 7
400
TempValue0 = 711168
401
TempValue1 = 4209152
402
break
403
404
case 8
405
TempValue0 = 1366528
406
TempValue1 = 4700672
407
break
408
409
case 9
410
TempValue0 = 2021888
411
TempValue1 = 5192192
412
break
413
414
case 10
415
TempValue0 = 2152960
416
TempValue1 = 5257728
417
break
418
419
case 11
420
TempValue0 = 1497600
421
TempValue1 = 5421568
422
break
423
424
case 12
425
TempValue0 = 842240
426
TempValue1 = 5585408
427
break
428
429
case 13
430
TempValue0 = 186880
431
TempValue1 = 5749248
432
break
433
434
case 14
435
TempValue0 = -468480
436
TempValue1 = 5913088
437
break
438
439
case 15
440
TempValue0 = -1123840
441
TempValue1 = 6076928
442
break
443
444
case 16
445
TempValue0 = -1779200
446
TempValue1 = 6240768
447
break
448
449
case 17
450
TempValue0 = -2434560
451
TempValue1 = 6404608
452
break
453
454
case 18
455
TempValue0 = -3089920
456
TempValue1 = 6568448
457
break
458
459
case 19
460
TempValue0 = -3745280
461
TempValue1 = 6732288
462
break
463
464
case 20
465
TempValue0 = -4400640
466
TempValue1 = 6896128
467
break
468
469
case 21
470
TempValue0 = -5056000
471
TempValue1 = 7059968
472
break
473
474
case 22
475
TempValue0 = -5711360
476
TempValue1 = 7223808
477
break
478
479
case 23
480
TempValue0 = -6235648
481
TempValue1 = 7354880
482
break
483
484
case 24
485
TempValue0 = -5580288
486
TempValue1 = 7518720
487
break
488
489
case 25
490
TempValue0 = -4924928
491
TempValue1 = 7682560
492
break
493
494
case 26
495
TempValue0 = -4269568
496
TempValue1 = 7846400
497
break
498
499
case 27
500
TempValue0 = -3614208
501
TempValue1 = 8010240
502
break
503
504
case 28
505
TempValue0 = -2958848
506
TempValue1 = 8174080
507
break
508
509
case 29
510
TempValue0 = -2303488
511
TempValue1 = 8337920
512
break
513
514
case 30
515
TempValue0 = -1648128
516
TempValue1 = 8501760
517
break
518
519
case 31
520
TempValue0 = -992768
521
TempValue1 = 8665600
522
break
523
524
case 32
525
TempValue0 = -337408
526
TempValue1 = 8829440
527
break
528
529
case 33
530
TempValue0 = 317952
531
TempValue1 = 8993280
532
break
533
534
case 34
535
TempValue0 = 973312
536
TempValue1 = 9157120
537
break
538
539
case 35
540
TempValue0 = 1628672
541
TempValue1 = 9320960
542
break
543
544
case 36
545
TempValue0 = 2152960
546
TempValue1 = 9452032
547
break
548
549
case 37
550
TempValue0 = 1497600
551
TempValue1 = 9615872
552
break
553
554
case 38
555
TempValue0 = 842240
556
TempValue1 = 9779712
557
break
558
559
case 39
560
TempValue0 = 186880
561
TempValue1 = 9943552
562
break
563
564
case 40
565
TempValue0 = -468480
566
TempValue1 = 10107392
567
break
568
569
case 41
570
TempValue0 = -1123840
571
TempValue1 = 10271232
572
break
573
574
case 42
575
TempValue0 = -1779200
576
TempValue1 = 10435072
577
break
578
579
case 43
580
TempValue0 = -2434560
581
TempValue1 = 10598912
582
break
583
584
case 44
585
TempValue0 = -3089920
586
TempValue1 = 10762752
587
break
588
589
case 45
590
TempValue0 = -3745280
591
TempValue1 = 10926592
592
break
593
594
case 46
595
TempValue0 = -4400640
596
TempValue1 = 11090432
597
break
598
599
case 47
600
TempValue0 = -5056000
601
TempValue1 = 11254272
602
break
603
604
case 48
605
TempValue0 = -5711360
606
TempValue1 = 11418112
607
break
608
609
case 49
610
TempValue0 = -6235648
611
TempValue1 = 11549184
612
break
613
614
case 50
615
TempValue0 = -5580288
616
TempValue1 = 11713024
617
break
618
619
case 51
620
TempValue0 = -4924928
621
TempValue1 = 11876864
622
break
623
624
case 52
625
TempValue0 = -4269568
626
TempValue1 = 12040704
627
break
628
629
case 53
630
TempValue0 = -3614208
631
TempValue1 = 12204544
632
break
633
634
case 54
635
TempValue0 = -2958848
636
TempValue1 = 12368384
637
break
638
639
case 55
640
TempValue0 = -2303488
641
TempValue1 = 12532224
642
break
643
644
case 56
645
TempValue0 = -1648128
646
TempValue1 = 12696064
647
break
648
649
case 57
650
TempValue0 = -992768
651
TempValue1 = 12859904
652
break
653
654
case 58
655
TempValue0 = -337408
656
TempValue1 = 13023744
657
break
658
659
case 59
660
TempValue0 = 317952
661
TempValue1 = 13187584
662
break
663
664
case 60
665
TempValue0 = 973312
666
TempValue1 = 13351424
667
break
668
669
case 61
670
TempValue0 = 1628672
671
TempValue1 = 13515264
672
break
673
674
case 62
675
TempValue0 = 2152960
676
TempValue1 = 13646336
677
break
678
679
case 63
680
TempValue0 = 2808320
681
TempValue1 = 14727680
682
break
683
684
case 64
685
TempValue0 = 3463680
686
TempValue1 = 15233536
687
break
688
689
end switch
690
691
TempValue0 += Object.XPos
692
TempValue1 += Object.YPos
693
694
DrawRectWorld(TempValue0, TempValue1, 4, 4, 255, 255, 255, 255)
695
696
TempValue2++
697
loop
698
end if
699
end sub
700
701
702
sub RSDKLoad
703
LoadSpriteSheet("Global/Display.gif")
704
SpriteFrame(-16, -16, 32, 32, 1, 143) // #0 - "Script" Icon
705
706
SetVariableAlias(ALIAS_VAR_PROPVAL, "unused")
707
end sub
708
709