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