Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
rubberduckycooly
GitHub Repository: rubberduckycooly/Sonic-CD-2011-Script-Decompilation
Path: blob/main/Scripts/R6/FreezeJet.txt
1319 views
1
//-----------------Sonic CD Freeze Jet 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
#alias Object.Value1 : Object.TimerResetFreq
8
#alias Player.Value4 : Player.InvincibleTimer
9
10
// States
11
#alias 0 : FREEZEJET_STARTUP
12
#alias 1 : FREEZEJET_SHOT_BEAM
13
#alias 2 : FREEZEJET_STOPPING_BEAM
14
#alias 3 : FREEZEJET_COOLDOWN
15
16
// Warp Destination
17
#alias 0 : WARPDEST_NONE
18
19
20
sub ObjectMain
21
switch Object.State
22
case FREEZEJET_STARTUP
23
if Object.Timer < 120
24
Object.Timer++
25
Object.Frame = 2
26
else
27
Object.Timer = 0
28
Object.State++
29
Object.Frame = 1
30
end if
31
break
32
33
case FREEZEJET_SHOT_BEAM
34
if Object.Timer < 160
35
TempValue0 = Object.Timer
36
TempValue0 &= 1
37
if TempValue0 == 0
38
Object.Frame++
39
end if
40
if Object.Frame > 6
41
Object.Frame = 3
42
Object.Direction++
43
Object.Direction &= FACING_LEFT
44
end if
45
Object.Timer++
46
else
47
Object.Timer = 0
48
Object.State++
49
Object.Frame = 7
50
end if
51
break
52
53
case FREEZEJET_STOPPING_BEAM
54
if Object.Timer < 24
55
TempValue0 = Object.Timer
56
TempValue0 &= 3
57
if TempValue0 == 0
58
Object.Frame++
59
end if
60
if Object.Frame > 12
61
Object.Frame = 7
62
Object.Direction++
63
Object.Direction &= FACING_LEFT
64
end if
65
Object.Timer++
66
else
67
Object.Timer = 0
68
Object.TimerResetFreq = 7
69
Object.State++
70
end if
71
break
72
73
case FREEZEJET_COOLDOWN
74
if Object.Timer < 120
75
TempValue0 = Object.Timer
76
TempValue0 &= Object.TimerResetFreq
77
if TempValue0 == 0
78
Object.Frame++
79
Object.TimerResetFreq++
80
Object.TimerResetFreq <<= 1
81
Object.TimerResetFreq--
82
end if
83
if Object.Frame > 12
84
Object.Frame = 7
85
Object.Direction++
86
Object.Direction &= FACING_LEFT
87
end if
88
Object.Timer++
89
else
90
Object.Timer = 0
91
Object.State = FREEZEJET_SHOT_BEAM
92
Object.Frame = 1
93
end if
94
break
95
96
end switch
97
end sub
98
99
100
sub ObjectPlayerInteraction
101
if Object.State == FREEZEJET_SHOT_BEAM
102
PlayerObjectCollision(C_TOUCH, -16, 0, 16, 60)
103
if CheckResult == true
104
if Player.InvincibleTimer == 0
105
if Warp.Destination > WARPDEST_NONE
106
if Warp.Timer > 99
107
if Warp.Timer < 220
108
Warp.Destination = WARPDEST_NONE
109
end if
110
end if
111
Warp.Timer = 0
112
end if
113
Player.State = Player_State_Static
114
115
Player.Visible = false
116
Player.ObjectInteraction = false
117
118
Player.Speed = 0
119
Player.XVelocity = 0
120
Player.YVelocity = 0
121
122
CreateTempObject(TypeName[Ice Block], 0, Player.XPos, Player.YPos)
123
Object[TempObjectPos].DrawOrder = 4
124
end if
125
end if
126
end if
127
end sub
128
129
130
sub ObjectDraw
131
DrawSpriteFX(Object.Frame, FX_FLIP, Object.XPos, Object.YPos)
132
133
DrawSprite(0)
134
end sub
135
136
137
sub ObjectStartup
138
LoadSpriteSheet("R6/Objects.gif")
139
140
SpriteFrame(-32, -8, 64, 16, 1, 1) // #0 - Freeze Jet Machine
141
142
SpriteFrame(-16, 0, 32, 36, 1, 46) // #1 - Freeze Beam frame 0
143
SpriteFrame(-16, 0, 0, 0, 1, 46) // #2 - Freeze Beam frame 1
144
SpriteFrame(-16, 0, 0, 0, 1, 46) // #3 - Freeze Beam frame 2
145
SpriteFrame(-16, 0, 32, 60, 1, 22) // #4 - Freeze Beam frame 3
146
SpriteFrame(-16, 0, 0, 0, 1, 46) // #5 - Freeze Beam frame 4
147
SpriteFrame(-16, 4, 32, 64, 1, 18) // #6 - Freeze Beam frame 5
148
SpriteFrame(-16, 0, 0, 0, 1, 46) // #7 - Freeze Beam frame 6
149
SpriteFrame(-16, 0, 0, 0, 1, 46) // #8 - Freeze Beam frame 7
150
SpriteFrame(-16, 0, 32, 60, 1, 22) // #9 - Freeze Beam frame 8
151
SpriteFrame(-16, 0, 0, 0, 1, 46) // #10 - Freeze Beam frame 9
152
SpriteFrame(-16, 0, 0, 0, 1, 46) // #11 - Freeze Beam frame 10
153
SpriteFrame(-16, 4, 32, 64, 1, 18) // #12 - Freeze Beam frame 11
154
end sub
155
156
157
// ========================
158
// Editor Subs
159
// ========================
160
161
sub RSDKDraw
162
DrawSprite(0)
163
end sub
164
165
166
sub RSDKLoad
167
LoadSpriteSheet("R6/Objects.gif")
168
169
SpriteFrame(-32, -8, 64, 16, 1, 1) // #0 - Freeze Jet Machine
170
171
SetVariableAlias(ALIAS_VAR_PROPVAL, "unused")
172
end sub
173
174