Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
rubberduckycooly
GitHub Repository: rubberduckycooly/Sonic-CD-2011-Script-Decompilation
Path: blob/main/Scripts/R6/EggmanStatue.txt
1319 views
1
//---------------Sonic CD Eggman Statue Script----------------//
2
//--------Scripted by Christian Whitehead 'The Taxman'--------//
3
//-------Unpacked By Rubberduckycooly's Script Unpacker-------//
4
5
// Aliases
6
#alias Object.Value0 : Object.Timer
7
8
// Statue Bomb Aliases
9
#alias Object.XPos : Bomb.XPos
10
#alias Object.YPos : Bomb.YPos
11
#alias Object.Value2 : Bomb.YLandingPos
12
13
// States
14
#alias 0 : EGGMANSTATUE_INACTIVE
15
#alias 1 : EGGMANSTATUE_DESTROYED
16
#alias 2 : EGGMANSTATUE_BOMB_DROP
17
18
// Global SFX
19
#alias 22 : SFX_G_EXPLOSION
20
21
// Function declarations
22
#function EggmanStatue_HandleBombDrop
23
24
25
function EggmanStatue_HandleBombDrop
26
TempValue2 = Object.YPos
27
TempValue2 += 0x260000
28
CreateTempObject(TypeName[Statue Bomb], 0, Object.XPos, Object.YPos)
29
Bomb[TempObjectPos].XPos -= 0x180000
30
Bomb[TempObjectPos].YPos -= 0xE00000
31
Bomb[TempObjectPos].YLandingPos = TempValue2
32
33
CreateTempObject(TypeName[Statue Bomb], 0, Object.XPos, Object.YPos)
34
Bomb[TempObjectPos].XPos -= 0x80000
35
Bomb[TempObjectPos].YPos -= 0x600000
36
Bomb[TempObjectPos].YLandingPos = TempValue2
37
38
CreateTempObject(TypeName[Statue Bomb], 0, Object.XPos, Object.YPos)
39
Bomb[TempObjectPos].XPos += 0x80000
40
Bomb[TempObjectPos].YPos -= 0xA00000
41
Bomb[TempObjectPos].YLandingPos = TempValue2
42
43
CreateTempObject(TypeName[Statue Bomb], 0, Object.XPos, Object.YPos)
44
Bomb[TempObjectPos].XPos += 0x180000
45
Bomb[TempObjectPos].YPos -= 0x1200000
46
Bomb[TempObjectPos].YLandingPos = TempValue2
47
48
CreateTempObject(TypeName[Statue Bomb], 0, Object.XPos, Object.YPos)
49
Bomb[TempObjectPos].XPos += 0x280000
50
Bomb[TempObjectPos].YPos -= 0x1200000
51
Bomb[TempObjectPos].YLandingPos = TempValue2
52
53
CreateTempObject(TypeName[Statue Bomb], 0, Object.XPos, Object.YPos)
54
Bomb[TempObjectPos].XPos += 0x380000
55
Bomb[TempObjectPos].YPos -= 0x600000
56
Bomb[TempObjectPos].YLandingPos = TempValue2
57
58
CreateTempObject(TypeName[Statue Bomb], 0, Object.XPos, Object.YPos)
59
Bomb[TempObjectPos].XPos += 0x480000
60
Bomb[TempObjectPos].YPos -= 0x600000
61
Bomb[TempObjectPos].YLandingPos = TempValue2
62
63
CreateTempObject(TypeName[Statue Bomb], 0, Object.XPos, Object.YPos)
64
Bomb[TempObjectPos].XPos += 0x580000
65
Bomb[TempObjectPos].YPos -= 0x1200000
66
Bomb[TempObjectPos].YLandingPos = TempValue2
67
68
CreateTempObject(TypeName[Statue Bomb], 0, Object.XPos, Object.YPos)
69
Bomb[TempObjectPos].XPos += 0x680000
70
Bomb[TempObjectPos].YPos -= 0x600000
71
Bomb[TempObjectPos].YLandingPos = TempValue2
72
73
CreateTempObject(TypeName[Statue Bomb], 0, Object.XPos, Object.YPos)
74
Bomb[TempObjectPos].XPos += 0x780000
75
Bomb[TempObjectPos].YPos -= 0xE00000
76
Bomb[TempObjectPos].YLandingPos = TempValue2
77
end function
78
79
80
sub ObjectMain
81
switch Object.State
82
case EGGMANSTATUE_DESTROYED
83
TempValue0 = Object.Timer
84
TempValue0 &= 3
85
if TempValue0 == 0
86
Rand(TempValue0, 32)
87
TempValue0 -= 16
88
TempValue0 <<= 16
89
TempValue0 += Object.XPos
90
91
Rand(TempValue1, 48)
92
TempValue1 -= 24
93
TempValue1 <<= 16
94
TempValue1 += Object.YPos
95
96
CreateTempObject(TypeName[Explosion], 0, TempValue0, TempValue1)
97
PlaySfx(SFX_G_EXPLOSION, false)
98
end if
99
100
Object.Timer++
101
if Object.Timer == 40
102
Object.Timer = 0
103
Object.State++
104
end if
105
break
106
107
case EGGMANSTATUE_BOMB_DROP
108
Object.Timer++
109
if Object.Timer == 60
110
Object.Timer = 0
111
CallFunction(EggmanStatue_HandleBombDrop)
112
Object.Type = TypeName[Blank Object]
113
end if
114
break
115
116
end switch
117
end sub
118
119
120
sub ObjectPlayerInteraction
121
if Object.State == EGGMANSTATUE_INACTIVE
122
CheckEqual(Player.Animation, ANI_JUMPING)
123
TempValue0 = CheckResult
124
#platform: Use_Origins
125
CheckEqual(Player.Animation, ANI_GLIDING)
126
TempValue0 |= CheckResult
127
if Stage.PlayerListPos == PLAYER_AMY
128
if Player.Animation == ANI_HAMMER_JUMP
129
TempValue0 = true
130
end if
131
if Player.Animation == ANI_HAMMER_DASH
132
TempValue0 = true
133
end if
134
end if
135
#endplatform
136
if TempValue0 == true
137
138
#platform: Use_Origins
139
PlayerObjectCollision(C_ENEMY, -16, -24, 16, 24)
140
if CheckResult == true
141
if Stage.PlayerListPos == PLAYER_AMY
142
game.callbackParam0 = 1
143
game.callbackParam1 = 3
144
EngineCallback(NOTIFY_STATS_BREAK_OBJECT)
145
end if
146
if Stage.PlayerListPos == PLAYER_KNUCKLES
147
game.callbackParam0 = 1
148
game.callbackParam1 = 2
149
EngineCallback(NOTIFY_STATS_BREAK_OBJECT)
150
end if
151
Object.State = EGGMANSTATUE_DESTROYED
152
end if
153
#endplatform
154
155
#platform: Use_Standalone
156
PlayerObjectCollision(C_TOUCH, -16, -24, 16, 24)
157
if CheckResult == true
158
Object.State = EGGMANSTATUE_DESTROYED
159
end if
160
#endplatform
161
end if
162
end if
163
end sub
164
165
166
sub ObjectDraw
167
if Object.State < EGGMANSTATUE_BOMB_DROP
168
DrawSprite(0)
169
end if
170
end sub
171
172
173
sub ObjectStartup
174
LoadSpriteSheet("R6/Objects3.gif")
175
176
SpriteFrame(-20, -28, 40, 56, 81, 181) // #0 - Eggman Statue
177
end sub
178
179
180
// ========================
181
// Editor Subs
182
// ========================
183
184
sub RSDKDraw
185
DrawSprite(0)
186
end sub
187
188
189
sub RSDKLoad
190
LoadSpriteSheet("R6/Objects3.gif")
191
192
SpriteFrame(-20, -28, 40, 56, 81, 181) // #0 - Eggman Statue
193
194
SetVariableAlias(ALIAS_VAR_PROPVAL, "unused")
195
end sub
196
197