Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
rubberduckycooly
GitHub Repository: rubberduckycooly/Sonic-CD-2011-Script-Decompilation
Path: blob/main/Scripts/R4/MovingWall.txt
1319 views
1
//-----------------Sonic CD Moving Wall 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
// HUD alias
9
#alias Object[24].PropertyValue : HUD.CurrentTimePeriod
10
11
// Property Values
12
#alias 0 : MOVING_WALL
13
#alias 1 : STOPPED_WALL
14
15
// Time Periods
16
#alias 0 : TIME_PRESENT
17
#alias 1 : TIME_PAST
18
#alias 2 : TIME_GOOD_FUTURE
19
#alias 3 : TIME_BAD_FUTURE
20
21
// Collision
22
#alias 3 : PLAYER_COL_RWALL
23
24
// Priotity
25
#alias 0 : PRIORITY_BOUNDS
26
#alias 1 : PRIORITY_ACTIVE
27
28
// Control Mode
29
#alias -1 : CONTROLMODE_NONE
30
31
32
sub ObjectMain
33
if Object.PropertyValue == MOVING_WALL
34
if Player.ControlMode > CONTROLMODE_NONE
35
if Object.Timer < 384
36
Object.Timer++
37
Object.XPos += 0x8000
38
else
39
Object.Priority = PRIORITY_BOUNDS
40
Object.PropertyValue = STOPPED_WALL
41
end if
42
end if
43
end if
44
end sub
45
46
47
sub ObjectPlayerInteraction
48
PlayerObjectCollision(C_BOX, -32, -64, 32, 64)
49
// The player can actually stand in the floor while pushing instead of being thrown out by the wall, this checks fixes it
50
if CheckResult == PLAYER_COL_RWALL
51
if Object.Timer == 383
52
Player.XPos += 0x10000
53
end if
54
end if
55
end sub
56
57
58
sub ObjectDraw
59
DrawSprite(0)
60
DrawSprite(1)
61
DrawSprite(2)
62
DrawSprite(3)
63
DrawSprite(4)
64
DrawSprite(5)
65
DrawSprite(6)
66
DrawSprite(7)
67
end sub
68
69
70
sub ObjectStartup
71
switch HUD.CurrentTimePeriod
72
case TIME_PRESENT
73
LoadSpriteSheet("R4/Objects.gif")
74
TempValue0 = 163
75
TempValue1 = 1
76
TempValue2 = 196
77
break
78
79
case TIME_PAST
80
LoadSpriteSheet("R4/Objects2.gif")
81
TempValue0 = 1
82
TempValue1 = 157
83
TempValue2 = 34
84
break
85
86
case TIME_GOOD_FUTURE
87
LoadSpriteSheet("R4/Objects2.gif")
88
TempValue0 = 1
89
TempValue1 = 190
90
TempValue2 = 34
91
break
92
93
case TIME_BAD_FUTURE
94
LoadSpriteSheet("R4/Objects2.gif")
95
TempValue0 = 1
96
TempValue1 = 223
97
TempValue2 = 34
98
break
99
100
end switch
101
102
// R4 Blocks
103
SpriteFrame(-32, -64, 32, 32, TempValue0, TempValue1)
104
SpriteFrame(0, -64, 32, 32, TempValue0, TempValue1)
105
SpriteFrame(-32, -32, 32, 32, TempValue0, TempValue1)
106
SpriteFrame(0, -32, 32, 32, TempValue0, TempValue1)
107
SpriteFrame(-32, 0, 32, 32, TempValue0, TempValue1)
108
SpriteFrame(0, 0, 32, 32, TempValue0, TempValue1)
109
SpriteFrame(-32, 32, 32, 32, TempValue0, TempValue1)
110
SpriteFrame(0, 32, 32, 32, TempValue0, TempValue1)
111
112
ArrayPos0 = 32
113
while ArrayPos0 < 1056
114
if Object[ArrayPos0].Type == TypeName[Moving Wall]
115
Object[ArrayPos0].DrawOrder = 4
116
Object[ArrayPos0].Priority = PRIORITY_ACTIVE
117
end if
118
ArrayPos0++
119
loop
120
end sub
121
122
123
// ========================
124
// Editor Subs
125
// ========================
126
127
sub RSDKDraw
128
DrawSprite(0)
129
DrawSprite(1)
130
DrawSprite(2)
131
DrawSprite(3)
132
DrawSprite(4)
133
DrawSprite(5)
134
DrawSprite(6)
135
DrawSprite(7)
136
end sub
137
138
139
sub RSDKLoad
140
CallFunction(EditorHelpers_FindTimePeriod)
141
switch CheckResult
142
case TIME_PRESENT
143
LoadSpriteSheet("R4/Objects.gif")
144
TempValue0 = 163
145
TempValue1 = 1
146
TempValue2 = 196
147
break
148
149
case TIME_PAST
150
LoadSpriteSheet("R4/Objects2.gif")
151
TempValue0 = 1
152
TempValue1 = 157
153
TempValue2 = 34
154
break
155
156
case TIME_GOOD_FUTURE
157
LoadSpriteSheet("R4/Objects2.gif")
158
TempValue0 = 1
159
TempValue1 = 190
160
TempValue2 = 34
161
break
162
163
case TIME_BAD_FUTURE
164
LoadSpriteSheet("R4/Objects2.gif")
165
TempValue0 = 1
166
TempValue1 = 223
167
TempValue2 = 34
168
break
169
170
end switch
171
172
// R4 Blocks
173
SpriteFrame(-32, -64, 32, 32, TempValue0, TempValue1)
174
SpriteFrame(0, -64, 32, 32, TempValue0, TempValue1)
175
SpriteFrame(-32, -32, 32, 32, TempValue0, TempValue1)
176
SpriteFrame(0, -32, 32, 32, TempValue0, TempValue1)
177
SpriteFrame(-32, 0, 32, 32, TempValue0, TempValue1)
178
SpriteFrame(0, 0, 32, 32, TempValue0, TempValue1)
179
SpriteFrame(-32, 32, 32, 32, TempValue0, TempValue1)
180
SpriteFrame(0, 32, 32, 32, TempValue0, TempValue1)
181
182
AddEditorVariable("moveState")
183
SetActiveVariable("moveState")
184
AddEnumVariable("Moving Wall", MOVING_WALL)
185
AddEnumVariable("Stopped Wall", STOPPED_WALL)
186
end sub
187
188