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