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/HPropeller.txt
1478 views
1
// ----------------------------------
2
// RSDK Project: Sonic 2
3
// Script Description: H Propeller Object
4
// Script Author: Christian Whitehead/Simon Thomley
5
// Unpacked by Rubberduckycooly's script unpacker
6
// ----------------------------------
7
8
// ========================
9
// Aliases
10
// ========================
11
12
// Player Aliases
13
private alias object.state : player.state
14
private alias object.ypos : player.ypos
15
private alias object.xvel : player.xvel
16
private alias object.yvel : player.yvel
17
private alias object.speed : player.speed
18
private alias object.gravity : player.gravity
19
private alias object.animation : player.animation
20
private alias object.tileCollisions : player.tileCollisions
21
22
private alias object.value1 : player.timer
23
24
25
// ========================
26
// Function Declarations
27
// ========================
28
29
reserve function HPropeller_DebugDraw
30
reserve function HPropeller_DebugSpawn
31
32
33
// ========================
34
// Function Definitions
35
// ========================
36
37
private function HPropeller_DebugDraw
38
DrawSprite(0)
39
end function
40
41
42
private function HPropeller_DebugSpawn
43
CreateTempObject(TypeName[H Propeller], 0, object.xpos, object.ypos)
44
end function
45
46
47
// ========================
48
// Events
49
// ========================
50
51
event ObjectUpdate
52
GetTableValue(temp0, 10, StageSetup_oscillationTable)
53
temp0 >>= 8
54
temp0 -= 112
55
56
foreach (GROUP_PLAYERS, currentPlayer, ACTIVE_ENTITIES)
57
BoxCollisionTest(C_TOUCH, object.entityPos, -64, temp0, 64, 56, currentPlayer, -1, -1, 1, 1)
58
if checkResult == true
59
player[currentPlayer].animation = ANI_FANROTATE
60
#platform: USE_STANDALONE
61
player[currentPlayer].state = Player_State_Air
62
#endplatform
63
#platform: USE_ORIGINS
64
player[currentPlayer].state = Player_State_Air_NoDropDash
65
#endplatform
66
player[currentPlayer].gravity = 1
67
player[currentPlayer].tileCollisions = true
68
player[currentPlayer].speed = player[currentPlayer].xvel
69
player[currentPlayer].timer = 0
70
player[currentPlayer].yvel = 0
71
72
temp0 <<= 16
73
temp0 += object.ypos
74
temp0 -= player[currentPlayer].ypos
75
temp0 >>= 4
76
player[currentPlayer].ypos += temp0
77
end if
78
next
79
end event
80
81
82
event ObjectDraw
83
DrawSprite(WFZSetup_hPropellerFrame)
84
85
temp0 = object.ypos
86
temp0 += 0x100000
87
DrawSpriteXY(WFZSetup_hPropellerFrame, object.xpos, temp0)
88
end event
89
90
91
event ObjectStartup
92
LoadSpriteSheet("SCZ/Objects.gif")
93
SpriteFrame(-62, -2, 124, 5, 1, 171)
94
SpriteFrame(-40, -2, 78, 5, 1, 177)
95
SpriteFrame(-24, -2, 46, 5, 1, 183)
96
SpriteFrame(-11, -1, 22, 4, 1, 189)
97
SpriteFrame(-22, -2, 46, 5, 1, 194)
98
SpriteFrame(-39, -2, 79, 5, 1, 200)
99
100
foreach (TypeName[H Propeller], arrayPos0, ALL_ENTITIES)
101
object[arrayPos0].drawOrder = 5
102
next
103
104
SetTableValue(TypeName[H Propeller], DebugMode_ObjCount, DebugMode_TypesTable)
105
SetTableValue(HPropeller_DebugDraw, DebugMode_ObjCount, DebugMode_DrawTable)
106
SetTableValue(HPropeller_DebugSpawn, DebugMode_ObjCount, DebugMode_SpawnTable)
107
DebugMode_ObjCount++
108
end event
109
110
111
// ========================
112
// Editor Events
113
// ========================
114
115
event RSDKDraw
116
DrawSprite(0)
117
end event
118
119
120
event RSDKLoad
121
LoadSpriteSheet("SCZ/Objects.gif")
122
SpriteFrame(-62, -2, 124, 5, 1, 171)
123
124
SetVariableAlias(ALIAS_VAR_PROPVAL, "unused")
125
end event
126
127