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