Path: blob/main/Scripts/R1/Boss_Body.txt
1319 views
//----------------Sonic CD Boss Body Script-------------------//1//--------Scripted by Christian Whitehead 'The Taxman'--------//2//-------Unpacked By Rubberduckycooly's Script Unpacker-------//34// Aliases5#alias Object.Value0 : Object.FaceEntity6#alias Object.Value1 : Object.LegJointREntity7#alias Object.Value2 : Object.LegJointLEntity8#alias Object.Value3 : Object.InFloor9// Value4 is used to check key events, forward/backward movement and currently active leg10#alias Object.Value4 : Object.BitHolder11#alias Object.Value5 : Object.ChargeStart12#alias Object.Value6 : Object.ChargeDistance13#alias Object.Value7 : Object.ChargeXPos1415// General Aliases16#alias Object.State : BossPart.State17#alias Object.Value4 : BossPart.Charging18#alias Object.Value2 : BossPart.XOffSet19#alias Object.Value5 : BossPart.YOffSet2021// Face Aliases22#alias Object[-1].YPos : Face.YPos23#alias Object.Value2 : Face.ShoulderEntity2425// Shoulder Aliases26#alias Object.Value1 : Shoulder.ArmJointLEntity27#alias Object.Value2 : Shoulder.ArmJointREntity2829// Leg Joint Aliases30#alias Object.Value1 : LegJointR.LegREntity31#alias Object.Value1 : LegJointL.LegLEntity3233#alias Object.Value1 : LegJoint.LegEntity34#alias Object.Value4 : LegJoint.LegSide3536// Leg Aliases37#alias Object.Value1 : LegR.FootREntity38#alias Object.Value1 : LegL.FootLEntity3940#alias Object.Value1 : Leg.FootEntity41#alias Object.Value4 : Leg.LegSide4243// Foot Aliases44#alias Object.Value4 : Foot.LegSide4546// Arm Joint Aliases47#alias Object.Value1 : ArmJointR.ArmREntity48#alias Object.Value1 : ArmJointL.ArmLEntity4950// Arm Aliases51#alias Object.Frame : Arm.Frame5253// States54#alias 0 : BOSSBODY_SETUP55#alias 1 : BOSSBODY_DESCEND56#alias 2 : BOSSBODY_LANDING57#alias 3 : BOSSBODY_FIRST_STEP58#alias 4 : BOSSBODY_MOVE_FORWARD59#alias 5 : BOSSBODY_MOVE_BACKWARDS60#alias 6 : BOSSBODY_PREPARE_CHARGING61#alias 7 : BOSSBODY_DESTROYED62#alias 8 : BOSSBODY_STOP_CHARGE6364// Boss Foot States65#alias 1 : BOSSFOOT_STEP66#alias 2 : BOSSFOOT_HANDLE_STEP67#alias 5 : BOSSFOOT_LANDING6869// Boss Leg States70#alias 1 : BOSSLEG_LANDING71#alias 2 : BOSSLEG_L_MIMIC_R72#alias 3 : BOSSLEG_MOVE73#alias 4 : BOSSLEG_MOVE_OPPOSITE74#alias 5 : BOSSLEG_MOVE_C75#alias 6 : BOSSLEG_MOVE_OPPOSITE_C7677// Boss Leg Joint States78#alias 1 : BOSSLEGJOINT_STEP_START79#alias 4 : BOSSLEGJOINT_WAIT_LEG80#alias 5 : BOSSLEGJOINT_LANDING81#alias 6 : BOSSLEGJOINT_DESCEND82#alias 7 : BOSSLEGJOINT_STAND83#alias 8 : BOSSLEGJOINT_MIMIC_RIGHT84#alias 9 : BOSSLEGJOINT_STEP_START_BW85#alias 11 : BOSSLEGJOINT_WAIT_LEG_BW8687// Boss Arm States88#alias 3 : BOSSARM_MOVE_TO_FRONT89#alias 4 : BOSSARM_MOVE_TO_BACK90#alias 5 : BOSSARM_START_CHARGE9192// Boss Arm Joint93#alias 1 : BOSSARMJOINT_REPOSITION_F94#alias 3 : BOSSARMJOINT_REPOSITION_B95#alias 5 : BOSSARMJOINT_DESTROYED9697// Object.BitHolder SetBit Values98// Bit 0 - Check of key events for BossFace (landing, start of charge, first move, etc)99// Bit 1 - Forward or Backward movement (Forwards 0, Backwards 1)100// Bit 6 - Which leg moves (Left 0, Right 1)101102// Bit 0 Aliases103#alias 0 : KEY_EVENT_FALSE104#alias 1 : KEY_EVENT_TRUE105106// Bit 1 Aliases107#alias 0 : MOVE_FORWARD108#alias 1 : MOVE_BACKWARDS109110// Bit 6 Aliases111#alias 0 : LEFT_LEG_ACTIVE112#alias 1 : RIGHT_LEG_ACTIVE113114// Collision Sides115#alias 0 : CSIDE_FLOOR116117// Function declarations118#function BossBody_RestoreNormalSpeed119#function BossBody_SetLegPosSaveTrue120#function BossBody_SetLegPosSaveFalse121#function BossBody_SwitchLeg122#function BossBody_SwitchLeg_Revert123#function BossBody_MoveRArmToFront124#function BossBody_MoveLArmToFront125#function BossBody_HandleCharge126#function BossBody_SetArmsToCharge127128129function BossBody_RestoreNormalSpeed130ArrayPos0 = Object.LegJointREntity131// Leg Joint R132BossPart[ArrayPos0].YOffSet = 2133134ArrayPos1 = LegJointR[ArrayPos0].LegREntity135// Leg R136BossPart[ArrayPos1].XOffSet = 0x8000137BossPart[ArrayPos1].YOffSet = 0x4000138139ArrayPos0 = LegR[ArrayPos1].FootREntity140// Foot R141BossPart[ArrayPos0].XOffSet = 0x4000142BossPart[ArrayPos0].YOffSet = 0x8000143144ArrayPos0 = Object.LegJointLEntity145// Leg Joint L146BossPart[ArrayPos0].YOffSet = 2147148ArrayPos1 = LegJointL[ArrayPos0].LegLEntity149// Leg L150BossPart[ArrayPos1].XOffSet = 0x8000151BossPart[ArrayPos1].YOffSet = 0x4000152153ArrayPos0 = LegL[ArrayPos1].FootLEntity154// Foot L155BossPart[ArrayPos0].XOffSet = 0x4000156BossPart[ArrayPos0].YOffSet = 0x8000157158ArrayPos0 = Object.FaceEntity159ArrayPos1 = Face[ArrayPos0].ShoulderEntity160ArrayPos0 = Shoulder[ArrayPos1].ArmJointLEntity161SetBit(BossPart[ArrayPos0].Charging, 7, 0) // Left Arm Joing162163ArrayPos1 = ArmJointL[ArrayPos0].ArmLEntity164SetBit(BossPart[ArrayPos1].Charging, 7, 0) // Left Arm165166ArrayPos0 = Object.FaceEntity167ArrayPos1 = Face[ArrayPos0].ShoulderEntity168ArrayPos0 = Shoulder[ArrayPos1].ArmJointREntity169SetBit(BossPart[ArrayPos0].Charging, 7, 0) // Right Arm Joint170171ArrayPos1 = ArmJointR[ArrayPos0].ArmREntity172SetBit(BossPart[ArrayPos1].Charging, 7, 0) // Right Arm173end function174175176function BossBody_SetLegPosSaveTrue177SetBit(LegJoint[ArrayPos0].LegSide, 5, 1)178179ArrayPos1 = LegJoint[ArrayPos0].LegEntity180SetBit(Leg[ArrayPos1].LegSide, 5, 1)181182ArrayPos0 = Leg[ArrayPos1].FootEntity183SetBit(Foot[ArrayPos0].LegSide, 5, 1)184end function185186187function BossBody_SetLegPosSaveFalse188SetBit(LegJoint[ArrayPos0].LegSide, 5, 0)189190ArrayPos1 = LegJoint[ArrayPos0].LegEntity191SetBit(Leg[ArrayPos1].LegSide, 5, 0)192193ArrayPos0 = Leg[ArrayPos1].FootEntity194SetBit(Foot[ArrayPos0].LegSide, 5, 0)195end function196197198function BossBody_SwitchLeg199SetBit(LegJoint[ArrayPos0].LegSide, 4, 1)200201ArrayPos1 = LegJoint[ArrayPos0].LegEntity202SetBit(Leg[ArrayPos1].LegSide, 4, 1)203204ArrayPos0 = Leg[ArrayPos1].FootEntity205SetBit(Foot[ArrayPos0].LegSide, 4, 1)206end function207208209function BossBody_SwitchLeg_Revert210SetBit(LegJoint[ArrayPos0].LegSide, 4, 0)211212ArrayPos1 = LegJoint[ArrayPos0].LegEntity213SetBit(Leg[ArrayPos1].LegSide, 4, 0)214215ArrayPos0 = Leg[ArrayPos1].FootEntity216SetBit(Foot[ArrayPos0].LegSide, 4, 0)217end function218219220// Right arm to front221function BossBody_MoveRArmToFront222ArrayPos0 = Object.FaceEntity223ArrayPos1 = Face[ArrayPos0].ShoulderEntity224ArrayPos0 = Shoulder[ArrayPos1].ArmJointREntity225if BossPart[ArrayPos0].State < BOSSARMJOINT_DESTROYED226BossPart[ArrayPos0].State = BOSSARMJOINT_REPOSITION_B227228ArrayPos1 = ArmJointR[ArrayPos0].ArmREntity229BossPart[ArrayPos1].State = BOSSARM_MOVE_TO_FRONT230Arm[ArrayPos1].Frame = 0231end if232233ArrayPos0 = Object.FaceEntity234ArrayPos1 = Face[ArrayPos0].ShoulderEntity235ArrayPos0 = Shoulder[ArrayPos1].ArmJointLEntity236if BossPart[ArrayPos0].State < BOSSARMJOINT_DESTROYED237BossPart[ArrayPos0].State = BOSSARMJOINT_REPOSITION_F238239ArrayPos1 = ArmJointL[ArrayPos0].ArmLEntity240BossPart[ArrayPos1].State = BOSSARM_MOVE_TO_BACK241Arm[ArrayPos1].Frame = 0242end if243end function244245// Left arm to front246function BossBody_MoveLArmToFront247ArrayPos0 = Object.FaceEntity248ArrayPos1 = Face[ArrayPos0].ShoulderEntity249ArrayPos0 = Shoulder[ArrayPos1].ArmJointREntity250if BossPart[ArrayPos0].State < BOSSARMJOINT_DESTROYED251BossPart[ArrayPos0].State = BOSSARMJOINT_REPOSITION_F252253ArrayPos1 = ArmJointR[ArrayPos0].ArmREntity254BossPart[ArrayPos1].State = BOSSARM_MOVE_TO_BACK255Arm[ArrayPos1].Frame = 0256end if257258ArrayPos0 = Object.FaceEntity259ArrayPos1 = Face[ArrayPos0].ShoulderEntity260ArrayPos0 = Shoulder[ArrayPos1].ArmJointLEntity261if BossPart[ArrayPos0].State < BOSSARMJOINT_DESTROYED262BossPart[ArrayPos0].State = BOSSARMJOINT_REPOSITION_B263264ArrayPos1 = ArmJointL[ArrayPos0].ArmLEntity265BossPart[ArrayPos1].State = BOSSARM_MOVE_TO_FRONT266Arm[ArrayPos1].Frame = 0267end if268end function269270271function BossBody_HandleCharge272ArrayPos0 = Object.LegJointREntity273// Leg Joint R274BossPart[ArrayPos0].YOffSet = 8275276ArrayPos1 = LegJointR[ArrayPos0].LegREntity277// Leg R278BossPart[ArrayPos1].XOffSet = 0x10000279BossPart[ArrayPos1].YOffSet = 0x8000280281ArrayPos0 = LegR[ArrayPos1].FootREntity282// Foot R283BossPart[ArrayPos0].XOffSet = 0xC000284BossPart[ArrayPos0].YOffSet = 0x18000285286ArrayPos0 = Object.LegJointLEntity287// Leg Joint L288BossPart[ArrayPos0].YOffSet = 8289290ArrayPos1 = LegJointL[ArrayPos0].LegLEntity291// Leg L292BossPart[ArrayPos1].XOffSet = 0x10000293BossPart[ArrayPos1].YOffSet = 0x8000294295ArrayPos0 = LegL[ArrayPos1].FootLEntity296// Foot L297BossPart[ArrayPos0].XOffSet = 0xC000298BossPart[ArrayPos0].YOffSet = 0x18000299300ArrayPos0 = Object.FaceEntity301ArrayPos1 = Face[ArrayPos0].ShoulderEntity302ArrayPos0 = Shoulder[ArrayPos1].ArmJointLEntity303SetBit(BossPart[ArrayPos0].Charging, 7, 1) // Left Arm Joint304305ArrayPos1 = ArmJointL[ArrayPos0].ArmLEntity306SetBit(BossPart[ArrayPos1].Charging, 7, 1) // Left Arm307308ArrayPos0 = Object.FaceEntity309ArrayPos1 = Face[ArrayPos0].ShoulderEntity310ArrayPos0 = Shoulder[ArrayPos1].ArmJointREntity311SetBit(BossPart[ArrayPos0].Charging, 7, 1) // Right Arm Joint312313ArrayPos1 = ArmJointR[ArrayPos0].ArmREntity314SetBit(BossPart[ArrayPos1].Charging, 7, 1) // Right Arm315end function316317318function BossBody_SetArmsToCharge319ArrayPos0 = Object.FaceEntity320ArrayPos1 = Face[ArrayPos0].ShoulderEntity321ArrayPos0 = Shoulder[ArrayPos1].ArmJointREntity322if BossPart[ArrayPos0].State < BOSSARMJOINT_DESTROYED323BossPart[ArrayPos0].State = BOSSARMJOINT_REPOSITION_F324325ArrayPos1 = ArmJointR[ArrayPos0].ArmREntity326BossPart[ArrayPos1].State = BOSSARM_START_CHARGE327Arm[ArrayPos1].Frame = 1328end if329330ArrayPos0 = Object.FaceEntity331ArrayPos1 = Face[ArrayPos0].ShoulderEntity332ArrayPos0 = Shoulder[ArrayPos1].ArmJointLEntity333if BossPart[ArrayPos0].State < BOSSARMJOINT_DESTROYED334BossPart[ArrayPos0].State = BOSSARMJOINT_REPOSITION_F335336ArrayPos1 = ArmJointL[ArrayPos0].ArmLEntity337BossPart[ArrayPos1].State = BOSSARM_START_CHARGE338Arm[ArrayPos1].Frame = 1339end if340end function341342343sub ObjectMain344switch Object.State345case BOSSBODY_SETUP346CallFunction(BossBody_RestoreNormalSpeed)347348Object.ChargeDistance = Object.XPos349Object.ChargeDistance -= 0x7A0000350351Object.ChargeXPos = Object.XPos352Object.ChargeXPos -= 0x320000353354Object.State = BOSSBODY_DESCEND355break356357case BOSSBODY_DESCEND358ArrayPos0 = Object.LegJointLEntity359BossPart[ArrayPos0].State = BOSSLEGJOINT_MIMIC_RIGHT360361ArrayPos1 = LegJointL[ArrayPos0].LegLEntity362BossPart[ArrayPos1].State = BOSSLEG_L_MIMIC_R363364ArrayPos0 = LegL[ArrayPos1].FootLEntity365BossPart[ArrayPos0].State = BOSSFOOT_LANDING366367ArrayPos0 = Object.LegJointREntity368CallFunction(BossBody_SetLegPosSaveTrue)369ArrayPos0 = Object.LegJointREntity370GetBit(TempValue0, LegJoint[ArrayPos0].LegSide, 4)371if TempValue0 == false372Object.YPos += 0x18000373ArrayPos0 = Object.FaceEntity374Face[ArrayPos0].YPos += 0x18000375else376SetBit(Object.BitHolder, 0, KEY_EVENT_TRUE)377end if378break379380case BOSSBODY_LANDING381ArrayPos0 = Object.LegJointLEntity382SetBit(LegJoint[ArrayPos0].LegSide, 0, 0)383384ArrayPos0 = Object.LegJointREntity385GetBit(TempValue0, LegJoint[ArrayPos0].LegSide, 0)386if TempValue0 == true387388SetBit(LegJoint[ArrayPos0].LegSide, 0, 0)389if BossPart[ArrayPos0].State != BOSSLEGJOINT_DESCEND390391if BossPart[ArrayPos0].State != BOSSLEGJOINT_LANDING392BossPart[ArrayPos0].State = BOSSLEGJOINT_STEP_START393CallFunction(BossBody_SetLegPosSaveFalse)394395ArrayPos0 = Object.LegJointREntity396CallFunction(BossBody_SwitchLeg_Revert)397398ArrayPos0 = Object.LegJointLEntity399BossPart[ArrayPos0].State = BOSSLEGJOINT_WAIT_LEG400CallFunction(BossBody_SetLegPosSaveFalse)401402ArrayPos0 = Object.LegJointLEntity403CallFunction(BossBody_SwitchLeg)404405ArrayPos0 = Object.LegJointLEntity406ArrayPos1 = LegJointL[ArrayPos0].LegLEntity407BossPart[ArrayPos1].State = BOSSLEG_LANDING408409ArrayPos0 = LegL[ArrayPos1].FootLEntity410BossPart[ArrayPos0].State = BOSSFOOT_HANDLE_STEP411SetBit(Object.BitHolder, 0, KEY_EVENT_TRUE)412else413BossPart[ArrayPos0].State = BOSSLEGJOINT_STAND414end if415416else417BossPart[ArrayPos0].State = BOSSLEGJOINT_LANDING418end if419420end if421break422423case BOSSBODY_FIRST_STEP424GetBit(TempValue0, Object.BitHolder, 1)425if TempValue0 == MOVE_FORWARD426SetBit(Object.BitHolder, 1, MOVE_BACKWARDS)427CallFunction(BossBody_MoveRArmToFront)428end if429430ArrayPos0 = Object.LegJointREntity431GetBit(TempValue0, LegJoint[ArrayPos0].LegSide, 0)432if TempValue0 == true433434ArrayPos0 = Object.LegJointLEntity435GetBit(TempValue0, LegJoint[ArrayPos0].LegSide, 0)436if TempValue0 == true437SetBit(Object.BitHolder, 1, MOVE_FORWARD)438SetBit(Object.BitHolder, 6, RIGHT_LEG_ACTIVE)439SetBit(Object.BitHolder, 0, KEY_EVENT_TRUE)440end if441442end if443break444445case BOSSBODY_MOVE_FORWARD446ArrayPos0 = Object.LegJointREntity447GetBit(CheckResult, LegJoint[ArrayPos0].LegSide, 0)448ArrayPos0 = Object.LegJointLEntity449GetBit(TempValue0, LegJoint[ArrayPos0].LegSide, 0)450CheckResult &= TempValue0451if CheckResult == true452ArrayPos0 = Object.LegJointREntity453SetBit(LegJoint[ArrayPos0].LegSide, 0, 0)454455ArrayPos1 = LegJointR[ArrayPos0].LegREntity456SetBit(Leg[ArrayPos1].LegSide, 0, 0)457458ArrayPos0 = Object.LegJointLEntity459SetBit(LegJoint[ArrayPos0].LegSide, 0, 0)460461ArrayPos1 = LegJointL[ArrayPos0].LegLEntity462SetBit(Leg[ArrayPos1].LegSide, 0, 0)463464if Object.XPos < Object.ChargeDistance465Object.ChargeStart = 1466end if467468Object.ChargeStart--469if Object.ChargeStart == 0470SetBit(Object.BitHolder, 0, KEY_EVENT_TRUE)471SetBit(Object.BitHolder, 1, MOVE_FORWARD)472else473GetBit(TempValue0, Object.BitHolder, 6)474if TempValue0 == LEFT_LEG_ACTIVE475SetBit(Object.BitHolder, 6, 1)476ArrayPos0 = Object.LegJointREntity477BossPart[ArrayPos0].State = BOSSLEGJOINT_STEP_START478CallFunction(BossBody_SetLegPosSaveFalse)479480ArrayPos0 = Object.LegJointREntity481CallFunction(BossBody_SwitchLeg_Revert)482483ArrayPos0 = Object.LegJointREntity484ArrayPos1 = LegJointR[ArrayPos0].LegREntity485BossPart[ArrayPos1].State = BOSSLEG_MOVE_OPPOSITE486487ArrayPos0 = Object.LegJointLEntity488BossPart[ArrayPos0].State = BOSSLEGJOINT_WAIT_LEG489CallFunction(BossBody_SetLegPosSaveTrue)490491ArrayPos0 = Object.LegJointLEntity492CallFunction(BossBody_SwitchLeg)493494ArrayPos0 = Object.LegJointLEntity495ArrayPos1 = LegJointL[ArrayPos0].LegLEntity496BossPart[ArrayPos1].State = BOSSLEG_MOVE497CallFunction(BossBody_MoveRArmToFront)498else499SetBit(Object.BitHolder, 6, 0)500ArrayPos0 = Object.LegJointREntity501BossPart[ArrayPos0].State = BOSSLEGJOINT_WAIT_LEG502CallFunction(BossBody_SetLegPosSaveTrue)503504ArrayPos0 = Object.LegJointREntity505CallFunction(BossBody_SwitchLeg)506507ArrayPos0 = Object.LegJointREntity508ArrayPos1 = LegJointR[ArrayPos0].LegREntity509BossPart[ArrayPos1].State = BOSSLEG_MOVE510511ArrayPos0 = Object.LegJointLEntity512BossPart[ArrayPos0].State = BOSSLEGJOINT_STEP_START513CallFunction(BossBody_SetLegPosSaveFalse)514515ArrayPos0 = Object.LegJointLEntity516CallFunction(BossBody_SwitchLeg_Revert)517518ArrayPos0 = Object.LegJointLEntity519ArrayPos1 = LegJointL[ArrayPos0].LegLEntity520BossPart[ArrayPos1].State = BOSSLEG_MOVE_OPPOSITE521CallFunction(BossBody_MoveLArmToFront)522end if523end if524end if525break526527case BOSSBODY_MOVE_BACKWARDS528ArrayPos0 = Object.LegJointREntity529GetBit(CheckResult, LegJoint[ArrayPos0].LegSide, 0)530531ArrayPos0 = Object.LegJointLEntity532GetBit(TempValue0, LegJoint[ArrayPos0].LegSide, 0)533534CheckResult &= TempValue0535if CheckResult == true536537GetBit(TempValue0, Object.BitHolder, 1)538if TempValue0 == MOVE_FORWARD539SetBit(Object.BitHolder, 1, MOVE_BACKWARDS)540CallFunction(BossBody_RestoreNormalSpeed)541else542ArrayPos0 = Object.LegJointREntity543SetBit(LegJoint[ArrayPos0].LegSide, 0, 0)544545ArrayPos1 = LegJointR[ArrayPos0].LegREntity546SetBit(Leg[ArrayPos1].LegSide, 0, 0)547548ArrayPos0 = Object.LegJointLEntity549SetBit(LegJoint[ArrayPos0].LegSide, 0, 0)550551ArrayPos1 = LegJointL[ArrayPos0].LegLEntity552SetBit(Leg[ArrayPos1].LegSide, 0, 0)553554if Object.XPos >= Object.ChargeXPos555Object.ChargeStart = 1556end if557558Object.ChargeStart--559if Object.ChargeStart == 0560SetBit(Object.BitHolder, 1, MOVE_FORWARD)561SetBit(Object.BitHolder, 0, KEY_EVENT_TRUE)562else563GetBit(TempValue0, Object.BitHolder, 6)564if TempValue0 == LEFT_LEG_ACTIVE565SetBit(Object.BitHolder, 6, RIGHT_LEG_ACTIVE)566ArrayPos0 = Object.LegJointREntity567BossPart[ArrayPos0].State = BOSSLEGJOINT_WAIT_LEG_BW568CallFunction(BossBody_SetLegPosSaveTrue)569570ArrayPos0 = Object.LegJointREntity571CallFunction(BossBody_SwitchLeg)572573ArrayPos0 = Object.LegJointREntity574ArrayPos1 = LegJointR[ArrayPos0].LegREntity575BossPart[ArrayPos1].State = BOSSLEG_MOVE_OPPOSITE576577ArrayPos0 = Object.LegJointLEntity578BossPart[ArrayPos0].State = BOSSLEGJOINT_STEP_START_BW579CallFunction(BossBody_SetLegPosSaveFalse)580581ArrayPos0 = Object.LegJointLEntity582CallFunction(BossBody_SwitchLeg_Revert)583ArrayPos0 = Object.LegJointLEntity584ArrayPos1 = LegJointL[ArrayPos0].LegLEntity585BossPart[ArrayPos1].State = BOSSLEG_MOVE586CallFunction(BossBody_MoveRArmToFront)587else588SetBit(Object.BitHolder, 6, LEFT_LEG_ACTIVE)589ArrayPos0 = Object.LegJointREntity590BossPart[ArrayPos0].State = BOSSLEGJOINT_STEP_START_BW591CallFunction(BossBody_SetLegPosSaveFalse)592593ArrayPos0 = Object.LegJointREntity594CallFunction(BossBody_SwitchLeg_Revert)595596ArrayPos0 = Object.LegJointREntity597ArrayPos1 = LegJointR[ArrayPos0].LegREntity598BossPart[ArrayPos1].State = BOSSLEG_MOVE599600ArrayPos0 = Object.LegJointLEntity601BossPart[ArrayPos0].State = BOSSLEGJOINT_WAIT_LEG_BW602CallFunction(BossBody_SetLegPosSaveTrue)603604ArrayPos0 = Object.LegJointLEntity605CallFunction(BossBody_SwitchLeg)606607ArrayPos0 = Object.LegJointLEntity608ArrayPos1 = LegJointL[ArrayPos0].LegLEntity609BossPart[ArrayPos1].State = BOSSLEG_MOVE_OPPOSITE610CallFunction(BossBody_MoveLArmToFront)611end if612613end if614615end if616617end if618break619620case BOSSBODY_PREPARE_CHARGING621GetBit(TempValue0, Object.BitHolder, 1)622if TempValue0 == MOVE_FORWARD623SetBit(Object.BitHolder, 1, MOVE_BACKWARDS)624CallFunction(BossBody_HandleCharge)625end if626627GetBit(TempValue0, Object.BitHolder, 6)628if TempValue0 == RIGHT_LEG_ACTIVE629ArrayPos0 = Object.LegJointREntity630ArrayPos1 = LegJointR[ArrayPos0].LegREntity631BossPart[ArrayPos1].State = BOSSLEG_MOVE_C632633ArrayPos0 = Object.LegJointLEntity634ArrayPos1 = LegJointL[ArrayPos0].LegLEntity635BossPart[ArrayPos1].State = BOSSLEG_MOVE_OPPOSITE_C636else637ArrayPos0 = Object.LegJointLEntity638ArrayPos1 = LegJointL[ArrayPos0].LegLEntity639BossPart[ArrayPos1].State = BOSSLEG_MOVE_C640641ArrayPos0 = Object.LegJointREntity642ArrayPos1 = LegJointR[ArrayPos0].LegREntity643BossPart[ArrayPos1].State = BOSSLEG_MOVE_OPPOSITE_C644end if645646ArrayPos0 = Object.LegJointREntity647GetBit(CheckResult, LegJoint[ArrayPos0].LegSide, 0)648ArrayPos0 = Object.LegJointLEntity649GetBit(TempValue0, LegJoint[ArrayPos0].LegSide, 0)650CheckResult &= TempValue0651if CheckResult == true652ArrayPos0 = Object.LegJointREntity653SetBit(LegJoint[ArrayPos0].LegSide, 0, 0)654655ArrayPos1 = LegJointR[ArrayPos0].LegREntity656SetBit(Leg[ArrayPos1].LegSide, 0, 0)657658ArrayPos0 = Object.LegJointLEntity659SetBit(LegJoint[ArrayPos0].LegSide, 0, 0)660661ArrayPos1 = LegJointL[ArrayPos0].LegLEntity662SetBit(Leg[ArrayPos1].LegSide, 0, 0)663664Object.ChargeStart--665if Object.ChargeStart == 0666SetBit(Object.BitHolder, 1, MOVE_FORWARD)667SetBit(Object.BitHolder, 0, KEY_EVENT_TRUE)668else669GetBit(TempValue0, Object.BitHolder, 6)670if TempValue0 == LEFT_LEG_ACTIVE671SetBit(Object.BitHolder, 6, RIGHT_LEG_ACTIVE)672ArrayPos0 = Object.LegJointREntity673SetBit(LegJoint[ArrayPos0].LegSide, 1, 0)674CallFunction(BossBody_SetLegPosSaveTrue)675676ArrayPos0 = Object.LegJointREntity677CallFunction(BossBody_SwitchLeg)678679ArrayPos0 = Object.LegJointREntity680ArrayPos1 = LegJointR[ArrayPos0].LegREntity681BossPart[ArrayPos1].State = BOSSLEG_MOVE_C682ArrayPos0 = LegR[ArrayPos1].FootREntity683BossPart[ArrayPos0].State = BOSSFOOT_STEP684685ArrayPos0 = Object.LegJointLEntity686SetBit(LegJoint[ArrayPos0].LegSide, 1, 0)687BossPart[ArrayPos0].State = BOSSLEGJOINT_STEP_START688CallFunction(BossBody_SetLegPosSaveFalse)689690ArrayPos0 = Object.LegJointLEntity691CallFunction(BossBody_SwitchLeg_Revert)692693ArrayPos0 = Object.LegJointLEntity694ArrayPos1 = LegJointL[ArrayPos0].LegLEntity695BossPart[ArrayPos1].State = BOSSLEG_MOVE_OPPOSITE_C696CallFunction(BossBody_SetArmsToCharge)697else698SetBit(Object.BitHolder, 6, LEFT_LEG_ACTIVE)699ArrayPos0 = Object.LegJointLEntity700SetBit(LegJoint[ArrayPos0].LegSide, 1, 0)701CallFunction(BossBody_SetLegPosSaveTrue)702703ArrayPos0 = Object.LegJointLEntity704CallFunction(BossBody_SwitchLeg)705706ArrayPos0 = Object.LegJointLEntity707ArrayPos1 = LegJointL[ArrayPos0].LegLEntity708BossPart[ArrayPos1].State = BOSSLEG_MOVE_C709710ArrayPos0 = LegL[ArrayPos1].FootLEntity711BossPart[ArrayPos0].State = BOSSFOOT_STEP712713ArrayPos0 = Object.LegJointREntity714SetBit(LegJoint[ArrayPos0].LegSide, 1, 0)715716BossPart[ArrayPos0].State = BOSSLEGJOINT_STEP_START717CallFunction(BossBody_SetLegPosSaveFalse)718719ArrayPos0 = Object.LegJointREntity720CallFunction(BossBody_SwitchLeg_Revert)721722ArrayPos0 = Object.LegJointREntity723ArrayPos1 = LegJointR[ArrayPos0].LegREntity724BossPart[ArrayPos1].State = BOSSLEG_MOVE_OPPOSITE_C725CallFunction(BossBody_SetArmsToCharge)726end if727728end if729730end if731break732733case BOSSBODY_DESTROYED734if Object.InFloor == false735Object.YPos += 0x20000736ObjectTileCollision(CSIDE_FLOOR, 0, 30, 0)737Object.InFloor = CheckResult738Face.YPos = Object.YPos739end if740break741742case BOSSBODY_STOP_CHARGE743Object.ChargeStart--744if Object.ChargeStart == 0745CallFunction(BossBody_RestoreNormalSpeed)746SetBit(Object.BitHolder, 0, KEY_EVENT_TRUE)747SetBit(Object.BitHolder, 1, MOVE_FORWARD)748end if749break750end switch751end sub752753754sub ObjectDraw755DrawSprite(0)756DrawSprite(1)757end sub758759760sub ObjectStartup761LoadSpriteSheet("R1/Objects3.gif")762763SpriteFrame(-36, -32, 72, 64, 1, 1) // #0 - Egg Mobile764SpriteFrame(0, 8, 24, 24, 99, 1) // #1 - Arm Connector765end sub766767768// ========================769// Editor Subs770// ========================771772sub RSDKDraw773DrawSprite(0)774DrawSprite(1)775end sub776777778sub RSDKLoad779LoadSpriteSheet("R1/Objects3.gif")780SpriteFrame(-36, -32, 72, 64, 1, 1) // #0 - Egg Mobile781SpriteFrame(0, 8, 24, 24, 99, 1) // #1 - Arm Connector782783SetVariableAlias(ALIAS_VAR_PROPVAL, "unused")784end sub785786787