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/HPZ/Waterfall.txt
1479 views
1
// ----------------------------------
2
// RSDK Project: Sonic 2
3
// Script Description: Waterfall 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.size
13
private alias object.value2 : object.hasSplash
14
15
16
// ========================
17
// Function Declarations
18
// ========================
19
20
reserve function Waterfall_DebugDraw
21
reserve function Waterfall_DebugSpawn
22
23
24
// ========================
25
// Function Definitions
26
// ========================
27
28
private function Waterfall_DebugDraw
29
DrawSprite(7)
30
end function
31
32
33
private function Waterfall_DebugSpawn
34
CreateTempObject(TypeName[Waterfall], 7, object.xpos, object.ypos)
35
object[tempObjectPos].drawOrder = 5
36
object[tempObjectPos].inkEffect = INK_ALPHA
37
object[tempObjectPos].alpha = 0xA0
38
end function
39
40
41
// ========================
42
// Events
43
// ========================
44
45
event ObjectUpdate
46
if object.propertyValue == 0
47
object.size = stage.waterLevel
48
object.size -= object.iypos
49
object.size += 16
50
if object.size > 256
51
object.size = 256
52
end if
53
end if
54
end event
55
56
57
event ObjectDraw
58
if object.propertyValue == 0
59
EditFrame(0, -16, -16, 32, object.size, 223, 0)
60
end if
61
62
DrawSpriteFX(object.frame, FX_INK, object.xpos, object.ypos)
63
if object.hasSplash == true
64
temp0 = object.size
65
temp0 <<= 16
66
temp0 += object.ypos
67
DrawSpriteXY(16, object.xpos, temp0)
68
end if
69
end event
70
71
72
event ObjectStartup
73
LoadSpriteSheet("HPZ/Objects.gif")
74
SpriteFrame(-16, -16, 32, 16, 223, 0)
75
SpriteFrame(-16, -16, 32, 16, 223, 0)
76
SpriteFrame(-16, -16, 32, 32, 223, 0)
77
SpriteFrame(-16, -16, 32, 48, 223, 0)
78
SpriteFrame(-16, -16, 32, 64, 223, 0)
79
SpriteFrame(-16, -16, 32, 80, 223, 0)
80
SpriteFrame(-16, -16, 32, 96, 223, 0)
81
SpriteFrame(-16, -16, 32, 112, 223, 0)
82
SpriteFrame(-16, -16, 32, 16, 223, 32)
83
SpriteFrame(-16, -16, 32, 16, 223, 32)
84
SpriteFrame(-16, -16, 32, 32, 223, 32)
85
SpriteFrame(-16, -16, 32, 48, 223, 32)
86
SpriteFrame(-16, -16, 32, 64, 223, 32)
87
SpriteFrame(-16, -16, 32, 80, 223, 32)
88
SpriteFrame(-16, -16, 32, 96, 223, 32)
89
SpriteFrame(-16, -16, 32, 112, 223, 32)
90
SpriteFrame(-24, -40, 48, 24, 174, 231) // Splash - #16
91
92
foreach (TypeName[Waterfall], arrayPos0, ALL_ENTITIES)
93
object[arrayPos0].drawOrder = 5
94
object[arrayPos0].inkEffect = INK_ALPHA
95
object[arrayPos0].alpha = 0xA0
96
97
object[arrayPos0].size = object[arrayPos0].propertyValue
98
object[arrayPos0].size &= 7
99
if object[arrayPos0].size == 0
100
object[arrayPos0].size++
101
end if
102
object[arrayPos0].size <<= 4
103
104
temp0 = object[arrayPos0].propertyValue
105
temp0 &= 7
106
107
temp1 = object[arrayPos0].propertyValue
108
temp1 >>= 3
109
if temp1 < 2
110
object[arrayPos0].hasSplash = false
111
else
112
object[arrayPos0].hasSplash = true
113
end if
114
temp1 &= 1
115
temp1 <<= 3
116
temp1 += temp0
117
object[arrayPos0].frame = temp1
118
object[arrayPos0].propertyValue &= 7
119
next
120
121
SetTableValue(TypeName[Waterfall], DebugMode_ObjCount, DebugMode_TypesTable)
122
SetTableValue(Waterfall_DebugDraw, DebugMode_ObjCount, DebugMode_DrawTable)
123
SetTableValue(Waterfall_DebugSpawn, DebugMode_ObjCount, DebugMode_SpawnTable)
124
DebugMode_ObjCount++
125
end event
126
127
128
// ========================
129
// Editor Events
130
// ========================
131
132
event RSDKEdit
133
if editor.returnVariable == true
134
switch editor.variableID
135
case EDIT_VAR_PROPVAL // property value
136
checkResult = object.propertyValue
137
break
138
139
case 0 // size
140
checkResult = object.propertyValue
141
checkResult &= 7
142
break
143
144
case 1 // noRidge
145
GetBit(checkResult, object.propertyValue, 3)
146
break
147
148
case 2 // hasSplash
149
GetBit(checkResult, object.propertyValue, 4)
150
break
151
152
end switch
153
else
154
switch editor.variableID
155
case EDIT_VAR_PROPVAL // property value
156
object.propertyValue = editor.variableValue
157
break
158
159
case 0 // size
160
temp0 = 7
161
Not(temp0)
162
object.propertyValue &= temp0
163
editor.variableValue &= 7
164
165
object.propertyValue |= editor.variableValue
166
break
167
168
case 1 // noRidge
169
CheckNotEqual(editor.variableValue, 0)
170
SetBit(object.propertyValue, 3, checkResult)
171
break
172
173
case 2 // hasSplash
174
CheckNotEqual(editor.variableValue, 0)
175
SetBit(object.propertyValue, 4, checkResult)
176
break
177
178
end switch
179
end if
180
end event
181
182
183
event RSDKDraw
184
temp0 = object.propertyValue
185
temp0 &= 7
186
187
object.size = temp0
188
if object.size == 0
189
object.size++
190
end if
191
object.size <<= 4
192
193
temp1 = object.propertyValue
194
temp1 >>= 3
195
if temp1 < 2
196
object.hasSplash = false
197
else
198
object.hasSplash = true
199
end if
200
temp1 &= 1
201
temp1 <<= 3
202
temp1 += temp0
203
DrawSprite(temp1)
204
205
if object.hasSplash == true
206
temp0 = object.size
207
temp0 <<= 16
208
temp0 += object.ypos
209
DrawSpriteXY(16, object.xpos, temp0)
210
end if
211
end event
212
213
214
event RSDKLoad
215
LoadSpriteSheet("HPZ/Objects.gif")
216
SpriteFrame(-16, -16, 32, 16, 223, 0)
217
SpriteFrame(-16, -16, 32, 16, 223, 0)
218
SpriteFrame(-16, -16, 32, 32, 223, 0)
219
SpriteFrame(-16, -16, 32, 48, 223, 0)
220
SpriteFrame(-16, -16, 32, 64, 223, 0)
221
SpriteFrame(-16, -16, 32, 80, 223, 0)
222
SpriteFrame(-16, -16, 32, 96, 223, 0)
223
SpriteFrame(-16, -16, 32, 112, 223, 0)
224
SpriteFrame(-16, -16, 32, 16, 223, 32)
225
SpriteFrame(-16, -16, 32, 16, 223, 32)
226
SpriteFrame(-16, -16, 32, 32, 223, 32)
227
SpriteFrame(-16, -16, 32, 48, 223, 32)
228
SpriteFrame(-16, -16, 32, 64, 223, 32)
229
SpriteFrame(-16, -16, 32, 80, 223, 32)
230
SpriteFrame(-16, -16, 32, 96, 223, 32)
231
SpriteFrame(-16, -16, 32, 112, 223, 32)
232
SpriteFrame(-24, -40, 48, 24, 174, 231)
233
234
AddEditorVariable("size")
235
SetActiveVariable("size")
236
AddEnumVariable("Dynamic (Use WaterLevel)", 0)
237
AddEnumVariable("16 pixels", 1)
238
AddEnumVariable("32 pixels", 2)
239
AddEnumVariable("48 pixels", 3)
240
AddEnumVariable("64 pixels", 4)
241
AddEnumVariable("80 pixels", 5)
242
AddEnumVariable("96 pixels", 6)
243
AddEnumVariable("112 pixels", 7)
244
245
AddEditorVariable("noRidge")
246
SetActiveVariable("noRidge")
247
AddEnumVariable("false", false)
248
AddEnumVariable("true", true)
249
250
AddEditorVariable("hasSplash")
251
SetActiveVariable("hasSplash")
252
AddEnumVariable("false", false)
253
AddEnumVariable("true", true)
254
end event
255
256