Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
rubberduckycooly
GitHub Repository: rubberduckycooly/Sonic-1-Sonic-2-2013-Script-Decompilation
Path: blob/master/Sonic 1/Scripts/SYZ/VPlatform.txt
1480 views
1
// ----------------------------------
2
// RSDK Project: Sonic 1
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.value1 : object.drawPos.y
13
private alias object.value2 : object.collisionOffset.y
14
15
// STates
16
private alias 0 : VPLATFORM_MOVE_STAGE
17
private alias 1 : VPLATFORM_MOVE_STAGE_REVERSE
18
private alias 2 : VPLATFORM_MOVE_GLOBAL
19
private alias 3 : VPLATFORM_MOVE_GLOBAL_REVERSE
20
21
// Player Aliases
22
private alias object.ypos : player.ypos
23
24
// ========================
25
// Function Declarations
26
// ========================
27
28
reserve function VPlatform_DebugDraw
29
reserve function VPlatform_DebugSpawn
30
31
private function VPlatform_DebugDraw
32
DrawSprite(0)
33
end function
34
35
36
private function VPlatform_DebugSpawn
37
CreateTempObject(TypeName[V Platform], object.direction, object.xpos, object.ypos)
38
end function
39
40
41
// ========================
42
// Events
43
// ========================
44
45
event ObjectUpdate
46
switch object.propertyValue
47
case VPLATFORM_MOVE_STAGE
48
object.angle = SYZSetup_oscillation
49
object.angle *= 0x200
50
object.angle /= 356
51
break
52
53
case VPLATFORM_MOVE_STAGE_REVERSE
54
object.angle = SYZSetup_oscillation
55
object.angle *= 0x200
56
object.angle /= 356
57
object.angle += 0x100
58
break
59
60
case VPLATFORM_MOVE_GLOBAL
61
object.angle = oscillation
62
object.angle <<= 1
63
break
64
65
case VPLATFORM_MOVE_GLOBAL_REVERSE
66
object.angle = oscillation
67
object.angle <<= 1
68
object.angle += 0x100
69
break
70
71
end switch
72
73
Sin(object.collisionOffset.y, object.angle)
74
object.collisionOffset.y *= 0x1800
75
object.collisionOffset.y += object.ypos
76
object.collisionOffset.y &= 0xFFFF0000
77
object.collisionOffset.y -= object.drawPos.y
78
79
foreach (GROUP_PLAYERS, currentPlayer, ACTIVE_ENTITIES)
80
temp0 = object.ypos
81
object.ypos = object.drawPos.y
82
BoxCollisionTest(C_PLATFORM, object.entityPos, -32, -8, 32, 12, currentPlayer, C_BOX, C_BOX, C_BOX, C_BOX)
83
if checkResult == true
84
player[currentPlayer].ypos += object.collisionOffset.y
85
end if
86
object.ypos = temp0
87
next
88
end event
89
90
91
event ObjectDraw
92
Sin(object.drawPos.y, object.angle)
93
object.drawPos.y *= 0x1800
94
object.drawPos.y += object.ypos
95
object.drawPos.y &= 0xFFFF0000
96
97
DrawSpriteXY(0, object.xpos, object.drawPos.y)
98
end event
99
100
101
event ObjectStartup
102
LoadSpriteSheet("SYZ/Objects.gif")
103
SpriteFrame(-32, -10, 64, 32, 119, 1)
104
105
SetTableValue(TypeName[V Platform], DebugMode_ObjCount, DebugMode_TypesTable)
106
SetTableValue(VPlatform_DebugDraw, DebugMode_ObjCount, DebugMode_DrawTable)
107
SetTableValue(VPlatform_DebugSpawn, DebugMode_ObjCount, DebugMode_SpawnTable)
108
DebugMode_ObjCount++
109
end event
110
111
112
// ========================
113
// Editor Events
114
// ========================
115
116
event RSDKEdit
117
if editor.returnVariable == true
118
switch editor.variableID
119
case EDIT_VAR_PROPVAL // property value
120
checkResult = object.propertyValue
121
checkResult &= 3
122
break
123
124
case 0 // moveType
125
checkResult = object.propertyValue
126
checkResult &= 3
127
break
128
129
end switch
130
else
131
switch editor.variableID
132
case EDIT_VAR_PROPVAL // property value
133
object.propertyValue = editor.variableValue
134
object.propertyValue &= 3
135
break
136
137
case 0 // moveType
138
object.propertyValue = editor.variableValue
139
object.propertyValue &= 3
140
break
141
142
end switch
143
end if
144
end event
145
146
147
event RSDKDraw
148
DrawSprite(0)
149
end event
150
151
152
event RSDKLoad
153
LoadSpriteSheet("SYZ/Objects.gif")
154
SpriteFrame(-32, -10, 64, 32, 119, 1)
155
156
AddEditorVariable("moveType")
157
SetActiveVariable("moveType")
158
AddEnumVariable("Use Stage Oscillation", VPLATFORM_MOVE_STAGE)
159
AddEnumVariable("Use Stage Oscillation (Reverse)", VPLATFORM_MOVE_STAGE_REVERSE)
160
AddEnumVariable("Use Global Oscillation", VPLATFORM_MOVE_GLOBAL)
161
AddEnumVariable("Use Global Oscillation (Reverse)", VPLATFORM_MOVE_GLOBAL_REVERSE)
162
end event
163
164