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/TiltPlatformL.txt
1480 views
1
// ----------------------------------
2
// RSDK Project: Sonic 2
3
// Script Description: Tilt Platform L Object
4
// Script Author: Christian Whitehead/Simon Thomley
5
// Unpacked by Rubberduckycooly's script unpacker
6
// ----------------------------------
7
8
// ========================
9
// Aliases
10
// ========================
11
12
// States
13
private alias 0 : TILTPLATFORM_L_IDLE
14
private alias 1 : TILTPLATFORM_L_LASERACTIVE
15
16
17
// ========================
18
// Function Declarations
19
// ========================
20
21
reserve function TiltPlatformL_DebugDraw
22
reserve function TiltPlatformL_DebugSpawn
23
24
25
// ========================
26
// Function Definitions
27
// ========================
28
29
private function TiltPlatformL_DebugDraw
30
DrawSprite(0)
31
end function
32
33
34
private function TiltPlatformL_DebugSpawn
35
CreateTempObject(TypeName[Tilt Platform L], 0, object.xpos, object.ypos)
36
object[tempObjectPos].direction = object.direction
37
object[tempObjectPos].inkEffect = INK_ALPHA
38
object[tempObjectPos].alpha = 0xC0
39
end function
40
41
42
// ========================
43
// Events
44
// ========================
45
46
event ObjectUpdate
47
switch object.state
48
case TILTPLATFORM_L_IDLE
49
temp0 = oscillation
50
temp0 &= 0xF0
51
if temp0 == object.propertyValue
52
object.priority = PRIORITY_ACTIVE
53
object.animationTimer = 0
54
object.frame = 0
55
PlaySfx(SfxName[Thruster], false)
56
object.state = TILTPLATFORM_L_LASERACTIVE
57
end if
58
break
59
60
case 1
61
object.animationTimer++
62
63
object.frame = object.animationTimer
64
object.frame >>= 1
65
object.frame &= 3
66
if object.animationTimer >= 32
67
object.state = TILTPLATFORM_L_IDLE
68
end if
69
break
70
71
end switch
72
73
if object.state == TILTPLATFORM_L_IDLE
74
foreach (GROUP_PLAYERS, currentPlayer, ACTIVE_ENTITIES)
75
BoxCollisionTest(C_SOLID, object.entityPos, -24, -2, 24, 6, currentPlayer, C_BOX, C_BOX, C_BOX, C_BOX)
76
next
77
else
78
foreach (GROUP_PLAYERS, currentPlayer, ACTIVE_ENTITIES)
79
BoxCollisionTest(C_TOUCH, object.entityPos, -24, -112, 24, 112, currentPlayer, C_BOX, C_BOX, C_BOX, C_BOX)
80
if checkResult == true
81
CallFunction(Player_Hit)
82
end if
83
next
84
end if
85
86
if object.outOfBounds == true
87
object.frame = 0
88
object.state = TILTPLATFORM_L_IDLE
89
object.priority = PRIORITY_BOUNDS
90
end if
91
end event
92
93
94
event ObjectDraw
95
DrawSpriteFX(object.frame, FX_FLIP, object.xpos, object.ypos)
96
if object.state == TILTPLATFORM_L_LASERACTIVE
97
DrawSpriteFX(4, FX_INK, object.xpos, object.ypos)
98
end if
99
end event
100
101
102
event ObjectStartup
103
LoadSpriteSheet("SCZ/Objects.gif")
104
SpriteFrame(-24, -4, 48, 8, 320, 99) // Flat (H) - #0
105
SpriteFrame(-16, -16, 32, 32, 320, 108) // Diagonal (Down Right) - #1
106
SpriteFrame(-4, -24, 8, 48, 311, 99) // Diagonal (Down Left) - #2
107
SpriteFrame(-16, -16, 32, 32, 353, 108) // Flat (V) - #3
108
SpriteFrame(-24, -112, 48, 256, 464, 0) // Laser - #4
109
110
foreach (TypeName[Tilt Platform L], arrayPos0, ALL_ENTITIES)
111
object[arrayPos0].inkEffect = INK_ALPHA
112
object[arrayPos0].alpha = 0xC0
113
next
114
115
SetTableValue(TypeName[Tilt Platform L], DebugMode_ObjCount, DebugMode_TypesTable)
116
SetTableValue(TiltPlatformL_DebugDraw, DebugMode_ObjCount, DebugMode_DrawTable)
117
SetTableValue(TiltPlatformL_DebugSpawn, DebugMode_ObjCount, DebugMode_SpawnTable)
118
DebugMode_ObjCount++
119
end event
120
121
122
// ========================
123
// Editor Events
124
// ========================
125
126
event RSDKDraw
127
DrawSprite(0)
128
end event
129
130
131
event RSDKLoad
132
LoadSpriteSheet("SCZ/Objects.gif")
133
SpriteFrame(-24, -4, 48, 8, 320, 99)
134
135
SetVariableAlias(ALIAS_VAR_PROPVAL, "intervalOffset")
136
end event
137
138