Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
rubberduckycooly
GitHub Repository: rubberduckycooly/Sonic-CD-2011-Script-Decompilation
Path: blob/main/Scripts/R8/BladePole.txt
1319 views
1
//-----------------Sonic CD Blade Pole 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 : BLADEPOLE_SETUP
10
#alias 1 : BLADEPOLE_MOVE_RIGHT
11
#alias 2 : BLADEPOLE_MOVE_LEFT
12
13
// Collision Sides
14
#alias 0 : CSIDE_FLOOR
15
16
17
sub ObjectMain
18
switch Object.State
19
case BLADEPOLE_SETUP
20
ObjectTileGrip(CSIDE_FLOOR, 0, 48, 0)
21
if CheckResult == true
22
Object.State = BLADEPOLE_MOVE_RIGHT
23
Object.Timer = -64
24
else
25
Object.YPos += 0x10000
26
end if
27
break
28
29
case BLADEPOLE_MOVE_RIGHT
30
if Object.Timer < 96
31
Object.Timer++
32
Object.XPos += 0x10000
33
ObjectTileGrip(CSIDE_FLOOR, 0, 48, 0)
34
if CheckResult == false
35
Object.State = BLADEPOLE_MOVE_LEFT
36
Object.Timer = -64
37
end if
38
else
39
Object.State = BLADEPOLE_MOVE_LEFT
40
Object.Timer = -64
41
end if
42
break
43
44
case BLADEPOLE_MOVE_LEFT
45
if Object.Timer < 96
46
Object.Timer++
47
Object.XPos -= 0x10000
48
ObjectTileGrip(CSIDE_FLOOR, 0, 48, 0)
49
if CheckResult == false
50
Object.State = BLADEPOLE_MOVE_RIGHT
51
Object.Timer = -64
52
end if
53
else
54
Object.State = BLADEPOLE_MOVE_RIGHT
55
Object.Timer = -64
56
end if
57
break
58
end switch
59
60
switch Object.Frame
61
case 0
62
case 2
63
if Object.AnimationTimer < 4
64
Object.AnimationTimer++
65
else
66
Object.AnimationTimer = 0
67
Object.Frame++
68
end if
69
break
70
71
case 1
72
if Object.AnimationTimer < 72
73
Object.AnimationTimer++
74
else
75
Object.AnimationTimer = 0
76
Object.Frame++
77
end if
78
break
79
80
case 3
81
if Object.AnimationTimer < 72
82
Object.AnimationTimer++
83
else
84
Object.AnimationTimer = 0
85
Object.Frame = 0
86
end if
87
break
88
89
end switch
90
end sub
91
92
93
sub ObjectPlayerInteraction
94
switch Object.Frame
95
case 1 // Upper Blade
96
PlayerObjectCollision(C_TOUCH, -28, -48, 28, -40)
97
if CheckResult == true
98
CallFunction(Player_Hit)
99
end if
100
break
101
102
case 3 // Lower Blade
103
PlayerObjectCollision(C_TOUCH, -28, 16, 28, 24)
104
if CheckResult == true
105
CallFunction(Player_Hit)
106
end if
107
break
108
end switch
109
end sub
110
111
112
sub ObjectDraw
113
TempValue0 = Object.Timer
114
TempValue0 += 64
115
TempValue0 %= 18
116
TempValue0 /= 9
117
TempValue0 += 16
118
DrawSprite(TempValue0)
119
120
switch Object.Frame
121
case 0
122
case 2
123
DrawSprite(0)
124
Object.Direction = 2
125
DrawSpriteFX(2, FX_FLIP, Object.XPos, Object.YPos)
126
break
127
128
case 1
129
TempValue0 = Object.AnimationTimer
130
TempValue0 /= 3
131
TempValue0 %= 6
132
TempValue0 += 4
133
DrawSprite(TempValue0)
134
DrawSpriteFX(3, FX_FLIP, Object.XPos, Object.YPos)
135
break
136
137
case 3
138
TempValue0 = Object.AnimationTimer
139
TempValue0 /= 3
140
TempValue0 %= 6
141
TempValue0 += 10
142
DrawSprite(1)
143
DrawSpriteFX(TempValue0, FX_FLIP, Object.XPos, Object.YPos)
144
break
145
end switch
146
end sub
147
148
149
sub ObjectStartup
150
LoadSpriteSheet("R8/Objects.gif")
151
152
SpriteFrame(-16, -48, 32, 24, 67, 216) // #0 - Top Half-extended Blade
153
SpriteFrame(-12, -48, 24, 32, 34, 213) // #1 - Top Closed Blade
154
SpriteFrame(-16, -24, 32, 24, 67, 216) // #2 - Bottom Half-open Blade
155
SpriteFrame(-12, -24, 24, 32, 34, 213) // #3 - Bottom Closed Blade
156
157
SpriteFrame(-32, -48, 64, 8, 50, 182) // #4 - Top Open Blade frame 0
158
SpriteFrame(-24, -48, 48, 8, 50, 191) // #5 - Top Open Blade frame 1
159
SpriteFrame(-16, -48, 32, 8, 99, 191) // #6 - Top Open Blade frame 2
160
SpriteFrame(-4, -48, 8, 8, 115, 182) // #7 - Top Open Blade frame 3
161
SpriteFrame(-16, -48, 32, 8, 222, 245) // #8 - Top Open Blade frame 4
162
SpriteFrame(-24, -48, 48, 8, 1, 246) // #9 - Top Open Blade frame 5
163
164
SpriteFrame(-32, -24, 64, 8, 50, 182) // #10 - Bottom Open Blade frame 0
165
SpriteFrame(-24, -24, 48, 8, 50, 191) // #11 - Bottom Open Blade frame 1
166
SpriteFrame(-16, -24, 32, 8, 99, 191) // #12 - Bottom Open Blade frame 2
167
SpriteFrame(-4, -24, 8, 8, 115, 182) // #13 - Bottom Open Blade frame 3
168
SpriteFrame(-16, -24, 32, 8, 222, 245) // #14 - Bottom Open Blade frame 4
169
SpriteFrame(-24, -24, 48, 8, 1, 246) // #15 - Bottom Open Blade frame 5
170
171
SpriteFrame(-8, -40, 16, 88, 222, 123) // #16 - Blade Pole frame 0
172
SpriteFrame(-8, -40, 16, 88, 239, 123) // #17 - Blade Pole frame 1
173
end sub
174
175
176
// ========================
177
// Editor Subs
178
// ========================
179
180
sub RSDKDraw
181
DrawSprite(3)
182
DrawSprite(0)
183
Object.Direction = 2
184
DrawSpriteFX(2, FX_FLIP, Object.XPos, Object.YPos)
185
end sub
186
187
188
sub RSDKLoad
189
LoadSpriteSheet("R8/Objects.gif")
190
191
SpriteFrame(-16, -48, 32, 24, 67, 216) // #0 - Top Half-extended Blade
192
SpriteFrame(-12, -48, 24, 32, 34, 213) // #1 - Top Closed Blade
193
SpriteFrame(-16, -24, 32, 24, 67, 216) // #2 - Bottom Half-open Blade
194
SpriteFrame(-8, -40, 16, 88, 222, 123) // #3 - Blade Pole
195
196
SetVariableAlias(ALIAS_VAR_PROPVAL, "unused")
197
end sub
198
199