Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
rubberduckycooly
GitHub Repository: rubberduckycooly/Sonic-CD-2011-Script-Decompilation
Path: blob/main/Scripts/R1/BoostSpinner.txt
1319 views
1
//---------------Sonic CD Boost Spinner Script----------------//
2
//--------Scripted by Christian Whitehead 'The Taxman'--------//
3
//-------Unpacked By Rubberduckycooly's Script Unpacker-------//
4
5
// Aliases
6
#alias Object.Value0 : Object.XOriginPos // Set by Ramp3D
7
#alias Object.Value1 : Object.Timer
8
#alias Object.Value2 : Object.SpinTimer
9
10
// States
11
#alias 0 : BOOSTSPINNER_IDLE
12
#alias 1 : BOOSTSPINNER_SPIN
13
14
15
sub ObjectPlayerInteraction
16
if Object.State == BOOSTSPINNER_IDLE
17
if Object.Frame == 3
18
PlayerObjectCollision(C_TOUCH, 0, -24, 128, 8)
19
if CheckResult == true
20
Object.State = BOOSTSPINNER_SPIN
21
Object.SpinTimer = 4
22
23
#platform: Use_Haptics
24
HapticEffect(30, 0, 0, 0)
25
#endplatform
26
end if
27
end if
28
end if
29
end sub
30
31
32
sub ObjectDraw
33
TempValue0 = Object.XOriginPos
34
TempValue0 -= Object.XPos
35
TempValue0 >>= 20
36
37
Object.Frame = TempValue0
38
if Object.Frame > 3
39
Object.Frame = 3
40
end if
41
42
if Object.State == BOOSTSPINNER_SPIN
43
DrawSpriteXY(Object.SpinTimer, Object.XOriginPos, Object.YPos)
44
Object.Timer++
45
if Object.Timer == 3
46
Object.Timer = 0
47
48
Object.SpinTimer++
49
if Object.SpinTimer == 16
50
Object.State = BOOSTSPINNER_IDLE
51
end if
52
end if
53
else
54
DrawSpriteXY(Object.Frame, Object.XOriginPos, Object.YPos)
55
end if
56
end sub
57
58
59
sub ObjectStartup
60
LoadSpriteSheet("R1/Objects2.gif")
61
62
SpriteFrame(-24, -24, 48, 48, 1, 82) // #0 - Boost spinner front
63
SpriteFrame(-34, -24, 56, 48, 50, 82) // #1 - Boost spinner angle 1
64
SpriteFrame(-38, -24, 57, 48, 107, 82) // #2 - Boost spinner angle 2
65
SpriteFrame(-40, -24, 56, 48, 1, 131) // #3 - Boost spinner angle 3
66
67
// Spinning
68
SpriteFrame(-40, -24, 56, 48, 58, 131) // #4 - Boost spinner rotating 0
69
SpriteFrame(-40, -24, 64, 48, 58, 180) // #5 - Boost spinner rotating 1
70
SpriteFrame(-40, -24, 56, 48, 1, 180) // #6 - Boost spinner rotating 2
71
SpriteFrame(-40, -24, 64, 48, 123, 180) // #7 - Boost spinner rotating 3
72
SpriteFrame(-40, -24, 56, 48, 58, 131) // #8 - Boost spinner rotating 4
73
SpriteFrame(-40, -24, 64, 48, 58, 180) // #9 - Boost spinner rotating 5
74
SpriteFrame(-40, -24, 56, 48, 1, 180) // #10 - Boost spinner rotating 6
75
SpriteFrame(-40, -24, 64, 48, 123, 180) // #11 - Boost spinner rotating 7
76
SpriteFrame(-40, -24, 56, 48, 58, 131) // #12 - Boost spinner rotating 8
77
SpriteFrame(-40, -24, 64, 48, 58, 180) // #13 - Boost spinner rotating 9
78
SpriteFrame(-40, -24, 56, 48, 1, 180) // #14 - Boost spinner rotating 10
79
SpriteFrame(-40, -24, 64, 48, 123, 180) // #15 - Boost spinner rotating 11
80
81
// Used to be below LoadSpriteSheet, moved here for consistency
82
ArrayPos0 = 32
83
while ArrayPos0 < 1056
84
if Object[ArrayPos0].Type == TypeName[Boost Spinner]
85
Object[ArrayPos0].DrawOrder = 4
86
end if
87
88
ArrayPos0++
89
loop
90
end sub
91
92
93
// ========================
94
// Editor Subs
95
// ========================
96
97
sub RSDKDraw
98
DrawSprite(0)
99
end sub
100
101
102
sub RSDKLoad
103
LoadSpriteSheet("R1/Objects2.gif")
104
SpriteFrame(-24, -24, 48, 48, 1, 82) // #0 - Boost spinner front
105
106
SetVariableAlias(ALIAS_VAR_PROPVAL, "unused")
107
end sub
108
109