Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
rubberduckycooly
GitHub Repository: rubberduckycooly/Sonic-CD-2011-Script-Decompilation
Path: blob/main/Scripts/R8/HVPlatform.txt
1319 views
1
//--------Sonic CD Horizontal-Vertical Platform 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 : H_PLAT_BASE
10
#alias 1 : H_PLAT_EXTEND_1
11
#alias 2 : H_PLAT_EXTEND_2
12
#alias 3 : H_PLAT_EXTEND_3
13
#alias 4 : H_PLAT_FULL_EXTEND
14
#alias 5 : H_PLAT_RETRACT_1
15
#alias 6 : H_PLAT_RETRACT_2
16
#alias 7 : H_PLAT_RETRACT_3
17
18
#alias 8 : V_PLAT_BASE
19
#alias 9 : V_PLAT_EXTEND_1
20
#alias 10 : V_PLAT_EXTEND_2
21
#alias 11 : V_PLAT_EXTEND_3
22
#alias 12 : V_PLAT_FULL_EXTEND
23
#alias 13 : V_PLAT_RETRACT_1
24
#alias 14 : V_PLAT_RETRACT_2
25
#alias 15 : V_PLAT_RETRACT_3
26
27
28
sub ObjectMain
29
switch Object.State
30
case H_PLAT_BASE
31
case V_PLAT_BASE
32
if Object.Timer < 30
33
Object.Timer++
34
else
35
Object.Timer = 0
36
Object.State++
37
end if
38
break
39
40
case H_PLAT_EXTEND_1
41
case H_PLAT_EXTEND_2
42
case H_PLAT_EXTEND_3
43
case V_PLAT_EXTEND_1
44
case V_PLAT_EXTEND_2
45
case V_PLAT_EXTEND_3
46
if Object.Timer < 5
47
Object.Timer++
48
else
49
Object.Timer = 0
50
Object.State++
51
end if
52
break
53
54
case H_PLAT_FULL_EXTEND
55
case V_PLAT_FULL_EXTEND
56
if Object.Timer < 120
57
Object.Timer++
58
else
59
Object.Timer = 0
60
Object.State++
61
end if
62
break
63
64
case H_PLAT_RETRACT_1
65
case H_PLAT_RETRACT_2
66
case H_PLAT_RETRACT_3
67
case V_PLAT_RETRACT_1
68
case V_PLAT_RETRACT_2
69
case V_PLAT_RETRACT_3
70
if Object.Timer < 5
71
Object.Timer++
72
else
73
Object.Timer = 0
74
Object.State++
75
Object.State &= 15
76
end if
77
break
78
79
end switch
80
81
end sub
82
83
84
sub ObjectPlayerInteraction
85
// Use different hitboxes for the Platform's different sizes
86
switch Object.State
87
case H_PLAT_BASE
88
case V_PLAT_BASE
89
PlayerObjectCollision(C_BOX, -8, -8, 8, 8)
90
break
91
92
case H_PLAT_EXTEND_1
93
case H_PLAT_RETRACT_3
94
PlayerObjectCollision(C_BOX, -24, -8, 24, 8)
95
break
96
97
case H_PLAT_EXTEND_2
98
case H_PLAT_RETRACT_2
99
PlayerObjectCollision(C_BOX, -40, -8, 40, 8)
100
break
101
102
case H_PLAT_EXTEND_3
103
case H_PLAT_FULL_EXTEND
104
case H_PLAT_RETRACT_1
105
// Widest version
106
PlayerObjectCollision(C_BOX, -56, -8, 56, 8)
107
break
108
109
case V_PLAT_EXTEND_1
110
case V_PLAT_RETRACT_3
111
PlayerObjectCollision(C_BOX, -8, -24, 8, 24)
112
break
113
114
case V_PLAT_EXTEND_2
115
case V_PLAT_RETRACT_2
116
PlayerObjectCollision(C_BOX, -8, -40, 8, 40)
117
break
118
119
case V_PLAT_EXTEND_3
120
case V_PLAT_FULL_EXTEND
121
case V_PLAT_RETRACT_1
122
// Tallest version
123
PlayerObjectCollision(C_BOX, -8, -56, 8, 56)
124
break
125
126
end switch
127
128
end sub
129
130
131
sub ObjectDraw
132
// Draw the Base Post Frame
133
DrawSprite(0)
134
135
// And then depending on the Platform's current state,
136
// draw all the extended Platform frames as needed
137
switch Object.State
138
case H_PLAT_EXTEND_1
139
case H_PLAT_RETRACT_3
140
DrawSprite(3)
141
DrawSprite(4)
142
break
143
144
case H_PLAT_EXTEND_2
145
case H_PLAT_RETRACT_2
146
DrawSprite(2)
147
DrawSprite(3)
148
DrawSprite(4)
149
DrawSprite(5)
150
break
151
152
case H_PLAT_EXTEND_3
153
case H_PLAT_FULL_EXTEND
154
case H_PLAT_RETRACT_1
155
// Fully extended, horizontally
156
DrawSprite(1)
157
DrawSprite(2)
158
DrawSprite(3)
159
DrawSprite(4)
160
DrawSprite(5)
161
DrawSprite(6)
162
break
163
164
case V_PLAT_EXTEND_1
165
case V_PLAT_RETRACT_3
166
DrawSprite(9)
167
DrawSprite(10)
168
break
169
170
case V_PLAT_EXTEND_2
171
case V_PLAT_RETRACT_2
172
DrawSprite(8)
173
DrawSprite(9)
174
DrawSprite(10)
175
DrawSprite(11)
176
break
177
178
case V_PLAT_EXTEND_3
179
case V_PLAT_FULL_EXTEND
180
case V_PLAT_RETRACT_1
181
// Fully extended, vertically
182
DrawSprite(7)
183
DrawSprite(8)
184
DrawSprite(9)
185
DrawSprite(10)
186
DrawSprite(11)
187
DrawSprite(12)
188
break
189
190
end switch
191
192
end sub
193
194
195
sub ObjectStartup
196
197
LoadSpriteSheet("R8/Objects.gif")
198
199
// Base Post Frame
200
SpriteFrame(-8, -8, 16, 16, 140, 123)
201
202
// All the extension frames
203
SpriteFrame(-56, -8, 16, 16, 75, 200)
204
SpriteFrame(-40, -8, 16, 16, 75, 200)
205
SpriteFrame(-24, -8, 16, 16, 75, 200)
206
SpriteFrame(8, -8, 16, 16, 75, 200)
207
SpriteFrame(24, -8, 16, 16, 75, 200)
208
SpriteFrame(40, -8, 16, 16, 75, 200)
209
SpriteFrame(-8, -56, 16, 16, 75, 200)
210
SpriteFrame(-8, -40, 16, 16, 75, 200)
211
SpriteFrame(-8, -24, 16, 16, 75, 200)
212
SpriteFrame(-8, 8, 16, 16, 75, 200)
213
SpriteFrame(-8, 24, 16, 16, 75, 200)
214
SpriteFrame(-8, 40, 16, 16, 75, 200)
215
216
// Find all HV Platform objects in the level
217
ArrayPos0 = 32
218
while ArrayPos0 < 1056
219
if Object[ArrayPos0].Type == TypeName[HV Platform]
220
// Start the Platform at fully extended horizontally
221
Object[ArrayPos0].State = V_PLAT_FULL_EXTEND
222
end if
223
ArrayPos0++
224
loop
225
226
end sub
227
228
229
// ========================
230
// Editor Subs
231
// ========================
232
233
sub RSDKDraw
234
DrawSprite(0)
235
TempValue0 = 7
236
while TempValue0 <= 12
237
DrawSprite(TempValue0); TempValue0++
238
loop
239
240
if Editor.ShowGizmos == true
241
Editor.DrawingOverlay = true
242
Object.InkEffect = 1
243
TempValue0 = 0
244
while TempValue0 <= 6
245
DrawSpriteFX(TempValue0, FX_INK, Object.XPos, Object.YPos); TempValue0++
246
loop
247
Editor.DrawingOverlay = false
248
end if
249
end sub
250
251
252
sub RSDKLoad
253
LoadSpriteSheet("R8/Objects.gif")
254
// Base Post Frame
255
SpriteFrame(-8, -8, 16, 16, 140, 123)
256
257
// All the extension frames
258
SpriteFrame(-56, -8, 16, 16, 75, 200)
259
SpriteFrame(-40, -8, 16, 16, 75, 200)
260
SpriteFrame(-24, -8, 16, 16, 75, 200)
261
SpriteFrame(8, -8, 16, 16, 75, 200)
262
SpriteFrame(24, -8, 16, 16, 75, 200)
263
SpriteFrame(40, -8, 16, 16, 75, 200)
264
SpriteFrame(-8, -56, 16, 16, 75, 200)
265
SpriteFrame(-8, -40, 16, 16, 75, 200)
266
SpriteFrame(-8, -24, 16, 16, 75, 200)
267
SpriteFrame(-8, 8, 16, 16, 75, 200)
268
SpriteFrame(-8, 24, 16, 16, 75, 200)
269
SpriteFrame(-8, 40, 16, 16, 75, 200)
270
271
SetVariableAlias(ALIAS_VAR_PROPVAL, "unused")
272
end sub
273
274