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/CNZ/VFlipper.txt
1480 views
1
// ----------------------------------
2
// RSDK Project: Sonic 2
3
// Script Description: V Flipper 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 : VFLIPPER_IDLE
16
private alias 1 : VFLIPPER_ACTIVATED_L
17
private alias 2 : VFLIPPER_ACTIVATED_R
18
19
// Player Aliases
20
private alias object.state : player.state
21
private alias object.iypos : player.iypos
22
private alias object.xvel : player.xvel
23
private alias object.speed : player.speed
24
private alias object.gravity : player.gravity
25
private alias object.prevAnimation : player.prevAnimation
26
private alias object.animation : player.animation
27
28
private alias object.value30 : player.jumpOffset
29
30
31
// ========================
32
// Function Declarations
33
// ========================
34
35
reserve function VFlipper_DebugDraw
36
reserve function VFlipper_DebugSpawn
37
38
39
// ========================
40
// Function Definitions
41
// ========================
42
43
private function VFlipper_DebugDraw
44
DrawSprite(0)
45
end function
46
47
48
private function VFlipper_DebugSpawn
49
CreateTempObject(TypeName[V Flipper], 0, object.xpos, object.ypos)
50
end function
51
52
53
// ========================
54
// Events
55
// ========================
56
57
event ObjectUpdate
58
switch object.state
59
default
60
case VFLIPPER_IDLE
61
break
62
63
case VFLIPPER_ACTIVATED_L
64
object.frame = object.timer
65
object.frame >>= 1
66
object.frame++
67
if object.timer < 6
68
object.timer++
69
else
70
object.timer = 0
71
object.frame = 0
72
object.state = VFLIPPER_IDLE
73
end if
74
break
75
76
case VFLIPPER_ACTIVATED_R
77
object.frame = object.timer
78
object.frame >>= 1
79
object.frame += 3
80
if object.timer < 6
81
object.timer++
82
else
83
object.timer = 0
84
object.frame = 0
85
object.state = VFLIPPER_IDLE
86
end if
87
break
88
89
end switch
90
91
foreach (GROUP_PLAYERS, currentPlayer, ACTIVE_ENTITIES)
92
BoxCollisionTest(C_SOLID, object.entityPos, -8, -24, 8, 24, currentPlayer, C_BOX, C_BOX, C_BOX, C_BOX)
93
if player[currentPlayer].gravity == GRAVITY_GROUND
94
switch checkResult
95
default
96
case COL_NONE
97
case COL_TOP
98
case COL_BOTTOM
99
break
100
101
case COL_LEFT
102
player[currentPlayer].speed = -0x100000
103
player[currentPlayer].xvel = -0x100000
104
105
if player[currentPlayer].state != Player_State_TubeRoll
106
player[currentPlayer].state = Player_State_Roll
107
player[currentPlayer].animation = ANI_JUMPING
108
end if
109
110
if player[currentPlayer].prevAnimation != ANI_JUMPING
111
player[currentPlayer].iypos -= player[currentPlayer].jumpOffset
112
end if
113
114
object.state = VFLIPPER_ACTIVATED_L
115
PlaySfx(SfxName[Flipper], false)
116
break
117
118
case COL_RIGHT
119
player[currentPlayer].speed = 0x100000
120
player[currentPlayer].xvel = 0x100000
121
122
CheckEqual(player[currentPlayer].state, Player_State_TubeRoll)
123
temp0 = checkResult
124
CheckEqual(player[currentPlayer].state, Player_State_TubeAirRoll)
125
temp0 |= checkResult
126
if temp0 == false
127
player[currentPlayer].state = Player_State_Roll
128
player[currentPlayer].animation = ANI_JUMPING
129
end if
130
131
if player[currentPlayer].prevAnimation != ANI_JUMPING
132
player[currentPlayer].iypos -= player[currentPlayer].jumpOffset
133
end if
134
135
object.state = VFLIPPER_ACTIVATED_R
136
PlaySfx(SfxName[Flipper], false)
137
break
138
end switch
139
end if
140
next
141
end event
142
143
144
event ObjectDraw
145
DrawSprite(object.frame)
146
end event
147
148
149
event ObjectStartup
150
CheckCurrentStageFolder("Zone04")
151
if checkResult == true
152
LoadSpriteSheet("CNZ/Objects.gif")
153
SpriteFrame(-8, -24, 16, 48, 101, 157)
154
SpriteFrame(-17, -25, 26, 47, 118, 157)
155
SpriteFrame(-8, -24, 16, 48, 101, 157)
156
SpriteFrame(-9, -25, 26, 47, 74, 157)
157
SpriteFrame(-8, -24, 16, 48, 101, 157)
158
SpriteFrame(-17, -25, 26, 47, 118, 157)
159
else
160
LoadSpriteSheet("MBZ/Objects.gif")
161
SpriteFrame(-8, -24, 16, 48, 321, 338)
162
SpriteFrame(-17, -25, 26, 47, 338, 338)
163
SpriteFrame(-8, -24, 16, 48, 321, 338)
164
SpriteFrame(-9, -25, 26, 47, 394, 338)
165
SpriteFrame(-8, -24, 16, 48, 321, 338)
166
SpriteFrame(-17, -25, 26, 47, 338, 338)
167
end if
168
169
SetTableValue(TypeName[V Flipper], DebugMode_ObjCount, DebugMode_TypesTable)
170
SetTableValue(VFlipper_DebugDraw, DebugMode_ObjCount, DebugMode_DrawTable)
171
SetTableValue(VFlipper_DebugSpawn, DebugMode_ObjCount, DebugMode_SpawnTable)
172
DebugMode_ObjCount++
173
end event
174
175
176
// ========================
177
// Editor Events
178
// ========================
179
180
event RSDKDraw
181
DrawSprite(0)
182
end event
183
184
185
event RSDKLoad
186
CheckCurrentStageFolder("Zone04")
187
if checkResult == true
188
LoadSpriteSheet("CNZ/Objects.gif")
189
SpriteFrame(-8, -24, 16, 48, 101, 157)
190
else
191
LoadSpriteSheet("MBZ/Objects.gif")
192
SpriteFrame(-8, -24, 16, 48, 321, 338)
193
end if
194
195
SetVariableAlias(ALIAS_VAR_PROPVAL, "unused")
196
end event
197
198