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/OOZ/HFan.txt
1480 views
1
// ----------------------------------
2
// RSDK Project: Sonic 2
3
// Script Description: H Fan 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.fanOffset.x
14
15
// States
16
private alias 0 : HFAN_DEACTIVATE
17
private alias 1 : HFAN_IDLE
18
private alias 2 : HFAN_ACTIVE
19
20
// Player Aliases
21
private alias object.xpos : player.xpos
22
23
24
// ========================
25
// Function Declarations
26
// ========================
27
28
reserve function HFan_DebugDraw
29
reserve function HFan_DebugSpawn
30
31
32
// ========================
33
// Function Definitions
34
// ========================
35
36
private function HFan_DebugDraw
37
DrawSpriteFX(0, FX_FLIP, object.xpos, object.ypos)
38
end function
39
40
41
private function HFan_DebugSpawn
42
CreateTempObject(TypeName[H Fan], 0, object.xpos, object.ypos)
43
object[tempObjectPos].direction = object.direction
44
object[tempObjectPos].speed = 48
45
end function
46
47
48
// ========================
49
// Events
50
// ========================
51
52
event ObjectUpdate
53
switch object.state
54
case HFAN_DEACTIVATE
55
if object.speed > 0
56
object.speed--
57
else
58
object.state++
59
end if
60
object.frame = object.animationTimer
61
object.frame /= 48
62
object.animationTimer += object.speed
63
object.animationTimer %= 288
64
break
65
66
case HFAN_IDLE
67
object.timer++
68
if object.timer == 30
69
object.timer = 0
70
object.speed = 48
71
object.state++
72
end if
73
break
74
75
case HFAN_ACTIVE
76
object.frame = object.animationTimer
77
object.frame /= 48
78
object.animationTimer += object.speed
79
object.animationTimer %= 288
80
81
object.timer++
82
if object.timer == 180
83
object.timer = 0
84
object.state = HFAN_DEACTIVATE
85
end if
86
87
object.fanOffset.x = object.xpos
88
if object.direction == FLIP_NONE
89
object.fanOffset.x -= 0xA00000
90
foreach (GROUP_PLAYERS, currentPlayer, ACTIVE_ENTITIES)
91
BoxCollisionTest(C_TOUCH, object.entityPos, -160, -112, 32, 112, currentPlayer, 0, 0, 0, 0)
92
if checkResult == true
93
temp0 = object.fanOffset.x
94
temp0 -= player[currentPlayer].xpos
95
temp0 >>= 4
96
player[currentPlayer].xpos += temp0
97
end if
98
next
99
else
100
object.fanOffset.x += 0xA00000
101
foreach (GROUP_PLAYERS, currentPlayer, ACTIVE_ENTITIES)
102
BoxCollisionTest(C_TOUCH, object.entityPos, -32, -112, 160, 112, currentPlayer, 0, 0, 0, 0)
103
if checkResult == true
104
temp0 = object.fanOffset.x
105
temp0 -= player[currentPlayer].xpos
106
temp0 >>= 4
107
player[currentPlayer].xpos += temp0
108
end if
109
next
110
end if
111
break
112
113
end switch
114
end event
115
116
117
event ObjectDraw
118
DrawSpriteFX(object.frame, FX_FLIP, object.xpos, object.ypos)
119
end event
120
121
122
event ObjectStartup
123
LoadSpriteSheet("OOZ/Objects.gif")
124
SpriteFrame(-12, -16, 24, 32, 462, 157)
125
SpriteFrame(-12, -16, 24, 32, 462, 190)
126
SpriteFrame(-12, -16, 24, 32, 462, 223)
127
SpriteFrame(-12, -16, 24, 32, 487, 157)
128
SpriteFrame(-12, -16, 24, 32, 487, 190)
129
SpriteFrame(-12, -16, 24, 32, 487, 223)
130
131
foreach (TypeName[H Fan], arrayPos0, ALL_ENTITIES)
132
object[arrayPos0].speed = 36
133
next
134
135
SetTableValue(TypeName[H Fan], DebugMode_ObjCount, DebugMode_TypesTable)
136
SetTableValue(HFan_DebugDraw, DebugMode_ObjCount, DebugMode_DrawTable)
137
SetTableValue(HFan_DebugSpawn, DebugMode_ObjCount, DebugMode_SpawnTable)
138
DebugMode_ObjCount++
139
end event
140
141
142
// ========================
143
// Editor Events
144
// ========================
145
146
event RSDKDraw
147
DrawSpriteFX(0, FX_FLIP, object.xpos, object.ypos)
148
149
if editor.showGizmos == true
150
editor.drawingOverlay = true
151
152
if object.direction == FLIP_NONE
153
temp0 = 160; temp1 = 112; temp2 = 32; temp3 = 112;
154
else
155
temp0 = 32; temp1 = 112; temp2 = 160; temp3 = 112;
156
end if
157
CallFunction(EditorHelpers_DrawHitbox)
158
159
editor.drawingOverlay = false
160
end if
161
end event
162
163
164
event RSDKLoad
165
LoadSpriteSheet("OOZ/Objects.gif")
166
SpriteFrame(-12, -16, 24, 32, 462, 157)
167
168
// dir is set from scene instead
169
SetVariableAlias(ALIAS_VAR_PROPVAL, "unused")
170
end event
171
172