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/Enemies/BigTurtloid.txt
1487 views
1
// ----------------------------------
2
// RSDK Project: Sonic 2
3
// Script Description: Big Turtloid 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
private alias object.value1 : object.child
14
private alias object.value2 : object.handleFrame
15
16
// States
17
private alias 0 : BIGTURTLOID_AWAITPLAYER
18
private alias 1 : BIGTURTLOID_FIREDSHOT
19
private alias 2 : BIGTURTLOID_IDLE
20
21
// Player Aliases
22
private alias object.xpos : player.xpos
23
24
25
// ========================
26
// Function Declarations
27
// ========================
28
29
reserve function BigTurtloid_DebugDraw
30
reserve function BigTurtloid_DebugSpawn
31
32
private function BigTurtloid_DebugDraw
33
DrawSprite(2)
34
end function
35
36
37
private function BigTurtloid_DebugSpawn
38
CreateTempObject(TypeName[Big Turtloid], 0, object.xpos, object.ypos)
39
object[tempObjectPos].xvel = 0x8000
40
end function
41
42
43
// ========================
44
// Events
45
// ========================
46
47
event ObjectUpdate
48
switch object.state
49
case BIGTURTLOID_AWAITPLAYER
50
if object.child > 0
51
temp0 = object.xpos
52
temp0 -= player[0].xpos
53
Abs(temp0)
54
if temp0 < 0x800000
55
#platform: USE_ORIGINS
56
temp0 = object.xpos
57
temp0 -= SCZSetup_scrollPos.x
58
temp0 >>= 16
59
CheckGreater(temp0, 0)
60
temp1 = checkResult
61
CheckLower(temp0, screen.xsize)
62
temp1 &= checkResult
63
if temp1 == true
64
#endplatform
65
object.xvel = 0
66
arrayPos0 = object.child
67
object[arrayPos0].frame = 1
68
object.handleFrame = 3
69
70
CreateTempObject(TypeName[Turtloid Shot], 0, object.xpos, object.ypos)
71
object[tempObjectPos].xpos -= 0x120000
72
object[tempObjectPos].ypos += 0x90000
73
object[tempObjectPos].xvel = -0x8000
74
PlaySfx(SfxName[Shot], false)
75
object.state++
76
#platform: USE_ORIGINS
77
end if
78
#endplatform
79
end if
80
end if
81
break
82
83
case BIGTURTLOID_FIREDSHOT
84
object.timer++
85
if object.timer == 16
86
object.timer = 0
87
object.xvel = -0x8000
88
arrayPos0 = object.child
89
object.handleFrame = 2
90
object.state++
91
end if
92
break
93
94
case BIGTURTLOID_IDLE
95
break
96
97
end switch
98
99
object.xpos += object.xvel
100
object.xpos += SCZSetup_scrollVelocity.x
101
object.ypos += SCZSetup_scrollVelocity.y
102
foreach (GROUP_PLAYERS, currentPlayer, ACTIVE_ENTITIES)
103
BoxCollisionTest(C_PLATFORM, object.entityPos, -24, -15, 24, 0, currentPlayer, C_BOX, C_BOX, C_BOX, C_BOX)
104
if checkResult == true
105
player[currentPlayer].xpos += SCZSetup_scrollVelocity.x
106
player[currentPlayer].xpos += object.xvel
107
end if
108
next
109
110
object.frame = object.animationTimer
111
object.frame >>= 1
112
object.animationTimer++
113
object.animationTimer &= 3
114
end event
115
116
117
event ObjectDraw
118
DrawSprite(object.handleFrame)
119
DrawSprite(object.frame)
120
end event
121
122
123
event ObjectStartup
124
CheckCurrentStageFolder("Zone10")
125
if checkResult == true
126
LoadSpriteSheet("SCZ/Objects.gif")
127
SpriteFrame(28, 6, 16, 8, 186, 90)
128
SpriteFrame(28, 6, 7, 8, 186, 99)
129
SpriteFrame(-28, -15, 56, 31, 72, 42)
130
SpriteFrame(-28, -15, 56, 31, 129, 42)
131
else
132
LoadSpriteSheet("MBZ/Objects.gif")
133
SpriteFrame(28, 6, 16, 8, 186, 90)
134
SpriteFrame(28, 6, 7, 8, 186, 99)
135
SpriteFrame(-28, -15, 56, 31, 72, 42)
136
SpriteFrame(-28, -15, 56, 31, 129, 42)
137
end if
138
139
foreach (TypeName[Big Turtloid], arrayPos0, ALL_ENTITIES)
140
temp0 = screen.xsize
141
temp0 -= 320
142
temp0 <<= 16
143
object[arrayPos0].handleFrame = 2
144
object[arrayPos0].xpos += 0x400000
145
object[arrayPos0].xpos -= temp0
146
object[arrayPos0].xvel = -0x8000
147
arrayPos1 = arrayPos0
148
arrayPos1++
149
if object[arrayPos1].type == TypeName[SmallTurtloid]
150
object[arrayPos0].child = arrayPos1
151
else
152
object[arrayPos0].child = 0
153
end if
154
next
155
156
SetTableValue(TypeName[Big Turtloid], DebugMode_ObjCount, DebugMode_TypesTable)
157
SetTableValue(BigTurtloid_DebugDraw, DebugMode_ObjCount, DebugMode_DrawTable)
158
SetTableValue(BigTurtloid_DebugSpawn, DebugMode_ObjCount, DebugMode_SpawnTable)
159
DebugMode_ObjCount++
160
end event
161
162
163
// ========================
164
// Editor Events
165
// ========================
166
167
event RSDKDraw
168
DrawSprite(2)
169
end event
170
171
172
event RSDKLoad
173
CheckCurrentStageFolder("Zone10")
174
if checkResult == true
175
LoadSpriteSheet("SCZ/Objects.gif")
176
SpriteFrame(28, 6, 16, 8, 186, 90)
177
SpriteFrame(28, 6, 7, 8, 186, 99)
178
SpriteFrame(-28, -15, 56, 31, 72, 42)
179
SpriteFrame(-28, -15, 56, 31, 129, 42)
180
else
181
LoadSpriteSheet("MBZ/Objects.gif")
182
SpriteFrame(28, 6, 16, 8, 186, 90)
183
SpriteFrame(28, 6, 7, 8, 186, 99)
184
SpriteFrame(-28, -15, 56, 31, 72, 42)
185
SpriteFrame(-28, -15, 56, 31, 129, 42)
186
end if
187
188
SetVariableAlias(ALIAS_VAR_PROPVAL, "unused")
189
end event
190
191