Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
rubberduckycooly
GitHub Repository: rubberduckycooly/Sonic-1-Sonic-2-2013-Script-Decompilation
Path: blob/master/Sonic 1/Scripts/SYZ/PushButton.txt
1480 views
1
// ----------------------------------
2
// RSDK Project: Sonic 1
3
// Script Description: Push Button 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.propertyValue : object.stood
13
14
// Player Aliases
15
private alias object.ypos : player.ypos
16
private alias object.yvel : player.yvel
17
private alias object.gravity : player.gravity
18
private alias object.collisionBottom : player.collisionBottom
19
20
// ========================
21
// Function Declarations
22
// ========================
23
24
reserve function PushButton_DebugDraw
25
reserve function PushButton_DebugSpawn
26
27
28
private function PushButton_DebugDraw
29
DrawSprite(0)
30
end function
31
32
33
private function PushButton_DebugSpawn
34
CreateTempObject(TypeName[Push Button], 0, object.xpos, object.ypos)
35
end function
36
37
38
// ========================
39
// Events
40
// ========================
41
42
event ObjectUpdate
43
object.stood = false
44
45
foreach (GROUP_PLAYERS, currentPlayer, ACTIVE_ENTITIES)
46
if object.frame == 0
47
BoxCollisionTest(C_SOLID, object.entityPos, -14, -4, 14, 8, currentPlayer, C_BOX, C_BOX, C_BOX, C_BOX)
48
if checkResult == COL_TOP
49
object.stood = true
50
player[currentPlayer].ypos += 0x60000
51
PlaySfx(SfxName[Button Press], false)
52
end if
53
else
54
if player[currentPlayer].yvel >= 0
55
BoxCollisionTest(C_PLATFORM, object.entityPos, -14, -4, 14, 12, currentPlayer, C_BOX, C_BOX, C_BOX, C_BOX)
56
if checkResult == true
57
object.stood = true
58
player[currentPlayer].ypos += 0x20000
59
else
60
BoxCollisionTest(C_TOUCH, object.entityPos, -20, -12, 20, 8, currentPlayer, C_BOX, C_BOX, C_BOX, C_BOX)
61
if checkResult == true
62
player[currentPlayer].ypos = player[currentPlayer].collisionBottom
63
FlipSign(player[currentPlayer].ypos)
64
player[currentPlayer].ypos <<= 16
65
player[currentPlayer].ypos += object.ypos
66
player[currentPlayer].ypos -= 0x20000
67
player[currentPlayer].gravity = GRAVITY_AIR
68
end if
69
end if
70
end if
71
end if
72
next
73
74
foreach (TypeName[Push Block], arrayPos0, ACTIVE_ENTITIES)
75
BoxCollisionTest(C_TOUCH, object.entityPos, -16, -12, 16, 8, arrayPos0, -16, -16, 16, 16)
76
if checkResult == true
77
object.stood = true
78
if object.frame == 0
79
PlaySfx(SfxName[Button Press], false)
80
end if
81
end if
82
next
83
end event
84
85
86
event ObjectDraw
87
object.frame = object.stood
88
DrawSprite(object.frame)
89
end event
90
91
92
event ObjectStartup
93
LoadSpriteSheet("SYZ/Objects.gif")
94
SpriteFrame(-16, -8, 32, 16, 1, 161)
95
SpriteFrame(-16, -2, 32, 10, 34, 167)
96
97
SetTableValue(TypeName[Push Button], DebugMode_ObjCount, DebugMode_TypesTable)
98
SetTableValue(PushButton_DebugDraw, DebugMode_ObjCount, DebugMode_DrawTable)
99
SetTableValue(PushButton_DebugSpawn, DebugMode_ObjCount, DebugMode_SpawnTable)
100
DebugMode_ObjCount++
101
end event
102
103
104
// ========================
105
// Editor Events
106
// ========================
107
108
event RSDKDraw
109
DrawSprite(0)
110
end event
111
112
113
event RSDKLoad
114
LoadSpriteSheet("SYZ/Objects.gif")
115
SpriteFrame(-16, -8, 32, 16, 1, 161)
116
117
SetVariableAlias(ALIAS_VAR_PROPVAL, "unused")
118
end event
119
120