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/Spikes.txt
1483 views
1
// ----------------------------------
2
// RSDK Project: Sonic 1
3
// Script Description: Spikes 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.moveOffset
14
15
private alias 0 : SPIKES_STATIC
16
private alias 1 : SPIKES_HIDDEN
17
private alias 2 : SPIKES_APPEAR
18
private alias 3 : SPIKES_SHOWN
19
private alias 4 : SPIKES_DISAPPEAR
20
21
// Player Aliases
22
private alias object.gravity : player.gravity
23
private alias object.yvel : player.yvel
24
private alias object.xvel : player.xvel
25
private alias object.value7 : player.invincibleTimer
26
private alias object.value17 : debugMode.currentSelection
27
28
// ========================
29
// Function Declarations
30
// ========================
31
32
reserve function Spikes_DebugDraw
33
reserve function Spikes_DebugSpawn
34
35
36
// ========================
37
// Static Values
38
// ========================
39
40
private value Spikes_startDebugID = 0
41
42
43
// ========================
44
// Function Definitions
45
// ========================
46
47
private function Spikes_DebugDraw
48
temp2 = debugMode[0].currentSelection
49
temp2 -= Spikes_startDebugID
50
switch temp2
51
case 0 // 3 Spikes (Up)
52
case 1 // 3 Spikes (Right)
53
case 2 // 3 Spikes (Left)
54
case 3 // 3 Spikes (Down)
55
case 4 // 1 Spike (Up)
56
case 5 // 1 Spike (Right)
57
case 6 // 1 Spike (Left)
58
case 7 // 1 Spike (Down)
59
DrawSprite(temp2)
60
break
61
62
case 8 // 3 Spikes (Spaced Out) (Up)
63
case 11 // 3 Spikes (Spaced Out) (Down)
64
temp1 = temp2
65
temp1 -= 4
66
DrawSprite(temp1)
67
temp0 = object.xpos
68
temp0 -= 0x180000
69
DrawSpriteXY(temp1, temp0, object.ypos)
70
temp0 += 0x300000
71
DrawSpriteXY(temp1, temp0, object.ypos)
72
break
73
74
case 9 // 3 Spikes (Spaced Out) (Right)
75
case 10 // 3 Spikes (Spaced Out) (Left)
76
temp1 = temp2
77
temp1 -= 4
78
DrawSprite(temp1)
79
temp0 = object.ypos
80
temp0 -= 0x180000
81
DrawSpriteXY(temp1, object.xpos, temp0)
82
temp0 += 0x300000
83
DrawSpriteXY(temp1, object.xpos, temp0)
84
break
85
86
case 12 // 6 Spikes (Spaced Out) (Up)
87
case 15 // 6 Spikes (Spaced Out) (Down)
88
temp1 = temp2
89
temp1 -= 8
90
temp0 = object.xpos
91
temp0 -= 0x3C0000
92
temp2 = 0
93
while temp2 < 6
94
DrawSpriteXY(temp1, temp0, object.ypos)
95
temp0 += 0x180000
96
temp2++
97
loop
98
break
99
100
case 13 // 6 Spikes (Spaced Out) (Right)
101
case 14 // 6 Spikes (Spaced Out) (Left)
102
temp1 = temp2
103
temp1 -= 8
104
temp0 = object.ypos
105
temp0 -= 0x3C0000
106
temp2 = 0
107
while temp2 < 6
108
DrawSpriteXY(temp1, object.xpos, temp0)
109
temp0 += 0x180000
110
temp2++
111
loop
112
break
113
114
end switch
115
end function
116
117
118
private function Spikes_DebugSpawn
119
temp0 = debugMode[0].currentSelection
120
temp0 -= Spikes_startDebugID
121
CreateTempObject(TypeName[Spikes], temp0, object.xpos, object.ypos)
122
end function
123
124
125
// ========================
126
// Events
127
// ========================
128
129
event ObjectUpdate
130
switch object.state
131
default
132
case SPIKES_STATIC
133
break
134
135
case SPIKES_HIDDEN
136
if object.timer < 60
137
object.timer++
138
else
139
object.state++
140
object.timer = 0
141
142
temp0 = screen.xcenter
143
FlipSign(temp0)
144
BoxCollisionTest(C_TOUCH, object.entityPos, temp0, -100, screen.xcenter, 100, 0, C_BOX, C_BOX, C_BOX, C_BOX)
145
if checkResult == true
146
PlaySfx(SfxName[Spikes Move], false)
147
end if
148
end if
149
break
150
151
case SPIKES_APPEAR
152
if object.moveOffset < 0x200000
153
object.moveOffset += 0x80000
154
object.xpos += object.xvel
155
object.ypos += object.yvel
156
else
157
object.state++
158
end if
159
break
160
161
case SPIKES_SHOWN
162
if object.timer < 60
163
object.timer++
164
else
165
object.state++
166
object.timer = 0
167
temp0 = screen.xcenter
168
FlipSign(temp0)
169
BoxCollisionTest(C_TOUCH, object.entityPos, temp0, -100, screen.xcenter, 100, 0, C_BOX, C_BOX, C_BOX, C_BOX)
170
if checkResult == true
171
PlaySfx(SfxName[Spikes Move], false)
172
end if
173
end if
174
break
175
176
case SPIKES_DISAPPEAR
177
if object.moveOffset > 0
178
object.moveOffset -= 0x80000
179
object.xpos -= object.xvel
180
object.ypos -= object.yvel
181
else
182
object.state = SPIKES_HIDDEN
183
end if
184
break
185
186
end switch
187
188
switch object.propertyValue
189
case 0
190
foreach (GROUP_PLAYERS, currentPlayer, ACTIVE_ENTITIES)
191
BoxCollisionTest(C_SOLID, object.entityPos, -20, -16, 20, 16, currentPlayer, C_BOX, C_BOX, C_BOX, C_BOX)
192
if checkResult == COL_BOTTOM
193
if player[currentPlayer].gravity == GRAVITY_GROUND
194
CallFunction(Player_Kill)
195
end if
196
end if
197
198
if player[currentPlayer].yvel > -1
199
BoxCollisionTest(C_TOUCH, object.entityPos, -19, -17, 19, -12, currentPlayer, C_BOX, C_BOX, C_BOX, C_BOX)
200
if checkResult == true
201
CallFunction(Player_SpikeHit)
202
end if
203
end if
204
next
205
break
206
207
case 1
208
foreach (GROUP_PLAYERS, currentPlayer, ACTIVE_ENTITIES)
209
BoxCollisionTest(C_SOLID, object.entityPos, -16, -20, 15, 20, currentPlayer, C_BOX, C_BOX, C_BOX, C_BOX)
210
if checkResult == COL_BOTTOM
211
if player[currentPlayer].gravity == GRAVITY_GROUND
212
CallFunction(Player_Kill)
213
end if
214
end if
215
216
if player[currentPlayer].xvel <= 0
217
BoxCollisionTest(C_TOUCH, object.entityPos, 12, -19, 16, 19, currentPlayer, C_BOX, C_BOX, C_BOX, C_BOX)
218
if checkResult == true
219
CallFunction(Player_SpikeHit)
220
end if
221
end if
222
next
223
break
224
225
case 2
226
foreach (GROUP_PLAYERS, currentPlayer, ACTIVE_ENTITIES)
227
BoxCollisionTest(C_SOLID, object.entityPos, -15, -20, 16, 20, currentPlayer, C_BOX, C_BOX, C_BOX, C_BOX)
228
if checkResult == COL_BOTTOM
229
if player[currentPlayer].gravity == GRAVITY_GROUND
230
CallFunction(Player_Kill)
231
end if
232
end if
233
234
BoxCollisionTest(C_TOUCH, object.entityPos, -16, -19, -12, 19, currentPlayer, C_BOX, C_BOX, C_BOX, C_BOX)
235
if checkResult == true
236
CallFunction(Player_SpikeHit)
237
end if
238
next
239
break
240
241
case 3
242
foreach (GROUP_PLAYERS, currentPlayer, ACTIVE_ENTITIES)
243
temp0 = player[currentPlayer].yvel
244
BoxCollisionTest(C_SOLID, object.entityPos, -20, -16, 20, 15, currentPlayer, C_BOX, C_BOX, C_BOX, C_BOX)
245
if checkResult == COL_BOTTOM
246
if player[currentPlayer].gravity == GRAVITY_GROUND
247
CallFunction(Player_Kill)
248
player[currentPlayer].invincibleTimer = 0
249
else
250
CallFunction(Player_SpikeHit)
251
end if
252
temp0 = 1
253
end if
254
255
if temp0 < 1
256
BoxCollisionTest(C_TOUCH, object.entityPos, -19, 12, 19, 14, currentPlayer, C_BOX, C_BOX, C_BOX, C_BOX)
257
if checkResult == true
258
CallFunction(Player_SpikeHit)
259
end if
260
end if
261
next
262
break
263
264
case 4
265
foreach (GROUP_PLAYERS, currentPlayer, ACTIVE_ENTITIES)
266
BoxCollisionTest(C_SOLID, object.entityPos, -4, -16, 4, 16, currentPlayer, C_BOX, C_BOX, C_BOX, C_BOX)
267
if checkResult == COL_BOTTOM
268
if player[currentPlayer].gravity == GRAVITY_GROUND
269
CallFunction(Player_Kill)
270
end if
271
end if
272
273
if player[currentPlayer].yvel > -1
274
BoxCollisionTest(C_TOUCH, object.entityPos, -3, -17, 3, -12, currentPlayer, C_BOX, C_BOX, C_BOX, C_BOX)
275
if checkResult == true
276
CallFunction(Player_SpikeHit)
277
end if
278
end if
279
next
280
break
281
282
case 5
283
foreach (GROUP_PLAYERS, currentPlayer, ACTIVE_ENTITIES)
284
BoxCollisionTest(C_SOLID, object.entityPos, -16, -4, 15, 4, currentPlayer, C_BOX, C_BOX, C_BOX, C_BOX)
285
if checkResult == COL_BOTTOM
286
if player[currentPlayer].gravity == GRAVITY_GROUND
287
CallFunction(Player_Kill)
288
end if
289
end if
290
291
if player[currentPlayer].xvel <= 0
292
BoxCollisionTest(C_TOUCH, object.entityPos, 12, -3, 16, 3, currentPlayer, C_BOX, C_BOX, C_BOX, C_BOX)
293
if checkResult == true
294
CallFunction(Player_SpikeHit)
295
end if
296
end if
297
next
298
break
299
300
case 6
301
foreach (GROUP_PLAYERS, currentPlayer, ACTIVE_ENTITIES)
302
BoxCollisionTest(C_SOLID, object.entityPos, -15, -4, 16, 4, currentPlayer, C_BOX, C_BOX, C_BOX, C_BOX)
303
if checkResult == COL_BOTTOM
304
if player[currentPlayer].gravity == GRAVITY_GROUND
305
CallFunction(Player_Kill)
306
end if
307
end if
308
309
BoxCollisionTest(C_TOUCH, object.entityPos, -16, -3, -12, 3, currentPlayer, C_BOX, C_BOX, C_BOX, C_BOX)
310
if checkResult == true
311
CallFunction(Player_SpikeHit)
312
end if
313
next
314
break
315
316
case 7
317
foreach (GROUP_PLAYERS, currentPlayer, ACTIVE_ENTITIES)
318
temp0 = player[currentPlayer].yvel
319
BoxCollisionTest(C_SOLID, object.entityPos, -4, -16, 4, 15, currentPlayer, C_BOX, C_BOX, C_BOX, C_BOX)
320
if checkResult == COL_BOTTOM
321
if player[currentPlayer].gravity == GRAVITY_GROUND
322
CallFunction(Player_Kill)
323
player[currentPlayer].invincibleTimer = 0
324
else
325
CallFunction(Player_SpikeHit)
326
end if
327
temp0 = 1
328
end if
329
330
if temp0 < 1
331
BoxCollisionTest(C_TOUCH, object.entityPos, -3, 12, 3, 14, currentPlayer, C_BOX, C_BOX, C_BOX, C_BOX)
332
if checkResult == true
333
CallFunction(Player_SpikeHit)
334
end if
335
end if
336
next
337
break
338
339
case 8
340
foreach (GROUP_PLAYERS, currentPlayer, ACTIVE_ENTITIES)
341
BoxCollisionTest(C_SOLID, object.entityPos, -28, -16, 28, 16, currentPlayer, C_BOX, C_BOX, C_BOX, C_BOX)
342
if checkResult == COL_BOTTOM
343
if player[currentPlayer].gravity == GRAVITY_GROUND
344
CallFunction(Player_Kill)
345
end if
346
end if
347
348
if player[currentPlayer].yvel > -1
349
BoxCollisionTest(C_TOUCH, object.entityPos, -27, -17, 27, -12, currentPlayer, C_BOX, C_BOX, C_BOX, C_BOX)
350
if checkResult == true
351
CallFunction(Player_SpikeHit)
352
end if
353
end if
354
next
355
break
356
357
case 9
358
foreach (GROUP_PLAYERS, currentPlayer, ACTIVE_ENTITIES)
359
BoxCollisionTest(C_SOLID, object.entityPos, -16, -28, 15, 28, currentPlayer, C_BOX, C_BOX, C_BOX, C_BOX)
360
if checkResult == COL_BOTTOM
361
if player[currentPlayer].gravity == GRAVITY_GROUND
362
CallFunction(Player_Kill)
363
end if
364
end if
365
366
if player[currentPlayer].xvel <= 0
367
BoxCollisionTest(C_TOUCH, object.entityPos, 12, -27, 16, 27, currentPlayer, C_BOX, C_BOX, C_BOX, C_BOX)
368
if checkResult == true
369
CallFunction(Player_SpikeHit)
370
end if
371
end if
372
next
373
break
374
375
case 10
376
foreach (GROUP_PLAYERS, currentPlayer, ACTIVE_ENTITIES)
377
BoxCollisionTest(C_SOLID, object.entityPos, -15, -28, 16, 28, currentPlayer, C_BOX, C_BOX, C_BOX, C_BOX)
378
if checkResult == COL_BOTTOM
379
if player[currentPlayer].gravity == GRAVITY_GROUND
380
CallFunction(Player_Kill)
381
end if
382
end if
383
384
BoxCollisionTest(C_TOUCH, object.entityPos, -16, -27, -12, 27, currentPlayer, C_BOX, C_BOX, C_BOX, C_BOX)
385
if checkResult == true
386
CallFunction(Player_SpikeHit)
387
end if
388
next
389
break
390
391
case 11
392
foreach (GROUP_PLAYERS, currentPlayer, ACTIVE_ENTITIES)
393
temp0 = player[currentPlayer].yvel
394
BoxCollisionTest(C_SOLID, object.entityPos, -28, -16, 28, 15, currentPlayer, C_BOX, C_BOX, C_BOX, C_BOX)
395
if checkResult == COL_BOTTOM
396
if player[currentPlayer].gravity == GRAVITY_GROUND
397
CallFunction(Player_Kill)
398
player[currentPlayer].invincibleTimer = 0
399
else
400
CallFunction(Player_SpikeHit)
401
end if
402
temp0 = 1
403
end if
404
405
if temp0 < 1
406
BoxCollisionTest(C_TOUCH, object.entityPos, -27, 12, 27, 14, currentPlayer, C_BOX, C_BOX, C_BOX, C_BOX)
407
if checkResult == true
408
CallFunction(Player_SpikeHit)
409
end if
410
end if
411
next
412
break
413
414
case 12
415
foreach (GROUP_PLAYERS, currentPlayer, ACTIVE_ENTITIES)
416
BoxCollisionTest(C_SOLID, object.entityPos, -64, -16, 64, 16, currentPlayer, C_BOX, C_BOX, C_BOX, C_BOX)
417
if checkResult == COL_BOTTOM
418
if player[currentPlayer].gravity == GRAVITY_GROUND
419
CallFunction(Player_Kill)
420
end if
421
end if
422
423
if player[currentPlayer].yvel > -1
424
BoxCollisionTest(C_TOUCH, object.entityPos, -63, -17, 63, -12, currentPlayer, C_BOX, C_BOX, C_BOX, C_BOX)
425
if checkResult == true
426
CallFunction(Player_SpikeHit)
427
end if
428
end if
429
next
430
break
431
432
case 13
433
foreach (GROUP_PLAYERS, currentPlayer, ACTIVE_ENTITIES)
434
BoxCollisionTest(C_SOLID, object.entityPos, -16, -64, 15, 64, currentPlayer, C_BOX, C_BOX, C_BOX, C_BOX)
435
if checkResult == COL_BOTTOM
436
if player[currentPlayer].gravity == GRAVITY_GROUND
437
CallFunction(Player_Kill)
438
end if
439
end if
440
441
if player[currentPlayer].xvel <= 0
442
BoxCollisionTest(C_TOUCH, object.entityPos, 12, -63, 16, 63, currentPlayer, C_BOX, C_BOX, C_BOX, C_BOX)
443
if checkResult == true
444
CallFunction(Player_SpikeHit)
445
end if
446
end if
447
next
448
break
449
450
case 14
451
foreach (GROUP_PLAYERS, currentPlayer, ACTIVE_ENTITIES)
452
BoxCollisionTest(C_SOLID, object.entityPos, -15, -64, 16, 64, currentPlayer, C_BOX, C_BOX, C_BOX, C_BOX)
453
if checkResult == COL_BOTTOM
454
if player[currentPlayer].gravity == GRAVITY_GROUND
455
CallFunction(Player_Kill)
456
end if
457
end if
458
459
BoxCollisionTest(C_TOUCH, object.entityPos, -16, -63, -12, 63, currentPlayer, C_BOX, C_BOX, C_BOX, C_BOX)
460
if checkResult == true
461
CallFunction(Player_SpikeHit)
462
end if
463
next
464
break
465
466
case 15
467
foreach (GROUP_PLAYERS, currentPlayer, ACTIVE_ENTITIES)
468
temp0 = player[currentPlayer].yvel
469
BoxCollisionTest(C_SOLID, object.entityPos, -64, -16, 64, 15, currentPlayer, C_BOX, C_BOX, C_BOX, C_BOX)
470
if checkResult == COL_BOTTOM
471
if player[currentPlayer].gravity == GRAVITY_GROUND
472
CallFunction(Player_Kill)
473
player[currentPlayer].invincibleTimer = 0
474
else
475
CallFunction(Player_SpikeHit)
476
end if
477
temp0 = true
478
end if
479
480
if temp0 < 1
481
BoxCollisionTest(C_TOUCH, object.entityPos, -63, 12, 63, 14, currentPlayer, C_BOX, C_BOX, C_BOX, C_BOX)
482
if checkResult == true
483
CallFunction(Player_SpikeHit)
484
end if
485
end if
486
next
487
break
488
489
end switch
490
end event
491
492
493
event ObjectDraw
494
switch object.propertyValue
495
case 0 // 3 Spikes (Up)
496
case 1 // 3 Spikes (Right)
497
case 2 // 3 Spikes (Left)
498
case 3 // 3 Spikes (Down)
499
case 4 // 1 Spike (Up)
500
case 5 // 1 Spike (Right)
501
case 6 // 1 Spike (Left)
502
case 7 // 1 Spike (Down)
503
DrawSprite(object.propertyValue)
504
break
505
506
case 8 // 3 Spikes (Spaced Out) (Up)
507
case 11 // 3 Spikes (Spaced Out) (Down)
508
temp1 = object.propertyValue
509
temp1 -= 4
510
DrawSprite(temp1)
511
temp0 = object.xpos
512
temp0 -= 0x180000
513
DrawSpriteXY(temp1, temp0, object.ypos)
514
temp0 += 0x300000
515
DrawSpriteXY(temp1, temp0, object.ypos)
516
break
517
518
case 9 // 3 Spikes (Spaced Out) (Right)
519
case 10 // 3 Spikes (Spaced Out) (Left)
520
temp1 = object.propertyValue
521
temp1 -= 4
522
DrawSprite(temp1)
523
temp0 = object.ypos
524
temp0 -= 0x180000
525
DrawSpriteXY(temp1, object.xpos, temp0)
526
temp0 += 0x300000
527
DrawSpriteXY(temp1, object.xpos, temp0)
528
break
529
530
case 12 // 6 Spikes (Spaced Out) (Up)
531
case 15 // 6 Spikes (Spaced Out) (Down)
532
temp1 = object.propertyValue
533
temp1 -= 8
534
temp0 = object.xpos
535
temp0 -= 0x3C0000
536
temp2 = 0
537
while temp2 < 6
538
DrawSpriteXY(temp1, temp0, object.ypos)
539
temp0 += 0x180000
540
temp2++
541
loop
542
break
543
544
case 13 // 6 Spikes (Spaced Out) (Right)
545
case 14 // 6 Spikes (Spaced Out) (Left)
546
temp1 = object.propertyValue
547
temp1 -= 8
548
temp0 = object.ypos
549
temp0 -= 0x3C0000
550
temp2 = 0
551
while temp2 < 6
552
DrawSpriteXY(temp1, object.xpos, temp0)
553
temp0 += 0x180000
554
temp2++
555
loop
556
break
557
558
end switch
559
end event
560
561
562
event ObjectStartup
563
LoadSpriteSheet("Global/Items.gif")
564
SpriteFrame(-20, -16, 40, 32, 84, 133)
565
SpriteFrame(-16, -20, 32, 40, 174, 133)
566
SpriteFrame(-16, -20, 32, 40, 174, 174)
567
SpriteFrame(-20, -16, 40, 32, 125, 133)
568
SpriteFrame(-4, -16, 8, 32, 84, 133)
569
SpriteFrame(-16, -4, 32, 8, 174, 133)
570
SpriteFrame(-16, -4, 32, 8, 174, 174)
571
SpriteFrame(-4, -16, 8, 32, 125, 133)
572
573
temp0 = 0
574
Spikes_startDebugID = DebugMode_ObjCount
575
while temp0 < 16
576
SetTableValue(TypeName[Spikes], DebugMode_ObjCount, DebugMode_TypesTable)
577
SetTableValue(Spikes_DebugDraw, DebugMode_ObjCount, DebugMode_DrawTable)
578
SetTableValue(Spikes_DebugSpawn, DebugMode_ObjCount, DebugMode_SpawnTable)
579
DebugMode_ObjCount++
580
temp0++
581
loop
582
583
foreach (TypeName[Spikes], arrayPos0, ALL_ENTITIES)
584
if object[arrayPos0].propertyValue > 15
585
object[arrayPos0].propertyValue &= 0xF
586
object[arrayPos0].state = SPIKES_HIDDEN
587
588
// Orientation
589
temp0 = object[arrayPos0].propertyValue
590
temp0 &= 3
591
switch temp0
592
case 0
593
object[arrayPos0].xvel = 0
594
object[arrayPos0].yvel = 0x80000
595
break
596
597
case 1
598
object[arrayPos0].xvel = -0x80000
599
object[arrayPos0].yvel = 0
600
break
601
602
case 2
603
object[arrayPos0].xvel = 0x80000
604
object[arrayPos0].yvel = 0
605
break
606
607
case 3
608
object[arrayPos0].xvel = 0
609
object[arrayPos0].yvel = -0x80000
610
break
611
end switch
612
end if
613
next
614
end event
615
616
617
// ========================
618
// Editor Events
619
// ========================
620
621
event RSDKEdit
622
if editor.returnVariable == true
623
switch editor.variableID
624
case EDIT_VAR_PROPVAL // property value
625
checkResult = object.propertyValue
626
break
627
628
case 0 // type
629
checkResult = object.propertyValue
630
checkResult &= 0xF
631
checkResult >>= 2
632
break
633
634
case 1 // orientation
635
checkResult = object.propertyValue
636
checkResult &= 0xF
637
checkResult &= 3
638
break
639
640
case 2 // moving
641
GetBit(checkResult, object.propertyValue, 7)
642
break
643
644
end switch
645
else
646
switch editor.variableID
647
case EDIT_VAR_PROPVAL // property value
648
object.propertyValue = editor.variableValue
649
break
650
651
case 0 // type
652
temp1 = 0x3
653
temp1 <<= 2
654
Not(temp1)
655
object.propertyValue &= temp1
656
657
temp0 = editor.variableValue
658
temp0 &= 3
659
temp0 <<= 2
660
object.propertyValue |= temp0
661
break
662
663
case 1 // orientation
664
temp1 = 0x3
665
Not(temp1)
666
object.propertyValue &= temp1
667
668
temp0 = editor.variableValue
669
temp0 &= 3
670
object.propertyValue |= temp0
671
break
672
673
case 2 // moving
674
CheckNotEqual(editor.variableValue, false)
675
SetBit(object.propertyValue, 7, checkResult)
676
break
677
678
end switch
679
end if
680
end event
681
682
683
event RSDKDraw
684
temp7 = object.propertyValue
685
temp7 &= 0xF
686
687
switch temp7
688
case 0 // 3 Spikes (Up)
689
case 1 // 3 Spikes (Right)
690
case 2 // 3 Spikes (Left)
691
case 3 // 3 Spikes (Down)
692
case 4 // 1 Spike (Up)
693
case 5 // 1 Spike (Right)
694
case 6 // 1 Spike (Left)
695
case 7 // 1 Spike (Down)
696
DrawSprite(temp7)
697
break
698
699
case 8 // 3 Spikes (Spaced Out) (Up)
700
case 11 // 3 Spikes (Spaced Out) (Down)
701
temp1 = temp7
702
temp1 -= 4
703
DrawSprite(temp1)
704
temp0 = object.xpos
705
temp0 -= 0x180000
706
DrawSpriteXY(temp1, temp0, object.ypos)
707
temp0 += 0x300000
708
DrawSpriteXY(temp1, temp0, object.ypos)
709
break
710
711
case 9 // 3 Spikes (Spaced Out) (Right)
712
case 10 // 3 Spikes (Spaced Out) (Left)
713
temp1 = temp7
714
temp1 -= 4
715
DrawSprite(temp1)
716
temp0 = object.ypos
717
temp0 -= 0x180000
718
DrawSpriteXY(temp1, object.xpos, temp0)
719
temp0 += 0x300000
720
DrawSpriteXY(temp1, object.xpos, temp0)
721
break
722
723
case 12 // 6 Spikes (Spaced Out) (Up)
724
case 15 // 6 Spikes (Spaced Out) (Down)
725
temp1 = temp7
726
temp1 -= 8
727
temp0 = object.xpos
728
temp0 -= 0x3C0000
729
temp2 = 0
730
while temp2 < 6
731
DrawSpriteXY(temp1, temp0, object.ypos)
732
temp0 += 0x180000
733
temp2++
734
loop
735
break
736
737
case 13 // 6 Spikes (Spaced Out) (Right)
738
case 14 // 6 Spikes (Spaced Out) (Left)
739
temp1 = temp7
740
temp1 -= 8
741
temp0 = object.ypos
742
temp0 -= 0x3C0000
743
temp2 = 0
744
while temp2 < 6
745
DrawSpriteXY(temp1, object.xpos, temp0)
746
temp0 += 0x180000
747
temp2++
748
loop
749
break
750
751
end switch
752
end event
753
754
755
event RSDKLoad
756
LoadSpriteSheet("Global/Items.gif")
757
SpriteFrame(-20, -16, 40, 32, 84, 133)
758
SpriteFrame(-16, -20, 32, 40, 174, 133)
759
SpriteFrame(-16, -20, 32, 40, 174, 174)
760
SpriteFrame(-20, -16, 40, 32, 125, 133)
761
SpriteFrame(-4, -16, 8, 32, 84, 133)
762
SpriteFrame(-16, -4, 32, 8, 174, 133)
763
SpriteFrame(-16, -4, 32, 8, 174, 174)
764
SpriteFrame(-4, -16, 8, 32, 125, 133)
765
766
AddEditorVariable("type")
767
SetActiveVariable("type")
768
AddEnumVariable("3 Spikes", 0)
769
AddEnumVariable("1 Spike", 1)
770
AddEnumVariable("3 Spikes (Spaced Out)", 2)
771
AddEnumVariable("6 Spikes (Spaced Out)", 3)
772
773
AddEditorVariable("orientation")
774
SetActiveVariable("orientation")
775
AddEnumVariable("Up", 0)
776
AddEnumVariable("Right", 1)
777
AddEnumVariable("Left", 2)
778
AddEnumVariable("Down", 3)
779
780
AddEditorVariable("moving")
781
SetActiveVariable("moving")
782
AddEnumVariable("false", false)
783
AddEnumVariable("true", true)
784
end event
785
786