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/RotatingSpike.txt
1480 views
1
// ----------------------------------
2
// RSDK Project: Sonic 1
3
// Script Description: Rotating Spike Object
4
// Script Author: Christian Whitehead/Simon Thomley
5
// Unpacked by Rubberduckycooly's script unpacker
6
// ----------------------------------
7
8
// ========================
9
// Aliases
10
// ========================
11
12
// Player Aliases
13
private alias object.value17 : debugMode.currentSelection
14
15
// ========================
16
// Function Declarations
17
// ========================
18
19
reserve function RotatingSpike_DebugDraw
20
reserve function RotatingSpike_DebugSpawn
21
22
23
// ========================
24
// Static Values
25
// ========================
26
27
private value RotatingSpike_startDebugID = 0
28
29
30
private function RotatingSpike_DebugDraw
31
DrawSprite(0)
32
end function
33
34
35
private function RotatingSpike_DebugSpawn
36
CreateTempObject(TypeName[Rotating Spike], object.direction, object.xpos, object.ypos)
37
temp0 = debugMode[0].currentSelection
38
temp0 -= RotatingSpike_startDebugID
39
40
object[tempObjectPos].speed = 1
41
object[tempObjectPos].speed <<= temp0
42
if object.direction == 1
43
object[tempObjectPos].angle = 256
44
end if
45
end function
46
47
48
// ========================
49
// Events
50
// ========================
51
52
event ObjectUpdate
53
object.angle -= object.speed
54
if object.angle < 0
55
object.angle += 512
56
end if
57
58
temp0 = object.xpos
59
temp1 = object.ypos
60
61
Cos(object.xpos, object.angle)
62
object.xpos *= 0x2800
63
object.xpos += temp0
64
65
Sin(object.ypos, object.angle)
66
object.ypos *= 0x2800
67
object.ypos += temp1
68
69
foreach (GROUP_PLAYERS, currentPlayer, ACTIVE_ENTITIES)
70
BoxCollisionTest(C_TOUCH, object.entityPos, -16, -16, 16, 16, currentPlayer, C_BOX, C_BOX, C_BOX, C_BOX)
71
if checkResult == true
72
CallFunction(Player_Hit)
73
end if
74
next
75
76
object.xpos = temp0
77
object.ypos = temp1
78
end event
79
80
81
event ObjectDraw
82
Cos(temp0, object.angle)
83
temp0 *= 0x2800
84
temp0 += object.xpos
85
86
Sin(temp1, object.angle)
87
temp1 *= 0x2800
88
temp1 += object.ypos
89
90
DrawSpriteXY(0, temp0, temp1)
91
end event
92
93
94
event ObjectStartup
95
LoadSpriteSheet("SYZ/Objects.gif")
96
SpriteFrame(-24, -24, 48, 48, 61, 178)
97
98
foreach (TypeName[Rotating Spike], arrayPos0, ALL_ENTITIES)
99
switch object[arrayPos0].propertyValue
100
case 0
101
object[arrayPos0].speed = 4
102
break
103
104
case 1
105
object[arrayPos0].speed = 4
106
object[arrayPos0].angle = 256
107
break
108
109
case 2
110
object[arrayPos0].speed = 1
111
break
112
113
case 3
114
object[arrayPos0].speed = 1
115
object[arrayPos0].angle = 256
116
break
117
118
case 4
119
object[arrayPos0].speed = 2
120
break
121
122
case 5
123
object[arrayPos0].speed = 2
124
object[arrayPos0].angle = 256
125
break
126
127
end switch
128
next
129
130
temp0 = 0
131
RotatingSpike_startDebugID = DebugMode_ObjCount
132
while temp0 < 3
133
SetTableValue(TypeName[Rotating Spike], DebugMode_ObjCount, DebugMode_TypesTable)
134
SetTableValue(RotatingSpike_DebugDraw, DebugMode_ObjCount, DebugMode_DrawTable)
135
SetTableValue(RotatingSpike_DebugSpawn, DebugMode_ObjCount, DebugMode_SpawnTable)
136
DebugMode_ObjCount++
137
temp0++
138
loop
139
end event
140
141
142
// ========================
143
// Editor Events
144
// ========================
145
146
event RSDKEdit
147
if editor.returnVariable == true
148
switch editor.variableID
149
case EDIT_VAR_PROPVAL // property value
150
checkResult = object.propertyValue
151
break
152
153
case 0 // type
154
checkResult = object.propertyValue
155
break
156
157
end switch
158
else
159
switch editor.variableID
160
case EDIT_VAR_PROPVAL // property value
161
object.propertyValue = editor.variableValue
162
break
163
164
case 0 // type
165
object.propertyValue = editor.variableValue
166
break
167
168
end switch
169
end if
170
end event
171
172
173
event RSDKDraw
174
DrawSprite(0)
175
176
if editor.showGizmos == true
177
editor.drawingOverlay = true
178
179
object.inkEffect = INK_BLEND
180
switch object.propertyValue
181
default
182
case 0
183
case 2
184
case 4
185
object.angle = 0
186
break
187
188
case 1
189
case 3
190
case 5
191
object.angle = 256
192
break
193
194
end switch
195
196
Cos(temp0, object.angle)
197
temp0 *= 0x2800
198
temp0 += object.xpos
199
200
Sin(temp1, object.angle)
201
temp1 *= 0x2800
202
temp1 += object.ypos
203
204
DrawSpriteFX(0, FX_INK, temp0, temp1)
205
206
editor.drawingOverlay = false
207
end if
208
end event
209
210
211
event RSDKLoad
212
LoadSpriteSheet("SYZ/Objects.gif")
213
SpriteFrame(-24, -24, 48, 48, 61, 178)
214
215
AddEditorVariable("type")
216
SetActiveVariable("type")
217
AddEnumVariable("Speed: Fast, Starting Side: Right", 0)
218
AddEnumVariable("Speed: Fast, Starting Side: Left", 1)
219
AddEnumVariable("Speed: Slow, Starting Side: Right", 2)
220
AddEnumVariable("Speed: Slow, Starting Side: Left", 3)
221
AddEnumVariable("Speed: Medium, Starting Side: Right", 4)
222
AddEnumVariable("Speed: Medium, Starting Side: Left", 5)
223
end event
224
225