Path: blob/main/Scripts/Mission/Boss_Body2.txt
1319 views
//----------------Sonic CD Boss Body 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.FaceEntity7#alias Object.Value1 : Object.LegJointREntity8#alias Object.Value2 : Object.LegJointLEntity9#alias Object.Value3 : Object.InFloor10// Value4 is used to check key events, forward/backward movement and currently active leg11#alias Object.Value4 : Object.BitHolder12#alias Object.Value5 : Object.ChargeStart13#alias Object.Value6 : Object.ChargeDistance14#alias Object.Value7 : Object.ChargeXPos1516// General Aliases17#alias Object.State : BossPart.State18#alias Object.Value4 : BossPart.Charging19#alias Object.Value2 : BossPart.XOffSet20#alias Object.Value5 : BossPart.YOffSet2122// Face Aliases23#alias Object[-1].YPos : Face.YPos24#alias Object.Value2 : Face.ShoulderEntity2526// Shoulder Aliases27#alias Object.Value1 : Shoulder.ArmJointLEntity28#alias Object.Value2 : Shoulder.ArmJointREntity2930// Leg Joint Aliases31#alias Object.Value1 : LegJointR.LegREntity32#alias Object.Value1 : LegJointL.LegLEntity3334#alias Object.Value1 : LegJoint.LegEntity35#alias Object.Value4 : LegJoint.LegSide3637// Leg Aliases38#alias Object.Value1 : LegR.FootREntity39#alias Object.Value1 : LegL.FootLEntity4041#alias Object.Value1 : Leg.FootEntity42#alias Object.Value4 : Leg.LegSide4344// Foot Aliases45#alias Object.Value4 : Foot.LegSide4647// Arm Joint Aliases48#alias Object.Value1 : ArmJointR.ArmREntity49#alias Object.Value1 : ArmJointL.ArmLEntity5051// Arm Aliases52#alias Object.Frame : Arm.Frame5354// States55#alias 0 : BOSSBODY2_SETUP56#alias 1 : BOSSBODY2_DESCEND57#alias 2 : BOSSBODY2_LANDING58#alias 3 : BOSSBODY2_FIRST_STEP59#alias 4 : BOSSBODY2_MOVE_FORWARD60#alias 5 : BOSSBODY2_MOVE_BACKWARDS61#alias 6 : BOSSBODY2_PREPARE_CHARGING62#alias 7 : BOSSBODY2_DESTROYED63#alias 8 : BOSSBODY2_STOP_CHARGE6465// Boss Foot States66#alias 1 : BOSSFOOT2_STEP67#alias 2 : BOSSFOOT2_HANDLE_STEP68#alias 5 : BOSSFOOT2_LANDING6970// Boss Leg States71#alias 1 : BOSSLEG2_LANDING72#alias 2 : BOSSLEG2_L_MIMIC_R73#alias 3 : BOSSLEG2_MOVE74#alias 4 : BOSSLEG2_MOVE_OPPOSITE75#alias 5 : BOSSLEG2_MOVE_C76#alias 6 : BOSSLEG2_MOVE_OPPOSITE_C7778// Boss Leg Joint States79#alias 1 : BOSSLEGJOINT2_STEP_START80#alias 4 : BOSSLEGJOINT2_WAIT_LEG81#alias 5 : BOSSLEGJOINT2_LANDING82#alias 6 : BOSSLEGJOINT2_DESCEND83#alias 7 : BOSSLEGJOINT2_STAND84#alias 8 : BOSSLEGJOINT2_MIMIC_RIGHT85#alias 9 : BOSSLEGJOINT2_STEP_START_BW86#alias 11 : BOSSLEGJOINT2_WAIT_LEG_BW8788// Boss Arm States89#alias 3 : BOSSARM2_MOVE_TO_FRONT90#alias 4 : BOSSARM2_MOVE_TO_BACK91#alias 5 : BOSSARM2_START_CHARGE9293// Boss Arm Joint94#alias 1 : BOSSARMJOINT2_REPOSITION_F95#alias 3 : BOSSARMJOINT2_REPOSITION_B96#alias 5 : BOSSARMJOINT2_DESTROYED9798// Object.BitHolder SetBit Values99// Bit 0 - Check of key events for BossFace (landing, start of charge, first move, etc)100// Bit 1 - Forward or Backward movement (Forwards 0, Backwards 1)101// Bit 6 - Which leg moves (Left 0, Right 1)102103// Bit 0 Aliases104#alias 0 : KEY_EVENT_FALSE105#alias 1 : KEY_EVENT_TRUE106107// Bit 1 Aliases108#alias 0 : MOVE_FORWARD109#alias 1 : MOVE_BACKWARDS110111// Bit 6 Aliases112#alias 0 : LEFT_LEG_ACTIVE113#alias 1 : RIGHT_LEG_ACTIVE114115// Collision Sides116#alias 0 : CSIDE_FLOOR117118// Function declarations119#function BossBody2_RestoreNormalSpeed120#function BossBody2_SetLegPosSaveTrue121#function BossBody2_SetLegPosSaveFalse122#function BossBody2_SwitchLeg123#function BossBody2_SwitchLeg_Revert124#function BossBody2_MoveRArmToFront125#function BossBody2_MoveLArmToFront126#function BossBody2_HandleCharge127#function BossBody2_SetArmsToCharge128129130function BossBody2_RestoreNormalSpeed131ArrayPos0=Object.LegJointREntity132133TempValue0 = 2134TempValue0 *= Object.PropertyValue135TempValue0 /= 10136137BossPart[ArrayPos0].YOffSet = TempValue0138139ArrayPos1 = LegJointR[ArrayPos0].LegREntity140// Leg R141TempValue0 = 0x8000142TempValue0 *= Object.PropertyValue // Set the XOffset value based on it's property value143TempValue0 /= 10144145TempValue1 = 0x4000146TempValue1 *= Object.PropertyValue // Set the YOffset value based on it's property value147TempValue1 /= 10148149BossPart[ArrayPos1].XOffSet = TempValue0150BossPart[ArrayPos1].YOffSet = TempValue1151152ArrayPos0 = LegR[ArrayPos1].FootREntity153// Foot R154BossPart[ArrayPos0].XOffSet = TempValue1155BossPart[ArrayPos0].YOffSet = TempValue0156157ArrayPos0 = Object.LegJointLEntity158// Leg Joint L159BossPart[ArrayPos0].YOffSet = 4160161ArrayPos1 = LegJointL[ArrayPos0].LegLEntity162// Leg L163BossPart[ArrayPos1].XOffSet = TempValue0164BossPart[ArrayPos1].YOffSet = TempValue1165166ArrayPos0 = LegL[ArrayPos1].FootLEntity167// Foot L168BossPart[ArrayPos0].XOffSet = TempValue1169BossPart[ArrayPos0].YOffSet = TempValue0170171ArrayPos0 = Object.FaceEntity172ArrayPos1 = Face[ArrayPos0].ShoulderEntity173ArrayPos0 = Shoulder[ArrayPos1].ArmJointLEntity174SetBit(BossPart[ArrayPos0].Charging, 7, 0)175176ArrayPos1 = ArmJointL[ArrayPos0].ArmLEntity177SetBit(BossPart[ArrayPos1].Charging, 7, 0)178179ArrayPos0 = Object.FaceEntity180ArrayPos1 = Face[ArrayPos0].ShoulderEntity181ArrayPos0 = Shoulder[ArrayPos1].ArmJointREntity182SetBit(BossPart[ArrayPos0].Charging, 7, 0)183184ArrayPos1 = ArmJointR[ArrayPos0].ArmREntity185SetBit(BossPart[ArrayPos1].Charging, 7, 0)186end function187188189function BossBody2_SetLegPosSaveTrue190SetBit(LegJoint[ArrayPos0].LegSide, 5, 1)191192ArrayPos1 = LegJoint[ArrayPos0].LegEntity193SetBit(Leg[ArrayPos1].LegSide, 5, 1)194195ArrayPos0 = Leg[ArrayPos1].FootEntity196SetBit(Foot[ArrayPos0].LegSide, 5, 1)197end function198199200function BossBody2_SetLegPosSaveFalse201SetBit(LegJoint[ArrayPos0].LegSide, 5, 0)202203ArrayPos1 = LegJoint[ArrayPos0].LegEntity204SetBit(Leg[ArrayPos1].LegSide, 5, 0)205206ArrayPos0 = Leg[ArrayPos1].FootEntity207SetBit(Foot[ArrayPos0].LegSide, 5, 0)208end function209210211function BossBody2_SwitchLeg212SetBit(LegJoint[ArrayPos0].LegSide, 4, 1)213214ArrayPos1 = LegJoint[ArrayPos0].LegEntity215SetBit(Leg[ArrayPos1].LegSide, 4, 1)216217ArrayPos0 = Leg[ArrayPos1].FootEntity218SetBit(Foot[ArrayPos0].LegSide, 4, 1)219end function220221222223function BossBody2_SwitchLeg_Revert224SetBit(LegJoint[ArrayPos0].LegSide, 4, 0)225226ArrayPos1 = LegJoint[ArrayPos0].LegEntity227SetBit(Leg[ArrayPos1].LegSide, 4, 0)228229ArrayPos0 = Leg[ArrayPos1].FootEntity230SetBit(Foot[ArrayPos0].LegSide, 4, 0)231end function232233234235// Right arm to front236function BossBody2_MoveRArmToFront237ArrayPos0 = Object.FaceEntity238ArrayPos1 = Face[ArrayPos0].ShoulderEntity239ArrayPos0 = Shoulder[ArrayPos1].ArmJointREntity240if BossPart[ArrayPos0].State < BOSSARMJOINT2_DESTROYED241BossPart[ArrayPos0].State = BOSSARMJOINT2_REPOSITION_B242243ArrayPos1 = ArmJointR[ArrayPos0].ArmREntity244BossPart[ArrayPos1].State = BOSSARM2_MOVE_TO_FRONT245Arm[ArrayPos1].Frame = 0246end if247248ArrayPos0 = Object.FaceEntity249ArrayPos1 = Face[ArrayPos0].ShoulderEntity250ArrayPos0 = Shoulder[ArrayPos1].ArmJointLEntity251if BossPart[ArrayPos0].State < BOSSARMJOINT2_DESTROYED252BossPart[ArrayPos0].State = BOSSARMJOINT2_REPOSITION_F253254ArrayPos1 = ArmJointL[ArrayPos0].ArmLEntity255BossPart[ArrayPos1].State = BOSSARM2_MOVE_TO_BACK256Arm[ArrayPos1].Frame = 0257end if258end function259260261262// Left arm to front263function BossBody2_MoveLArmToFront264ArrayPos0 = Object.FaceEntity265ArrayPos1 = Face[ArrayPos0].ShoulderEntity266ArrayPos0 = Shoulder[ArrayPos1].ArmJointREntity267if BossPart[ArrayPos0].State < BOSSARMJOINT2_DESTROYED268BossPart[ArrayPos0].State = BOSSARMJOINT2_REPOSITION_F269270ArrayPos1 = ArmJointR[ArrayPos0].ArmREntity271BossPart[ArrayPos1].State = BOSSARM2_MOVE_TO_BACK272Arm[ArrayPos1].Frame = 0273end if274275ArrayPos0 = Object.FaceEntity276ArrayPos1 = Face[ArrayPos0].ShoulderEntity277ArrayPos0 = Shoulder[ArrayPos1].ArmJointLEntity278if BossPart[ArrayPos0].State < BOSSARMJOINT2_DESTROYED279BossPart[ArrayPos0].State = BOSSARMJOINT2_REPOSITION_B280281ArrayPos1 = ArmJointL[ArrayPos0].ArmLEntity282BossPart[ArrayPos1].State = BOSSARM2_MOVE_TO_FRONT283Arm[ArrayPos1].Frame = 0284end if285end function286287288289function BossBody2_HandleCharge290ArrayPos0 = Object.LegJointREntity291// Leg Joint R292TempValue0 = 8293TempValue0 *= Object.PropertyValue // Set the YOffset value based on it's property value294TempValue0 /= 10295296BossPart[ArrayPos0].YOffSet = TempValue0297298ArrayPos1 = LegJointR[ArrayPos0].LegREntity299// Leg R300TempValue0 = 0x10000301TempValue0 *= Object.PropertyValue // Set the XOffset value based on it's property value302TempValue0 /= 10303304TempValue1 = TempValue0305TempValue1 >>= 1306307TempValue2 = 0xC000308TempValue2 *= Object.PropertyValue // Set the YOffset value based on it's property value309TempValue2 /= 10310311TempValue3 = TempValue2312TempValue3 <<= 1313314BossPart[ArrayPos1].XOffSet = TempValue0315BossPart[ArrayPos1].YOffSet = TempValue1316317ArrayPos0 = LegR[ArrayPos1].FootREntity318// Foot R319BossPart[ArrayPos0].XOffSet = TempValue2320BossPart[ArrayPos0].YOffSet = TempValue3321322ArrayPos0 = Object.LegJointLEntity323// Leg Joint L324BossPart[ArrayPos0].YOffSet = 16325326ArrayPos1 = LegJointL[ArrayPos0].LegLEntity327// Leg L328BossPart[ArrayPos1].XOffSet = TempValue0329BossPart[ArrayPos1].YOffSet = TempValue1330331ArrayPos0 = LegL[ArrayPos1].FootLEntity332// Foot L333BossPart[ArrayPos0].XOffSet = TempValue2334BossPart[ArrayPos0].YOffSet = TempValue3335336ArrayPos0 = Object.FaceEntity337ArrayPos1 = Face[ArrayPos0].ShoulderEntity338ArrayPos0 = Shoulder[ArrayPos1].ArmJointLEntity339SetBit(BossPart[ArrayPos0].Charging, 7, 1) // Left Arm Joint340341ArrayPos1 = ArmJointL[ArrayPos0].ArmLEntity342SetBit(BossPart[ArrayPos1].Charging, 7, 1) // Left Arm343344ArrayPos0 = Object.FaceEntity345ArrayPos1 = Face[ArrayPos0].ShoulderEntity346ArrayPos0 = Shoulder[ArrayPos1].ArmJointREntity347SetBit(BossPart[ArrayPos0].Charging, 7, 1) // Right Arm Joint348349ArrayPos1 = ArmJointR[ArrayPos0].ArmREntity350SetBit(BossPart[ArrayPos1].Charging, 7, 1) // Right Arm351end function352353354function BossBody2_SetArmsToCharge355ArrayPos0 = Object.FaceEntity356ArrayPos1 = Face[ArrayPos0].ShoulderEntity357ArrayPos0 = Shoulder[ArrayPos1].ArmJointREntity358if BossPart[ArrayPos0].State < BOSSARMJOINT2_DESTROYED359BossPart[ArrayPos0].State = BOSSARMJOINT2_REPOSITION_F360361ArrayPos1 = ArmJointR[ArrayPos0].ArmREntity362BossPart[ArrayPos1].State = BOSSARM2_START_CHARGE363Arm[ArrayPos1].Frame = 1364end if365366ArrayPos0 = Object.FaceEntity367ArrayPos1 = Face[ArrayPos0].ShoulderEntity368ArrayPos0 = Shoulder[ArrayPos1].ArmJointLEntity369if BossPart[ArrayPos0].State < BOSSARMJOINT2_DESTROYED370BossPart[ArrayPos0].State = BOSSARMJOINT2_REPOSITION_F371372ArrayPos1 = ArmJointL[ArrayPos0].ArmLEntity373BossPart[ArrayPos1].State = BOSSARM2_START_CHARGE374Arm[ArrayPos1].Frame = 1375end if376end function377378379sub ObjectMain380switch Object.State381case BOSSBODY2_SETUP382CallFunction(BossBody2_RestoreNormalSpeed)383TempValue0 = Screen.XOffset384TempValue0 <<= 16385386Object.ChargeDistance = TempValue0387388Object.ChargeXPos = Object.XPos389Object.ChargeXPos -= 0x320000390391Object.State = BOSSBODY2_DESCEND392break393394case BOSSBODY2_DESCEND395ArrayPos0 = Object.LegJointLEntity396BossPart[ArrayPos0].State = BOSSLEGJOINT2_MIMIC_RIGHT397398ArrayPos1 = LegJointL[ArrayPos0].LegLEntity399BossPart[ArrayPos1].State = BOSSLEG2_L_MIMIC_R400401ArrayPos0 = LegL[ArrayPos1].FootLEntity402BossPart[ArrayPos0].State = BOSSFOOT2_LANDING403404ArrayPos0 = Object.LegJointREntity405CallFunction(BossBody2_SetLegPosSaveTrue)406407ArrayPos0 = Object.LegJointREntity408GetBit(TempValue0, LegJoint[ArrayPos0].LegSide, 4)409if TempValue0 == false410Object.YPos += 0x18000411412ArrayPos0 = Object.FaceEntity413Face[ArrayPos0].YPos += 0x18000414else415SetBit(Object.BitHolder, 0, KEY_EVENT_TRUE)416end if417break418419case BOSSBODY2_LANDING420ArrayPos0 = Object.LegJointLEntity421SetBit(LegJoint[ArrayPos0].LegSide, 0, 0)422423ArrayPos0 = Object.LegJointREntity424GetBit(TempValue0, LegJoint[ArrayPos0].LegSide, 0)425if TempValue0 == true426427SetBit(LegJoint[ArrayPos0].LegSide, 0, 0)428if BossPart[ArrayPos0].State != BOSSLEGJOINT2_DESCEND429430if BossPart[ArrayPos0].State != BOSSLEGJOINT2_LANDING431BossPart[ArrayPos0].State = BOSSLEGJOINT2_STEP_START432CallFunction(BossBody2_SetLegPosSaveFalse)433434ArrayPos0 = Object.LegJointREntity435CallFunction(BossBody2_SwitchLeg_Revert)436437ArrayPos0 = Object.LegJointLEntity438BossPart[ArrayPos0].State = BOSSLEGJOINT2_WAIT_LEG439CallFunction(BossBody2_SetLegPosSaveFalse)440441ArrayPos0 = Object.LegJointLEntity442CallFunction(BossBody2_SwitchLeg)443444ArrayPos0 = Object.LegJointLEntity445ArrayPos1 = LegJointL[ArrayPos0].LegLEntity446BossPart[ArrayPos1].State = BOSSLEG2_LANDING447448ArrayPos0 = LegL[ArrayPos1].FootLEntity449BossPart[ArrayPos0].State = BOSSFOOT2_HANDLE_STEP450SetBit(Object.BitHolder, 0, KEY_EVENT_TRUE)451else452BossPart[ArrayPos0].State = BOSSLEGJOINT2_STAND453end if454455else456BossPart[ArrayPos0].State = BOSSLEGJOINT2_LANDING457end if458459end if460break461462case BOSSBODY2_FIRST_STEP463GetBit(TempValue0, Object.BitHolder, 1)464if TempValue0 == MOVE_FORWARD465SetBit(Object.BitHolder, 1, MOVE_BACKWARDS)466CallFunction(BossBody2_MoveRArmToFront)467end if468469ArrayPos0 = Object.LegJointREntity470GetBit(TempValue0, LegJoint[ArrayPos0].LegSide, 0)471if TempValue0 == true472473ArrayPos0 = Object.LegJointLEntity474GetBit(TempValue0, LegJoint[ArrayPos0].LegSide, 0)475if TempValue0 == true476SetBit(Object.BitHolder, 1, MOVE_FORWARD)477SetBit(Object.BitHolder, 6, RIGHT_LEG_ACTIVE)478SetBit(Object.BitHolder, 0, KEY_EVENT_TRUE)479end if480481end if482break483484485case BOSSBODY2_MOVE_FORWARD486ArrayPos0 = Object.LegJointREntity487GetBit(CheckResult, LegJoint[ArrayPos0].LegSide, 0)488ArrayPos0 = Object.LegJointLEntity489GetBit(TempValue0, LegJoint[ArrayPos0].LegSide, 0)490CheckResult &= TempValue0491if CheckResult == true492ArrayPos0 = Object.LegJointREntity493SetBit(LegJoint[ArrayPos0].LegSide, 0, 0)494495ArrayPos1 = LegJointR[ArrayPos0].LegREntity496SetBit(Leg[ArrayPos1].LegSide, 0, 0)497498ArrayPos0 = Object.LegJointLEntity499SetBit(LegJoint[ArrayPos0].LegSide, 0, 0)500501ArrayPos1 = LegJointL[ArrayPos0].LegLEntity502SetBit(Leg[ArrayPos1].LegSide, 0, 0)503504if Object.XPos < Object.ChargeDistance505Object.ChargeStart = 1506end if507508Object.ChargeStart--509if Object.ChargeStart == 0510SetBit(Object.BitHolder, 0, KEY_EVENT_TRUE)511SetBit(Object.BitHolder, 1, MOVE_FORWARD)512else513GetBit(TempValue0, Object.BitHolder, 6)514if TempValue0 == LEFT_LEG_ACTIVE515SetBit(Object.BitHolder, 6, 1)516ArrayPos0 = Object.LegJointREntity517BossPart[ArrayPos0].State = BOSSLEGJOINT2_STEP_START518CallFunction(BossBody2_SetLegPosSaveFalse)519520ArrayPos0 = Object.LegJointREntity521CallFunction(BossBody2_SwitchLeg_Revert)522523ArrayPos0 = Object.LegJointREntity524ArrayPos1 = LegJointR[ArrayPos0].LegREntity525BossPart[ArrayPos1].State = BOSSLEG2_MOVE_OPPOSITE526527ArrayPos0 = Object.LegJointLEntity528BossPart[ArrayPos0].State = BOSSLEGJOINT2_WAIT_LEG529CallFunction(BossBody2_SetLegPosSaveTrue)530531ArrayPos0 = Object.LegJointLEntity532CallFunction(BossBody2_SwitchLeg)533534ArrayPos0 = Object.LegJointLEntity535ArrayPos1 = LegJointL[ArrayPos0].LegLEntity536BossPart[ArrayPos1].State = BOSSLEG2_MOVE537CallFunction(BossBody2_MoveRArmToFront)538else539SetBit(Object.BitHolder, 6, 0)540ArrayPos0 = Object.LegJointREntity541BossPart[ArrayPos0].State = BOSSLEGJOINT2_WAIT_LEG542CallFunction(BossBody2_SetLegPosSaveTrue)543544ArrayPos0 = Object.LegJointREntity545CallFunction(BossBody2_SwitchLeg)546547ArrayPos0 = Object.LegJointREntity548ArrayPos1 = LegJointR[ArrayPos0].LegREntity549BossPart[ArrayPos1].State = BOSSLEG2_MOVE550551ArrayPos0 = Object.LegJointLEntity552BossPart[ArrayPos0].State = BOSSLEGJOINT2_STEP_START553CallFunction(BossBody2_SetLegPosSaveFalse)554555ArrayPos0 = Object.LegJointLEntity556CallFunction(BossBody2_SwitchLeg_Revert)557558ArrayPos0 = Object.LegJointLEntity559ArrayPos1 = LegJointL[ArrayPos0].LegLEntity560BossPart[ArrayPos1].State = BOSSLEG2_MOVE_OPPOSITE561CallFunction(BossBody2_MoveLArmToFront)562end if563end if564end if565break566567case BOSSBODY2_MOVE_BACKWARDS568ArrayPos0 = Object.LegJointREntity569GetBit(CheckResult, LegJoint[ArrayPos0].LegSide, 0)570571ArrayPos0 = Object.LegJointLEntity572GetBit(TempValue0, LegJoint[ArrayPos0].LegSide, 0)573574CheckResult &= TempValue0575if CheckResult == true576577GetBit(TempValue0, Object.BitHolder, 1)578if TempValue0 == MOVE_FORWARD579SetBit(Object.BitHolder, 1, MOVE_BACKWARDS)580CallFunction(BossBody2_RestoreNormalSpeed)581else582ArrayPos0 = Object.LegJointREntity583SetBit(LegJoint[ArrayPos0].LegSide, 0, 0)584585ArrayPos1 = LegJointR[ArrayPos0].LegREntity586SetBit(Leg[ArrayPos1].LegSide, 0, 0)587588ArrayPos0 = Object.LegJointLEntity589SetBit(LegJoint[ArrayPos0].LegSide, 0, 0)590591ArrayPos1 = LegJointL[ArrayPos0].LegLEntity592SetBit(Leg[ArrayPos1].LegSide, 0, 0)593594if Object.XPos >= Object.ChargeXPos595Object.ChargeStart = 1596end if597598Object.ChargeStart--599if Object.ChargeStart == 0600SetBit(Object.BitHolder, 1, MOVE_FORWARD)601SetBit(Object.BitHolder, 0, KEY_EVENT_TRUE)602else603GetBit(TempValue0, Object.BitHolder, 6)604if TempValue0 == LEFT_LEG_ACTIVE605SetBit(Object.BitHolder, 6, RIGHT_LEG_ACTIVE)606ArrayPos0 = Object.LegJointREntity607BossPart[ArrayPos0].State = BOSSLEGJOINT2_WAIT_LEG_BW608CallFunction(BossBody2_SetLegPosSaveTrue)609610ArrayPos0 = Object.LegJointREntity611CallFunction(BossBody2_SwitchLeg)612613ArrayPos0 = Object.LegJointREntity614ArrayPos1 = LegJointR[ArrayPos0].LegREntity615BossPart[ArrayPos1].State = BOSSLEG2_MOVE_OPPOSITE616617ArrayPos0 = Object.LegJointLEntity618BossPart[ArrayPos0].State = BOSSLEGJOINT2_STEP_START_BW619CallFunction(BossBody2_SetLegPosSaveFalse)620621ArrayPos0 = Object.LegJointLEntity622CallFunction(BossBody2_SwitchLeg_Revert)623ArrayPos0 = Object.LegJointLEntity624ArrayPos1 = LegJointL[ArrayPos0].LegLEntity625BossPart[ArrayPos1].State = BOSSLEG2_MOVE626CallFunction(BossBody2_MoveRArmToFront)627else628SetBit(Object.BitHolder, 6, LEFT_LEG_ACTIVE)629ArrayPos0 = Object.LegJointREntity630BossPart[ArrayPos0].State = BOSSLEGJOINT2_STEP_START_BW631CallFunction(BossBody2_SetLegPosSaveFalse)632633ArrayPos0 = Object.LegJointREntity634CallFunction(BossBody2_SwitchLeg_Revert)635636ArrayPos0 = Object.LegJointREntity637ArrayPos1 = LegJointR[ArrayPos0].LegREntity638BossPart[ArrayPos1].State = BOSSLEG2_MOVE639640ArrayPos0 = Object.LegJointLEntity641BossPart[ArrayPos0].State = BOSSLEGJOINT2_WAIT_LEG_BW642CallFunction(BossBody2_SetLegPosSaveTrue)643644ArrayPos0 = Object.LegJointLEntity645CallFunction(BossBody2_SwitchLeg)646647ArrayPos0 = Object.LegJointLEntity648ArrayPos1 = LegJointL[ArrayPos0].LegLEntity649BossPart[ArrayPos1].State = BOSSLEG2_MOVE_OPPOSITE650CallFunction(BossBody2_MoveLArmToFront)651end if652653end if654655end if656657end if658break659660case BOSSBODY2_PREPARE_CHARGING661GetBit(TempValue0, Object.BitHolder, 1)662if TempValue0 == MOVE_FORWARD663SetBit(Object.BitHolder, 1, MOVE_BACKWARDS)664CallFunction(BossBody2_HandleCharge)665end if666667GetBit(TempValue0, Object.BitHolder, 6)668if TempValue0 == RIGHT_LEG_ACTIVE669ArrayPos0 = Object.LegJointREntity670ArrayPos1 = LegJointR[ArrayPos0].LegREntity671BossPart[ArrayPos1].State = BOSSLEG2_MOVE_C672673ArrayPos0 = Object.LegJointLEntity674ArrayPos1 = LegJointL[ArrayPos0].LegLEntity675BossPart[ArrayPos1].State = BOSSLEG2_MOVE_OPPOSITE_C676else677ArrayPos0 = Object.LegJointLEntity678ArrayPos1 = LegJointL[ArrayPos0].LegLEntity679BossPart[ArrayPos1].State = BOSSLEG2_MOVE_C680681ArrayPos0 = Object.LegJointREntity682ArrayPos1 = LegJointR[ArrayPos0].LegREntity683BossPart[ArrayPos1].State = BOSSLEG2_MOVE_OPPOSITE_C684end if685686ArrayPos0 = Object.LegJointREntity687GetBit(CheckResult, LegJoint[ArrayPos0].LegSide, 0)688ArrayPos0 = Object.LegJointLEntity689GetBit(TempValue0, LegJoint[ArrayPos0].LegSide, 0)690CheckResult &= TempValue0691if CheckResult == true692ArrayPos0 = Object.LegJointREntity693SetBit(LegJoint[ArrayPos0].LegSide, 0, 0)694695ArrayPos1 = LegJointR[ArrayPos0].LegREntity696SetBit(Leg[ArrayPos1].LegSide, 0, 0)697698ArrayPos0 = Object.LegJointLEntity699SetBit(LegJoint[ArrayPos0].LegSide, 0, 0)700701ArrayPos1 = LegJointL[ArrayPos0].LegLEntity702SetBit(Leg[ArrayPos1].LegSide, 0, 0)703704Object.ChargeStart--705if Object.ChargeStart == 0706SetBit(Object.BitHolder, 1, MOVE_FORWARD)707SetBit(Object.BitHolder, 0, KEY_EVENT_TRUE)708else709GetBit(TempValue0, Object.BitHolder, 6)710if TempValue0 == LEFT_LEG_ACTIVE711SetBit(Object.BitHolder, 6, RIGHT_LEG_ACTIVE)712ArrayPos0 = Object.LegJointREntity713SetBit(LegJoint[ArrayPos0].LegSide, 1, 0)714CallFunction(BossBody2_SetLegPosSaveTrue)715716ArrayPos0 = Object.LegJointREntity717CallFunction(BossBody2_SwitchLeg)718719ArrayPos0 = Object.LegJointREntity720ArrayPos1 = LegJointR[ArrayPos0].LegREntity721BossPart[ArrayPos1].State = BOSSLEG2_MOVE_C722ArrayPos0 = LegR[ArrayPos1].FootREntity723BossPart[ArrayPos0].State = BOSSFOOT2_STEP724725ArrayPos0 = Object.LegJointLEntity726SetBit(LegJoint[ArrayPos0].LegSide, 1, 0)727BossPart[ArrayPos0].State = BOSSLEGJOINT2_STEP_START728CallFunction(BossBody2_SetLegPosSaveFalse)729730ArrayPos0 = Object.LegJointLEntity731CallFunction(BossBody2_SwitchLeg_Revert)732733ArrayPos0 = Object.LegJointLEntity734ArrayPos1 = LegJointL[ArrayPos0].LegLEntity735BossPart[ArrayPos1].State = BOSSLEG2_MOVE_OPPOSITE_C736CallFunction(BossBody2_SetArmsToCharge)737else738SetBit(Object.BitHolder, 6, LEFT_LEG_ACTIVE)739ArrayPos0 = Object.LegJointLEntity740SetBit(LegJoint[ArrayPos0].LegSide, 1, 0)741CallFunction(BossBody2_SetLegPosSaveTrue)742743ArrayPos0 = Object.LegJointLEntity744CallFunction(BossBody2_SwitchLeg)745746ArrayPos0 = Object.LegJointLEntity747ArrayPos1 = LegJointL[ArrayPos0].LegLEntity748BossPart[ArrayPos1].State = BOSSLEG2_MOVE_C749750ArrayPos0 = LegL[ArrayPos1].FootLEntity751BossPart[ArrayPos0].State = BOSSFOOT2_STEP752753ArrayPos0 = Object.LegJointREntity754SetBit(LegJoint[ArrayPos0].LegSide, 1, 0)755756BossPart[ArrayPos0].State = BOSSLEGJOINT2_STEP_START757CallFunction(BossBody2_SetLegPosSaveFalse)758759ArrayPos0 = Object.LegJointREntity760CallFunction(BossBody2_SwitchLeg_Revert)761762ArrayPos0 = Object.LegJointREntity763ArrayPos1 = LegJointR[ArrayPos0].LegREntity764BossPart[ArrayPos1].State = BOSSLEG2_MOVE_OPPOSITE_C765CallFunction(BossBody2_SetArmsToCharge)766end if767768end if769770end if771break772773case BOSSBODY2_DESTROYED774if Object.InFloor == false775Object.YPos += 0x20000776ObjectTileCollision(CSIDE_FLOOR, 0, 30, 0)777Object.InFloor = CheckResult778Face.YPos = Object.YPos779end if780break781782case BOSSBODY2_STOP_CHARGE783Object.ChargeStart--784if Object.ChargeStart == 0785CallFunction(BossBody2_RestoreNormalSpeed)786SetBit(Object.BitHolder, 0, KEY_EVENT_TRUE)787SetBit(Object.BitHolder, 1, MOVE_FORWARD)788end if789break790end switch791end sub792793794sub ObjectDraw795DrawSprite(0)796DrawSprite(1)797end sub798799800sub ObjectStartup801LoadSpriteSheet("R1/Objects3.gif")802803SpriteFrame(-36, -32, 72, 64, 1, 1) // #0 - Egg Mobile804SpriteFrame(0, 8, 24, 24, 99, 1) // #1 - Arm Connector805end sub806807808// ========================809// Editor Subs810// ========================811812sub RSDKDraw813DrawSprite(0)814DrawSprite(1)815end sub816817818sub RSDKLoad819LoadSpriteSheet("R1/Objects3.gif")820SpriteFrame(-36, -32, 72, 64, 1, 1) // #0 - Egg Mobile821SpriteFrame(0, 8, 24, 24, 99, 1) // #1 - Arm Connector822823SetVariableAlias(ALIAS_VAR_PROPVAL, "unused")824end sub825826827