Path: blob/main/Scripts/Mission/Boss_ArmJoint2.txt
1319 views
//--------------Sonic CD Boss Arm Joint 2 Script--------------//1//--------Scripted by Christian Whitehead 'The Taxman'--------//2//-------Unpacked By Rubberduckycooly's Script Unpacker-------//3//---------Used on Mission "M099 - Eggman: Speed Up"----------//45// Aliases6#alias Object.Value0 : Object.ShoulderEntity7#alias Object.Value2 : Object.XOffSet8#alias Object.Value4 : Object.Charging9#alias Object.Value5 : Object.YOffSet10#alias Object.Value6 : Object.OffsetValue1112// Shoulder Aliases13#alias Object.Xpos : Shoulder.XPos14#alias Object.YPos : Shoulder.YPos1516// States17#alias 0 : BOSSARMJOINT2_SETUP18#alias 1 : BOSSARMJOINT2_REPOSITION_F19#alias 2 : BOSSARMJOINT2_HANDLE_F_JOINT20#alias 3 : BOSSARMJOINT2_REPOSITION_B21#alias 4 : BOSSARMJOINT2_HANDLE_B_JOINT22#alias 5 : BOSSARMJOINT2_DESTROYED2324// Priotity25#alias 0 : PRIORITY_BOUNDS2627// Function declarations28#function BossArmJoint2_HandleMovement293031function BossArmJoint2_HandleMovement32TempValue0 = Object.XOffSet33TempValue0 += 643435Sin256(TempValue6, TempValue0)36TempValue6 <<= 123738Cos256(TempValue7, TempValue0)39TempValue7 <<= 124041ArrayPos0 = Object.ShoulderEntity4243Object.XPos = Shoulder[ArrayPos0].XPos44Object.XPos += TempValue74546Object.YPos = Shoulder[ArrayPos0].YPos47Object.YPos += TempValue64849if Object.DrawOrder == 2 // Right Arm Joint50Object.XPos -= 0xA000051end if52end function535455sub ObjectMain56switch Object.State57case BOSSARMJOINT2_SETUP58if Object.DrawOrder == 3 // Left Arm Joint59Object.XOffSet = 128 // Delays the left arm joint60end if61Object.State = BOSSARMJOINT2_REPOSITION_B6263Object.OffsetValue = 264Object.OffsetValue *= Object.PropertyValue // Set the XOffset value based on it's property value65Object.OffsetValue /= 1066// Fall Through67case BOSSARMJOINT2_REPOSITION_F68Object.XOffSet -= Object.OffsetValue69if Object.XOffSet <= 070Object.State = BOSSARMJOINT2_HANDLE_F_JOINT71Object.XOffSet = 072SetBit(Object.Charging, 0, 1)73end if74CallFunction(BossArmJoint2_HandleMovement)75break7677case BOSSARMJOINT2_HANDLE_F_JOINT78CallFunction(BossArmJoint2_HandleMovement)79break8081case BOSSARMJOINT2_REPOSITION_B82Object.XOffSet += Object.OffsetValue83if Object.XOffSet >= 4884Object.State = BOSSARMJOINT2_HANDLE_B_JOINT85Object.XOffSet = 4886SetBit(Object.Charging, 0, 1)87end if88CallFunction(BossArmJoint2_HandleMovement)89break9091case BOSSARMJOINT2_HANDLE_B_JOINT92CallFunction(BossArmJoint2_HandleMovement)93break9495case BOSSARMJOINT2_DESTROYED96Object.XOffSet += 0x60097Object.YOffSet += 0x1F009899Object.XPos += Object.XOffSet100Object.YPos += Object.YOffSet101102if Object.OutOfBounds == true103Object.Type = TypeName[Blank Object]104Object.Priority = PRIORITY_BOUNDS105end if106break107end switch108end sub109110111sub ObjectDraw112DrawSprite(0)113end sub114115116sub ObjectStartup117LoadSpriteSheet("R1/Objects3.gif")118119SpriteFrame(-8, -8, 16, 16, 124, 34) // #0 - Arm Joint120end sub121122123// ========================124// Editor Subs125// ========================126127sub RSDKDraw128DrawSprite(0)129end sub130131132sub RSDKLoad133LoadSpriteSheet("R1/Objects3.gif")134SpriteFrame(-8, -8, 16, 16, 124, 34) // #0 - Arm Joint135136SetVariableAlias(ALIAS_VAR_PROPVAL, "unused")137end sub138139140141142143