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/ARZ/OneWayDoor.txt
1480 views
1
// ----------------------------------
2
// RSDK Project: Sonic 2
3
// Script Description: One Way Door 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.state : object.isOpen
13
private alias object.value0 : object.movePos
14
15
// Player Aliases
16
private alias object.xvel : player.xvel
17
18
19
// ========================
20
// Function Declarations
21
// ========================
22
23
reserve function OneWayDoor_DebugDraw
24
reserve function OneWayDoor_DebugSpawn
25
26
27
// ========================
28
// Function Definitions
29
// ========================
30
31
private function OneWayDoor_DebugDraw
32
DrawSpriteFX(0, FX_FLIP, object.xpos, object.ypos)
33
end function
34
35
36
private function OneWayDoor_DebugSpawn
37
CreateTempObject(TypeName[One Way Door], object.direction, object.xpos, object.ypos)
38
object[tempObjectPos].direction = object.direction
39
end function
40
41
42
// ========================
43
// Events
44
// ========================
45
46
event ObjectUpdate
47
if object.isOpen == false
48
if object.movePos > 0
49
object.movePos -= 0x80000
50
end if
51
else
52
if object.movePos < 0x400000
53
object.movePos += 0x80000
54
end if
55
end if
56
57
object.ypos -= object.movePos
58
foreach (GROUP_PLAYERS, currentPlayer, ACTIVE_ENTITIES)
59
BoxCollisionTest(C_SOLID, object.entityPos, -8, -32, 8, 0, currentPlayer, C_BOX, C_BOX, C_BOX, C_BOX)
60
next
61
62
object.ypos += object.movePos
63
object.isOpen = false
64
if object.propertyValue == 0
65
foreach (GROUP_PLAYERS, currentPlayer, ACTIVE_ENTITIES)
66
if player[currentPlayer].xvel < 0x60000
67
BoxCollisionTest(C_TOUCH, object.entityPos, -64, -32, 8, 32, currentPlayer, C_BOX, C_BOX, C_BOX, C_BOX)
68
else
69
BoxCollisionTest(C_TOUCH, object.entityPos, -88, -32, 8, 32, currentPlayer, C_BOX, C_BOX, C_BOX, C_BOX)
70
end if
71
object.isOpen |= checkResult
72
next
73
else
74
foreach (GROUP_PLAYERS, currentPlayer, ACTIVE_ENTITIES)
75
if player[currentPlayer].xvel > -0x60000
76
BoxCollisionTest(C_TOUCH, object.entityPos, -8, -32, 64, 32, currentPlayer, C_BOX, C_BOX, C_BOX, C_BOX)
77
else
78
BoxCollisionTest(C_TOUCH, object.entityPos, -8, -32, 88, 32, currentPlayer, C_BOX, C_BOX, C_BOX, C_BOX)
79
end if
80
object.isOpen |= checkResult
81
next
82
end if
83
end event
84
85
86
event ObjectDraw
87
temp0 = object.movePos
88
FlipSign(temp0)
89
temp0 += object.ypos
90
DrawSpriteFX(0, FX_FLIP, object.xpos, temp0)
91
end event
92
93
94
event ObjectStartup
95
LoadSpriteSheet("ARZ/Objects.gif")
96
SpriteFrame(-8, -32, 16, 64, 1, 78)
97
98
foreach (TypeName[One Way Door], arrayPos0, ALL_ENTITIES)
99
if object[arrayPos0].propertyValue == 1
100
object[arrayPos0].direction = FLIP_X
101
end if
102
next
103
104
SetTableValue(TypeName[One Way Door], DebugMode_ObjCount, DebugMode_TypesTable)
105
SetTableValue(OneWayDoor_DebugDraw, DebugMode_ObjCount, DebugMode_DrawTable)
106
SetTableValue(OneWayDoor_DebugSpawn, DebugMode_ObjCount, DebugMode_SpawnTable)
107
DebugMode_ObjCount++
108
end event
109
110
111
// ========================
112
// Editor Events
113
// ========================
114
115
event RSDKEdit
116
if editor.returnVariable == true
117
switch editor.variableID
118
case EDIT_VAR_PROPVAL // property value
119
checkResult = object.propertyValue
120
break
121
122
case 0 // type
123
checkResult = object.propertyValue
124
break
125
126
end switch
127
else
128
switch editor.variableID
129
case EDIT_VAR_PROPVAL // property value
130
object.propertyValue = editor.variableValue
131
break
132
133
case 0 // type
134
object.propertyValue = editor.variableValue
135
break
136
137
end switch
138
end if
139
end event
140
141
142
event RSDKDraw
143
DrawSprite(0)
144
end event
145
146
147
event RSDKLoad
148
LoadSpriteSheet("ARZ/Objects.gif")
149
SpriteFrame(-8, -32, 16, 64, 1, 78)
150
151
AddEditorVariable("type")
152
SetActiveVariable("type")
153
AddEnumVariable("Left Only", 0)
154
AddEnumVariable("Right Only", 1)
155
end event
156
157