Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
rubberduckycooly
GitHub Repository: rubberduckycooly/Sonic-1-Sonic-2-2013-Script-Decompilation
Path: blob/master/Sonic 2/Scripts/MPZ/SmallPiston.txt
1478 views
1
// ----------------------------------
2
// RSDK Project: Sonic 2
3
// Script Description: Small Piston 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.value0 : object.timer
13
private alias object.value1 : object.startPos.y
14
private alias object.value2 : object.stoodPlayers
15
private alias object.value31 : object.wrapOffset.y
16
17
// States
18
private alias 0 : SMALLPISTON_IDLE_UP
19
private alias 1 : SMALLPISTON_MOVEDOWN
20
private alias 2 : SMALLPISTON_IDLE_DOWN
21
private alias 3 : SMALLPISTON_MOVEUP
22
23
// Player Aliases
24
private alias object.ypos : player.ypos
25
private alias object.gravity : player.gravity
26
27
28
// ========================
29
// Function Declarations
30
// ========================
31
32
reserve function SmallPiston_Setup
33
reserve function SmallPiston_DebugDraw
34
reserve function SmallPiston_DebugSpawn
35
36
37
// ========================
38
// Function Definitions
39
// ========================
40
41
private function SmallPiston_Setup
42
object[arrayPos0].ypos = object[arrayPos0].startPos.y
43
object[arrayPos0].ypos += object[arrayPos0].wrapOffset.y
44
object[arrayPos0].timer = 90
45
object[arrayPos0].stoodPlayers = 0
46
object[arrayPos0].state = SMALLPISTON_IDLE_UP
47
object[arrayPos0].priority = PRIORITY_BOUNDS
48
end function
49
50
51
private function SmallPiston_DebugDraw
52
DrawSprite(0)
53
end function
54
55
56
private function SmallPiston_DebugSpawn
57
CreateTempObject(TypeName[Small Piston], 0, object.xpos, object.ypos)
58
arrayPos0 = object[tempObjectPos].entityPos
59
object[arrayPos0].startPos.y = object.ypos
60
CallFunction(SmallPiston_Setup)
61
end function
62
63
64
// ========================
65
// Events
66
// ========================
67
68
event ObjectUpdate
69
temp0 = object.ypos
70
switch object.state
71
case SMALLPISTON_IDLE_UP
72
object.timer--
73
if object.timer == 0
74
object.priority = PRIORITY_ACTIVE
75
object.timer = 8
76
object.state = SMALLPISTON_MOVEDOWN
77
end if
78
break
79
80
case SMALLPISTON_MOVEDOWN
81
object.ypos += 0x80000
82
83
object.timer--
84
if object.timer == 0
85
object.timer = 90
86
object.state = SMALLPISTON_IDLE_DOWN
87
end if
88
break
89
90
case SMALLPISTON_IDLE_DOWN
91
object.timer--
92
if object.timer == 0
93
object.timer = 8
94
object.state = SMALLPISTON_MOVEUP
95
end if
96
break
97
98
case SMALLPISTON_MOVEUP
99
object.ypos -= 0x80000
100
101
object.timer--
102
if object.timer == 0
103
object.timer = 90
104
object.state = SMALLPISTON_IDLE_UP
105
end if
106
break
107
108
end switch
109
110
temp1 = object.ypos
111
temp1 -= temp0
112
113
temp2 = 0
114
foreach (GROUP_PLAYERS, currentPlayer, ACTIVE_ENTITIES)
115
GetBit(temp0, object.stoodPlayers, temp2)
116
if temp0 == true
117
player[currentPlayer].ypos += temp1
118
end if
119
120
SetBit(object.stoodPlayers, temp2, false)
121
BoxCollisionTest(C_SOLID, object.entityPos, -16, -32, 16, 32, currentPlayer, C_BOX, C_BOX, C_BOX, C_BOX)
122
switch checkResult
123
case COL_TOP
124
SetBit(object.stoodPlayers, temp2, true)
125
break
126
127
case COL_BOTTOM
128
if player[currentPlayer].gravity == GRAVITY_GROUND
129
CallFunction(Player_Kill)
130
end if
131
break
132
133
end switch
134
temp2++
135
next
136
137
if object.outOfBounds == true
138
arrayPos0 = object.entityPos
139
CallFunction(SmallPiston_Setup)
140
end if
141
end event
142
143
144
event ObjectDraw
145
DrawSprite(0)
146
end event
147
148
149
event ObjectStartup
150
LoadSpriteSheet("MPZ/Objects.gif")
151
SpriteFrame(-16, -32, 32, 64, 1, 70)
152
153
foreach (TypeName[Small Piston], arrayPos0, ALL_ENTITIES)
154
object[arrayPos0].startPos.y = object[arrayPos0].ypos
155
CallFunction(SmallPiston_Setup)
156
next
157
158
SetTableValue(TypeName[Small Piston], DebugMode_ObjCount, DebugMode_TypesTable)
159
SetTableValue(SmallPiston_DebugDraw, DebugMode_ObjCount, DebugMode_DrawTable)
160
SetTableValue(SmallPiston_DebugSpawn, DebugMode_ObjCount, DebugMode_SpawnTable)
161
DebugMode_ObjCount++
162
end event
163
164
165
// ========================
166
// Editor Events
167
// ========================
168
169
event RSDKDraw
170
DrawSprite(0)
171
end event
172
173
174
event RSDKLoad
175
LoadSpriteSheet("MPZ/Objects.gif")
176
SpriteFrame(-16, -32, 32, 64, 1, 70)
177
178
SetVariableAlias(ALIAS_VAR_PROPVAL, "unused")
179
end event
180
181