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/WFZ/EggmanPlatform.txt
1482 views
1
// ----------------------------------
2
// RSDK Project: Sonic 2
3
// Script Description: Eggman Platform 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.startPos.y
14
private alias object.value2 : object.stoodPlayers
15
private alias object.value3 : object.debrisDistance.x
16
17
// States
18
private alias 0 : WFZEGGMANPLATFORM_ENTER
19
private alias 1 : WFZEGGMANPLATFORM_MOVE
20
private alias 2 : WFZEGGMANPLATFORM_DESTROYED
21
22
// Player Aliases
23
private alias object.xpos : player.xpos
24
private alias object.ypos : player.ypos
25
26
27
// ========================
28
// Events
29
// ========================
30
31
event ObjectUpdate
32
temp1 = object.ypos
33
temp1 &= 0xFFFF0000
34
35
switch object.state
36
case WFZEGGMANPLATFORM_ENTER
37
object.ypos += 0x10000
38
39
object.timer++
40
if object.timer >= 119
41
object.timer = 96
42
object.xvel = -0x10000
43
object.yvel = 0x10000
44
object.startPos.y = object.ypos
45
object.state = WFZEGGMANPLATFORM_MOVE
46
end if
47
break
48
49
case WFZEGGMANPLATFORM_MOVE
50
if object.timer == 0
51
object.timer = 192
52
FlipSign(object.xvel)
53
end if
54
55
if object.ypos >= object.startPos.y
56
object.yvel -= 0x400
57
else
58
object.yvel += 0x400
59
end if
60
61
object.xpos += object.xvel
62
object.ypos += object.yvel
63
object.timer--
64
break
65
66
case WFZEGGMANPLATFORM_DESTROYED
67
object.xpos += object.xvel
68
object.ypos += object.yvel
69
object.yvel += 0x3800
70
71
if object.outOfBounds == true
72
object.type = TypeName[Blank Object]
73
end if
74
75
object.debrisDistance.x++
76
break
77
78
end switch
79
80
FlipSign(temp1)
81
temp0 = object.ypos
82
temp0 &= 0xFFFF0000
83
temp1 += temp0
84
if object.state < WFZEGGMANPLATFORM_DESTROYED
85
object.frame = object.animationTimer
86
object.frame >>= 2
87
object.animationTimer++
88
if object.animationTimer >= 24
89
object.animationTimer = 0
90
end if
91
92
temp2 = 0
93
foreach (GROUP_PLAYERS, currentPlayer, ACTIVE_ENTITIES)
94
GetBit(temp0, object.stoodPlayers, temp2)
95
if temp0 == true
96
player[currentPlayer].xpos += object.xvel
97
player[currentPlayer].ypos += temp1
98
end if
99
SetBit(object.stoodPlayers, temp2, false)
100
101
BoxCollisionTest(C_PLATFORM, object.entityPos, -16, -8, 16, 8, currentPlayer, C_BOX, C_BOX, C_BOX, C_BOX)
102
if checkResult == true
103
SetBit(object.stoodPlayers, temp2, true)
104
else
105
BoxCollisionTest(C_TOUCH, object.entityPos, -4, 8, 4, 12, currentPlayer, C_BOX, C_BOX, C_BOX, C_BOX)
106
if checkResult == true
107
CallFunction(Player_Hit)
108
end if
109
end if
110
111
temp2++
112
next
113
end if
114
end event
115
116
117
event ObjectDraw
118
if object.state == WFZEGGMANPLATFORM_DESTROYED
119
temp0 = -16
120
temp0 -= object.debrisDistance.x
121
EditFrame(6, temp0, -8, 16, 22, 409, 18)
122
DrawSpriteFX(6, FX_FLIP, object.xpos, object.ypos)
123
124
object.direction ^= FLIP_X
125
DrawSpriteFX(6, FX_FLIP, object.xpos, object.ypos)
126
else
127
DrawSprite(object.frame)
128
end if
129
end event
130
131
132
event ObjectStartup
133
CheckCurrentStageFolder("Zone11")
134
if checkResult == true
135
LoadSpriteSheet("SCZ/Objects.gif")
136
SpriteFrame(-16, -8, 32, 24, 376, 18)
137
SpriteFrame(-16, -8, 32, 23, 376, 43)
138
SpriteFrame(-16, -8, 32, 22, 376, 67)
139
SpriteFrame(-16, -8, 32, 22, 409, 18)
140
SpriteFrame(-16, -8, 32, 22, 409, 41)
141
SpriteFrame(-16, -8, 32, 23, 409, 64)
142
SpriteFrame(-16, -8, 16, 22, 409, 18)
143
else
144
LoadSpriteSheet("MBZ/Objects.gif")
145
SpriteFrame(-16, -8, 32, 24, 397, 18)
146
SpriteFrame(-16, -8, 32, 23, 397, 43)
147
SpriteFrame(-16, -8, 32, 22, 397, 67)
148
SpriteFrame(-16, -8, 32, 22, 430, 18)
149
SpriteFrame(-16, -8, 32, 22, 430, 41)
150
SpriteFrame(-16, -8, 32, 23, 430, 64)
151
SpriteFrame(-16, -8, 16, 22, 430, 18)
152
end if
153
end event
154
155
156
// ========================
157
// Editor Events
158
// ========================
159
160
event RSDKDraw
161
DrawSprite(0)
162
end event
163
164
165
event RSDKLoad
166
CheckCurrentStageFolder("Zone11")
167
if checkResult == true
168
LoadSpriteSheet("SCZ/Objects.gif")
169
SpriteFrame(-16, -8, 32, 24, 376, 18)
170
else
171
LoadSpriteSheet("MBZ/Objects.gif")
172
SpriteFrame(-16, -8, 32, 24, 397, 18)
173
end if
174
175
SetVariableAlias(ALIAS_VAR_PROPVAL, "unused")
176
end event
177
178