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/EggmanTotemPole.txt
1487 views
1
// ----------------------------------
2
// RSDK Project: Sonic 2
3
// Script Description: Eggman Totem 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.value3 : object.timer
13
private alias object.value7 : object.rumbleTimer
14
private alias object.value8 : object.offset
15
private alias object.value9 : object.eyePos
16
17
// States
18
private alias 0 : EGGMANTOTEMPOLE_RISING
19
private alias 1 : EGGMANTOTEMPOLE_IDLE
20
private alias 2 : EGGMANTOTEMPOLE_2
21
private alias 3 : EGGMANTOTEMPOLE_LOWERING
22
23
// Player Aliases
24
private alias object.ypos : player.ypos
25
26
27
// ========================
28
// Events
29
// ========================
30
31
event ObjectUpdate
32
switch object.state
33
case EGGMANTOTEMPOLE_RISING
34
object.ypos -= 0x10000
35
36
object.rumbleTimer++
37
object.rumbleTimer %= 40
38
if object.rumbleTimer == 8
39
PlaySfx(SfxName[Rumble], false)
40
end if
41
42
temp0 = object.rumbleTimer
43
temp0 &= 7
44
if temp0 == 0
45
screen.shakeX = 1
46
end if
47
48
temp0 = object.rumbleTimer
49
temp0 &= 3
50
if temp0 == 0
51
screen.shakeY = 2
52
end if
53
54
object.timer--
55
if object.timer == 0
56
object.state++
57
end if
58
break
59
60
case EGGMANTOTEMPOLE_IDLE
61
break
62
63
case EGGMANTOTEMPOLE_2
64
FlipSign(object.offset)
65
object.timer--
66
if object.timer == 0
67
object.state = EGGMANTOTEMPOLE_IDLE
68
object.offset = 0
69
end if
70
break
71
72
case EGGMANTOTEMPOLE_LOWERING
73
object.ypos += 0x10000
74
object.rumbleTimer++
75
object.rumbleTimer %= 40
76
77
temp0 = object.rumbleTimer
78
temp0 &= 7
79
if temp0 == 0
80
screen.shakeX = 1
81
end if
82
83
temp0 = object.rumbleTimer
84
temp0 &= 3
85
if temp0 == 0
86
screen.shakeY = 2
87
end if
88
89
object.timer--
90
if object.timer == 0
91
object.type = TypeName[Blank Object]
92
end if
93
break
94
95
end switch
96
97
foreach (GROUP_PLAYERS, currentPlayer, ACTIVE_ENTITIES)
98
if object.direction == FLIP_NONE
99
BoxCollisionTest(C_SOLID, object.entityPos, -16, -64, 24, 64, currentPlayer, C_BOX, C_BOX, C_BOX, C_BOX)
100
if object.state == EGGMANTOTEMPOLE_LOWERING
101
if checkResult == COL_TOP
102
player[currentPlayer].ypos += 0x10000
103
end if
104
end if
105
else
106
BoxCollisionTest(C_SOLID, object.entityPos, -24, -64, 16, 64, currentPlayer, C_BOX, C_BOX, C_BOX, C_BOX)
107
if object.state == EGGMANTOTEMPOLE_LOWERING
108
if checkResult == COL_TOP
109
player[currentPlayer].ypos += 0x10000
110
end if
111
end if
112
end if
113
next
114
end event
115
116
117
event ObjectDraw
118
temp0 = object.xpos
119
temp0 += object.offset
120
121
temp1 = object.ypos
122
temp1 += object.offset
123
DrawSpriteFX(0, FX_FLIP, temp0, temp1)
124
125
if object.state == EGGMANTOTEMPOLE_2
126
temp1 += object.eyePos
127
DrawSpriteFX(1, FX_FLIP, temp0, temp1)
128
end if
129
end event
130
131
132
event ObjectStartup
133
CheckCurrentStageFolder("Zone03")
134
if checkResult == true
135
LoadSpriteSheet("ARZ/Objects.gif")
136
137
// Pillar Frame
138
SpriteFrame(0, -64, 32, 160, 223, 1)
139
140
// Eye Frame
141
SpriteFrame(19, -13, 12, 8, 211, 24)
142
else
143
LoadSpriteSheet("MBZ/Objects.gif")
144
145
// Pillar Frame
146
SpriteFrame(0, -64, 32, 160, 1, 95)
147
148
// Eye Frame
149
SpriteFrame(19, -13, 12, 8, 328, 31)
150
end if
151
end event
152
153
154
// ========================
155
// Editor Events
156
// ========================
157
158
event RSDKDraw
159
DrawSprite(0)
160
end event
161
162
163
event RSDKLoad
164
CheckCurrentStageFolder("Zone03")
165
if checkResult == true
166
LoadSpriteSheet("ARZ/Objects.gif")
167
SpriteFrame(0, -64, 32, 160, 223, 1) // Totem Pole
168
else
169
LoadSpriteSheet("MBZ/Objects.gif")
170
SpriteFrame(0, -64, 32, 160, 1, 95) // Bluer Totem Pole
171
end if
172
173
SetVariableAlias(ALIAS_VAR_PROPVAL, "unused")
174
end event
175
176