Path: blob/main/Scripts/Mission/Boss_Face2.txt
1319 views
//----------------Sonic CD Boss Face 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.Oscillation7#alias Object.Value1 : Object.BodyEntity8#alias Object.Value2 : Object.ShoulderEntity9#alias Object.Value3 : Object.Hit10#alias Object.Value4 : Object.BitHolder11#alias Object.Value5 : Object.NewXBoundary1Value12#alias Object.Value6 : Object.NewXBoundary2Value13#alias Object.Value7 : Object.SavedXBoundary21415#alias Object.Rotation : Object.Timer16#alias Object.Direction : Object.FaceTimer17#alias Object.Scale : Object.SavedYBoundary218#alias Object.InkEffect : Object.FrameTimer19#alias Object.PropertyValue : Object.BossSpeed2021// EGG-HVC-001 Body Aliases22#alias Object[+1].iXPos : BossBody.iXPos23#alias Object[+1].iYPos : BossBody.iYPos24#alias Object[+1].YPos : BossBody.YPos25#alias Object[+1].State : BossBody.State26#alias Object.Value0 : Body.FaceEntity27#alias Object.Value1 : Body.LegJointREntity28#alias Object.Value2 : Body.LegJointLEntity2930// Value4 is used to check key events, forward/backward movement and currently active leg31#alias Object.Value4 : Body.BitHolder32#alias Object.Value5 : Body.ChargeStart33#alias Object.State : Body.State3435// General Aliases36#alias Object.Priority : BossPart.Priority37#alias Object.DrawOrder : BossPart.DrawOrder38#alias Object.Value0 : BossPart.PrevEntity39#alias Object.Value1 : BossPart.NextEntity4041// HVC-001 Boss Right Leg Joint Aliases42#alias Object[+2].YPos : BossLegJointR.YPos4344// HVC-001 Boss Right Leg Aliases45#alias Object[+3].YPos : BossLegR.YPos46#alias Object[+3].Value7 : BossLegR.YVelocity4748// HVC-001 Boss Right Foot Aliases49#alias Object[+4].Value7 : BossFootR.YVelocity50// HVC-001 Boss Left Leg Joint Aliases51#alias Object[+5].YPos : BossLegJointL.YPos5253// HVC-001 Boss Left Leg Aliases54#alias Object[+6].Value7 : BossLegL.YVelocity5556// HVC-001 Boss Left Foot Aliases57#alias Object[+7].Value7 : BossFootL.YVelocity5859// HVC-001 Boss Shoulder Aliases60#alias Object[+8].YPos : BossShoulder.YPos61#alias Object.Value0 : Shoulder.FaceEntity62#alias Object.Value1 : Shoulder.ArmJointLEntity63#alias Object.Value2 : Shoulder.ArmJointREntity6465// HVC-001 Boss Left Arm Joint Aliases66#alias Object[+9].YPos : BossArmJointL.YPos6768// HVC-001 Boss Left Arm Aliases69#alias Object[+10].YPos : BossArmL.YPos70// HVC-001 Boss Left Bumper Joint Aliases71#alias Object[+11].YPos : BossBumperL.YPos7273// HVC-001 Boss Right Arm Joint Aliases74#alias Object[+12].YPos : BossArmJointR.YPos7576// HVC-001 Boss Right Arm Aliases77#alias Object[+13].YPos : BossArmR.YPos7879// HVC-001 Boss Right Bumper Joint Aliases80#alias Object[+14].YPos : BossBumperR.YPos8182// Debris Aliases83#alias Object.State : Debris.State84#alias Object.Value2 : Debris.XOffSet85#alias Object.Value5 : Debris.YOffSet8687// Player Aliases88#alias Player.Value4 : Player.InvincibleTimer8990// States91#alias 0 : R1_EGGMAN2_SETUP92#alias 1 : R1_EGGMAN2_WAIT_PLAYER93#alias 2 : R1_EGGMAN2_BODY_CONTROLLER94#alias 3 : R1_EGGMAN2_DEFEATED95#alias 4 : R1_EGGMAN2_BLANK96#alias 5 : R1_EGGMAN2_RESTORE_BOUNDS97#alias 6 : R1_EGGMAN2_SET_BOUNDARIES98#alias 7 : R1_EGGMAN2_SPAWN_HVC99100// EGG-HVC-001 Body States101#alias 1 : BOSSBODY2_DESCEND102#alias 5 : BOSSBODY2_MOVE_BACKWARDS103#alias 6 : BOSSBODY2_PREPARE_CHARGING104#alias 7 : BOSSBODY2_DESTROYED105106// EGG-HVC-001 Arm Joint States107#alias 5 : BOSSARMJOINT2_DESTROYED108// EGG-HVC-001 Arm States109#alias 2 : BOSSARM2_DESTROYED110// EGG-HVC-001 Bumper States111#alias 2 : BOSSBUMPER2_DESTROYED112// EGG-HVC-001 Leg Joint States113#alias 12 : BOSSLEGJOINT2_DESTROYED114// EGG-HVC-001 Leg States115#alias 7 : BOSSLEG2_DESTROYED116// EGG-HVC-001 Foot States117#alias 6 : BOSSFOOT2_DESTROYED118// EGG-HVC-001 Shoulder States119#alias 2 : BOSSSHOULDER2_DESTROYED120121// Eggman Animations122#alias -1 : EGGANI_NONE123#alias 0 : EGGANI_IDLE124#alias 1 : EGGANI_LAUGH125#alias 2 : EGGANI_HURT126#alias 3 : EGGANI_DESTROYED127128// EGG-HVC-001 Body Bit 0 Aliases129#alias 0 : KEY_EVENT_FALSE130#alias 1 : KEY_EVENT_TRUE131132// EGG-HVC-001 Body Bit 1 Aliases133#alias 0 : MOVE_FORWARD134#alias 1 : MOVE_BACKWARDS135136// EGG-HVC-001 Body Bit 6 Aliases137#alias 0 : LEFT_LEG_ACTIVE138#alias 1 : RIGHT_LEG_ACTIVE139140// Global SFX141#alias 22 : SFX_G_EXPLOSION142143// Priority144#alias 1 : PRIORITY_ACTIVE145146// Function declarations147#function R1_EGGMAN2_Oscillation148149function R1_EGGMAN2_Oscillation150switch Object.Oscillation151case 0152TempValue0 = 1153break154case 1155TempValue0 = 0156break157case 2158TempValue0 = 2159break160case 3161TempValue0 = 0162break163case 4164TempValue0 = 3165break166case 5167TempValue0 = 0168break169case 6170TempValue0 = 4171break172case 7173TempValue0 = 5174break175case 8176TempValue0 = 5177break178case 9179TempValue0 = 5180break181case 10182TempValue0 = 6183break184case 11185TempValue0 = 10186break187case 12188TempValue0 = 4189break190case 13191TempValue0 = 14192break193case 14194TempValue0 = 8195break196case 15197TempValue0 = 50198break199case 16200TempValue0 = 5201break202case 17203TempValue0 = 14204break205case 18206case 19207TempValue0 = -1208break209end switch210end function211212213sub ObjectMain214switch Object.State215case R1_EGGMAN2_SETUP216Object.Animation = EGGANI_NONE217Object.Priority = PRIORITY_ACTIVE218219Object.BodyEntity = Object.EntityNo220Object.BodyEntity += 1221222Object.ShoulderEntity = Object.EntityNo223Object.ShoulderEntity += 8224225Object.NewXBoundary1Value = BossBody.iXPos226227Object.NewXBoundary2Value = Object.NewXBoundary1Value228Object.NewXBoundary2Value += 320229230TempValue0 = Screen.CenterX231TempValue0 -= 160232TempValue0 >>= 1233Object.NewXBoundary2Value += TempValue0234235Object.SavedXBoundary2 = Stage.XBoundary2236Object.SavedYBoundary2 = Stage.YBoundary2237238Stage.NewXBoundary2 = Object.NewXBoundary2Value239240Object.State = R1_EGGMAN2_WAIT_PLAYER241break242243case R1_EGGMAN2_WAIT_PLAYER244TempValue0 = Object.NewXBoundary1Value245if Screen.CenterX > 160246TempValue0 += 180247else248TempValue0 += 160249end if250TempValue0 <<= 16251252if Player.XPos > TempValue0253TempValue0 = Object.YPos254TempValue0 += 0xC00000255256if Player.YPos > TempValue0257Stage.NewXBoundary1 = Object.NewXBoundary1Value258Stage.YBoundary2 = Player.YPos259Stage.YBoundary2 >>= 16260Stage.YBoundary2 += 160261262if Stage.YBoundary2 < 256263Stage.YBoundary2 = 256264end if265266Object.State = R1_EGGMAN2_SET_BOUNDARIES267end if268269end if270break271272case R1_EGGMAN2_BODY_CONTROLLER273if Object.Timer > 0274Object.Timer--275end if276if BossBody.State > 2277if Object.FaceTimer > 0278Object.FaceTimer--279else280Object.Animation = EGGANI_IDLE281end if282end if283284ArrayPos0 = Object.BodyEntity285GetBit(TempValue0, Body[ArrayPos0].BitHolder, 0)286if TempValue0 == KEY_EVENT_TRUE287if Body[ArrayPos0].State == BOSSBODY2_PREPARE_CHARGING288// Object +15 is a blank object used to hold values289Object.YPos = Object[+15].Value0290BossBody.YPos = Object[+15].Value1291BossLegJointR.YPos = Object[+15].Value2292BossLegR.YVelocity = Object[+15].Value3293BossLegR.YPos = Object[+15].YPos294BossFootR.YVelocity = Object[+15].Value4295BossLegJointL.YPos = Object[+15].Value5296BossLegL.YVelocity = Object[+15].Value6297BossFootL.YVelocity = Object[+15].Value7298GetBit(TempValue0, Body[ArrayPos0].BitHolder, 6)299if TempValue0 == LEFT_LEG_ACTIVE300SetBit(Body[ArrayPos0].BitHolder, 6, RIGHT_LEG_ACTIVE)301else302SetBit(Body[ArrayPos0].BitHolder, 6, LEFT_LEG_ACTIVE)303end if304end if305306SetBit(Body[ArrayPos0].BitHolder, 0, KEY_EVENT_FALSE)307if Object.Oscillation == 2308SetBit(Object.BitHolder, 3, 1) // This may be a typo... it's supposed to be changing the [Boss Body]'s value instead I imagine?309end if310311SetBit(Body[ArrayPos0].BitHolder, 1, MOVE_FORWARD)312Object.Oscillation += 2313CallFunction(R1_EGGMAN2_Oscillation)314if TempValue0 < 0315Object.Oscillation = 6316end if317318CallFunction(R1_EGGMAN2_Oscillation)319if TempValue0 == 6 // Go back320// Object +15 is a blank object used to hold values321Object[+15].Value0 = Object.YPos322Object[+15].Value1 = BossBody.YPos323Object[+15].Value2 = BossLegJointR.YPos324Object[+15].Value3 = BossLegR.YVelocity325Object[+15].YPos = BossLegR.YPos326Object[+15].Value4 = BossFootR.YVelocity327Object[+15].Value5 = BossLegJointL.YPos328Object[+15].Value6 = BossLegL.YVelocity329Object[+15].Value7 = BossFootL.YVelocity330end if331332if Body[ArrayPos0].State == BOSSBODY2_MOVE_BACKWARDS333if TempValue0 == 4334GetBit(TempValue1, Body[ArrayPos0].BitHolder, 6)335if TempValue1 == LEFT_LEG_ACTIVE336SetBit(Body[ArrayPos0].BitHolder, 6, RIGHT_LEG_ACTIVE)337else338SetBit(Body[ArrayPos0].BitHolder, 6, LEFT_LEG_ACTIVE)339end if340end if341end if342343Body[ArrayPos0].State = TempValue0344Object.Oscillation++345CallFunction(R1_EGGMAN2_Oscillation)346Object.Oscillation--347Body[ArrayPos0].ChargeStart = TempValue0348end if349break350351case R1_EGGMAN2_DEFEATED352if Object.Timer < 160353Object.Timer++354355TempValue0 = Object.Timer356TempValue0 &= 3357if TempValue0 == 3358Rand(TempValue0, 128)359TempValue0 -= 64360TempValue0 <<= 16361TempValue0 += Object.XPos362363Rand(TempValue1, 64)364TempValue1 -= 32365TempValue1 <<= 16366TempValue1 += Object.YPos367368CreateTempObject(TypeName[Explosion], 0, TempValue0, TempValue1)369370PlaySfx(SFX_G_EXPLOSION, false)371end if372373if Object.Timer == 94374TempValue0 = Object.EntityNo375TempValue0++376377Player.Score += 1000378ResetObjectEntity(TempValue0, TypeName[Eggman Jetpack], 0, Object.XPos, Object.YPos)379Object.Animation = EGGANI_DESTROYED380381#platform: Use_Haptics382HapticEffect(76, 0, 0, 0)383#endplatform384end if385end if386break387388case R1_EGGMAN2_BLANK389break390391case R1_EGGMAN2_RESTORE_BOUNDS392if Object.Timer < 120393Music.Volume--394395Stage.YBoundary2 += 4396Stage.XBoundary2 += 6397398Object.Timer++399else400Stage.YBoundary2 = Object.SavedYBoundary2401Stage.XBoundary2 = Object.SavedXBoundary2402PlayMusic(0)403Object.Type = TypeName[Blank Object]404end if405break406407case R1_EGGMAN2_SET_BOUNDARIES408if Stage.YBoundary2 > BossBody.iYPos409Stage.YBoundary2 -= 2410Stage.YBoundary1 += 2411else412Stage.YBoundary2 = BossBody.iYPos413TempValue0 = BossBody.iYPos414TempValue0 -= Screen.YSize415if TempValue0 < 0416TempValue0 = 0417end if418Stage.NewYBoundary1 = TempValue0419420Object.Timer = 0421422Object.State = R1_EGGMAN2_SPAWN_HVC423end if424break425426case R1_EGGMAN2_SPAWN_HVC427if Object.Timer < 120428if Object.Timer < 100429Music.Volume--430else431if Object.Timer == 100432PlayMusic(4)433end if434end if435Object.Timer++436else437Object.Timer = 0438Object.State = R1_EGGMAN2_BODY_CONTROLLER439Object.Animation = EGGANI_LAUGH440441ArrayPos0 = Object.EntityNo442ArrayPos0++443444if Object.BossSpeed < 1445Object.BossSpeed = 10 // Sets the speed of the boss for the mission446end if447448ResetObjectEntity(ArrayPos0, TypeName[BossBody2], Object.BossSpeed, Object.XPos, Object.YPos)449BossPart[ArrayPos0].Priority = PRIORITY_ACTIVE450451Body[ArrayPos0].FaceEntity = Object.EntityNo452453Body[ArrayPos0].LegJointREntity = Object.EntityNo454Body[ArrayPos0].LegJointREntity += 2455456Body[ArrayPos0].LegJointLEntity = Object.EntityNo457Body[ArrayPos0].LegJointLEntity += 5458ArrayPos0++459460ResetObjectEntity(ArrayPos0, TypeName[BossLegJoint2], Object.BossSpeed, Object.XPos, Object.YPos)461BossPart[ArrayPos0].Priority = PRIORITY_ACTIVE462463// Boss Body464BossPart[ArrayPos0].PrevEntity = Object.EntityNo465BossPart[ArrayPos0].PrevEntity += 1466467// Leg R468BossPart[ArrayPos0].NextEntity = Object.EntityNo469BossPart[ArrayPos0].NextEntity += 3470ArrayPos0++471472ResetObjectEntity(ArrayPos0, TypeName[BossLeg2], Object.BossSpeed, Object.XPos, Object.YPos)473BossPart[ArrayPos0].Priority = PRIORITY_ACTIVE474475// Leg Joint R476BossPart[ArrayPos0].PrevEntity = Object.EntityNo477BossPart[ArrayPos0].PrevEntity += 2478479// Foot R480BossPart[ArrayPos0].NextEntity = Object.EntityNo481BossPart[ArrayPos0].NextEntity += 4482ArrayPos0++483484ResetObjectEntity(ArrayPos0, TypeName[BossFoot2], Object.BossSpeed, Object.XPos, Object.YPos)485BossPart[ArrayPos0].Priority = PRIORITY_ACTIVE486487// Leg R488BossPart[ArrayPos0].PrevEntity = Object.EntityNo489BossPart[ArrayPos0].PrevEntity += 3490491// Boss Body492BossPart[ArrayPos0].NextEntity = Object.EntityNo493BossPart[ArrayPos0].NextEntity += 1494ArrayPos0++495496ResetObjectEntity(ArrayPos0, TypeName[BossLegJoint2], Object.BossSpeed, Object.XPos, Object.YPos)497BossPart[ArrayPos0].Priority = PRIORITY_ACTIVE498BossPart[ArrayPos0].DrawOrder = 2499500// Boss Body501BossPart[ArrayPos0].PrevEntity = Object.EntityNo502BossPart[ArrayPos0].PrevEntity += 1503504// Leg L505BossPart[ArrayPos0].NextEntity = Object.EntityNo506BossPart[ArrayPos0].NextEntity += 6507ArrayPos0++508509ResetObjectEntity(ArrayPos0, TypeName[BossLeg2], Object.BossSpeed, Object.XPos, Object.YPos)510BossPart[ArrayPos0].Priority = PRIORITY_ACTIVE511BossPart[ArrayPos0].DrawOrder = 2512513// Leg Joint L514BossPart[ArrayPos0].PrevEntity = Object.EntityNo515BossPart[ArrayPos0].PrevEntity += 5516517// Foot L518BossPart[ArrayPos0].NextEntity = Object.EntityNo519BossPart[ArrayPos0].NextEntity += 7520ArrayPos0++521522ResetObjectEntity(ArrayPos0, TypeName[BossFoot2], Object.BossSpeed, Object.XPos, Object.YPos)523BossPart[ArrayPos0].Priority = PRIORITY_ACTIVE524BossPart[ArrayPos0].DrawOrder = 2525526// Leg L527BossPart[ArrayPos0].PrevEntity = Object.EntityNo528BossPart[ArrayPos0].PrevEntity += 6529530// Boss Body531BossPart[ArrayPos0].NextEntity = Object.EntityNo532BossPart[ArrayPos0].NextEntity += 1533ArrayPos0++534535ResetObjectEntity(ArrayPos0, TypeName[BossShoulder], 0, Object.XPos, Object.YPos)536BossPart[ArrayPos0].Priority = PRIORITY_ACTIVE537BossPart[ArrayPos0].DrawOrder = 4538539Shoulder[ArrayPos0].FaceEntity = Object.EntityNo540541// Arm Joint L542Shoulder[ArrayPos0].ArmJointLEntity = Object.EntityNo543Shoulder[ArrayPos0].ArmJointLEntity += 9544545// Arm Joint R546Shoulder[ArrayPos0].ArmJointREntity = Object.EntityNo547Shoulder[ArrayPos0].ArmJointREntity += 12548ArrayPos0++549550ResetObjectEntity(ArrayPos0, TypeName[BossArmJoint2], Object.BossSpeed, Object.XPos, Object.YPos)551BossPart[ArrayPos0].Priority = PRIORITY_ACTIVE552553// Shoulder554BossPart[ArrayPos0].PrevEntity = Object.EntityNo555BossPart[ArrayPos0].PrevEntity += 8556557// Arm L558BossPart[ArrayPos0].NextEntity = Object.EntityNo559BossPart[ArrayPos0].NextEntity += 10560ArrayPos0++561562ResetObjectEntity(ArrayPos0, TypeName[BossArm2], Object.BossSpeed, Object.XPos, Object.YPos)563BossPart[ArrayPos0].Priority = PRIORITY_ACTIVE564565// Arm Joint L566BossPart[ArrayPos0].PrevEntity = Object.EntityNo567BossPart[ArrayPos0].PrevEntity += 9568569// Bumper L570BossPart[ArrayPos0].NextEntity = Object.EntityNo571BossPart[ArrayPos0].NextEntity += 11572ArrayPos0++573574ResetObjectEntity(ArrayPos0, TypeName[BossBumper2], Object.BossSpeed, Object.XPos, Object.YPos)575BossPart[ArrayPos0].Priority = PRIORITY_ACTIVE576577// Arm L578BossPart[ArrayPos0].PrevEntity = Object.EntityNo579BossPart[ArrayPos0].PrevEntity += 10580581// Boss Body582BossPart[ArrayPos0].NextEntity = Object.EntityNo583BossPart[ArrayPos0].NextEntity += 1584ArrayPos0++585586ResetObjectEntity(ArrayPos0, TypeName[BossArmJoint2], Object.BossSpeed, Object.XPos, Object.YPos)587BossPart[ArrayPos0].Priority = PRIORITY_ACTIVE588BossPart[ArrayPos0].DrawOrder = 2589590// Shoulder591BossPart[ArrayPos0].PrevEntity = Object.EntityNo592BossPart[ArrayPos0].PrevEntity += 8593594// Arm R595BossPart[ArrayPos0].NextEntity = Object.EntityNo596BossPart[ArrayPos0].NextEntity += 13597ArrayPos0++598599ResetObjectEntity(ArrayPos0, TypeName[BossArm2], Object.BossSpeed, Object.XPos, Object.YPos)600BossPart[ArrayPos0].Priority = PRIORITY_ACTIVE601BossPart[ArrayPos0].DrawOrder = 2602603// Arm Joint R604BossPart[ArrayPos0].PrevEntity = Object.EntityNo605BossPart[ArrayPos0].PrevEntity += 12606607// Bumper R608BossPart[ArrayPos0].NextEntity = Object.EntityNo609BossPart[ArrayPos0].NextEntity += 14610ArrayPos0++611612ResetObjectEntity(ArrayPos0, TypeName[BossBumper2], Object.BossSpeed, Object.XPos, Object.YPos)613BossPart[ArrayPos0].Priority = PRIORITY_ACTIVE614BossPart[ArrayPos0].DrawOrder = 2615616// Arm R617BossPart[ArrayPos0].PrevEntity = Object.EntityNo618BossPart[ArrayPos0].PrevEntity += 13619620// Boss Body621BossPart[ArrayPos0].NextEntity = Object.EntityNo622BossPart[ArrayPos0].NextEntity += 1623ArrayPos0++624end if625break626end switch627end sub628629630sub ObjectPlayerInteraction631TempValue0 = Player.CollisionRight632TempValue0 <<= 16633TempValue0 += Player.XPos634635TempValue1 = Stage.XBoundary2636TempValue1 <<= 16637if TempValue0 > TempValue1638Player.XVelocity = 0639Player.Speed = 0640Player.XPos = TempValue1641642TempValue0 = Player.CollisionRight643TempValue0 <<= 16644Player.XPos -= TempValue0645end if646647if Object.State > R1_EGGMAN2_WAIT_PLAYER648if Player.Animation != ANI_HURT649if Object.Hit < 3650PlayerObjectCollision(C_ENEMY, -28, -28, 28, 28)651if CheckResult == true652TempValue2 = false653CheckEqual(Player.Animation, ANI_JUMPING)654TempValue2 |= CheckResult655CheckEqual(Player.Animation, ANI_HAMMER_JUMP)656TempValue2 |= CheckResult657CheckEqual(Player.Animation, ANI_HAMMER_DASH)658TempValue2 |= CheckResult659if TempValue2 == true660Player.XVelocity = Player.XPos661Player.XVelocity -= Object.XPos662Player.XVelocity >>= 3663Player.Speed = Player.XVelocity664665Player.YVelocity = Player.YPos666Player.YVelocity -= Object.YPos667Player.YVelocity >>= 3668669if Object.Timer == 0670if BossBody.State != BOSSBODY2_DESCEND671PlaySfx(SFX_G_EXPLOSION, false)672673switch Object.Hit674case 0675Object.Hit++676Object.Timer = 30677Object.Animation = EGGANI_HURT678Object.FaceTimer = 120679680ArrayPos0 = Object.ShoulderEntity681ArrayPos1 = Shoulder[ArrayPos0].ArmJointREntity682Debris[ArrayPos1].State = BOSSARMJOINT2_DESTROYED683Debris[ArrayPos1].XOffSet = 0x10000684Debris[ArrayPos1].YOffSet = 0x20000685686// Arm Joint R to Arm R687ArrayPos0 = BossPart[ArrayPos1].NextEntity688Debris[ArrayPos0].State = BOSSARM2_DESTROYED689Debris[ArrayPos0].XOffSet = 0690Debris[ArrayPos0].YOffSet = 0x10000691692// Arm R to Bumper R693ArrayPos1 = BossPart[ArrayPos0].NextEntity694Debris[ArrayPos1].State = BOSSBUMPER2_DESTROYED695Debris[ArrayPos1].XOffSet = 0696Debris[ArrayPos1].YOffSet = -0x18000697break698699case 1700Object.Hit++701Object.Timer = 30702Object.Animation = EGGANI_HURT703Object.FaceTimer = 120704705ArrayPos0 = Object.ShoulderEntity706ArrayPos1 = Shoulder[ArrayPos0].ArmJointLEntity707Debris[ArrayPos1].State = BOSSARMJOINT2_DESTROYED708Debris[ArrayPos1].XOffSet = 0x10000709Debris[ArrayPos1].YOffSet = 0x20000710711// Arm Joint L to Arm L712ArrayPos0 = BossPart[ArrayPos1].NextEntity713Debris[ArrayPos0].State = BOSSARM2_DESTROYED714Debris[ArrayPos0].XOffSet = 0715Debris[ArrayPos0].YOffSet = 0x10000716717// ArmL to Bumper L718ArrayPos1 = BossPart[ArrayPos0].NextEntity719Debris[ArrayPos1].State = BOSSBUMPER2_DESTROYED720Debris[ArrayPos1].XOffSet = 0721Debris[ArrayPos1].YOffSet = -0x18000722break723724case 2725Object.Hit++726Object.State = R1_EGGMAN2_DEFEATED727Object.Animation = EGGANI_HURT728729Stage.TimeEnabled = false730731ArrayPos0 = Object.BodyEntity732Body[ArrayPos0].State = BOSSBODY2_DESTROYED733734ArrayPos0 = Object.ShoulderEntity735Debris[ArrayPos0].State = BOSSSHOULDER2_DESTROYED736Debris[ArrayPos0].XOffSet = -0x10000737Debris[ArrayPos0].YOffSet = -0x20000738739ArrayPos0 = Object.BodyEntity740ArrayPos1 = Body[ArrayPos0].LegJointREntity741Debris[ArrayPos1].State = BOSSLEGJOINT2_DESTROYED742Debris[ArrayPos1].XOffSet = 0743Debris[ArrayPos1].YOffSet = -0x28000744745// Leg Joint R to Leg R746ArrayPos0 = BossPart[ArrayPos1].NextEntity747Debris[ArrayPos0].State = BOSSLEG2_DESTROYED748Debris[ArrayPos0].XOffSet = 0749Debris[ArrayPos0].YOffSet = -0x20000750751// Leg R to Foot R752ArrayPos1 = BossPart[ArrayPos0].NextEntity753Debris[ArrayPos1].State = BOSSFOOT2_DESTROYED754Debris[ArrayPos1].XOffSet = 0755Debris[ArrayPos1].YOffSet = -0x23000756757ArrayPos0 = Object.BodyEntity758ArrayPos1 = Body[ArrayPos0].LegJointLEntity759Debris[ArrayPos1].State = BOSSLEGJOINT2_DESTROYED760Debris[ArrayPos1].XOffSet = 0761Debris[ArrayPos1].YOffSet = -0x28000762763// Leg Joint L to Leg L764ArrayPos0 = BossPart[ArrayPos1].NextEntity765Debris[ArrayPos0].State = BOSSLEG2_DESTROYED766Debris[ArrayPos0].XOffSet = 0767Debris[ArrayPos0].YOffSet = -0x20000768769// Leg L to Foot L770ArrayPos1 = BossPart[ArrayPos0].NextEntity771Debris[ArrayPos1].State = BOSSFOOT2_DESTROYED772Debris[ArrayPos1].XOffSet = 0773Debris[ArrayPos1].YOffSet = -0x23000774775break776end switch777end if778end if779else780if Player.InvincibleTimer == 0781Object.Animation = EGGANI_LAUGH782Object.FaceTimer = 180783Player.State = Player_State_GotHit784if Player.XPos > Object.XPos785Player.Speed = 0x20000786else787Player.Speed = -0x20000788end if789end if790end if791end if792end if793end if794end if795end sub796797798sub ObjectDraw799switch Object.Animation800case EGGANI_IDLE801DrawSprite(0)802break803804case EGGANI_LAUGH805if Object.FrameTimer < 8806Object.FrameTimer = 8807else808if Object.FrameTimer > 23809Object.FrameTimer = 8810end if811end if812813Object.Frame = Object.FrameTimer814Object.Frame >>= 3815816Object.FrameTimer++817818DrawSprite(Object.Frame)819break820821case EGGANI_HURT822if Object.FrameTimer < 12823Object.FrameTimer = 12824else825if Object.FrameTimer > 27826Object.FrameTimer = 12827end if828end if829830Object.Frame = Object.FrameTimer831Object.Frame >>= 2832833Object.FrameTimer++834835DrawSprite(Object.Frame)836break837end switch838end sub839840841sub ObjectStartup842LoadSpriteSheet("R1/Objects3.gif")843844SpriteFrame(-28, -24, 40, 16, 206, 1) // #0 - Eggman Idle845846SpriteFrame(-28, -24, 40, 16, 206, 18) // #1 - Eggman Laugh Frame 0847SpriteFrame(-28, -24, 40, 16, 206, 35) // #2 - Eggman Laugh Frame 1848849SpriteFrame(-28, -40, 40, 32, 124, 1) // #3 - Eggman Hurt Frame 0850SpriteFrame(-28, -24, 40, 16, 206, 52) // #4 - Eggman Hurt Frame 1851SpriteFrame(-28, -40, 40, 32, 165, 1) // #5 - Eggman Hurt Frame 2852SpriteFrame(-28, -24, 40, 16, 206, 69) // #6 - Eggman Hurt Frame 3853854ArrayPos0 = 32855while ArrayPos0 < 1056856if Object[ArrayPos0].Type == TypeName[Boss Face]857Object[ArrayPos0].Type = TypeName[BossFace2]858ArrayPos0 = 2000859end if860ArrayPos0++861loop862end sub863864865// ========================866// Editor Subs867// ========================868869sub RSDKDraw870DrawSprite(0)871end sub872873874sub RSDKLoad875LoadSpriteSheet("R1/Objects3.gif")876SpriteFrame(-28, -24, 40, 16, 206, 1) // #0 - Eggman Idle877878SetVariableAlias(ALIAS_VAR_PROPVAL, "unused")879end sub880881882