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/CNZ/BossWall.txt
1480 views
1
// ----------------------------------
2
// RSDK Project: Sonic 2
3
// Script Description: Boss Wall 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.propertyValue : object.startClosed
13
14
private alias object.value2 : object.startPos.y
15
private alias object.value3 : object.targetPos.y
16
17
// States
18
private alias 0 : CNZBOSSWALL_IDLE
19
private alias 1 : CNZBOSSWALL_APPEAR
20
private alias 2 : CNZBOSSWALL_ADDWALL
21
private alias 3 : CNZBOSSWALL_DELWALL
22
private alias 4 : CNZBOSSWALL_DISAPPEAR
23
24
25
// ========================
26
// Static Values
27
// ========================
28
29
private value BossWall_wallChunkID = 0
30
private value BossWall_blankChunkID = 0
31
32
33
// ========================
34
// Events
35
// ========================
36
37
event ObjectUpdate
38
switch object.state
39
case CNZBOSSWALL_IDLE
40
object.priority = PRIORITY_BOUNDS
41
break
42
43
case CNZBOSSWALL_APPEAR
44
object.yvel += 0x6000
45
object.ypos += object.yvel
46
if object.ypos > object.targetPos.y
47
object.ypos = object.targetPos.y
48
object.state++
49
end if
50
break
51
52
case CNZBOSSWALL_ADDWALL
53
temp0 = object.xpos
54
temp0 >>= 23
55
temp1 = object.ypos
56
temp1 >>= 23
57
SetTileLayerEntry(BossWall_wallChunkID, 0, temp0, temp1)
58
object.state = CNZBOSSWALL_IDLE
59
break
60
61
case CNZBOSSWALL_DELWALL
62
temp0 = object.xpos
63
temp0 >>= 23
64
temp1 = object.ypos
65
temp1 >>= 23
66
SetTileLayerEntry(BossWall_blankChunkID, 0, temp0, temp1)
67
object.state++
68
break
69
70
case CNZBOSSWALL_DISAPPEAR
71
object.yvel -= 0x6000
72
object.ypos += object.yvel
73
if object.ypos < object.startPos.y
74
object.ypos = object.startPos.y
75
object.state = CNZBOSSWALL_IDLE
76
end if
77
break
78
79
end switch
80
end event
81
82
83
event ObjectDraw
84
switch object.state
85
default
86
case CNZBOSSWALL_IDLE
87
case CNZBOSSWALL_DELWALL
88
break
89
90
case CNZBOSSWALL_APPEAR
91
case CNZBOSSWALL_ADDWALL
92
case CNZBOSSWALL_DISAPPEAR
93
DrawSprite(0)
94
break
95
96
end switch
97
end event
98
99
100
event ObjectStartup
101
CheckCurrentStageFolder("Zone04")
102
if checkResult == true
103
LoadSpriteSheet("CNZ/Objects.gif")
104
SpriteFrame(-64, -64, 128, 128, 127, 256)
105
BossWall_wallChunkID = 249
106
BossWall_blankChunkID = 221
107
else
108
LoadSpriteSheet("MBZ/Objects.gif")
109
SpriteFrame(-64, -64, 128, 128, 716, 358)
110
BossWall_wallChunkID = 191
111
BossWall_blankChunkID = 162
112
end if
113
114
foreach (TypeName[Boss Wall], arrayPos0, ALL_ENTITIES)
115
object[arrayPos0].drawOrder = 4
116
object[arrayPos0].startPos.y = object[arrayPos0].ypos
117
object[arrayPos0].targetPos.y = object[arrayPos0].ypos
118
object[arrayPos0].targetPos.y += 0x800000
119
120
if object[arrayPos0].startClosed == true
121
object[arrayPos0].ypos = object[arrayPos0].targetPos.y
122
temp0 = object[arrayPos0].xpos
123
temp0 >>= 23
124
temp1 = object[arrayPos0].ypos
125
temp1 >>= 23
126
SetTileLayerEntry(BossWall_wallChunkID, 0, temp0, temp1)
127
end if
128
next
129
end event
130
131
132
// ========================
133
// Editor Events
134
// ========================
135
136
event RSDKEdit
137
if editor.returnVariable == true
138
switch editor.variableID
139
case EDIT_VAR_PROPVAL // property value
140
checkResult = object.propertyValue
141
break
142
143
case 0 // type
144
checkResult = object.propertyValue
145
break
146
147
end switch
148
else
149
switch editor.variableID
150
case EDIT_VAR_PROPVAL // property value
151
object.propertyValue = editor.variableValue
152
break
153
154
case 0 // type
155
object.propertyValue = editor.variableValue
156
break
157
158
end switch
159
end if
160
end event
161
162
163
event RSDKDraw
164
DrawSprite(0)
165
166
if editor.showGizmos == true
167
editor.drawingOverlay = true
168
169
// Draw where the Boss Wall will be when it's in its closed state
170
171
object.inkEffect = INK_BLEND
172
173
temp0 = object.ypos
174
temp0 += 0x800000
175
DrawSpriteFX(0, FX_INK, object.xpos, temp0)
176
177
// Draw an arrow to indicate the Wall's movement
178
object.inkEffect = INK_NONE
179
DrawArrow(object.xpos, object.ypos, object.xpos, temp0, 255, 255, 0)
180
181
editor.drawingOverlay = false
182
end if
183
end event
184
185
186
event RSDKLoad
187
CheckCurrentStageFolder("Zone04")
188
if checkResult == true
189
LoadSpriteSheet("CNZ/Objects.gif")
190
SpriteFrame(-64, -64, 128, 128, 127, 256)
191
else
192
LoadSpriteSheet("MBZ/Objects.gif")
193
SpriteFrame(-64, -64, 128, 128, 716, 358)
194
end if
195
196
AddEditorVariable("type")
197
SetActiveVariable("type")
198
AddEnumVariable("Start Open", 0)
199
AddEnumVariable("Start Closed", 1)
200
end event
201
202