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/ArrowLauncher.txt
1480 views
1
// ----------------------------------
2
// RSDK Project: Sonic 2
3
// Script Description: Arrow Launcher 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.timer
13
14
// States
15
private alias 0 : ARROWLAUNCHER_AWAITPLAYER
16
private alias 1 : ARROWLAUNCHER_ACTIVATE
17
private alias 2 : ARROWLAUNCHER_FIREARROW
18
19
// Arrow Aliases
20
private alias object.value0 : arrow.timer
21
private alias object.value2 : arrow.drawPos.x
22
23
24
// ========================
25
// Function Declarations
26
// ========================
27
28
reserve function ArrowLauncher_DebugDraw
29
reserve function ArrowLauncher_DebugSpawn
30
31
32
// ========================
33
// Function Definitions
34
// ========================
35
36
private function ArrowLauncher_DebugDraw
37
DrawSpriteFX(0, FX_FLIP, object.xpos, object.ypos)
38
end function
39
40
41
private function ArrowLauncher_DebugSpawn
42
CreateTempObject(TypeName[Arrow Launcher], 0, object.xpos, object.ypos)
43
object[tempObjectPos].direction = object.direction
44
end function
45
46
47
// ========================
48
// Events
49
// ========================
50
51
event ObjectUpdate
52
switch object.state
53
case ARROWLAUNCHER_AWAITPLAYER
54
foreach (GROUP_PLAYERS, currentPlayer, ACTIVE_ENTITIES)
55
BoxCollisionTest(C_TOUCH, object.entityPos, -64, -256, 64, 256, currentPlayer, -1, -1, 1, 1)
56
if checkResult == true
57
object.state = ARROWLAUNCHER_ACTIVATE
58
end if
59
next
60
break
61
62
case ARROWLAUNCHER_ACTIVATE
63
object.timer++
64
object.timer &= 7
65
object.frame = object.timer
66
object.frame >>= 2
67
68
temp0 = false
69
foreach (GROUP_PLAYERS, currentPlayer, ACTIVE_ENTITIES)
70
BoxCollisionTest(C_TOUCH, object.entityPos, -64, -256, 64, 256, currentPlayer, -1, -1, 1, 1)
71
temp0 += checkResult
72
next
73
74
if temp0 == false
75
object.state = ARROWLAUNCHER_FIREARROW
76
object.timer = 0
77
object.frame = 2
78
PlaySfx(SfxName[Swish], false)
79
end if
80
break
81
82
case ARROWLAUNCHER_FIREARROW
83
object.timer++
84
switch object.timer
85
case 8
86
object.frame = 3
87
CreateTempObject(TypeName[Arrow], 0, object.xpos, object.ypos)
88
if object.direction == FLIP_X
89
object[tempObjectPos].xvel = -0x40000
90
else
91
object[tempObjectPos].xvel = 0x40000
92
end if
93
object[tempObjectPos].drawOrder = 1
94
arrow[tempObjectPos].timer = 24
95
arrow[tempObjectPos].drawPos.x = object.xpos
96
object[tempObjectPos].direction = object.direction
97
break
98
99
case 24
100
object.frame = 2
101
break
102
103
case 32
104
object.timer = 0
105
object.frame = 0
106
object.state = ARROWLAUNCHER_AWAITPLAYER
107
break
108
109
end switch
110
break
111
112
end switch
113
end event
114
115
116
event ObjectDraw
117
DrawSpriteFX(object.frame, FX_FLIP, object.xpos, object.ypos)
118
end event
119
120
121
event ObjectStartup
122
LoadSpriteSheet("ARZ/Objects.gif")
123
SpriteFrame(-16, -8, 32, 16, 1, 1)
124
SpriteFrame(-16, -8, 32, 16, 1, 18)
125
SpriteFrame(-16, -8, 32, 16, 1, 35)
126
SpriteFrame(-16, -8, 32, 16, 1, 52)
127
128
SetTableValue(TypeName[Arrow Launcher], DebugMode_ObjCount, DebugMode_TypesTable)
129
SetTableValue(ArrowLauncher_DebugDraw, DebugMode_ObjCount, DebugMode_DrawTable)
130
SetTableValue(ArrowLauncher_DebugSpawn, DebugMode_ObjCount, DebugMode_SpawnTable)
131
DebugMode_ObjCount++
132
133
#platform: USE_ORIGINS
134
if game.playMode == BOOT_PLAYMODE_MISSION
135
CheckCurrentStageFolder("DLC_ZONE09") // Yeah, not really sure why it's all caps...
136
if checkResult != false
137
foreach (TypeName[Arrow Launcher], arrayPos0, ALL_ENTITIES)
138
object[arrayPos0].drawOrder = 5
139
next
140
end if
141
end if
142
#endplatform
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
LoadSpriteSheet("ARZ/Objects.gif")
157
SpriteFrame(-16, -8, 32, 16, 1, 1)
158
159
SetVariableAlias(ALIAS_VAR_PROPVAL, "unused")
160
end event
161
162