Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
rubberduckycooly
GitHub Repository: rubberduckycooly/Sonic-1-Sonic-2-2013-Script-Decompilation
Path: blob/master/Sonic 1/Scripts/SYZ/StaticPlatform.txt
1483 views
1
// ----------------------------------
2
// RSDK Project: Sonic 1
3
// Script Description: Static Platform Object
4
// Script Author: Christian Whitehead/Simon Thomley
5
// Unpacked by Rubberduckycooly's script unpacker
6
// ----------------------------------
7
8
// ========================
9
// Aliases
10
// ========================
11
12
private alias object.propertyValue : object.canMove
13
14
private alias object.value0 : object.stood
15
private alias object.value1 : object.stoodAngle
16
private alias object.value2 : object.collisionOffset.y
17
private alias object.value3 : object.timer
18
private alias object.value4 : object.centerPos.y
19
20
private alias 0 : STATICPLATFORM_IDLE
21
private alias 1 : STATICPLATFORM_WAITFORBUTTON
22
private alias 2 : STATICPLATFORM_MOVEDELAY
23
private alias 3 : STATICPLATFORM_MOVING
24
25
// Player Aliases
26
private alias object.ypos : player.ypos
27
28
// PushButton aliases
29
private alias object.propertyValue : pushButton.stood
30
31
// ========================
32
// Function Declarations
33
// ========================
34
35
reserve function StaticPlatform_DebugDraw
36
reserve function StaticPlatform_DebugSpawn
37
38
39
private function StaticPlatform_DebugDraw
40
DrawSprite(0)
41
end function
42
43
44
private function StaticPlatform_DebugSpawn
45
CreateTempObject(TypeName[Static Platform], 0, object.xpos, object.ypos)
46
object[tempObjectPos].centerPos.y = object.ypos
47
object[tempObjectPos].state = STATICPLATFORM_WAITFORBUTTON
48
end function
49
50
51
// ========================
52
// Events
53
// ========================
54
55
event ObjectUpdate
56
if object.stood == true
57
if object.stoodAngle < 16
58
object.stoodAngle++
59
60
temp0 = object.stoodAngle
61
temp0 &= 3
62
if temp0 == 3
63
object.collisionOffset.y = 0x10000
64
else
65
object.collisionOffset.y = 0
66
end if
67
else
68
object.collisionOffset.y = 0
69
end if
70
else
71
if object.stoodAngle > 0
72
object.stoodAngle--
73
74
temp0 = object.stoodAngle
75
temp0 &= 3
76
if temp0 == 3
77
object.collisionOffset.y = -0x10000
78
else
79
object.collisionOffset.y = 0
80
end if
81
else
82
object.collisionOffset.y = 0
83
end if
84
end if
85
86
object.stood = false
87
switch object.state
88
case STATICPLATFORM_IDLE
89
break
90
91
case STATICPLATFORM_WAITFORBUTTON
92
if pushButton[-1].stood == true
93
object.state++
94
end if
95
break
96
97
case STATICPLATFORM_MOVEDELAY
98
if object.timer < 120
99
object.timer++
100
else
101
object.timer = 0
102
object.state++
103
end if
104
break
105
106
case STATICPLATFORM_MOVING
107
if object.timer < 256
108
object.timer++
109
object.ypos -= 0x20000
110
object.centerPos.y -= 0x20000
111
else
112
object.timer = 0
113
object.state = STATICPLATFORM_IDLE
114
end if
115
break
116
end switch
117
118
foreach (GROUP_PLAYERS, currentPlayer, ACTIVE_ENTITIES)
119
if object.yvel < 0x80000
120
BoxCollisionTest(C_PLATFORM, object.entityPos, -32, -8, 32, 12, currentPlayer, C_BOX, C_BOX, C_BOX, C_BOX)
121
if checkResult == true
122
object.stood = true
123
player[currentPlayer].ypos += object.collisionOffset.y
124
end if
125
end if
126
next
127
object.ypos += object.collisionOffset.y
128
end event
129
130
131
event ObjectDraw
132
DrawSprite(0)
133
end event
134
135
136
event ObjectStartup
137
LoadSpriteSheet("SYZ/Objects.gif")
138
SpriteFrame(-32, -10, 64, 32, 119, 1)
139
140
arrayPos0 = 32
141
while arrayPos0 < 0x420
142
if object[arrayPos0].type == TypeName[Static Platform]
143
object[arrayPos0].centerPos.y = object[arrayPos0].ypos
144
if object[arrayPos0].canMove == true
145
object[arrayPos0].state = STATICPLATFORM_WAITFORBUTTON
146
end if
147
end if
148
arrayPos0++
149
loop
150
151
SetTableValue(TypeName[Static Platform], DebugMode_ObjCount, DebugMode_TypesTable)
152
SetTableValue(StaticPlatform_DebugDraw, DebugMode_ObjCount, DebugMode_DrawTable)
153
SetTableValue(StaticPlatform_DebugSpawn, DebugMode_ObjCount, DebugMode_SpawnTable)
154
DebugMode_ObjCount++
155
end event
156
157
158
// ========================
159
// Editor Events
160
// ========================
161
162
event RSDKEdit
163
if editor.returnVariable == true
164
switch editor.variableID
165
case EDIT_VAR_PROPVAL // property value
166
checkResult = object.propertyValue
167
checkResult &= 1
168
break
169
170
case 0 // canMove
171
checkResult = object.propertyValue
172
checkResult &= 1
173
break
174
175
end switch
176
else
177
switch editor.variableID
178
case EDIT_VAR_PROPVAL // property value
179
object.propertyValue = editor.variableValue
180
object.propertyValue &= 1
181
break
182
183
case 0 // canMove
184
object.propertyValue = editor.variableValue
185
object.propertyValue &= 1
186
break
187
188
end switch
189
end if
190
end event
191
192
193
event RSDKDraw
194
DrawSprite(0)
195
end event
196
197
198
event RSDKLoad
199
LoadSpriteSheet("SYZ/Objects.gif")
200
SpriteFrame(-32, -10, 64, 32, 119, 1)
201
202
AddEditorVariable("canMove")
203
SetActiveVariable("canMove")
204
AddEnumVariable("false", false)
205
AddEnumVariable("true", true)
206
end event
207
208