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/OOZ/EggmanHarpoon.txt
1482 views
1
// ----------------------------------
2
// RSDK Project: Sonic 2
3
// Script Description: Eggman Harpoon 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.originPos.x
13
private alias object.value2 : object.originPos.y
14
15
// States
16
private alias 0 : OOZEGGMANHARPOON_SETUP
17
private alias 1 : OOZEGGMANHARPOON_MOVERIGHT
18
private alias 2 : OOZEGGMANHARPOON_MOVELEFT
19
20
21
// ========================
22
// Events
23
// ========================
24
25
event ObjectUpdate
26
switch object.state
27
case OOZEGGMANHARPOON_SETUP
28
if object.propertyValue == 0
29
object.originPos.x = object.xpos
30
object.originPos.x += 0x800000
31
object.originPos.y = object.ypos
32
object.state = OOZEGGMANHARPOON_MOVELEFT
33
else
34
object.originPos.x = object.xpos
35
object.originPos.x -= 0x800000
36
object.originPos.y = object.ypos
37
object.state = OOZEGGMANHARPOON_MOVERIGHT
38
end if
39
temp1 = object.angle
40
break
41
42
case OOZEGGMANHARPOON_MOVERIGHT
43
object.angle += 2
44
object.angle &= 0x1FF
45
if object.angle == 0
46
object.type = TypeName[Blank Object]
47
end if
48
temp1 = object.angle
49
temp1 += 12
50
break
51
52
case OOZEGGMANHARPOON_MOVELEFT
53
object.angle -= 2
54
object.angle &= 0x1FF
55
if object.angle == 0
56
object.type = TypeName[Blank Object]
57
end if
58
temp1 = object.angle
59
temp1 -= 12
60
break
61
62
end switch
63
64
Sin(object.xpos, object.angle)
65
object.xpos *= 0x3400
66
object.xpos += object.originPos.x
67
68
Cos(object.ypos, object.angle)
69
object.ypos *= 0x3400
70
object.ypos += object.originPos.y
71
72
foreach (GROUP_PLAYERS, currentPlayer, ACTIVE_ENTITIES)
73
BoxCollisionTest(C_TOUCH, object.entityPos, -8, -8, 8, 8, currentPlayer, C_BOX, C_BOX, C_BOX, C_BOX)
74
if checkResult == true
75
CallFunction(Player_Hit)
76
end if
77
next
78
79
Sin(object.xpos, temp1)
80
object.xpos *= 0x3400
81
object.xpos += object.originPos.x
82
83
Cos(object.ypos, temp1)
84
object.ypos *= 0x3400
85
object.ypos += object.originPos.y
86
87
foreach (GROUP_PLAYERS, currentPlayer, ACTIVE_ENTITIES)
88
BoxCollisionTest(C_TOUCH, object.entityPos, -8, -8, 8, 8, currentPlayer, C_BOX, C_BOX, C_BOX, C_BOX)
89
if checkResult == true
90
CallFunction(Player_Hit)
91
end if
92
next
93
end event
94
95
96
event ObjectDraw
97
temp1 = object.angle
98
if object.state == OOZEGGMANHARPOON_MOVELEFT
99
temp1 += 108
100
temp1 &= 0x1FF
101
temp0 = 0
102
while temp0 < 9
103
Sin(object.xpos, temp1)
104
object.xpos *= 0x3400
105
object.xpos += object.originPos.x
106
107
Cos(object.ypos, temp1)
108
object.ypos *= 0x3400
109
object.ypos += object.originPos.y
110
111
DrawSprite(0)
112
113
temp0++
114
temp1 -= 12
115
temp1 &= 0x1FF
116
loop
117
object.direction = FLIP_X
118
object.rotation = 0x180
119
object.rotation -= object.angle
120
object.rotation &= 0x1FF
121
else
122
temp1 -= 108
123
temp1 &= 0x1FF
124
temp0 = 0
125
while temp0 < 9
126
Sin(object.xpos, temp1)
127
object.xpos *= 0x3400
128
object.xpos += object.originPos.x
129
130
Cos(object.ypos, temp1)
131
object.ypos *= 0x3400
132
object.ypos += object.originPos.y
133
134
DrawSprite(0)
135
136
temp0++
137
temp1 += 12
138
temp1 &= 0x1FF
139
loop
140
object.direction = FLIP_NONE
141
object.rotation = 0x080
142
object.rotation -= object.angle
143
object.rotation &= 0x1FF
144
end if
145
146
DrawSpriteFX(1, FX_ROTATE, object.xpos, object.ypos)
147
end event
148
149
150
event ObjectStartup
151
CheckCurrentStageFolder("Zone07")
152
if checkResult == true
153
LoadSpriteSheet("OOZ/Objects.gif")
154
SpriteFrame(-8, -8, 16, 16, 379, 196)
155
SpriteFrame(-8, -34, 16, 31, 379, 213)
156
else
157
LoadSpriteSheet("MBZ/Objects.gif")
158
SpriteFrame(-8, -8, 16, 16, 355, 214)
159
SpriteFrame(-8, -34, 16, 31, 360, 50)
160
end if
161
end event
162
163
164
// ========================
165
// Editor Events
166
// ========================
167
168
event RSDKDraw
169
DrawSprite(0)
170
end event
171
172
173
event RSDKLoad
174
CheckCurrentStageFolder("Zone07")
175
if checkResult == true
176
LoadSpriteSheet("OOZ/Objects.gif")
177
SpriteFrame(-8, -34, 16, 31, 379, 213)
178
else
179
LoadSpriteSheet("MBZ/Objects.gif")
180
SpriteFrame(-8, -34, 16, 31, 360, 50)
181
end if
182
183
// Although used by the object, it's not to be set from the editor (or placed into a scene at all)
184
SetVariableAlias(ALIAS_VAR_PROPVAL, "unused")
185
end event
186
187