Path: blob/main/Scripts/R1/Boss_ArmJoint.txt
1319 views
//----------------Sonic CD Boss Arm Joint Script--------------//1//--------Scripted by Christian Whitehead 'The Taxman'--------//2//-------Unpacked By Rubberduckycooly's Script Unpacker-------//34// ========================5// Aliases6// ========================78#alias Object.Value0 : Object.ShoulderEntity9#alias Object.Value2 : Object.XOffSet10#alias Object.Value4 : Object.Charging11#alias Object.Value5 : Object.YOffSet1213// States14#alias 0 : BOSSARMJOINT_SETUP15#alias 1 : BOSSARMJOINT_REPOSITION_F16#alias 2 : BOSSARMJOINT_HANDLE_F_JOINT17#alias 3 : BOSSARMJOINT_REPOSITION_B18#alias 4 : BOSSARMJOINT_HANDLE_B_JOINT19#alias 5 : BOSSARMJOINT_DESTROYED2021// Boss Shoulder Aliases22#alias Object.XPos : Shoulder.XPos23#alias Object.YPos : Shoulder.YPos2425// Priority Aliases26#alias 0 : PRIORITY_BOUNDS272829// ========================30// Function Declarations31// ========================3233#function BossArmJoint_HandleMovement343536// ========================37// Functiion Definitions38// ========================3940function BossArmJoint_HandleMovement41TempValue0 = Object.XOffSet42TempValue0 += 644344Sin256(TempValue6, TempValue0)45TempValue6 <<= 124647Cos256(TempValue7, TempValue0)48TempValue7 <<= 124950ArrayPos0 = Object.ShoulderEntity5152Object.XPos = Shoulder[ArrayPos0].XPos53Object.XPos += TempValue75455Object.YPos = Shoulder[ArrayPos0].YPos56Object.YPos += TempValue65758if Object.DrawOrder == 2 // Right Arm Joint59Object.XPos -= 0xA000060end if61end function626364// ========================65// Events66// ========================6768sub ObjectMain69switch Object.State70case BOSSARMJOINT_SETUP71if Object.DrawOrder == 3 // Left Arm Joint72Object.XOffSet = 128 // Delay the left arm joint a bit73end if74Object.State = BOSSARMJOINT_REPOSITION_B75// [Fallthrough]76case BOSSARMJOINT_REPOSITION_F77Object.XOffSet -= 278if Object.XOffSet <= 079Object.State = BOSSARMJOINT_HANDLE_F_JOINT80Object.XOffSet = 081SetBit(Object.Charging, 0, true)82end if8384CallFunction(BossArmJoint_HandleMovement)85break8687case BOSSARMJOINT_HANDLE_F_JOINT88CallFunction(BossArmJoint_HandleMovement)89break9091case BOSSARMJOINT_REPOSITION_B92Object.XOffSet += 293if Object.XOffSet >= 4894Object.State = BOSSARMJOINT_HANDLE_B_JOINT95Object.XOffSet = 4896SetBit(Object.Charging, 0, true)97end if9899CallFunction(BossArmJoint_HandleMovement)100break101102case BOSSARMJOINT_HANDLE_B_JOINT103CallFunction(BossArmJoint_HandleMovement)104break105106case BOSSARMJOINT_DESTROYED107Object.XOffSet += 0x600108Object.XPos += Object.XOffSet109110Object.YOffSet += 0x1F00111Object.YPos += Object.YOffSet112113if Object.OutOfBounds == true114Object.Type = TypeName[Blank Object]115Object.Priority = PRIORITY_BOUNDS116end if117break118end switch119end sub120121122sub ObjectDraw123DrawSprite(0)124end sub125126127sub ObjectStartup128LoadSpriteSheet("R1/Objects3.gif")129130SpriteFrame(-8, -8, 16, 16, 124, 34) // #0 - Arm Joint131end sub132133134// ========================135// Editor Subs136// ========================137138sub RSDKDraw139DrawSprite(0)140end sub141142143sub RSDKLoad144LoadSpriteSheet("R1/Objects3.gif")145SpriteFrame(-8, -8, 16, 16, 124, 34) // #0 - Arm Joint146147SetVariableAlias(ALIAS_VAR_PROPVAL, "unused")148end sub149150151