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/HPlatform.txt
1478 views
1
// ----------------------------------
2
// RSDK Project: Sonic 2
3
// Script Description: H 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.value0 : object.centerPos.x
13
private alias object.value1 : object.stoodPlayers
14
15
// Player Aliases
16
private alias object.state : player.state
17
private alias object.xpos : player.xpos
18
private alias object.gravity : player.gravity
19
private alias object.animation : player.animation
20
21
private alias object.value1 : player.timer
22
23
// ========================
24
// Function Declarations
25
// ========================
26
27
reserve function HPlatform_DebugDraw
28
reserve function HPlatform_DebugSpawn
29
30
31
// ========================
32
// Function Defintions
33
// ========================
34
35
private function HPlatform_DebugDraw
36
DrawSprite(0)
37
end function
38
39
40
private function HPlatform_DebugSpawn
41
CreateTempObject(TypeName[H Platform], 0, object.xpos, object.ypos)
42
object[tempObjectPos].centerPos.x = object.xpos
43
object[tempObjectPos].propertyValue = object.direction
44
end function
45
46
47
// ========================
48
// Events
49
// ========================
50
51
event ObjectUpdate
52
temp6 = object.xpos
53
GetTableValue(temp0, 4, StageSetup_oscillationTable)
54
if object.propertyValue == 1
55
FlipSign(temp0)
56
temp0 += 0x4000
57
end if
58
temp0 <<= 8
59
60
object.xpos = object.centerPos.x
61
object.xpos -= temp0
62
temp6 &= 0xFFFF0000
63
temp7 = object.xpos
64
temp7 &= 0xFFFF0000
65
temp7 -= temp6
66
67
temp2 = 0
68
foreach (GROUP_PLAYERS, currentPlayer, ACTIVE_ENTITIES)
69
GetBit(temp0, object.stoodPlayers, temp2)
70
if temp0 == true
71
player[currentPlayer].xpos += temp7
72
end if
73
74
SetBit(object.stoodPlayers, temp2, false)
75
BoxCollisionTest(C_SOLID, object.entityPos, -32, -12, 32, 12, currentPlayer, C_BOX, C_BOX, C_BOX, C_BOX)
76
switch checkResult
77
case COL_TOP
78
SetBit(object.stoodPlayers, temp2, true)
79
break
80
81
case COL_LEFT
82
case COL_RIGHT
83
if player[currentPlayer].state == Player_State_Climb
84
player[currentPlayer].timer = 0
85
player[currentPlayer].animation = ANI_GLIDING_DROP
86
player[currentPlayer].state = Player_State_GlideDrop
87
end if
88
break
89
90
case COL_BOTTOM
91
if player[currentPlayer].gravity == GRAVITY_GROUND
92
CallFunction(Player_Kill)
93
end if
94
break
95
96
end switch
97
98
temp2++
99
next
100
end event
101
102
103
event ObjectDraw
104
DrawSprite(0)
105
end event
106
107
108
event ObjectStartup
109
LoadSpriteSheet("MPZ/Objects.gif")
110
SpriteFrame(-32, -12, 64, 24, 383, 207)
111
112
foreach (TypeName[H Platform], arrayPos0, ALL_ENTITIES)
113
object[arrayPos0].centerPos.x = object[arrayPos0].xpos
114
next
115
116
SetTableValue(TypeName[H Platform], DebugMode_ObjCount, DebugMode_TypesTable)
117
SetTableValue(HPlatform_DebugDraw, DebugMode_ObjCount, DebugMode_DrawTable)
118
SetTableValue(HPlatform_DebugSpawn, DebugMode_ObjCount, DebugMode_SpawnTable)
119
DebugMode_ObjCount++
120
end event
121
122
123
// ========================
124
// Editor Events
125
// ========================
126
127
event RSDKEdit
128
if editor.returnVariable == true
129
switch editor.variableID
130
case EDIT_VAR_PROPVAL // property value
131
checkResult = object.propertyValue
132
break
133
134
case 0 // startDir
135
checkResult = object.propertyValue
136
break
137
138
end switch
139
else
140
switch editor.variableID
141
case EDIT_VAR_PROPVAL // property value
142
object.propertyValue = editor.variableValue
143
break
144
145
case 0 // startDir
146
object.propertyValue = editor.variableValue
147
break
148
149
end switch
150
end if
151
end event
152
153
154
event RSDKDraw
155
DrawSprite(0)
156
end event
157
158
159
event RSDKLoad
160
LoadSpriteSheet("MPZ/Objects.gif")
161
SpriteFrame(-32, -12, 64, 24, 383, 207)
162
163
AddEditorVariable("startDir")
164
SetActiveVariable("startDir")
165
AddEnumVariable("Left", 0)
166
AddEnumVariable("Right", 1)
167
end event
168
169