Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
rubberduckycooly
GitHub Repository: rubberduckycooly/Sonic-CD-2011-Script-Decompilation
Path: blob/main/Scripts/Mission/Boss_ArmJoint2.txt
1319 views
1
//--------------Sonic CD Boss Arm Joint 2 Script--------------//
2
//--------Scripted by Christian Whitehead 'The Taxman'--------//
3
//-------Unpacked By Rubberduckycooly's Script Unpacker-------//
4
//---------Used on Mission "M099 - Eggman: Speed Up"----------//
5
6
// Aliases
7
#alias Object.Value0 : Object.ShoulderEntity
8
#alias Object.Value2 : Object.XOffSet
9
#alias Object.Value4 : Object.Charging
10
#alias Object.Value5 : Object.YOffSet
11
#alias Object.Value6 : Object.OffsetValue
12
13
// Shoulder Aliases
14
#alias Object.Xpos : Shoulder.XPos
15
#alias Object.YPos : Shoulder.YPos
16
17
// States
18
#alias 0 : BOSSARMJOINT2_SETUP
19
#alias 1 : BOSSARMJOINT2_REPOSITION_F
20
#alias 2 : BOSSARMJOINT2_HANDLE_F_JOINT
21
#alias 3 : BOSSARMJOINT2_REPOSITION_B
22
#alias 4 : BOSSARMJOINT2_HANDLE_B_JOINT
23
#alias 5 : BOSSARMJOINT2_DESTROYED
24
25
// Priotity
26
#alias 0 : PRIORITY_BOUNDS
27
28
// Function declarations
29
#function BossArmJoint2_HandleMovement
30
31
32
function BossArmJoint2_HandleMovement
33
TempValue0 = Object.XOffSet
34
TempValue0 += 64
35
36
Sin256(TempValue6, TempValue0)
37
TempValue6 <<= 12
38
39
Cos256(TempValue7, TempValue0)
40
TempValue7 <<= 12
41
42
ArrayPos0 = Object.ShoulderEntity
43
44
Object.XPos = Shoulder[ArrayPos0].XPos
45
Object.XPos += TempValue7
46
47
Object.YPos = Shoulder[ArrayPos0].YPos
48
Object.YPos += TempValue6
49
50
if Object.DrawOrder == 2 // Right Arm Joint
51
Object.XPos -= 0xA0000
52
end if
53
end function
54
55
56
sub ObjectMain
57
switch Object.State
58
case BOSSARMJOINT2_SETUP
59
if Object.DrawOrder == 3 // Left Arm Joint
60
Object.XOffSet = 128 // Delays the left arm joint
61
end if
62
Object.State = BOSSARMJOINT2_REPOSITION_B
63
64
Object.OffsetValue = 2
65
Object.OffsetValue *= Object.PropertyValue // Set the XOffset value based on it's property value
66
Object.OffsetValue /= 10
67
// Fall Through
68
case BOSSARMJOINT2_REPOSITION_F
69
Object.XOffSet -= Object.OffsetValue
70
if Object.XOffSet <= 0
71
Object.State = BOSSARMJOINT2_HANDLE_F_JOINT
72
Object.XOffSet = 0
73
SetBit(Object.Charging, 0, 1)
74
end if
75
CallFunction(BossArmJoint2_HandleMovement)
76
break
77
78
case BOSSARMJOINT2_HANDLE_F_JOINT
79
CallFunction(BossArmJoint2_HandleMovement)
80
break
81
82
case BOSSARMJOINT2_REPOSITION_B
83
Object.XOffSet += Object.OffsetValue
84
if Object.XOffSet >= 48
85
Object.State = BOSSARMJOINT2_HANDLE_B_JOINT
86
Object.XOffSet = 48
87
SetBit(Object.Charging, 0, 1)
88
end if
89
CallFunction(BossArmJoint2_HandleMovement)
90
break
91
92
case BOSSARMJOINT2_HANDLE_B_JOINT
93
CallFunction(BossArmJoint2_HandleMovement)
94
break
95
96
case BOSSARMJOINT2_DESTROYED
97
Object.XOffSet += 0x600
98
Object.YOffSet += 0x1F00
99
100
Object.XPos += Object.XOffSet
101
Object.YPos += Object.YOffSet
102
103
if Object.OutOfBounds == true
104
Object.Type = TypeName[Blank Object]
105
Object.Priority = PRIORITY_BOUNDS
106
end if
107
break
108
end switch
109
end sub
110
111
112
sub ObjectDraw
113
DrawSprite(0)
114
end sub
115
116
117
sub ObjectStartup
118
LoadSpriteSheet("R1/Objects3.gif")
119
120
SpriteFrame(-8, -8, 16, 16, 124, 34) // #0 - Arm Joint
121
end sub
122
123
124
// ========================
125
// Editor Subs
126
// ========================
127
128
sub RSDKDraw
129
DrawSprite(0)
130
end sub
131
132
133
sub RSDKLoad
134
LoadSpriteSheet("R1/Objects3.gif")
135
SpriteFrame(-8, -8, 16, 16, 124, 34) // #0 - Arm Joint
136
137
SetVariableAlias(ALIAS_VAR_PROPVAL, "unused")
138
end sub
139
140
141
142
143