Path: blob/main/Scripts/R1/Boss_Face.txt
1319 views
//----------------Sonic CD Boss Face Script-------------------//1//--------Scripted by Christian Whitehead 'The Taxman'--------//2//-------Unpacked By Rubberduckycooly's Script Unpacker-------//34// Aliases5#alias Object.Value0 : Object.Oscillation6#alias Object.Value1 : Object.BodyEntity7#alias Object.Value2 : Object.ShoulderEntity8#alias Object.Value3 : Object.Hit9#alias Object.Value4 : Object.BitHolder // Unused?10#alias Object.Value5 : Object.NewXBoundary1Value11#alias Object.Value6 : Object.NewXBoundary2Value12#alias Object.Value7 : Object.SavedXBoundary21314#alias Object.Rotation : Object.Timer15#alias Object.Direction : Object.FaceTimer16#alias Object.Scale : Object.SavedYBoundary217#alias Object.InkEffect : Object.FrameTimer1819// EGG-HVC-001 Body Aliases20#alias Object[+1].iXPos : BossBody.iXPos21#alias Object[+1].iYPos : BossBody.iYPos22#alias Object[+1].YPos : BossBody.YPos23#alias Object[+1].State : BossBody.State24#alias Object.Value0 : Body.FaceEntity25#alias Object.Value1 : Body.LegJointREntity26#alias Object.Value2 : Body.LegJointLEntity2728// Value4 is used to check key events, forward/backward movement and currently active leg29#alias Object.Value4 : Body.BitHolder30#alias Object.Value5 : Body.ChargeStart31#alias Object.State : Body.State3233// General Aliases34#alias Object.Priority : BossPart.Priority35#alias Object.DrawOrder : BossPart.DrawOrder36#alias Object.Value0 : BossPart.PrevEntity37#alias Object.Value1 : BossPart.NextEntity3839// HVC-001 Boss Right Leg Joint Aliases40#alias Object[+2].YPos : BossLegJointR.YPos4142// HVC-001 Boss Right Leg Aliases43#alias Object[+3].YPos : BossLegR.YPos44#alias Object[+3].Value7 : BossLegR.YVelocity4546// HVC-001 Boss Right Foot Aliases47#alias Object[+4].Value7 : BossFootR.YVelocity48// HVC-001 Boss Left Leg Joint Aliases49#alias Object[+5].YPos : BossLegJointL.YPos5051// HVC-001 Boss Left Leg Aliases52#alias Object[+6].Value7 : BossLegL.YVelocity5354// HVC-001 Boss Left Foot Aliases55#alias Object[+7].Value7 : BossFootL.YVelocity5657// HVC-001 Boss Shoulder Aliases58#alias Object[+8].YPos : BossShoulder.YPos59#alias Object.Value0 : Shoulder.FaceEntity60#alias Object.Value1 : Shoulder.ArmJointLEntity61#alias Object.Value2 : Shoulder.ArmJointREntity6263// HVC-001 Boss Left Arm Joint Aliases64#alias Object[+9].YPos : BossArmJointL.YPos6566// HVC-001 Boss Left Arm Aliases67#alias Object[+10].YPos : BossArmL.YPos68// HVC-001 Boss Left Bumper Joint Aliases69#alias Object[+11].YPos : BossBumperL.YPos7071// HVC-001 Boss Right Arm Joint Aliases72#alias Object[+12].YPos : BossArmJointR.YPos7374// HVC-001 Boss Right Arm Aliases75#alias Object[+13].YPos : BossArmR.YPos7677// HVC-001 Boss Right Bumper Joint Aliases78#alias Object[+14].YPos : BossBumperR.YPos7980#alias Object.State : Debris.State81#alias Object.Value2 : Debris.XOffSet82#alias Object.Value5 : Debris.YOffSet8384// Player Aliases85#alias Player.Value4 : Player.InvincibleTimer8687// States88#alias 0 : R1_EGGMAN_SETUP89#alias 1 : R1_EGGMAN_WAIT_PLAYER90#alias 2 : R1_EGGMAN_BODY_CONTROLLER91#alias 3 : R1_EGGMAN_DEFEATED92#alias 4 : R1_EGGMAN_BLANK93#alias 5 : R1_EGGMAN_RESTORE_BOUNDS94#alias 6 : R1_EGGMAN_SET_BOUNDARIES95#alias 7 : R1_EGGMAN_SPAWN_HVC9697// EGG-HVC-001 Body States98#alias 1 : BOSSBODY_DESCEND99#alias 5 : BOSSBODY_MOVE_BACKWARDS100#alias 6 : BOSSBODY_PREPARE_CHARGING101#alias 7 : BOSSBODY_DESTROYED102103// EGG-HVC-001 Arm Joint States104#alias 5 : BOSSARMJOINT_DESTROYED105// EGG-HVC-001 Arm States106#alias 2 : BOSSARM_DESTROYED107// EGG-HVC-001 Bumper States108#alias 2 : BOSSBUMPER_DESTROYED109// EGG-HVC-001 Leg Joint States110#alias 12 : BOSSLEGJOINT_DESTROYED111// EGG-HVC-001 Leg States112#alias 7 : BOSSLEG_DESTROYED113// EGG-HVC-001 Foot States114#alias 6 : BOSSFOOT_DESTROYED115// EGG-HVC-001 Shoulder States116#alias 2 : BOSSSHOULDER_DESTROYED117118// Eggman Animations119#alias -1 : EGGANI_NONE120#alias 0 : EGGANI_IDLE121#alias 1 : EGGANI_LAUGH122#alias 2 : EGGANI_HURT123#alias 3 : EGGANI_DESTROYED124125// EGG-HVC-001 Body Bit 0 Aliases126#alias 0 : KEY_EVENT_FALSE127#alias 1 : KEY_EVENT_TRUE128129// EGG-HVC-001 Body Bit 1 Aliases130#alias 0 : MOVE_FORWARD131#alias 1 : MOVE_BACKWARDS132133// EGG-HVC-001 Body Bit 6 Aliases134#alias 0 : LEFT_LEG_ACTIVE135#alias 1 : RIGHT_LEG_ACTIVE136137// Global SFX138#alias 22 : SFX_G_EXPLOSION139140// Priority141#alias 1 : PRIORITY_ACTIVE142143// Function declarations144#function R1_EGGMAN_Oscillation145146// Fake Table for Oscillation of the boss height147function R1_EGGMAN_Oscillation148switch Object.Oscillation149case 0150TempValue0 = 1151break152case 1153TempValue0 = 0154break155case 2156TempValue0 = 2157break158case 3159TempValue0 = 0160break161case 4162TempValue0 = 3163break164case 5165TempValue0 = 0166break167case 6168TempValue0 = 4169break170case 7171TempValue0 = 5172break173case 8174TempValue0 = 5175break176case 9177TempValue0 = 6178break179case 10180TempValue0 = 6181break182case 11183TempValue0 = 10184break185case 12186TempValue0 = 4187break188case 13189TempValue0 = 10190break191case 14192TempValue0 = 8193break194case 15195TempValue0 = 50196break197case 16198TempValue0 = 5199break200case 17201TempValue0 = 10202break203case 18204case 19205TempValue0 = -1206break207end switch208end function209210211sub ObjectMain212switch Object.State213case R1_EGGMAN_SETUP214Object.Animation = EGGANI_NONE215Object.Priority = PRIORITY_ACTIVE216217Object.BodyEntity = Object.EntityNo218Object.BodyEntity += 1219220Object.ShoulderEntity = Object.EntityNo221Object.ShoulderEntity += 8222223Object.NewXBoundary1Value = BossBody.iXPos224225Object.NewXBoundary2Value = Object.NewXBoundary1Value226Object.NewXBoundary2Value += 320227228TempValue0 = Screen.CenterX229TempValue0 -= 160230TempValue0 >>= 1231Object.NewXBoundary2Value += TempValue0232233Object.SavedXBoundary2 = Stage.XBoundary2234Object.SavedYBoundary2 = Stage.YBoundary2235236Stage.NewXBoundary2 = Object.NewXBoundary2Value237238Object.State = R1_EGGMAN_WAIT_PLAYER239break240241case R1_EGGMAN_WAIT_PLAYER242TempValue0 = Object.NewXBoundary1Value243if Screen.CenterX > 160244TempValue0 += 180245else246TempValue0 += 160247end if248TempValue0 <<= 16249250if Player.XPos > TempValue0251TempValue0 = Object.YPos252TempValue0 += 0xC00000253254if Player.YPos > TempValue0255Stage.NewXBoundary1 = Object.NewXBoundary1Value256Stage.YBoundary2 = Player.YPos257Stage.YBoundary2 >>= 16258Stage.YBoundary2 += 160259260if Stage.YBoundary2 < 256261Stage.YBoundary2 = 256262end if263264Object.State = R1_EGGMAN_SET_BOUNDARIES265end if266267end if268break269270case R1_EGGMAN_BODY_CONTROLLER271if Object.Timer > 0272Object.Timer--273end if274if BossBody.State > 2275if Object.FaceTimer > 0276Object.FaceTimer--277else278Object.Animation = EGGANI_IDLE279end if280end if281282ArrayPos0 = Object.BodyEntity283GetBit(TempValue0, Body[ArrayPos0].BitHolder, 0)284if TempValue0 == KEY_EVENT_TRUE285if Body[ArrayPos0].State == BOSSBODY_PREPARE_CHARGING286// Object +15 is a blank object used to hold values287Object.YPos = Object[+15].Value0288BossBody.YPos = Object[+15].Value1289BossLegJointR.YPos = Object[+15].Value2290BossLegR.YVelocity = Object[+15].Value3291BossLegR.YPos = Object[+15].YPos292BossFootR.YVelocity = Object[+15].Value4293BossLegJointL.YPos = Object[+15].Value5294BossLegL.YVelocity = Object[+15].Value6295BossFootL.YVelocity = Object[+15].Value7296GetBit(TempValue0, Body[ArrayPos0].BitHolder, 6)297if TempValue0 == LEFT_LEG_ACTIVE298SetBit(Body[ArrayPos0].BitHolder, 6, RIGHT_LEG_ACTIVE)299else300SetBit(Body[ArrayPos0].BitHolder, 6, LEFT_LEG_ACTIVE)301end if302end if303304SetBit(Body[ArrayPos0].BitHolder, 0, KEY_EVENT_FALSE)305if Object.Oscillation == 2306SetBit(Object.BitHolder, 3, 1) // This may be a typo... it's supposed to be changing the [Boss Body]'s value instead I imagine307end if308309SetBit(Body[ArrayPos0].BitHolder, 1, MOVE_FORWARD)310Object.Oscillation += 2311CallFunction(R1_EGGMAN_Oscillation)312if TempValue0 < 0313Object.Oscillation = 6314end if315316CallFunction(R1_EGGMAN_Oscillation)317if TempValue0 == 6 // Go back318// Object +15 is a blank object used to hold values319Object[+15].Value0 = Object.YPos320Object[+15].Value1 = BossBody.YPos321Object[+15].Value2 = BossLegJointR.YPos322Object[+15].Value3 = BossLegR.YVelocity323Object[+15].YPos = BossLegR.YPos324Object[+15].Value4 = BossFootR.YVelocity325Object[+15].Value5 = BossLegJointL.YPos326Object[+15].Value6 = BossLegL.YVelocity327Object[+15].Value7 = BossFootL.YVelocity328end if329330if Body[ArrayPos0].State == BOSSBODY_MOVE_BACKWARDS331if TempValue0 == 4332GetBit(TempValue1, Body[ArrayPos0].BitHolder, 6)333if TempValue1 == LEFT_LEG_ACTIVE334SetBit(Body[ArrayPos0].BitHolder, 6, RIGHT_LEG_ACTIVE)335else336SetBit(Body[ArrayPos0].BitHolder, 6, LEFT_LEG_ACTIVE)337end if338end if339end if340341Body[ArrayPos0].State = TempValue0342Object.Oscillation++343CallFunction(R1_EGGMAN_Oscillation)344Object.Oscillation--345Body[ArrayPos0].ChargeStart = TempValue0346end if347break348349case R1_EGGMAN_DEFEATED350if Object.Timer < 160351Object.Timer++352353TempValue0 = Object.Timer354TempValue0 &= 3355if TempValue0 == 3356Rand(TempValue0, 128)357TempValue0 -= 64358TempValue0 <<= 16359TempValue0 += Object.XPos360361Rand(TempValue1, 64)362TempValue1 -= 32363TempValue1 <<= 16364TempValue1 += Object.YPos365366CreateTempObject(TypeName[Explosion], 0, TempValue0, TempValue1)367368PlaySfx(SFX_G_EXPLOSION, false)369end if370371if Object.Timer == 94372TempValue0 = Object.EntityNo373TempValue0++374375Player.Score += 1000376ResetObjectEntity(TempValue0, TypeName[Eggman Jetpack], 0, Object.XPos, Object.YPos)377Object.Animation = EGGANI_DESTROYED378379#platform: Use_Haptics380HapticEffect(76, 0, 0, 0)381#endplatform382end if383end if384break385386case R1_EGGMAN_BLANK387break388389case R1_EGGMAN_RESTORE_BOUNDS390if Object.Timer < 120391Music.Volume--392393Stage.YBoundary2 += 4394Stage.XBoundary2 += 6395396Object.Timer++397else398Stage.YBoundary2 = Object.SavedYBoundary2399Stage.XBoundary2 = Object.SavedXBoundary2400PlayMusic(0)401Object.Type = TypeName[Blank Object]402end if403break404405case R1_EGGMAN_SET_BOUNDARIES406if Stage.YBoundary2 > BossBody.iYPos407Stage.YBoundary2 -= 2408Stage.YBoundary1 += 2409else410Stage.YBoundary2 = BossBody.iYPos411TempValue0 = BossBody.iYPos412TempValue0 -= Screen.YSize413if TempValue0 < 0414TempValue0 = 0415end if416Stage.NewYBoundary1 = TempValue0417418Object.Timer = 0419420Object.State = R1_EGGMAN_SPAWN_HVC421end if422break423424case R1_EGGMAN_SPAWN_HVC425if Object.Timer < 120426if Object.Timer < 100427Music.Volume--428else429if Object.Timer == 100430PlayMusic(4)431end if432end if433Object.Timer++434else435Object.Timer = 0436Object.State = R1_EGGMAN_BODY_CONTROLLER437Object.Animation = EGGANI_LAUGH438439ArrayPos0 = Object.EntityNo440ArrayPos0++441ResetObjectEntity(ArrayPos0, TypeName[Boss Body], 0, Object.XPos, Object.YPos)442BossPart[ArrayPos0].Priority = PRIORITY_ACTIVE443444Body[ArrayPos0].FaceEntity = Object.EntityNo445446Body[ArrayPos0].LegJointREntity = Object.EntityNo447Body[ArrayPos0].LegJointREntity += 2448449Body[ArrayPos0].LegJointLEntity = Object.EntityNo450Body[ArrayPos0].LegJointLEntity += 5451ArrayPos0++452453ResetObjectEntity(ArrayPos0, TypeName[Boss Leg Joint], 0, Object.XPos, Object.YPos)454BossPart[ArrayPos0].Priority = PRIORITY_ACTIVE455456// Boss Body457BossPart[ArrayPos0].PrevEntity = Object.EntityNo458BossPart[ArrayPos0].PrevEntity += 1459460// Leg R461BossPart[ArrayPos0].NextEntity = Object.EntityNo462BossPart[ArrayPos0].NextEntity += 3463ArrayPos0++464465ResetObjectEntity(ArrayPos0, TypeName[Boss Leg], 0, Object.XPos, Object.YPos)466BossPart[ArrayPos0].Priority = PRIORITY_ACTIVE467468// Leg Joint R469BossPart[ArrayPos0].PrevEntity = Object.EntityNo470BossPart[ArrayPos0].PrevEntity += 2471472// Foot R473BossPart[ArrayPos0].NextEntity = Object.EntityNo474BossPart[ArrayPos0].NextEntity += 4475ArrayPos0++476477ResetObjectEntity(ArrayPos0, TypeName[Boss Foot], 0, Object.XPos, Object.YPos)478BossPart[ArrayPos0].Priority = PRIORITY_ACTIVE479480// Leg R481BossPart[ArrayPos0].PrevEntity = Object.EntityNo482BossPart[ArrayPos0].PrevEntity += 3483484// Boss Body485BossPart[ArrayPos0].NextEntity = Object.EntityNo486BossPart[ArrayPos0].NextEntity += 1487ArrayPos0++488489ResetObjectEntity(ArrayPos0, TypeName[Boss Leg Joint], 0, Object.XPos, Object.YPos)490BossPart[ArrayPos0].Priority = PRIORITY_ACTIVE491BossPart[ArrayPos0].DrawOrder = 2492493// Boss Body494BossPart[ArrayPos0].PrevEntity = Object.EntityNo495BossPart[ArrayPos0].PrevEntity += 1496497// Leg L498BossPart[ArrayPos0].NextEntity = Object.EntityNo499BossPart[ArrayPos0].NextEntity += 6500ArrayPos0++501502ResetObjectEntity(ArrayPos0, TypeName[Boss Leg], 0, Object.XPos, Object.YPos)503BossPart[ArrayPos0].Priority = PRIORITY_ACTIVE504BossPart[ArrayPos0].DrawOrder = 2505506// Leg Joint L507BossPart[ArrayPos0].PrevEntity = Object.EntityNo508BossPart[ArrayPos0].PrevEntity += 5509510// Foot L511BossPart[ArrayPos0].NextEntity = Object.EntityNo512BossPart[ArrayPos0].NextEntity += 7513ArrayPos0++514515ResetObjectEntity(ArrayPos0, TypeName[Boss Foot], 0, Object.XPos, Object.YPos)516BossPart[ArrayPos0].Priority = PRIORITY_ACTIVE517BossPart[ArrayPos0].DrawOrder = 2518519// Leg L520BossPart[ArrayPos0].PrevEntity = Object.EntityNo521BossPart[ArrayPos0].PrevEntity += 6522523// Boss Body524BossPart[ArrayPos0].NextEntity = Object.EntityNo525BossPart[ArrayPos0].NextEntity += 1526ArrayPos0++527528ResetObjectEntity(ArrayPos0, TypeName[Boss Shoulder], 0, Object.XPos, Object.YPos)529BossPart[ArrayPos0].Priority = PRIORITY_ACTIVE530BossPart[ArrayPos0].DrawOrder = 4531532Shoulder[ArrayPos0].FaceEntity = Object.EntityNo533534// Arm Joint L535Shoulder[ArrayPos0].ArmJointLEntity = Object.EntityNo536Shoulder[ArrayPos0].ArmJointLEntity += 9537538// Arm Joint R539Shoulder[ArrayPos0].ArmJointREntity = Object.EntityNo540Shoulder[ArrayPos0].ArmJointREntity += 12541ArrayPos0++542543ResetObjectEntity(ArrayPos0, TypeName[Boss Arm Joint], 0, Object.XPos, Object.YPos)544BossPart[ArrayPos0].Priority = PRIORITY_ACTIVE545546// Shoulder547BossPart[ArrayPos0].PrevEntity = Object.EntityNo548BossPart[ArrayPos0].PrevEntity += 8549550// Arm L551BossPart[ArrayPos0].NextEntity = Object.EntityNo552BossPart[ArrayPos0].NextEntity += 10553ArrayPos0++554555ResetObjectEntity(ArrayPos0, TypeName[Boss Arm], 0, Object.XPos, Object.YPos)556BossPart[ArrayPos0].Priority = PRIORITY_ACTIVE557558// Arm Joint L559BossPart[ArrayPos0].PrevEntity = Object.EntityNo560BossPart[ArrayPos0].PrevEntity += 9561562// Bumper L563BossPart[ArrayPos0].NextEntity = Object.EntityNo564BossPart[ArrayPos0].NextEntity += 11565ArrayPos0++566567ResetObjectEntity(ArrayPos0, TypeName[Boss Bumper], 0, Object.XPos, Object.YPos)568BossPart[ArrayPos0].Priority = PRIORITY_ACTIVE569570// Arm L571BossPart[ArrayPos0].PrevEntity = Object.EntityNo572BossPart[ArrayPos0].PrevEntity += 10573574// Boss Body575BossPart[ArrayPos0].NextEntity = Object.EntityNo576BossPart[ArrayPos0].NextEntity += 1577ArrayPos0++578579ResetObjectEntity(ArrayPos0, TypeName[Boss Arm Joint], 0, Object.XPos, Object.YPos)580BossPart[ArrayPos0].Priority = PRIORITY_ACTIVE581BossPart[ArrayPos0].DrawOrder = 2582583// Shoulder584BossPart[ArrayPos0].PrevEntity = Object.EntityNo585BossPart[ArrayPos0].PrevEntity += 8586587// Arm R588BossPart[ArrayPos0].NextEntity = Object.EntityNo589BossPart[ArrayPos0].NextEntity += 13590ArrayPos0++591592ResetObjectEntity(ArrayPos0, TypeName[Boss Arm], 0, Object.XPos, Object.YPos)593BossPart[ArrayPos0].Priority = PRIORITY_ACTIVE594BossPart[ArrayPos0].DrawOrder = 2595596// Arm Joint R597BossPart[ArrayPos0].PrevEntity = Object.EntityNo598BossPart[ArrayPos0].PrevEntity += 12599600// Bumper R601BossPart[ArrayPos0].NextEntity = Object.EntityNo602BossPart[ArrayPos0].NextEntity += 14603ArrayPos0++604605ResetObjectEntity(ArrayPos0, TypeName[Boss Bumper], 0, Object.XPos, Object.YPos)606BossPart[ArrayPos0].Priority = PRIORITY_ACTIVE607BossPart[ArrayPos0].DrawOrder = 2608609// Arm R610BossPart[ArrayPos0].PrevEntity = Object.EntityNo611BossPart[ArrayPos0].PrevEntity += 13612613// Boss Body614BossPart[ArrayPos0].NextEntity = Object.EntityNo615BossPart[ArrayPos0].NextEntity += 1616ArrayPos0++617end if618break619end switch620end sub621622623sub ObjectPlayerInteraction624TempValue0 = Player.CollisionRight625TempValue0 <<= 16626TempValue0 += Player.XPos627628TempValue1 = Stage.XBoundary2629TempValue1 <<= 16630if TempValue0 > TempValue1631Player.XVelocity = 0632Player.Speed = 0633Player.XPos = TempValue1634635TempValue0 = Player.CollisionRight636TempValue0 <<= 16637Player.XPos -= TempValue0638end if639640if Object.State > R1_EGGMAN_WAIT_PLAYER641if Player.Animation != ANI_HURT642if Object.Hit < 3643#platform: Use_Origins644PlayerObjectCollision(C_ENEMY, -28, -28, 28, 28)645#endplatform646#platform: Use_Standalone647PlayerObjectCollision(C_TOUCH, -28, -28, 28, 28)648#endplatform649if CheckResult == true650// if Player.Animation == ANI_JUMPING // Standalone/Preplus check651652CheckResult = false653if Player.Animation == ANI_JUMPING654CheckResult = true655end if656#platform: Use_Origins657if Stage.PlayerListPos == PLAYER_KNUCKLES658if Player.Animation == ANI_GLIDING659CheckResult = true660end if661if Player.Animation == ANI_GLIDING_STOP662CheckResult = true663end if664end if665if Stage.PlayerListPos == PLAYER_AMY666if Player.Animation == ANI_HAMMER_JUMP667CheckResult = true668end if669if Player.Animation == ANI_HAMMER_DASH670CheckResult = true671end if672end if673#endplatform674if CheckResult == true675Player.XVelocity = Player.XPos676Player.XVelocity -= Object.XPos677Player.XVelocity >>= 3678Player.Speed = Player.XVelocity679680Player.YVelocity = Player.YPos681Player.YVelocity -= Object.YPos682Player.YVelocity >>= 3683#platform: Use_Origins684if Stage.PlayerListPos == PLAYER_KNUCKLES685if Player.Animation == ANI_GLIDING686Player.Animation = ANI_GLIDING_DROP687Player.State = Player_State_GlideDrop688end if689end if690#endplatform691692if Object.Timer == 0693if BossBody.State != BOSSBODY_DESCEND694PlaySfx(SFX_G_EXPLOSION, false)695696#platform: Use_Haptics697HapticEffect(75, 0, 0, 0)698#endplatform699700#platform: Use_Origins701if game.bossOneLife != false702Object.Hit = 2703end if704#endplatform705switch Object.Hit706case 0707Object.Hit++708Object.Timer = 30709Object.Animation = EGGANI_HURT710Object.FaceTimer = 120711712ArrayPos0 = Object.ShoulderEntity713ArrayPos1 = Shoulder[ArrayPos0].ArmJointREntity714Debris[ArrayPos1].State = BOSSARMJOINT_DESTROYED715Debris[ArrayPos1].XOffSet = 0x10000716Debris[ArrayPos1].YOffSet = 0x20000717718// Arm Joint R to Arm R719ArrayPos0 = BossPart[ArrayPos1].NextEntity720Debris[ArrayPos0].State = BOSSARM_DESTROYED721Debris[ArrayPos0].XOffSet = 0722Debris[ArrayPos0].YOffSet = 0x10000723724// Arm R to Bumper R725ArrayPos1 = BossPart[ArrayPos0].NextEntity726Debris[ArrayPos1].State = BOSSBUMPER_DESTROYED727Debris[ArrayPos1].XOffSet = 0728Debris[ArrayPos1].YOffSet = -0x18000729break730731case 1732Object.Hit++733Object.Timer = 30734Object.Animation = EGGANI_HURT735Object.FaceTimer = 120736737ArrayPos0 = Object.ShoulderEntity738ArrayPos1 = Shoulder[ArrayPos0].ArmJointLEntity739Debris[ArrayPos1].State = BOSSARMJOINT_DESTROYED740Debris[ArrayPos1].XOffSet = 0x10000741Debris[ArrayPos1].YOffSet = 0x20000742743// Arm Joint L to Arm L744ArrayPos0 = BossPart[ArrayPos1].NextEntity745Debris[ArrayPos0].State = BOSSARM_DESTROYED746Debris[ArrayPos0].XOffSet = 0747Debris[ArrayPos0].YOffSet = 0x10000748749// ArmL to Bumper L750ArrayPos1 = BossPart[ArrayPos0].NextEntity751Debris[ArrayPos1].State = BOSSBUMPER_DESTROYED752Debris[ArrayPos1].XOffSet = 0753Debris[ArrayPos1].YOffSet = -0x18000754break755756case 2757Object.Hit++758Object.State = R1_EGGMAN_DEFEATED759Object.Animation = EGGANI_HURT760ArrayPos0 = Object.BodyEntity761Body[ArrayPos0].State = BOSSBODY_DESTROYED762763ArrayPos0 = Object.ShoulderEntity764Debris[ArrayPos0].State = BOSSSHOULDER_DESTROYED765Debris[ArrayPos0].XOffSet = -0x10000766Debris[ArrayPos0].YOffSet = -0x20000767768ArrayPos0 = Object.BodyEntity769ArrayPos1 = Body[ArrayPos0].LegJointREntity770Debris[ArrayPos1].State = BOSSLEGJOINT_DESTROYED771Debris[ArrayPos1].XOffSet = 0772Debris[ArrayPos1].YOffSet = -0x28000773774// Leg Joint R to Leg R775ArrayPos0 = BossPart[ArrayPos1].NextEntity776Debris[ArrayPos0].State = BOSSLEG_DESTROYED777Debris[ArrayPos0].XOffSet = 0778Debris[ArrayPos0].YOffSet = -0x20000779780// Leg R to Foot R781ArrayPos1 = BossPart[ArrayPos0].NextEntity782Debris[ArrayPos1].State = BOSSFOOT_DESTROYED783Debris[ArrayPos1].XOffSet = 0784Debris[ArrayPos1].YOffSet = -0x23000785786ArrayPos0 = Object.BodyEntity787ArrayPos1 = Body[ArrayPos0].LegJointLEntity788Debris[ArrayPos1].State = BOSSLEGJOINT_DESTROYED789Debris[ArrayPos1].XOffSet = 0790Debris[ArrayPos1].YOffSet = -0x28000791792// Leg Joint L to Leg L793ArrayPos0 = BossPart[ArrayPos1].NextEntity794Debris[ArrayPos0].State = BOSSLEG_DESTROYED795Debris[ArrayPos0].XOffSet = 0796Debris[ArrayPos0].YOffSet = -0x20000797798// Leg L to Foot L799ArrayPos1 = BossPart[ArrayPos0].NextEntity800Debris[ArrayPos1].State = BOSSFOOT_DESTROYED801Debris[ArrayPos1].XOffSet = 0802Debris[ArrayPos1].YOffSet = -0x23000803804#platform: Use_Origins805EngineCallback(NOTIFY_KILL_BOSS)806// Tell HE2 that the boss fight ended807game.callbackParam0 = true808EngineCallback(NOTIFY_BOSS_END)809if game.playMode == BOOT_PLAYMODE_BOSSRUSH810StopMusic()811end if812#endplatform813break814end switch815end if816end if817else818if Player.InvincibleTimer == 0819Object.Animation = EGGANI_LAUGH820Object.FaceTimer = 180821Player.State = Player_State_GotHit822if Player.XPos > Object.XPos823Player.Speed = 0x20000824else825Player.Speed = -0x20000826end if827end if828end if829end if830end if831end if832end if833end sub834835836sub ObjectDraw837switch Object.Animation838case EGGANI_IDLE839DrawSprite(0)840break841842case EGGANI_LAUGH843if Object.FrameTimer < 8844Object.FrameTimer = 8845else846if Object.FrameTimer > 23847Object.FrameTimer = 8848end if849end if850851Object.Frame = Object.FrameTimer852Object.Frame >>= 3853854Object.FrameTimer++855856DrawSprite(Object.Frame)857break858859case EGGANI_HURT860if Object.FrameTimer < 12861Object.FrameTimer = 12862else863if Object.FrameTimer > 27864Object.FrameTimer = 12865end if866end if867868Object.Frame = Object.FrameTimer869Object.Frame >>= 2870871Object.FrameTimer++872873DrawSprite(Object.Frame)874break875end switch876end sub877878879sub ObjectStartup880LoadSpriteSheet("R1/Objects3.gif")881882SpriteFrame(-28, -24, 40, 16, 206, 1) // #0 - Eggman Idle883884SpriteFrame(-28, -24, 40, 16, 206, 18) // #1 - Eggman Laugh Frame 0885SpriteFrame(-28, -24, 40, 16, 206, 35) // #2 - Eggman Laugh Frame 1886887SpriteFrame(-28, -40, 40, 32, 124, 1) // #3 - Eggman Hurt Frame 0888SpriteFrame(-28, -24, 40, 16, 206, 52) // #4 - Eggman Hurt Frame 1889SpriteFrame(-28, -40, 40, 32, 165, 1) // #5 - Eggman Hurt Frame 2890SpriteFrame(-28, -24, 40, 16, 206, 69) // #6 - Eggman Hurt Frame 3891end sub892893894// ========================895// Editor Subs896// ========================897898sub RSDKDraw899DrawSprite(0)900end sub901902903sub RSDKLoad904LoadSpriteSheet("R1/Objects3.gif")905SpriteFrame(-28, -24, 40, 16, 206, 1) // #0 - Eggman Idle906907SetVariableAlias(ALIAS_VAR_PROPVAL, "unused")908end sub909910911