Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
rubberduckycooly
GitHub Repository: rubberduckycooly/Sonic-CD-2011-Script-Decompilation
Path: blob/main/Scripts/R4/AirBubbler.txt
1319 views
1
//-----------------Sonic CD Air Bubbler Script----------------//
2
//--------Scripted by Christian Whitehead 'The Taxman'--------//
3
//-------Unpacked By Rubberduckycooly's Script Unpacker-------//
4
5
// Aliases
6
#alias Object.Value0 : Object.Timer
7
#alias Object.Value1 : Object.SpawnTimer
8
#alias Object.Value2 : Object.BubbleAmount
9
#alias Object.Value3 : Object.BubbleType
10
11
// Air Bubbler alises
12
#alias Object.XPos : AirBubble.XPos
13
#alias Object.Value1 : AirBubble.Angle
14
#alias Object.Value2 : AirBubble.XVelocity
15
#alias Object.Value3 : AirBubble.YVelocity
16
#alias Object.DrawOrder : AirBubble.DrawOrder
17
18
// Air Bubble Property Values
19
#alias 2 : BUBBLE_SMALL
20
#alias 4 : BUBBLE_MEDIUM
21
#alias 5 : BUBBLE_BREATHABLE
22
23
24
sub ObjectMain
25
Object.Frame++
26
Object.Frame %= 48
27
28
if Object.Timer > 0
29
Object.Timer--
30
else
31
Object.Timer = 220
32
33
Rand(Object.BubbleAmount, 6)
34
Object.BubbleAmount++
35
if Object.BubbleAmount > 6
36
Object.BubbleAmount = 6
37
end if
38
39
Object.SpawnTimer = 0
40
Object.BubbleType = 0
41
end if
42
43
if Object.SpawnTimer > 0
44
Object.SpawnTimer--
45
else
46
if Object.BubbleAmount > 0
47
Object.BubbleAmount--
48
Rand(Object.SpawnTimer, 32)
49
Rand(TempValue0, 3)
50
if TempValue0 == 2
51
if Object.BubbleType == 0
52
Object.BubbleType = 1
53
CreateTempObject(TypeName[Air Bubble], BUBBLE_BREATHABLE, Object.XPos, Object.YPos)
54
else
55
CreateTempObject(TypeName[Air Bubble], BUBBLE_MEDIUM, Object.XPos, Object.YPos)
56
end if
57
else
58
CreateTempObject(TypeName[Air Bubble], BUBBLE_SMALL, Object.XPos, Object.YPos)
59
end if
60
Rand(TempValue0, 16)
61
TempValue0 -= 8
62
TempValue0 <<= 16
63
64
AirBubble[TempObjectPos].XPos += TempValue0
65
AirBubble[TempObjectPos].XVelocity = AirBubble[TempObjectPos].XPos
66
Rand(AirBubble[TempObjectPos].Angle, 256)
67
AirBubble[TempObjectPos].Angle <<= 1
68
AirBubble[TempObjectPos].DrawOrder = 4
69
AirBubble[TempObjectPos].YVelocity = -0x8800
70
end if
71
end if
72
end sub
73
74
75
sub ObjectDraw
76
TempValue0 = Object.Frame
77
TempValue0 >>= 4
78
DrawSprite(TempValue0)
79
end sub
80
81
82
sub ObjectStartup
83
LoadSpriteSheet("R4/Objects.gif")
84
85
SpriteFrame(-8, -16, 16, 16, 165, 235) // #0 - Air Bubbler frame 0
86
SpriteFrame(-8, -16, 16, 16, 182, 235) // #1 - Air Bubbler frame 1
87
SpriteFrame(-8, -16, 16, 16, 199, 235) // #2 - Air Bubbler frame 2
88
89
ArrayPos0 = 32
90
while ArrayPos0 < 1056
91
if Object[ArrayPos0].Type == TypeName[Air Bubbler]
92
Object[ArrayPos0].DrawOrder = 4
93
end if
94
ArrayPos0++
95
loop
96
end sub
97
98
99
// ========================
100
// Editor Subs
101
// ========================
102
103
sub RSDKDraw
104
DrawSprite(0)
105
end sub
106
107
108
sub RSDKLoad
109
LoadSpriteSheet("R4/Objects.gif")
110
111
SpriteFrame(-8, -16, 16, 16, 165, 235) // #0 - Air Bubbler
112
113
SetVariableAlias(ALIAS_VAR_PROPVAL, "unused")
114
end sub
115
116