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/EggmanArrow.txt
1483 views
1
// ----------------------------------
2
// RSDK Project: Sonic 2
3
// Script Description: Eggman Arrow 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.value0 : object.targetPos.x
13
private alias object.value1 : object.parent
14
private alias object.value2 : object.timer
15
16
// States
17
private alias 0 : EGGMANARROW_MOVING
18
private alias 1 : EGGMANARROW_STUCK
19
private alias 2 : EGGMANARROW_FALLING
20
21
22
// ========================
23
// Tables
24
// ========================
25
26
private table EggmanArrow_frameTable
27
0, 0, 1, 1, 0, 0, 2, 2
28
end table
29
30
31
// ========================
32
// Events
33
// ========================
34
35
event ObjectUpdate
36
switch object.state
37
case EGGMANARROW_MOVING
38
if object.direction == FLIP_NONE
39
object.xpos += object.xvel
40
if object.xpos >= object.targetPos.x
41
object.xpos = object.targetPos.x
42
43
arrayPos0 = object.parent
44
object[arrayPos0].state = 2
45
PlaySfx(SfxName[Arrow Hit], false)
46
47
object.animation = 1
48
object.state++
49
end if
50
else
51
object.xpos -= object.xvel
52
if object.xpos <= object.targetPos.x
53
object.xpos = object.targetPos.x
54
55
arrayPos0 = object.parent
56
object[arrayPos0].state = 2
57
PlaySfx(SfxName[Arrow Hit], false)
58
59
object.animation = 1
60
object.state++
61
end if
62
end if
63
64
foreach (GROUP_PLAYERS, currentPlayer, ACTIVE_ENTITIES)
65
BoxCollisionTest(C_TOUCH, object.entityPos, -16, -1, 16, 1, currentPlayer, C_BOX, C_BOX, C_BOX, C_BOX)
66
if checkResult == true
67
CallFunction(Player_Hit)
68
end if
69
next
70
break
71
72
case EGGMANARROW_STUCK
73
foreach (GROUP_PLAYERS, currentPlayer, ACTIVE_ENTITIES)
74
BoxCollisionTest(C_PLATFORM, object.entityPos, -16, -1, 16, 16, currentPlayer, C_BOX, C_BOX, C_BOX, C_BOX)
75
if currentPlayer == 0
76
if checkResult == true
77
if object.timer == 0
78
object.timer = 30
79
end if
80
end if
81
end if
82
next
83
84
if object.timer != 0
85
object.timer--
86
if object.timer == 0
87
object.state = EGGMANARROW_FALLING
88
end if
89
end if
90
break
91
92
case EGGMANARROW_FALLING
93
object.ypos += object.yvel
94
object.yvel += 0x3800
95
break
96
97
end switch
98
99
if object.animation == 1
100
if object.animationTimer == 32
101
object.frame = 0
102
object.animation = 0
103
else
104
temp0 = object.animationTimer
105
temp0 &= 7
106
GetTableValue(object.frame, temp0, EggmanArrow_frameTable)
107
object.animationTimer++
108
end if
109
end if
110
end event
111
112
113
event ObjectDraw
114
DrawSpriteFX(object.frame, FX_FLIP, object.xpos, object.ypos)
115
end event
116
117
118
event ObjectStartup
119
CheckCurrentStageFolder("Zone03")
120
if checkResult == true
121
LoadSpriteSheet("ARZ/Objects.gif")
122
123
// Normal Arrow Frame
124
SpriteFrame(-16, -3, 29, 6, 194, 1)
125
126
// Arrow Wobble Up Frame
127
SpriteFrame(-15, -4, 28, 7, 195, 8)
128
129
// Arrow Wobble Down Frame
130
SpriteFrame(-15, -3, 28, 7, 195, 16)
131
else
132
LoadSpriteSheet("MBZ/Objects.gif")
133
134
// Normal Arrow Frame
135
SpriteFrame(-16, -3, 29, 6, 298, 31)
136
137
// Arrow Wobble Up Frame
138
SpriteFrame(-15, -4, 28, 7, 299, 38)
139
140
// Arrow Wobble Down Frame
141
SpriteFrame(-15, -3, 28, 7, 299, 46)
142
end if
143
end event
144
145
146
// ========================
147
// Editor Events
148
// ========================
149
150
event RSDKDraw
151
DrawSprite(0)
152
end event
153
154
155
event RSDKLoad
156
CheckCurrentStageFolder("Zone03")
157
if checkResult == true
158
LoadSpriteSheet("ARZ/Objects.gif")
159
SpriteFrame(-16, -3, 29, 6, 194, 1)
160
else
161
LoadSpriteSheet("MBZ/Objects.gif")
162
SpriteFrame(-16, -3, 29, 6, 298, 31)
163
end if
164
165
SetVariableAlias(ALIAS_VAR_PROPVAL, "unused")
166
end event
167
168