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/ARZ/Raft.txt
1480 views
1
// ----------------------------------
2
// RSDK Project: Sonic 2
3
// Script Description: Raft 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.startPos.x
13
private alias object.value1 : object.startPos.y
14
15
private alias 0 : RAFT_FALLING
16
private alias 1 : RAFT_FLOATING
17
18
// Player Aliases
19
private alias object.xpos : player.xpos
20
private alias object.ypos : player.ypos
21
22
// Path ID Aliases
23
private alias 0 : PATH_A
24
25
26
// ========================
27
// Function Declarations
28
// ========================
29
30
reserve function Raft_DebugDraw
31
reserve function Raft_DebugSpawn
32
33
34
// ========================
35
// Function Definitions
36
// ========================
37
38
private function Raft_DebugDraw
39
DrawSprite(0)
40
end function
41
42
43
private function Raft_DebugSpawn
44
CreateTempObject(TypeName[Raft], 0, object.xpos, object.ypos)
45
object[tempObjectPos].direction = object.direction
46
end function
47
48
49
// ========================
50
// Events
51
// ========================
52
53
event ObjectUpdate
54
temp0 = object.xpos
55
temp0 &= 0xFFFF0000
56
temp1 = object.ypos
57
temp1 &= 0xFFFF0000
58
temp7 = stage.waterLevel
59
temp7 <<= 16
60
61
if object.state == RAFT_FLOATING
62
object.ypos = temp7
63
else
64
object.ypos += object.yvel
65
object.yvel += 0x1800
66
67
if object.ypos >= temp7
68
if object.direction == FLIP_NONE
69
if object.xvel > 0x10000
70
object.xvel = 0x10000
71
end if
72
else
73
if object.xvel < -0x10000
74
object.xvel = -0x10000
75
end if
76
end if
77
object.state++
78
end if
79
end if
80
81
object.xpos += object.xvel
82
if object.direction == FLIP_NONE
83
ObjectTileCollision(CSIDE_LWALL, 32, 12, PATH_A)
84
else
85
ObjectTileCollision(CSIDE_RWALL, -32, 12, PATH_A)
86
end if
87
88
temp4 = object.xpos
89
temp5 = object.ypos
90
91
temp2 = object.xpos
92
temp2 &= 0xFFFF0000
93
temp2 -= temp0
94
95
temp3 = object.ypos
96
temp3 &= 0xFFFF0000
97
temp3 -= temp1
98
99
object.xpos = temp0
100
object.ypos = temp1
101
foreach (GROUP_PLAYERS, currentPlayer, ACTIVE_ENTITIES)
102
BoxCollisionTest(C_PLATFORM, object.entityPos, -32, -8, 32, 8, currentPlayer, C_BOX, C_BOX, C_BOX, C_BOX)
103
if checkResult == true
104
if object.xvel == 0
105
// If this Raft isn't moving yet, then make it start moving
106
if object.direction == FLIP_NONE
107
object.xvel = 0x10000
108
else
109
object.xvel = -0x10000
110
end if
111
end if
112
113
player[currentPlayer].xpos += temp2
114
player[currentPlayer].ypos += temp3
115
end if
116
next
117
object.xpos = temp4
118
object.ypos = temp5
119
120
if object.outOfBounds == true
121
if object.startPos.x == 0 // Debug Mode doesn't set startpos so bye bye debug obj!
122
object.type = TypeName[Blank Object]
123
else
124
object.xpos = object.startPos.x
125
object.ypos = object.startPos.y
126
if object.outOfBounds == false
127
object.xpos = temp4
128
object.ypos = temp5
129
end if
130
end if
131
end if
132
end event
133
134
135
event ObjectDraw
136
DrawSprite(0)
137
end event
138
139
140
event ObjectStartup
141
LoadSpriteSheet("ARZ/Objects.gif")
142
SpriteFrame(-32, -8, 64, 16, 126, 191)
143
144
SetTableValue(TypeName[Raft], DebugMode_ObjCount, DebugMode_TypesTable)
145
SetTableValue(Raft_DebugDraw, DebugMode_ObjCount, DebugMode_DrawTable)
146
SetTableValue(Raft_DebugSpawn, DebugMode_ObjCount, DebugMode_SpawnTable)
147
DebugMode_ObjCount++
148
149
foreach (TypeName[Raft], arrayPos0, ALL_ENTITIES)
150
object[arrayPos0].startPos.x = object[arrayPos0].xpos
151
object[arrayPos0].startPos.y = object[arrayPos0].ypos
152
next
153
end event
154
155
156
// ========================
157
// Editor Events
158
// ========================
159
160
event RSDKDraw
161
DrawSprite(0)
162
end event
163
164
165
event RSDKLoad
166
LoadSpriteSheet("ARZ/Objects.gif")
167
SpriteFrame(-32, -8, 64, 16, 126, 191)
168
169
SetVariableAlias(ALIAS_VAR_PROPVAL, "unused")
170
end event
171
172