public static GameObject CreateObjectOfType(ObjectType t, ColorSwaps color, Direction direction, string itemDrops, int delay) { GameObject obj10; EnemyBehavior behavior; GameObject obj13; Size size12; float num2; EnemyBehavior behavior4; int[] numArray; int difficulty = 3; switch (t) { case ObjectType.AirGiant: { GameTexture texture23 = new GameTexture("giant.bmp", new Size(0x20, 0x20), ColorSwaps.Green, color, TextureDisposePolicy.DisposeOnTileChange); GameObject obj24 = new GameObject(texture23, t, color); Size size23 = new Size(0x20, 0x20); difficulty = 6; EnemyBehavior behavior15 = new EnemyBehavior(obj24, GetEnemyHP(3, 7, 8, 9, (int) color) + 30, 0, ActivationTypes.ActivateIfHorizontallyClose, FacePlayerBehavior.AlwaysFace); if (color >= ColorSwaps.Blue) { difficulty = 9; } obj24.XSpeed.Acceleration = 1f; numArray = new int[2]; numArray[1] = 1; obj24.DefineAnimation(AnimType.Stopped, new Animation(AnimHitType.None, size23, numArray, 8, 15, true)); numArray = new int[2]; numArray[1] = 1; obj24.DefineAnimation(AnimType.Stopped2, new Animation(AnimHitType.None, size23, numArray, 8, 15, true)); obj24.DefineAnimation(AnimType.Hit, new Animation(AnimHitType.None, size23, new int[] { 2, 3 }, 4, true)); obj24.DefineAnimation(AnimType.Dying, new Animation(AnimHitType.None, size23, new int[] { 2, 3 }, 4, true)); SizeF ef55 = new SizeF(22f, 32f); RectangleF ef56 = new RectangleF(0f, -22f, 8f, 8f); obj24.GetAnimation(AnimType.Stopped).HitboxSize = ef55; obj24.GetAnimation(AnimType.Stopped2).HitboxSize = ef55; obj24.GetAnimation(AnimType.Stopped2).SecondaryCollisionRectangle = ef56; obj24.GetAnimation(AnimType.Hit).HitboxSize = ef55; behavior15.TimerOffset = delay; behavior15.AddNearAction(new Stop(true, true, true)); behavior15.AddNearAction(new BatReturn()); behavior15.AddNearAction(new FacePlayer()); behavior15.AddNearAction(new MoveDownTo(4, -delay, false)); behavior15.AddNearAction(new Hover(new Speed(1f, 0.2f, 1f), new Speed(1f, 0.4f, 1f), 360)); behavior15.AddFarAction(new Wait(5)); behavior15.AddFarAction(new FacePlayer()); behavior15.AddHitAction(new Wait(1)); behavior15.AddHitAction(new FacePlayer()); behavior15.AddHitAction(new Bounce(-2, -2)); behavior15.AddHitAction(new Wait(40)); behavior15.AddHitAction(new PlayAnimation(AnimType.Stopped2)); behavior15.AddHitAction(new SetSpeed(-2f, false)); if (color == ColorSwaps.Green) { behavior15.AddHitAction(new MultiAction(new Shoot(ObjectType.CyclopsFireball, GetEnemyBulletDamage(difficulty, (int) color), 2f, -8f, 1, 1, true, false), 1, 10)); } else if (color == ColorSwaps.Blue) { behavior15.AddHitAction(new MultiAction(new Shoot(ObjectType.CyclopsFireball, GetEnemyBulletDamage(difficulty, (int) color), 2f, -8f, 1, 1, true, false), 3, 10)); } behavior15.AttackDistance = 100; obj24.AttackDamage = GetEnemyDamage(difficulty, (int) color); obj24.SetBehavior(behavior15); obj24.ObjClass = ObjectClass.Enemy; obj24.Solid = false; obj24.CurrentAnimation = AnimType.Stopped2; AddItemDrops(behavior15, itemDrops); return obj24; } case ObjectType.AntLion: { GameTexture texture27 = new GameTexture("antlion.bmp", new Size(0x20, 0x20), ColorSwaps.Red, color, TextureDisposePolicy.DisposeOnTileChange); GameObject obj28 = new GameObject(texture27, t, color); Size size27 = new Size(0x20, 0x20); EnemyBehavior behavior19 = new EnemyBehavior(obj28, GetEnemyHP(difficulty, (int) color), delay); if (color != ColorSwaps.Yellow) { if (color == ColorSwaps.Blue) { difficulty = 4; } } else { difficulty = 6; } obj28.YSpeed.Acceleration = 1f; obj28.YSpeed.TargetSpeed = 4f; obj28.XSpeed.SetSpeed((float) 0f); numArray = new int[1]; obj28.DefineAnimation(AnimType.Stopped, new Animation(AnimHitType.None, size27, numArray, 8, true)); obj28.DefineAnimation(AnimType.Attacking, new Animation(AnimHitType.None, size27, new int[] { 1 }, 8, true)); obj28.DefineAnimation(AnimType.Hit, new Animation(AnimHitType.None, size27, new int[] { 2 }, 4, true)); obj28.DefineAnimation(AnimType.Dying, new Animation(AnimHitType.None, size27, new int[] { 2 }, 4, true)); SizeF ef62 = new SizeF(16f, 16f); RectangleF ef63 = new RectangleF(-8f, -16f, 16f, 16f); obj28.GetAnimation(AnimType.Stopped).HitboxSize = ef62; obj28.GetAnimation(AnimType.Attacking).HitboxSize = ef62; obj28.GetAnimation(AnimType.Attacking).SecondaryCollisionRectangle = ef63; obj28.GetAnimation(AnimType.Hit).HitboxSize = ef62; float num4 = -7f; int num5 = 80 - (((ColorSwaps) 20) * color); ObjectType gravityBullet = ObjectType.GravityBullet; if (color == ColorSwaps.Yellow) { gravityBullet = ObjectType.BouncingBullet; } Shoot shoot5 = new Shoot(gravityBullet, GetEnemyBulletDamage(difficulty, (int) color), 0f, num4, 1f, 8, true); Shoot a = new Shoot(gravityBullet, GetEnemyBulletDamage(difficulty, (int) color), 0f, num4 * 1.5f, 1f, 8, true); behavior19.AddNearAction(new MultiAction(shoot5, 3, num5)); behavior19.AddNearAction(new Wait(num5)); behavior19.AddNearAction(a); behavior19.AddNearAction(new Wait(num5)); behavior19.AddNearAction(new FacePlayer()); behavior19.AddFarAction(new Wait(5)); behavior19.AddFarAction(new FacePlayer()); behavior19.AddHitAction(new Wait(1)); behavior19.AddHitAction(new FacePlayer()); behavior19.AddHitAction(new Stop(true, false, false)); behavior19.AddHitAction(new Wait(30)); behavior19.AttackDistance = 400; obj28.SetBehavior(behavior19); obj28.ObjClass = ObjectClass.Enemy; obj28.AttackDamage = GetEnemyDamage(difficulty, (int) color); obj28.CurrentAnimation = AnimType.Stopped; AddItemDrops(behavior19, itemDrops); return obj28; } case ObjectType.Bat: { GameTexture texture11 = new GameTexture("bat.bmp", new Size(0x10, 0x10), ColorSwaps.Red, color, TextureDisposePolicy.DisposeOnTileChange); GameObject obj12 = new GameObject(texture11, t, color); Size size11 = new Size(0x10, 0x10); EnemyBehavior behavior3 = new EnemyBehavior(obj12, GetEnemyHP(3, 7, 8, 9, (int) color) + (((ColorSwaps) 20) * color), delay, ActivationTypes.ActivateIfAbove, FacePlayerBehavior.FaceIfFar); numArray = new int[2]; numArray[1] = 1; obj12.DefineAnimation(AnimType.Stopped, new Animation(AnimHitType.None, size11, numArray, 8, true)); obj12.DefineAnimation(AnimType.Jump, new Animation(AnimHitType.None, size11, new int[] { 1 }, 1, true)); obj12.DefineAnimation(AnimType.Hit, new Animation(AnimHitType.None, size11, new int[] { 2 }, 1, true)); obj12.DefineAnimation(AnimType.Dying, new Animation(AnimHitType.None, size11, new int[] { 2 }, 1, true)); SizeF ef35 = new SizeF(16f, 16f); obj12.GetAnimation(AnimType.Stopped).HitboxSize = ef35; obj12.GetAnimation(AnimType.Hit).HitboxSize = ef35; obj12.GetAnimation(AnimType.Jump).HitboxSize = ef35; behavior3.AddNearAction(new PlayAnimation(AnimType.Stopped)); behavior3.AddNearAction(new BatReturn()); behavior3.AddNearAction(new FacePlayer()); behavior3.AddNearAction(new Hover(new Speed(0f, 0f, 0f), new Speed(0f, 1f, 2f), 120 - (color * ((ColorSwaps) 30)))); behavior3.AddNearAction(new FacePlayer()); behavior3.AddNearAction(new PlayAnimation(AnimType.Jump)); behavior3.AddNearAction(new MoveDownTo(2, -20, true)); behavior3.AddNearAction(new Move(new Speed(1f, 1f, 1f), new Speed(2f, 0.4f, -2f))); if (color == ColorSwaps.Yellow) { behavior3.AddNearAction(new Shoot(ObjectType.GravityBullet, GetEnemyBulletDamage(difficulty, (int) color), 0f, -6f, 1f, 1, false)); behavior3.AddNearAction(new Shoot(ObjectType.GravityBullet, GetEnemyBulletDamage(difficulty, (int) color), -2f, -6f, 1f, 1, false)); behavior3.AddNearAction(new Shoot(ObjectType.GravityBullet, GetEnemyBulletDamage(difficulty, (int) color), 2f, -6f, 1f, 1, false)); } behavior3.AddNearAction(new Stop(true, true, false)); behavior3.AddFarAction(new PlayAnimation(AnimType.Stopped)); behavior3.AddFarAction(new BatReturn()); behavior3.AddFarAction(new FacePlayer()); behavior3.AddFarAction(new Hover(new Speed(0f, 0f, 0f), new Speed(0f, 1f, 2f), 15)); behavior3.AddHitAction(new Wait(1)); behavior3.AddHitAction(new FacePlayer()); behavior3.AddHitAction(new Bounce(-2, -2)); if (color == ColorSwaps.Yellow) { behavior3.AddHitAction(new Wait(10)); behavior3.AddHitAction(new Shoot(ObjectType.GravityBullet, GetEnemyBulletDamage(difficulty, (int) color), 0f, -6f, 1f, 1, false)); behavior3.AddHitAction(new Shoot(ObjectType.GravityBullet, GetEnemyBulletDamage(difficulty, (int) color), -2f, -6f, 1f, 1, false)); behavior3.AddHitAction(new Shoot(ObjectType.GravityBullet, GetEnemyBulletDamage(difficulty, (int) color), 2f, -6f, 1f, 1, false)); } else { behavior3.AddHitAction(new Wait(40)); } behavior3.AttackDistance = 50; if (color == ColorSwaps.Yellow) { behavior3.AttackDistance = 150; } obj12.SetBehavior(behavior3); obj12.ObjClass = ObjectClass.Enemy; if (color == ColorSwaps.Blue) { difficulty = 7; } obj12.AttackDamage = GetEnemyDamage(difficulty, (int) color); AddItemDrops(behavior3, itemDrops); obj12.Solid = false; return obj12; } case ObjectType.Crab: { difficulty = 3; GameTexture texture25 = new GameTexture("crab.bmp", new Size(0x10, 0x10), ColorSwaps.Red, color, TextureDisposePolicy.DisposeOnTileChange); GameObject obj26 = new GameObject(texture25, t, color); Size size25 = new Size(0x10, 0x10); EnemyBehavior behavior17 = new EnemyBehavior(obj26, GetEnemyHP(difficulty, (int) color), delay); obj26.YSpeed.Acceleration = 1f; obj26.YSpeed.TargetSpeed = 4f; obj26.XSpeed.Acceleration = 1f; obj26.XSpeed.TargetSpeed = 1f; numArray = new int[2]; numArray[1] = 1; obj26.DefineAnimation(AnimType.Stopped, new Animation(AnimHitType.None, size25, numArray, 8, true)); numArray = new int[2]; numArray[1] = 1; obj26.DefineAnimation(AnimType.Stopped2, new Animation(AnimHitType.None, size25, numArray, 8, true)); obj26.DefineAnimation(AnimType.Hit, new Animation(AnimHitType.None, size25, new int[] { 2 }, 4, true)); obj26.DefineAnimation(AnimType.Dying, new Animation(AnimHitType.None, size25, new int[] { 2 }, 4, true)); SizeF ef59 = new SizeF(16f, 16f); obj26.GetAnimation(AnimType.Stopped).HitboxSize = ef59; obj26.GetAnimation(AnimType.Stopped2).HitboxSize = ef59; obj26.GetAnimation(AnimType.Hit).HitboxSize = ef59; behavior17.AddNearAction(new SetSpeed(1f, 1f, true)); behavior17.AddNearAction(new Reverse(30)); behavior17.AddNearAction(new Wait(30)); behavior17.AddFarAction(new Wait(5)); behavior17.AddFarAction(new FacePlayer()); behavior17.AddFarAction(new PlayAnimation(AnimType.Stopped2)); behavior17.AddHitAction(new Wait(1)); behavior17.AddHitAction(new FacePlayer()); behavior17.AddHitAction(new Jump(ActionPresets.Recoil)); behavior17.AddHitAction(new Wait(30)); behavior17.AddHitWallAction(new Reverse()); behavior17.AddHitWallAction(new Wait(30)); behavior17.AttackDistance = 300; obj26.SetBehavior(behavior17); obj26.ObjClass = ObjectClass.Enemy; obj26.AttackDamage = GetEnemyDamage(difficulty, (int) color); obj26.StopsAtLedges = true; obj26.CurrentAnimation = AnimType.Stopped2; AddItemDrops(behavior17, itemDrops); return obj26; } case ObjectType.Crystal: { GameTexture texture19 = new GameTexture("crystal.bmp", new Size(0x10, 0x10), TextureDisposePolicy.DisposeOnTileChange); GameObject obj20 = new GameObject(texture19, t, color); Size size19 = new Size(0x10, 0x10); EnemyBehavior behavior11 = new EnemyBehavior(obj20, 1, delay); difficulty = GameEngine.Game.BaseDifficulty; obj20.XSpeed.SetSpeed((float) 0f); obj20.YSpeed.SetSpeed((float) 0f); numArray = new int[2]; numArray[1] = 1; obj20.DefineAnimation(AnimType.Stopped, new Animation(AnimHitType.Invincible, size19, numArray, 4, true)); numArray = new int[2]; numArray[1] = 1; obj20.DefineAnimation(AnimType.Hit, new Animation(AnimHitType.Invincible, size19, numArray, 4, true)); numArray = new int[2]; numArray[1] = 1; obj20.DefineAnimation(AnimType.Dying, new Animation(AnimHitType.Invincible, size19, numArray, 4, true)); SizeF ef47 = new SizeF(16f, 16f); if (color == ColorSwaps.Blue) { ef47 = new SizeF(18f, 18f); } new RectangleF(-8f, -16f, 16f, 16f); obj20.GetAnimation(AnimType.Stopped).HitboxSize = ef47; behavior11.AddNearAction(new Wait(30)); behavior11.AddFarAction(new Wait(30)); behavior11.AttackDistance = 0x270f; obj20.SetBehavior(behavior11); obj20.ObjClass = ObjectClass.Enemy; obj20.DeactivateIfFar = false; obj20.AttackDamage = GetEnemyDamage(difficulty, 2); obj20.Solid = false; return obj20; } case ObjectType.Cyclops: { GameTexture texture21 = new GameTexture("cyclops.bmp", new Size(0x20, 0x20), ColorSwaps.Blue, color, TextureDisposePolicy.DisposeOnTileChange); GameObject obj22 = new GameObject(texture21, t, color); Size size21 = new Size(0x20, 0x20); difficulty = 8; EnemyBehavior behavior13 = new EnemyBehavior(obj22, GetEnemyHP(3, 9, 10, 11, (int) color), delay); if (color == ColorSwaps.Blue) { difficulty = 9; } obj22.YSpeed.Acceleration = 2f; obj22.YSpeed.TargetSpeed = 4f; obj22.XSpeed.Acceleration = 0.3f; numArray = new int[2]; numArray[1] = 1; obj22.DefineAnimation(AnimType.Stopped, new Animation(AnimHitType.None, size21, numArray, 8, 15, true)); numArray = new int[2]; numArray[1] = 1; obj22.DefineAnimation(AnimType.Stopped2, new Animation(AnimHitType.None, size21, numArray, 8, 0x10, true)); numArray = new int[2]; numArray[1] = 1; obj22.DefineAnimation(AnimType.Attacking, new Animation(AnimHitType.None, size21, numArray, 2, true)); numArray = new int[2]; numArray[1] = 1; obj22.DefineAnimation(AnimType.Jump, new Animation(AnimHitType.None, size21, numArray, 2, true)); obj22.DefineAnimation(AnimType.Hit, new Animation(AnimHitType.None, size21, new int[] { 2, 3 }, 4, true)); obj22.DefineAnimation(AnimType.Dying, new Animation(AnimHitType.None, size21, new int[] { 2, 3 }, 4, true)); SizeF ef51 = new SizeF(22f, 32f); RectangleF ef52 = new RectangleF(0f, -22f, 8f, 8f); obj22.GetAnimation(AnimType.Stopped).HitboxSize = ef51; obj22.GetAnimation(AnimType.Stopped2).HitboxSize = ef51; obj22.GetAnimation(AnimType.Hit).HitboxSize = ef51; obj22.GetAnimation(AnimType.Jump).HitboxSize = ef51; obj22.GetAnimation(AnimType.Attacking).HitboxSize = ef51; obj22.GetAnimation(AnimType.Attacking).SecondaryCollisionRectangle = ef52; behavior13.AddNearAction(new PlayAnimation(AnimType.Stopped2)); behavior13.AddNearAction(new SetSpeed(4f, 2f, false)); if (color == ColorSwaps.Yellow) { behavior13.AddNearAction(new SetSpeed(2f, 1f, true)); } else { behavior13.AddNearAction(new SetSpeed(1f, 1f, true)); } behavior13.AddNearAction(new Wait(300)); behavior13.AddFarAction(new Wait(5)); behavior13.AddFarAction(new FacePlayer()); behavior13.AddHitAction(new Wait(1)); behavior13.AddHitAction(new FacePlayer()); if (color == ColorSwaps.Yellow) { behavior13.AddHitAction(new Jump(new Speed(-3.5f, 2f, -3.5f), new Speed(-3f, 1f, 3f), false, true)); behavior13.AddHitAction(new Stop(true, false, false)); behavior13.AddHitAction(new SetSpeed(1f, 1f, true)); behavior13.AddHitAction(new Wait(1)); } else { behavior13.AddHitAction(new Jump(ActionPresets.Recoil)); behavior13.AddHitAction(new Stop(true, false, false)); behavior13.AddHitAction(new Wait(40)); } if (color == ColorSwaps.Green) { behavior13.AddHitAction(new MultiAction(new Shoot(ObjectType.CyclopsFireball, GetEnemyBulletDamage(difficulty, (int) color), 2f, -8f, 1, 1, true, true), 1, 10)); } else if (color == ColorSwaps.Blue) { behavior13.AddHitAction(new MultiAction(new Shoot(ObjectType.CyclopsFireball, GetEnemyBulletDamage(difficulty, (int) color), 2f, -8f, 1, 1, true, true), 3, 10)); } else if (color == ColorSwaps.Yellow) { behavior13.AddHitAction(new MultiAction(new Shoot(ObjectType.CyclopsFireball, GetEnemyBulletDamage(difficulty - 1, (int) color), 1f, -8f, 1, 1, true, true), 2, 10)); behavior13.AddHitAction(new MultiAction(new Shoot(ObjectType.CyclopsFireball, GetEnemyBulletDamage(difficulty - 1, (int) color), 6.5f, -8f, 1, 1, true, true), 2, 10)); behavior13.AddHitAction(new MultiAction(new Shoot(ObjectType.CyclopsFireball, GetEnemyBulletDamage(difficulty - 1, (int) color), 4f, -8f, 1, 1, true, true), 2, 10)); behavior13.AddHitAction(new MultiAction(new Shoot(ObjectType.CyclopsFireball, GetEnemyBulletDamage(difficulty - 1, (int) color), 2f, -8f, 1, 1, true, true), 2, 10)); } behavior13.AddHitWallAction(new TryJump(new Jump(new Speed(1f, 1f, 1f), new Speed(-8f, 2f, 4f), true, true))); obj22.CurrentDirection = direction; behavior13.AttackDistance = 300; obj22.StopsAtBoundries = false; obj22.SetBehavior(behavior13); obj22.ObjClass = ObjectClass.Enemy; obj22.AttackDamage = GetEnemyDamage(difficulty, (int) color); obj22.CurrentAnimation = AnimType.Stopped2; AddItemDrops(behavior13, itemDrops); return obj22; } case ObjectType.Faerie: { difficulty = 3; GameTexture texture29 = new GameTexture("faerie.bmp", new Size(0x20, 0x20), ColorSwaps.Blue, color, TextureDisposePolicy.DisposeOnTileChange); GameObject obj30 = new GameObject(texture29, t, color); Size size29 = new Size(0x20, 0x20); EnemyBehavior behavior21 = new EnemyBehavior(obj30, GetEnemyHP(difficulty, (int) color), delay, ActivationTypes.AlwaysActivated, FacePlayerBehavior.None); obj30.YSpeed.Acceleration = 2f; obj30.YSpeed.TargetSpeed = 4f; obj30.XSpeed.Acceleration = 0.3f; numArray = new int[2]; numArray[1] = 1; obj30.DefineAnimation(AnimType.Stopped, new Animation(AnimHitType.None, size29, numArray, 8, 15, true)); numArray = new int[2]; numArray[1] = 1; obj30.DefineAnimation(AnimType.Stopped2, new Animation(AnimHitType.None, size29, numArray, 8, 0x10, true)); obj30.DefineAnimation(AnimType.Hit, new Animation(AnimHitType.None, size29, new int[] { 2 }, 4, true)); obj30.DefineAnimation(AnimType.Dying, new Animation(AnimHitType.None, size29, new int[] { 2 }, 4, true)); SizeF ef66 = new SizeF(18f, 22f); obj30.GetAnimation(AnimType.Stopped).HitboxSize = ef66; obj30.GetAnimation(AnimType.Stopped2).HitboxSize = ef66; obj30.GetAnimation(AnimType.Hit).HitboxSize = ef66; behavior21.AddNearAction(new SetSpeed(ActionPresets.Gravity)); behavior21.AddNearAction(new PlayAnimation(AnimType.Stopped2)); behavior21.AddNearAction(new FacePlayer()); behavior21.AddNearAction(new SetSpeed(1f, true)); behavior21.AddNearAction(new Wait(300)); behavior21.AddFarAction(new SetSpeed(ActionPresets.Gravity)); behavior21.AddFarAction(new Wait(5)); behavior21.AddFarAction(new FacePlayer()); behavior21.AddHitAction(new Wait(1)); behavior21.AddHitAction(new FacePlayer()); behavior21.AddHitAction(new Jump(ActionPresets.Recoil)); behavior21.AddHitAction(new Stop(true, false, false)); behavior21.AddHitAction(new Wait(40)); behavior21.AddHitWallAction(new Reverse()); behavior21.AddHitWallAction(new Wait(30)); behavior21.AttackDistance = 300; obj30.SetBehavior(behavior21); obj30.ObjClass = ObjectClass.Enemy; obj30.AttackDamage = GetEnemyDamage(difficulty, (int) color); obj30.StopsAtBoundries = false; obj30.CurrentAnimation = AnimType.Stopped2; AddItemDrops(behavior21, itemDrops); return obj30; } case ObjectType.FireFlower: { GameTexture texture16 = new GameTexture("fireFlower.bmp", new Size(0x20, 0x20), TextureDisposePolicy.DisposeOnTileChange); GameObject obj17 = new GameObject(texture16, t, ColorSwaps.Normal); Size size16 = new Size(0x20, 0x20); EnemyBehavior behavior8 = new EnemyBehavior(obj17, 1, delay); difficulty = GameEngine.Game.BaseDifficulty; obj17.YSpeed.Acceleration = 2f; obj17.YSpeed.TargetSpeed = 4f; obj17.XSpeed.SetSpeed((float) 0f); numArray = new int[2]; numArray[1] = 1; obj17.DefineAnimation(AnimType.Stopped, new Animation(AnimHitType.None, size16, numArray, 8, true)); obj17.DefineAnimation(AnimType.Attacking, new Animation(AnimHitType.None, size16, new int[] { 2 }, 1, true)); obj17.DefineAnimation(AnimType.Hit, new Animation(AnimHitType.None, size16, new int[] { 3 }, 1, true)); obj17.DefineAnimation(AnimType.Dying, new Animation(AnimHitType.None, size16, new int[] { 3 }, 1, true)); SizeF ef41 = new SizeF(13f, 32f); RectangleF ef42 = new RectangleF(-8f, -32f, 16f, 16f); obj17.GetAnimation(AnimType.Stopped).HitboxSize = ef41; obj17.GetAnimation(AnimType.Hit).HitboxSize = ef41; obj17.GetAnimation(AnimType.Attacking).HitboxSize = ef41; obj17.GetAnimation(AnimType.Attacking).SecondaryCollisionRectangle = ef42; behavior8.AddNearAction(new Wait(60)); behavior8.AddNearAction(new FacePlayer()); behavior8.AddNearAction(new Shoot(ObjectType.Bullet, GetEnemyBulletDamage(difficulty, 1), 2f, 0f, 30, 1, false, true)); behavior8.AddNearAction(new Wait(30, true)); behavior8.AddFarAction(new Wait(30)); behavior8.AddFarAction(new FacePlayer()); behavior8.AddHitAction(new Wait(1)); behavior8.AddHitAction(new FacePlayer()); behavior8.AddHitAction(new Wait(40)); behavior8.AttackDistance = 200; obj17.SetBehavior(behavior8); obj17.ObjClass = ObjectClass.Enemy; obj17.AttackDamage = GetEnemyDamage(difficulty, 1); AddItemDrops(behavior8, itemDrops); return obj17; } case ObjectType.FireStone: { GameTexture texture18 = new GameTexture("fireStone.bmp", new Size(0x10, 0x10), TextureDisposePolicy.DisposeOnTileChange); GameObject obj19 = new GameObject(texture18, t, color); Size size18 = new Size(0x10, 0x10); EnemyBehavior behavior10 = new EnemyBehavior(obj19, 1, delay, ActivationTypes.AlwaysActivated, FacePlayerBehavior.None); difficulty = GameEngine.Game.BaseDifficulty; obj19.XSpeed.SetSpeed((float) 0f); obj19.YSpeed.SetSpeed((float) 0f); numArray = new int[1]; obj19.DefineAnimation(AnimType.Stopped, new Animation(AnimHitType.Invincible, size18, numArray, 8, true)); obj19.DefineAnimation(AnimType.Attacking, new Animation(AnimHitType.Invincible, size18, new int[] { 2 }, 1, true)); obj19.DefineAnimation(AnimType.Special, new Animation(AnimHitType.Invincible, size18, new int[] { 1 }, 1, true)); SizeF ef45 = new SizeF(16f, 16f); RectangleF ef46 = new RectangleF(-8f, -16f, 16f, 16f); obj19.GetAnimation(AnimType.Stopped).HitboxSize = ef45; obj19.GetAnimation(AnimType.Attacking).HitboxSize = ef45; obj19.GetAnimation(AnimType.Special).HitboxSize = ef45; obj19.GetAnimation(AnimType.Attacking).SecondaryCollisionRectangle = ef46; behavior10.AddNearAction(new Wait(30)); behavior10.AddNearAction(new PlayAnimation(AnimType.Special)); behavior10.AddNearAction(new Wait(5)); behavior10.AddNearAction(new Shoot(ObjectType.Bullet, GetEnemyBulletDamage(difficulty, 1), 2f, 0f, 30, 1, false, true)); behavior10.AddNearAction(new Wait(30, true)); behavior10.AddFarAction(new Wait(30)); behavior10.AttackDistance = 0x270f; behavior10.AwakenDistance = 0x270f; obj19.AttackDamage = GetEnemyDamage(difficulty, 1); obj19.SetBehavior(behavior10); obj19.ObjClass = ObjectClass.Enemy; obj19.DeactivateIfFar = false; obj19.CurrentDirection = direction; if (direction != Direction.Down) { if (direction == Direction.Up) { obj19.CurrentRotation = Direction.Left; } return obj19; } obj19.CurrentRotation = Direction.Right; return obj19; } case ObjectType.Fish: { difficulty = 3; GameTexture texture14 = new GameTexture("fish.bmp", new Size(0x20, 0x20), ColorSwaps.Red, color, TextureDisposePolicy.DisposeOnTileChange); GameObject obj15 = new GameObject(texture14, t, color); Size size14 = new Size(0x20, 0x20); EnemyBehavior behavior6 = new EnemyBehavior(obj15, GetEnemyHP(difficulty, (int) color), delay, ActivationTypes.AlwaysActivated, FacePlayerBehavior.None); numArray = new int[2]; numArray[1] = 1; obj15.DefineAnimation(AnimType.Stopped, new Animation(AnimHitType.None, size14, numArray, 8, true)); obj15.DefineAnimation(AnimType.Hit, new Animation(AnimHitType.None, size14, new int[] { 2 }, 1, true)); obj15.DefineAnimation(AnimType.Dying, new Animation(AnimHitType.None, size14, new int[] { 2 }, 1, true)); SizeF ef38 = new SizeF(24f, 16f); RectangleF ef39 = new RectangleF(-12f, -20f, 24f, 20f); obj15.GetAnimation(AnimType.Stopped).HitboxSize = ef38; obj15.GetAnimation(AnimType.Hit).HitboxSize = ef38; obj15.GetAnimation(AnimType.Stopped).SecondaryCollisionRectangle = ef39; behavior6.AddNearAction(new PlayAnimation(AnimType.Stopped)); behavior6.AddNearAction(new FacePlayer()); if (color != ColorSwaps.Yellow) { behavior6.AddNearAction(new SetSpeed(1f, 0.5f, true)); behavior6.AddNearAction(new Hover(new Speed(0f, 0f, 0f), new Speed(0f, 0.2f, 1f), 180, true)); } else { behavior6.AddNearAction(new SetSpeed(1f, 0.5f, true)); behavior6.AddNearAction(new Hover(new Speed(0f, 0f, 0f), new Speed(0f, 0.2f, 1f), 60, true)); behavior6.AddNearAction(new Shoot(ObjectType.Bullet, GetEnemyBulletDamage(difficulty, (int) color), 2f, 0f, 0f, 1, false)); behavior6.AddNearAction(new Shoot(ObjectType.Bullet, GetEnemyBulletDamage(difficulty, (int) color), 2f, 2f, 0f, 1, false)); behavior6.AddNearAction(new Shoot(ObjectType.Bullet, GetEnemyBulletDamage(difficulty, (int) color), 2f, -2f, 0f, 1, false)); behavior6.AddNearAction(new Bounce(-2, 0)); } behavior6.AddFarAction(new PlayAnimation(AnimType.Stopped)); behavior6.AddFarAction(new FacePlayer()); behavior6.AddHitAction(new Wait(1)); behavior6.AddHitAction(new FacePlayer()); behavior6.AddHitAction(new Bounce(-2, -2)); behavior6.AddHitAction(new Wait(40)); behavior6.AddHitWallAction(new Bounce(-1, -1, 0.1f)); behavior6.AddHitWallAction(new Wait(30)); behavior6.AttackDistance = 300; obj15.SetBehavior(behavior6); obj15.ObjClass = ObjectClass.Enemy; if (color == ColorSwaps.Blue) { difficulty = 5; } obj15.AttackDamage = GetEnemyDamage(difficulty, (int) color); obj15.Aquatic = true; AddItemDrops(behavior6, itemDrops); obj15.Solid = true; return obj15; } case ObjectType.Goblin: { GameTexture texture22 = new GameTexture("goblin.bmp", new Size(0x20, 0x20), ColorSwaps.Red, color, TextureDisposePolicy.DisposeOnTileChange); GameObject obj23 = new GameObject(texture22, t, color); Size size22 = new Size(0x20, 0x20); difficulty = 4; EnemyBehavior behavior14 = new EnemyBehavior(obj23, GetEnemyHP(4, 5, 8, 9, (int) color), delay); if (color >= ColorSwaps.Blue) { difficulty = 9; } obj23.YSpeed.Acceleration = 2f; obj23.YSpeed.TargetSpeed = 4f; obj23.XSpeed.Acceleration = 1f; numArray = new int[2]; numArray[1] = 1; obj23.DefineAnimation(AnimType.Stopped, new Animation(AnimHitType.None, size22, numArray, 8, 15, true)); numArray = new int[2]; numArray[1] = 1; obj23.DefineAnimation(AnimType.Stopped2, new Animation(AnimHitType.None, size22, numArray, 8, 0x10, true)); numArray = new int[2]; numArray[1] = 1; obj23.DefineAnimation(AnimType.Jump, new Animation(AnimHitType.None, size22, numArray, 2, true)); obj23.DefineAnimation(AnimType.Hit, new Animation(AnimHitType.None, size22, new int[] { 2 }, 4, true)); obj23.DefineAnimation(AnimType.Dying, new Animation(AnimHitType.None, size22, new int[] { 2 }, 4, true)); SizeF ef53 = new SizeF(22f, 32f); RectangleF ef54 = new RectangleF(-11f, -32f, 22f, 32f); obj23.GetAnimation(AnimType.Stopped).HitboxSize = ef53; obj23.GetAnimation(AnimType.Stopped).SecondaryCollisionRectangle = ef54; obj23.GetAnimation(AnimType.Stopped2).HitboxSize = ef53; obj23.GetAnimation(AnimType.Stopped2).SecondaryCollisionRectangle = ef54; obj23.GetAnimation(AnimType.Hit).HitboxSize = ef53; obj23.GetAnimation(AnimType.Jump).HitboxSize = ef53; obj23.GetAnimation(AnimType.Jump).SecondaryCollisionRectangle = ef54; behavior14.AddNearAction(new SetSpeed(ActionPresets.Gravity)); behavior14.AddNearAction(new SetSpeed(1f, 1f, true)); behavior14.AddNearAction(new PlayAnimation(AnimType.Stopped2)); behavior14.AddNearAction(new Wait(60)); behavior14.AddNearAction(new FacePlayer()); behavior14.AddNearAction(new Stop(true, false, false)); if (color == ColorSwaps.Yellow) { behavior14.AddNearAction(new Jump(0f, 5f, true, false)); behavior14.AddNearAction(new Shoot(ObjectType.GoblinArrow, GetEnemyBulletDamage(difficulty, (int) color), 3f, 0f, 1, 1, false, false)); behavior14.AddNearAction(new Wait(5)); behavior14.AddNearAction(new Shoot(ObjectType.GoblinArrow, GetEnemyBulletDamage(difficulty, (int) color), 3f, 0f, 1, 1, false, false)); behavior14.AddNearAction(new Wait(5)); behavior14.AddNearAction(new Shoot(ObjectType.GoblinArrow, GetEnemyBulletDamage(difficulty, (int) color), 3f, 0f, 1, 1, false, false)); } else { behavior14.AddNearAction(new MultiAction(new Jump(0f, 5f, true, true), 3, 1)); behavior14.AddNearAction(new Shoot(ObjectType.GoblinArrow, GetEnemyBulletDamage(difficulty, (int) color), 3f, 0f, 1, 1, false, false)); } behavior14.AddFarAction(new Wait(5)); behavior14.AddFarAction(new FacePlayer()); behavior14.AddHitAction(new Wait(1)); behavior14.AddHitAction(new FacePlayer()); behavior14.AddHitAction(new Jump(ActionPresets.Recoil)); behavior14.AddHitAction(new Stop(true, false, false)); behavior14.AddHitAction(new Wait(40)); behavior14.AddHitWallAction(new Reverse()); behavior14.AddHitWallAction(new Wait(20)); behavior14.AttackDistance = 400; obj23.SetBehavior(behavior14); obj23.ObjClass = ObjectClass.Enemy; obj23.AttackDamage = GetEnemyDamage(difficulty, (int) color); obj23.StopsAtLedges = true; obj23.CurrentAnimation = AnimType.Stopped2; AddItemDrops(behavior14, itemDrops); return obj23; } case ObjectType.Ninja: { difficulty = 7; GameTexture texture30 = new GameTexture("ninja.bmp", new Size(0x20, 0x20), ColorSwaps.Red, color, TextureDisposePolicy.DisposeOnTileChange); GameObject obj31 = new GameObject(texture30, t, color); Size size30 = new Size(0x20, 0x20); EnemyBehavior behavior22 = new EnemyBehavior(obj31, GetEnemyHP(difficulty, (int) color) + 10, delay, ActivationTypes.ActivateIfClose, FacePlayerBehavior.AlwaysFace); if (color == ColorSwaps.Yellow) { difficulty = 6; } obj31.YSpeed.Acceleration = 0.5f; obj31.YSpeed.TargetSpeed = 0f; obj31.XSpeed.Acceleration = 0.1f; numArray = new int[1]; obj31.DefineAnimation(AnimType.Stopped, new Animation(AnimHitType.None, size30, numArray, 8, 15, true)); obj31.DefineAnimation(AnimType.Attacking, new Animation(AnimHitType.None, size30, new int[] { 1 }, 8, true)); obj31.DefineAnimation(AnimType.Jump, new Animation(AnimHitType.None, size30, new int[] { 2, 3, 4 }, 8, true)); obj31.DefineAnimation(AnimType.Hit, new Animation(AnimHitType.None, size30, new int[] { 5 }, 4, true)); obj31.DefineAnimation(AnimType.Dying, new Animation(AnimHitType.None, size30, new int[] { 5 }, 4, true)); SizeF ef67 = new SizeF(18f, 24f); RectangleF ef68 = new RectangleF(-9f, -24f, 18f, 24f); obj31.GetAnimation(AnimType.Stopped).HitboxSize = ef67; obj31.GetAnimation(AnimType.Hit).HitboxSize = ef67; obj31.GetAnimation(AnimType.Jump).HitboxSize = ef67; obj31.GetAnimation(AnimType.Attacking).HitboxSize = ef67; obj31.GetAnimation(AnimType.Attacking).SecondaryCollisionRectangle = ef68; int enemyBulletDamage = GetEnemyBulletDamage(difficulty + 1, (int) color); behavior22.AddNearAction(new FacePlayer()); if (color == ColorSwaps.Yellow) { behavior22.AddNearAction(new Wait(10)); behavior22.AddNearAction(new Shoot(ObjectType.NinjaStar, enemyBulletDamage, 4f, 0f, 1, 1, false, true)); behavior22.AddNearAction(new PlayAnimation(AnimType.Stopped)); behavior22.AddNearAction(new Wait(10)); behavior22.AddNearAction(new Shoot(ObjectType.NinjaStar, enemyBulletDamage, 4f, 0f, 1, 1, false, true)); behavior22.AddNearAction(new PlayAnimation(AnimType.Stopped)); behavior22.AddNearAction(new Wait(10)); behavior22.AddNearAction(new Shoot(ObjectType.NinjaStar, enemyBulletDamage, 4f, 0f, 1, 1, false, true)); behavior22.AddNearAction(new PlayAnimation(AnimType.Stopped)); behavior22.AddNearAction(new Jump(new Speed(1.5f, 0.08f, 0f), new Speed(-5f, 0.5f, 4f), true, false)); behavior22.AddNearAction(new Wait(60)); behavior22.AddNearAction(new Shoot(ObjectType.NinjaStar, enemyBulletDamage, 4f, 4f, 0f, 1, false)); behavior22.AddNearAction(new Shoot(ObjectType.NinjaStar, enemyBulletDamage, -4f, 4f, 0f, 1, false)); behavior22.AddNearAction(new Shoot(ObjectType.NinjaStar, enemyBulletDamage, 4f, -4f, 0f, 1, false)); behavior22.AddNearAction(new Shoot(ObjectType.NinjaStar, enemyBulletDamage, -4f, -4f, 0f, 1, false)); } else { behavior22.AddNearAction(new Wait(60)); behavior22.AddNearAction(new Shoot(ObjectType.NinjaStar, enemyBulletDamage, 4f, 0f, 1, 1, false, true)); behavior22.AddNearAction(new Wait(10)); behavior22.AddNearAction(new Jump(new Speed(1.5f, 0.08f, 0f), new Speed(-5f, 0.5f, 4f), true, true)); } behavior22.AddNearAction(new Stop(true, false, true)); behavior22.AddFarAction(new FacePlayer()); behavior22.AddFarAction(new Wait(60)); behavior22.AddFarAction(new Shoot(ObjectType.NinjaStar, enemyBulletDamage, 4f, 0f, 1, 1, false, true)); behavior22.AddFarAction(new Wait(10)); if (color == ColorSwaps.Yellow) { behavior22.AddFarAction(new Jump(new Speed(2.5f, 0.1f, 0f), new Speed(-5f, 0.5f, 4f), true, false)); behavior22.AddFarAction(new Wait(60)); behavior22.AddFarAction(new Shoot(ObjectType.NinjaStar, enemyBulletDamage, 4f, 4f, 0f, 1, false)); behavior22.AddFarAction(new Shoot(ObjectType.NinjaStar, enemyBulletDamage, -4f, 4f, 0f, 1, false)); behavior22.AddFarAction(new Shoot(ObjectType.NinjaStar, enemyBulletDamage, 4f, -4f, 0f, 1, false)); behavior22.AddFarAction(new Shoot(ObjectType.NinjaStar, enemyBulletDamage, -4f, -4f, 0f, 1, false)); } else { behavior22.AddFarAction(new Jump(new Speed(2.5f, 0.1f, 0f), new Speed(-5f, 0.5f, 4f), true, true)); } behavior22.AddFarAction(new Stop(true, false, true)); behavior22.AddHitAction(new Wait(1)); behavior22.AddHitAction(new FacePlayer()); behavior22.AddHitAction(new Stop(true, false, false)); behavior22.AddHitAction(new Jump(ActionPresets.Recoil)); if (color == ColorSwaps.Yellow) { behavior22.AddHitAction(new Wait(5)); behavior22.AddHitAction(new Jump(new Speed(-2.5f, 0.1f, 0f), new Speed(-5f, 0.5f, 4f), true, true)); } else { behavior22.AddHitAction(new Wait(40)); } behavior22.AttackDistance = 80; behavior22.AwakenDistance = 150; obj31.SetBehavior(behavior22); obj31.ObjClass = ObjectClass.Enemy; obj31.CurrentAnimation = AnimType.Stopped; AddItemDrops(behavior22, itemDrops); obj31.AttackDamage = GetEnemyDamage(difficulty + 2, (int) color); return obj31; } case ObjectType.Octopus: { difficulty = 3; GameTexture texture24 = new GameTexture("octopus.bmp", new Size(0x20, 0x20), ColorSwaps.Red, color, TextureDisposePolicy.DisposeOnTileChange); GameObject obj25 = new GameObject(texture24, t, color); Size size24 = new Size(0x20, 0x20); EnemyBehavior behavior16 = null; if (color != ColorSwaps.Yellow) { behavior16 = new EnemyBehavior(obj25, GetEnemyHP(difficulty, (int) color), delay); } else { behavior16 = new EnemyBehavior(obj25, GetEnemyHP(difficulty, (int) color), delay, ActivationTypes.ActivateIfClose, FacePlayerBehavior.AlwaysFace); } obj25.YSpeed.Acceleration = 0.5f; obj25.YSpeed.TargetSpeed = 4f; obj25.XSpeed.Acceleration = 0.3f; numArray = new int[2]; numArray[1] = 1; obj25.DefineAnimation(AnimType.Stopped, new Animation(AnimHitType.None, size24, numArray, 6, 15, true)); numArray = new int[1]; obj25.DefineAnimation(AnimType.Jump, new Animation(AnimHitType.None, size24, numArray, 2, true)); obj25.DefineAnimation(AnimType.Hit, new Animation(AnimHitType.None, size24, new int[] { 2 }, 4, true)); obj25.DefineAnimation(AnimType.Dying, new Animation(AnimHitType.None, size24, new int[] { 2 }, 4, true)); SizeF ef57 = new SizeF(18f, 26f); RectangleF ef58 = new RectangleF(-9f, -26f, 18f, 26f); obj25.GetAnimation(AnimType.Stopped).HitboxSize = ef57; obj25.GetAnimation(AnimType.Hit).HitboxSize = ef57; obj25.GetAnimation(AnimType.Jump).HitboxSize = ef57; obj25.GetAnimation(AnimType.Jump).SecondaryCollisionRectangle = ef58; obj25.GetAnimation(AnimType.Stopped).SecondaryCollisionRectangle = ef58; behavior16.AddNearAction(new FacePlayer()); if (color == ColorSwaps.Blue) { behavior16.AddNearAction(new SetSpeed(-3f, 3f, 0.8f, false)); behavior16.AddNearAction(new PlayAnimation(AnimType.Jump)); behavior16.AddNearAction(new Shoot(ObjectType.Bullet, GetEnemyBulletDamage(difficulty + 1, (int) color), (float) (difficulty - 1), 0f, 10, 1, false, false)); } else if (color == ColorSwaps.Yellow) { behavior16.AddNearAction(new SetSpeed(-3f, 0.5f, 0.3f, false)); behavior16.AddNearAction(new PlayAnimation(AnimType.Jump)); behavior16.AddNearAction(new Wait(30)); behavior16.AddNearAction(new SetSpeed(1f, 0.1f, true)); behavior16.AddNearAction(new MultiAction(new Shoot(ObjectType.Bullet, GetEnemyBulletDamage(difficulty + 1, (int) color), (float) (difficulty - 1), 0f, 10, 1, false, false), 6, 15)); behavior16.AddNearAction(new Stop(true, false, false)); behavior16.AddNearAction(new SetSpeed(4f, 1f, false)); } else { behavior16.AddNearAction(new SetSpeed(-4f, 4f, 0.8f, false)); behavior16.AddNearAction(new PlayAnimation(AnimType.Jump)); behavior16.AddNearAction(new Shoot(ObjectType.Bullet, GetEnemyBulletDamage(difficulty, (int) color), (float) (difficulty - 1), 0f, 10, 1, false, false)); } behavior16.AddNearAction(new Wait(120)); behavior16.AddFarAction(new Wait(5)); behavior16.AddFarAction(new FacePlayer()); behavior16.AddHitAction(new Wait(1)); behavior16.AddHitAction(new FacePlayer()); behavior16.AddHitAction(new Jump(ActionPresets.Recoil)); behavior16.AddHitAction(new Stop(true, false, false)); behavior16.AddHitAction(new Wait(30)); if (color == ColorSwaps.Yellow) { behavior16.AttackDistance = 100; } else { behavior16.AttackDistance = 150; } obj25.SetBehavior(behavior16); obj25.ObjClass = ObjectClass.Enemy; obj25.AttackDamage = GetEnemyDamage(difficulty, (int) color); obj25.CurrentAnimation = AnimType.Stopped; AddItemDrops(behavior16, itemDrops); return obj25; } case ObjectType.Roper: { if (color != ColorSwaps.Red) { if (color == ColorSwaps.Yellow) { difficulty = 6; } else { difficulty = 4; } } else { difficulty = 3; } GameTexture texture26 = new GameTexture("roper.bmp", new Size(0x20, 0x20), ColorSwaps.Red, color, TextureDisposePolicy.DisposeOnTileChange); GameObject obj27 = new GameObject(texture26, t, color); Size size26 = new Size(0x20, 0x20); delay = Utility.RandomInt(0, 60); EnemyBehavior behavior18 = new EnemyBehavior(obj27, GetEnemyHP(4, 6, 8, 9, (int) color) + (((ColorSwaps) 30) * color), delay); obj27.YSpeed.Acceleration = 1f; obj27.YSpeed.TargetSpeed = 4f; obj27.XSpeed.SetSpeed((float) 0f); numArray = new int[1]; obj27.DefineAnimation(AnimType.Stopped, new Animation(AnimHitType.None, size26, numArray, 8, true)); obj27.DefineAnimation(AnimType.Attacking, new Animation(AnimHitType.None, size26, new int[] { 1 }, 8, true)); obj27.DefineAnimation(AnimType.Hit, new Animation(AnimHitType.None, size26, new int[] { 2 }, 4, true)); obj27.DefineAnimation(AnimType.Dying, new Animation(AnimHitType.None, size26, new int[] { 2 }, 4, true)); SizeF ef60 = new SizeF(16f, 16f); RectangleF ef61 = new RectangleF(0f, -22f, 8f, 8f); obj27.GetAnimation(AnimType.Stopped).HitboxSize = ef60; obj27.GetAnimation(AnimType.Attacking).HitboxSize = ef60; obj27.GetAnimation(AnimType.Attacking).SecondaryCollisionRectangle = ef61; obj27.GetAnimation(AnimType.Hit).HitboxSize = ef60; ObjectType bouncingBullet = ObjectType.GravityBullet; if (color == ColorSwaps.Yellow) { bouncingBullet = ObjectType.BouncingBullet; } Shoot shoot3 = new Shoot(bouncingBullet, GetEnemyBulletDamage(difficulty, (int) color), 2f, -8f, 1, 8, true, true); Shoot shoot4 = new Shoot(bouncingBullet, GetEnemyBulletDamage(difficulty, (int) color), 2f, -10f, 1, 8, true, true); Wait wait = new Wait(Math.Max(80 - (color * ((ColorSwaps) 15)), 50)); behavior18.AddNearAction(new FacePlayer()); behavior18.AddNearAction(shoot3); behavior18.AddNearAction(new PlayAnimation(AnimType.Stopped)); behavior18.AddNearAction(wait); behavior18.AddNearAction(new FacePlayer()); behavior18.AddNearAction(shoot3); behavior18.AddNearAction(new PlayAnimation(AnimType.Stopped)); behavior18.AddNearAction(wait); behavior18.AddNearAction(new FacePlayer()); behavior18.AddNearAction(shoot3); behavior18.AddNearAction(new PlayAnimation(AnimType.Stopped)); behavior18.AddNearAction(wait); behavior18.AddNearAction(new FacePlayer()); behavior18.AddNearAction(shoot4); behavior18.AddNearAction(new PlayAnimation(AnimType.Stopped)); behavior18.AddNearAction(wait); behavior18.AddFarAction(new Wait(5)); behavior18.AddFarAction(new FacePlayer()); behavior18.AddHitAction(new Wait(1)); behavior18.AddHitAction(new FacePlayer()); behavior18.AddHitAction(new Stop(true, false, false)); behavior18.AddHitAction(new Wait(30)); behavior18.AttackDistance = 200; obj27.SetBehavior(behavior18); obj27.ObjClass = ObjectClass.Enemy; obj27.AttackDamage = GetEnemyDamage(difficulty, (int) color); obj27.CurrentAnimation = AnimType.Stopped; AddItemDrops(behavior18, itemDrops); return obj27; } case ObjectType.Spark: { difficulty = 6; GameTexture texture12 = new GameTexture("spark.bmp", new Size(0x10, 0x10), ColorSwaps.Red, color, TextureDisposePolicy.DisposeOnTileChange); obj13 = new GameObject(texture12, t, color); size12 = new Size(0x10, 0x10); obj13.XSpeed.Acceleration = 20f; obj13.YSpeed.Acceleration = 20f; num2 = 1f; if (color == ColorSwaps.Yellow) { num2 = 2f; } obj13.CurrentDirection = direction; switch (direction) { case Direction.Left: obj13.XSpeed.SetSpeed(-num2); goto Label_1E1E; case Direction.Right: goto Label_1E10; case Direction.Up: obj13.YSpeed.SetSpeed(-num2); goto Label_1E1E; case Direction.Down: obj13.YSpeed.SetSpeed(num2); goto Label_1E1E; } goto Label_1E10; } case ObjectType.Skeleton: case ObjectType.MasterSkeleton: case ObjectType.SkeletonBody: { string str = ""; if (t != ObjectType.Skeleton) { if (t == ObjectType.MasterSkeleton) { str = "masterskeleton.bmp"; difficulty = 14; } else if (t == ObjectType.SkeletonBody) { str = "skeletonbody.bmp"; difficulty = 5; } } else { str = "skeleton.bmp"; difficulty = 9; } GameTexture texture31 = new GameTexture(str, new Size(0x20, 0x20), ColorSwaps.Red, color, TextureDisposePolicy.DisposeOnTileChange); GameObject obj32 = new GameObject(texture31, t, color); Size size31 = new Size(0x20, 0x20); EnemyBehavior behavior23 = new EnemyBehavior(obj32, 1, delay); numArray = new int[2]; numArray[1] = 1; obj32.DefineAnimation(AnimType.Stopped, new Animation(AnimHitType.None, size31, numArray, 8, 15, true)); numArray = new int[2]; numArray[1] = 1; obj32.DefineAnimation(AnimType.Stopped2, new Animation(AnimHitType.None, size31, numArray, 8, 15, true)); numArray = new int[2]; numArray[1] = 1; obj32.DefineAnimation(AnimType.Jump, new Animation(AnimHitType.None, size31, numArray, 2, true)); obj32.DefineAnimation(AnimType.Hit, new Animation(AnimHitType.None, size31, new int[] { 2 }, 4, true)); obj32.DefineAnimation(AnimType.Dying, new Animation(AnimHitType.None, size31, new int[] { 2 }, 4, true)); SizeF ef69 = new SizeF(24f, 32f); if (t == ObjectType.SkeletonBody) { ef69.Height = 24f; } obj32.GetAnimation(AnimType.Stopped).HitboxSize = ef69; obj32.GetAnimation(AnimType.Hit).HitboxSize = ef69; obj32.GetAnimation(AnimType.Jump).HitboxSize = ef69; Jump jump = new Jump(5f, 8f, true, true); behavior23.AddNearAction(new SetSpeed(ActionPresets.Gravity)); behavior23.AddNearAction(new SetSpeed(1f, 0.5f, true)); behavior23.AddNearAction(new SkeletonAction(jump)); behavior23.AddNearAction(new SetSpeed(1f, 1f, true)); behavior23.AddFarAction(new Wait(5)); behavior23.AddFarAction(new SetSpeed(ActionPresets.Gravity)); behavior23.AddFarAction(new SetSpeed(1f, 1f, true)); behavior23.AddHitAction(new Wait(1)); behavior23.AddHitAction(new FacePlayer()); behavior23.AddHitAction(new Stop(true, false, false)); behavior23.AddHitAction(new Jump(ActionPresets.Recoil)); behavior23.AddHitAction(new Wait(40)); behavior23.AddHitWallAction(new Reverse()); behavior23.AddHitWallAction(new Wait(30)); behavior23.AttackDistance = 60; obj32.SetBehavior(behavior23); obj32.ObjClass = ObjectClass.Enemy; obj32.AttackDamage = GetEnemyDamage(difficulty, (int) color); obj32.StopsAtLedges = true; obj32.StopsAtBoundries = false; obj32.StopsAtSides = true; obj32.CurrentAnimation = AnimType.Stopped; AddItemDrops(behavior23, itemDrops); return obj32; } case ObjectType.MasterSkull: case ObjectType.Skull: { string str2 = ""; if (t != ObjectType.Skull) { difficulty = 8; str2 = "masterskull.bmp"; } else { difficulty = 6; str2 = "skull.bmp"; } GameTexture texture32 = new GameTexture(str2, new Size(0x20, 0x20), ColorSwaps.Red, color, TextureDisposePolicy.DisposeOnTileChange); GameObject obj33 = new GameObject(texture32, t, color); Size size32 = new Size(0x20, 0x20); EnemyBehavior behavior24 = new EnemyBehavior(obj33, 1, delay, ActivationTypes.AlwaysActivated, FacePlayerBehavior.FaceWhenCreated); numArray = new int[1]; obj33.DefineAnimation(AnimType.Stopped, new Animation(AnimHitType.None, size32, numArray, 8, 15, true)); numArray = new int[1]; obj33.DefineAnimation(AnimType.Stopped2, new Animation(AnimHitType.None, size32, numArray, 8, 15, true)); obj33.DefineAnimation(AnimType.Hit, new Animation(AnimHitType.None, size32, new int[] { 1 }, 4, true)); obj33.DefineAnimation(AnimType.Dying, new Animation(AnimHitType.None, size32, new int[] { 1 }, 4, true)); SizeF ef70 = new SizeF(16f, 16f); obj33.GetAnimation(AnimType.Stopped).HitboxSize = ef70; obj33.GetAnimation(AnimType.Hit).HitboxSize = ef70; behavior24.AddNearAction(new SetSpeed(1f, 0.5f, true)); behavior24.AddNearAction(new Wait(120)); behavior24.AddNearAction(new Stop(true, false, true)); behavior24.AddNearAction(new Jump(new Speed(3f, 0.5f, -3f), false, false, false)); behavior24.AddNearAction(new Wait(0x37)); behavior24.AddNearAction(new Stop(true, true, true)); behavior24.AddFarAction(new Wait(5)); behavior24.AddFarAction(new FacePlayer()); behavior24.AddFarAction(new SetSpeed(1.5f, 1f, true)); behavior24.AddHitAction(new Wait(1)); behavior24.AddHitAction(new FacePlayer()); behavior24.AddHitAction(new Stop(true, false, false)); behavior24.AddHitAction(new Wait(40)); behavior24.AddHitWallAction(new Reverse()); behavior24.AddHitWallAction(new Wait(30)); behavior24.AttackDistance = 120; obj33.SetBehavior(behavior24); obj33.ObjClass = ObjectClass.Enemy; obj33.AttackDamage = GetEnemyDamage(difficulty, (int) color); obj33.Solid = false; obj33.CurrentDirection = direction; obj33.CurrentAnimation = AnimType.Stopped; AddItemDrops(behavior24, itemDrops); return obj33; } case ObjectType.Samurai: { int num6 = 0; GameTexture texture28 = new GameTexture("samurai.bmp", new Size(0x20, 0x20), ColorSwaps.Green, color, TextureDisposePolicy.DisposeOnTileChange); GameObject obj29 = new GameObject(texture28, t, color); difficulty = 8; Size size28 = new Size(0x20, 0x20); if (color != ColorSwaps.Red) { if (color == ColorSwaps.Green) { num6 = 400; } else if (color == ColorSwaps.Blue) { num6 = 0x20a; } } else { num6 = 0x10a; } EnemyBehavior behavior20 = new EnemyBehavior(obj29, num6, delay, ActivationTypes.ActivateIfClose, FacePlayerBehavior.FaceWhenCreated); obj29.YSpeed.Acceleration = 2f; obj29.YSpeed.TargetSpeed = 4f; obj29.XSpeed.Acceleration = 0.3f; numArray = new int[2]; numArray[1] = 1; obj29.DefineAnimation(AnimType.Stopped, new Animation(AnimHitType.None, size28, numArray, 8, 15, true)); numArray = new int[2]; numArray[1] = 1; obj29.DefineAnimation(AnimType.Attacking, new Animation(AnimHitType.None, size28, numArray, 8, 15, true)); numArray = new int[2]; numArray[1] = 1; obj29.DefineAnimation(AnimType.Stopped2, new Animation(AnimHitType.None, size28, numArray, 8, 0x10, true)); numArray = new int[1]; obj29.DefineAnimation(AnimType.Jump, new Animation(AnimHitType.None, size28, numArray, 2, true)); obj29.DefineAnimation(AnimType.Hit, new Animation(AnimHitType.None, size28, new int[] { 2 }, 4, true)); obj29.DefineAnimation(AnimType.Dying, new Animation(AnimHitType.None, size28, new int[] { 2 }, 4, true)); SizeF ef64 = new SizeF(22f, 32f); RectangleF ef65 = new RectangleF(0f, -22f, 8f, 8f); obj29.GetAnimation(AnimType.Stopped).HitboxSize = ef64; obj29.GetAnimation(AnimType.Stopped2).HitboxSize = ef64; obj29.GetAnimation(AnimType.Hit).HitboxSize = ef64; obj29.GetAnimation(AnimType.Jump).HitboxSize = ef64; obj29.GetAnimation(AnimType.Attacking).HitboxSize = ef64; obj29.GetAnimation(AnimType.Attacking).SecondaryCollisionRectangle = ef65; behavior20.AddNearAction(new SetSpeed(ActionPresets.LightGravity)); behavior20.AddNearAction(new PlayAnimation(AnimType.Stopped2)); behavior20.AddNearAction(new FacePlayer()); behavior20.AddNearAction(new SetSpeed(1f, true)); behavior20.AddNearAction(new Wait(30)); behavior20.AddNearAction(new FacePlayer()); behavior20.AddNearAction(new Jump(0f, 3f, false, false)); behavior20.AddNearAction(new SetSpeed(2.5f, 1f, 0.2f, true)); behavior20.AddNearAction(new Wait(120)); behavior20.AddFarAction(new SetSpeed(ActionPresets.LightGravity)); behavior20.AddFarAction(new PlayAnimation(AnimType.Stopped2)); behavior20.AddFarAction(new FacePlayer()); behavior20.AddFarAction(new SetSpeed(1f, true)); behavior20.AddFarAction(new Wait(5)); behavior20.AddHitAction(new Wait(1)); behavior20.AddHitAction(new FacePlayer()); behavior20.AddHitAction(new Jump(ActionPresets.Recoil)); behavior20.AddHitAction(new Stop(true, false, false)); behavior20.AddHitAction(new Wait(20)); behavior20.AddPlayerAttackAction(new Jump(-3f, 4f, true, true)); behavior20.AddPlayerAttackAction(new Stop(true, false, false)); if (color == ColorSwaps.Green) { behavior20.AddPlayerAttackAction(new Shoot(ObjectType.BlueBullet, GetEnemyBulletDamage(difficulty, (int) color), 3f, -6.5f, 1, 1, true, true)); } else if (color == ColorSwaps.Blue) { behavior20.AddPlayerAttackAction(new Shoot(ObjectType.BlueBullet, GetEnemyBulletDamage(difficulty, (int) color), 4f, -7f, 1.5f, 1, true)); behavior20.AddPlayerAttackAction(new Shoot(ObjectType.BlueBullet, GetEnemyBulletDamage(difficulty, (int) color), 3f, -6f, 1.5f, 1, true)); behavior20.AddPlayerAttackAction(new Shoot(ObjectType.BlueBullet, GetEnemyBulletDamage(difficulty, (int) color), 2f, -5f, 1.5f, 1, true)); } behavior20.AddPlayerAttackAction(new Wait(30)); behavior20.AddHitWallAction(new Reverse()); behavior20.AddHitWallAction(new Wait(30)); behavior20.AttackDistance = 100; obj29.SetBehavior(behavior20); obj29.ObjClass = ObjectClass.Enemy; obj29.AttackDamage = GetEnemyDamage(difficulty + 3, (int) color); obj29.CurrentAnimation = AnimType.Stopped2; AddItemDrops(behavior20, itemDrops); return obj29; } case ObjectType.Shadow: { difficulty = 6; GameTexture texture20 = new GameTexture("shadow.bmp", new Size(0x20, 0x20), ColorSwaps.Blue, color, TextureDisposePolicy.DisposeOnTileChange); GameObject obj21 = new GameObject(texture20, t, color); Size size20 = new Size(0x20, 0x20); EnemyBehavior behavior12 = new EnemyBehavior(obj21, GetEnemyHP(difficulty, (int) color), delay, ActivationTypes.ActivateIfFacing, FacePlayerBehavior.None); obj21.YSpeed.Acceleration = 2f; obj21.YSpeed.TargetSpeed = 4f; obj21.XSpeed.SetSpeed((float) 0f); numArray = new int[1]; obj21.DefineAnimation(AnimType.Stopped, new Animation(AnimHitType.Ghost, size20, numArray, 8, true)); obj21.DefineAnimation(AnimType.Stopped2, new Animation(AnimHitType.None, size20, new int[] { 1 }, 8, true)); obj21.DefineAnimation(AnimType.Attacking, new Animation(AnimHitType.None, size20, new int[] { 2, 3 }, 6, true)); obj21.DefineAnimation(AnimType.Stopped2, new Animation(AnimHitType.None, size20, new int[] { 4 }, 8, true)); obj21.DefineAnimation(AnimType.Hit, new Animation(AnimHitType.None, size20, new int[] { 5 }, 1, true)); obj21.DefineAnimation(AnimType.Dying, new Animation(AnimHitType.None, size20, new int[] { 5 }, 1, true)); SizeF ef48 = new SizeF(18f, 12f); SizeF ef49 = new SizeF(18f, 32f); RectangleF ef50 = new RectangleF(0f, -14f, 4f, 4f); obj21.GetAnimation(AnimType.Stopped).HitboxSize = ef48; obj21.GetAnimation(AnimType.Stopped2).HitboxSize = ef48; obj21.GetAnimation(AnimType.Stopped2).HitboxSize = ef48; obj21.GetAnimation(AnimType.Hit).HitboxSize = ef49; obj21.GetAnimation(AnimType.Attacking).HitboxSize = ef49; obj21.GetAnimation(AnimType.Attacking).SecondaryCollisionRectangle = ef50; behavior12.AddNearAction(new Wait(10)); behavior12.AddNearAction(new PlayAnimation(AnimType.Stopped2)); behavior12.AddNearAction(new Wait(5)); if (color != ColorSwaps.Green) { if (color == ColorSwaps.Blue) { behavior12.AddNearAction(new Shoot(ObjectType.Bullet, GetEnemyBulletDamage(difficulty, (int) color), 5f, 0f, 40, 40, false, true)); } else if (color == ColorSwaps.Yellow) { Shoot shoot = new Shoot(ObjectType.Bullet, GetEnemyBulletDamage(difficulty + 1, (int) color), 6f, 0f, 2, 2, false, true); Shoot shoot2 = new Shoot(ObjectType.Bullet, GetEnemyBulletDamage(difficulty + 1, (int) color), 6f, 0f, 20, 2, false, true); behavior12.AddNearAction(shoot2); behavior12.AddNearAction(new MultiAction(shoot, 3, 5)); } else { behavior12.AddNearAction(new PlayAnimation(AnimType.Attacking)); behavior12.AddNearAction(new Wait(40)); } } else { behavior12.AddNearAction(new Shoot(ObjectType.Bullet, GetEnemyBulletDamage(difficulty, (int) color), 3f, 0f, 40, 40, false, true)); } behavior12.AddNearAction(new PlayAnimation(AnimType.Stopped2)); behavior12.AddNearAction(new Wait(10)); behavior12.AddNearAction(new PlayAnimation(AnimType.Stopped)); behavior12.AddNearAction(new Wait(60)); behavior12.AddFarAction(new Wait(30)); behavior12.AddHitAction(new Wait(1)); behavior12.AddHitAction(new Wait(40)); behavior12.AddHitAction(new Shoot(ObjectType.Bullet, GetEnemyBulletDamage(difficulty, (int) color), 3f, 0f, 40, 40, false, true)); behavior12.AddHitAction(new PlayAnimation(AnimType.Stopped2)); behavior12.AddHitAction(new Wait(10)); obj21.CurrentDirection = direction; if (color == ColorSwaps.Yellow) { behavior12.AttackDistance = 150; } else { behavior12.AttackDistance = 100; } obj21.SetBehavior(behavior12); obj21.ObjClass = ObjectClass.Enemy; obj21.AttackDamage = GetEnemyDamage(difficulty, (int) color); AddItemDrops(behavior12, itemDrops); return obj21; } case ObjectType.ShortFireFlower: { GameTexture texture17 = new GameTexture("fireFlowerS.bmp", new Size(0x20, 0x10), TextureDisposePolicy.DisposeOnTileChange); GameObject obj18 = new GameObject(texture17, t, ColorSwaps.Normal); Size size17 = new Size(0x20, 0x10); EnemyBehavior behavior9 = new EnemyBehavior(obj18, 1, delay); difficulty = GameEngine.Game.BaseDifficulty; obj18.YSpeed.Acceleration = 2f; obj18.YSpeed.TargetSpeed = 4f; obj18.XSpeed.SetSpeed((float) 0f); numArray = new int[2]; numArray[1] = 1; obj18.DefineAnimation(AnimType.Stopped, new Animation(AnimHitType.None, size17, numArray, 8, true)); obj18.DefineAnimation(AnimType.Attacking, new Animation(AnimHitType.None, size17, new int[] { 2 }, 1, true)); obj18.DefineAnimation(AnimType.Hit, new Animation(AnimHitType.None, size17, new int[] { 3 }, 1, true)); obj18.DefineAnimation(AnimType.Dying, new Animation(AnimHitType.None, size17, new int[] { 3 }, 1, true)); SizeF ef43 = new SizeF(13f, 16f); RectangleF ef44 = new RectangleF(-8f, -16f, 16f, 16f); obj18.GetAnimation(AnimType.Stopped).HitboxSize = ef43; obj18.GetAnimation(AnimType.Hit).HitboxSize = ef43; obj18.GetAnimation(AnimType.Attacking).HitboxSize = ef43; obj18.GetAnimation(AnimType.Attacking).SecondaryCollisionRectangle = ef44; behavior9.AddNearAction(new Wait(60)); behavior9.AddNearAction(new FacePlayer()); behavior9.AddNearAction(new Shoot(ObjectType.Bullet, GetEnemyBulletDamage(difficulty, 1), 2f, 0f, 30, 1, false, true)); behavior9.AddNearAction(new Wait(30, true)); behavior9.AddFarAction(new Wait(30)); behavior9.AddFarAction(new FacePlayer()); behavior9.AddHitAction(new Wait(1)); behavior9.AddHitAction(new FacePlayer()); behavior9.AddHitAction(new Wait(40)); behavior9.AttackDistance = 200; obj18.SetBehavior(behavior9); obj18.ObjClass = ObjectClass.Enemy; obj18.AttackDamage = GetEnemyDamage(difficulty, 1); AddItemDrops(behavior9, itemDrops); return obj18; } case ObjectType.Snake: { GameTexture texture9 = new GameTexture("snake.bmp", new Size(0x20, 0x20), ColorSwaps.Green, color, TextureDisposePolicy.DisposeOnTileChange); obj10 = new GameObject(texture9, t, color); Size size9 = new Size(0x20, 0x20); behavior = new EnemyBehavior(obj10, GetEnemyHP(difficulty, (int) color), delay); obj10.YSpeed.Acceleration = 2f; obj10.YSpeed.TargetSpeed = 4f; obj10.XSpeed.TargetSpeed = 0f; obj10.XSpeed.Acceleration = 0.3f; numArray = new int[2]; numArray[1] = 1; obj10.DefineAnimation(AnimType.Stopped, new Animation(AnimHitType.None, size9, numArray, 8, true)); obj10.DefineAnimation(AnimType.Jump, new Animation(AnimHitType.None, size9, new int[] { 2 }, 1, true)); obj10.DefineAnimation(AnimType.Hit, new Animation(AnimHitType.None, size9, new int[] { 3 }, 1, true)); obj10.DefineAnimation(AnimType.Dying, new Animation(AnimHitType.None, size9, new int[] { 3 }, 1, true)); SizeF ef31 = new SizeF(18f, 25f); SizeF ef32 = new SizeF(25f, 25f); obj10.GetAnimation(AnimType.Stopped).HitboxSize = ef31; obj10.GetAnimation(AnimType.Hit).HitboxSize = ef31; obj10.GetAnimation(AnimType.Jump).HitboxSize = ef32; behavior.AddNearAction(new SetSpeed(ActionPresets.Gravity)); if (color < ColorSwaps.Blue) { behavior.AddNearAction(new Wait(10)); break; } behavior.AddNearAction(new Wait(2)); break; } case ObjectType.Smog: { ObjectType smogFireball; GameTexture texture13 = new GameTexture("smog.bmp", new Size(0x20, 0x20), ColorSwaps.Red, color, TextureDisposePolicy.DisposeOnTileChange); GameObject obj14 = new GameObject(texture13, t, color); Size size13 = new Size(0x20, 0x20); EnemyBehavior behavior5 = new EnemyBehavior(obj14, GetEnemyHP(difficulty, (int) color), delay, ActivationTypes.AlwaysActivated, FacePlayerBehavior.AlwaysFace); numArray = new int[2]; numArray[1] = 1; obj14.DefineAnimation(AnimType.Stopped, new Animation(AnimHitType.None, size13, numArray, 8, true)); obj14.DefineAnimation(AnimType.Hit, new Animation(AnimHitType.None, size13, new int[] { 2 }, 1, true)); obj14.DefineAnimation(AnimType.Dying, new Animation(AnimHitType.None, size13, new int[] { 2 }, 1, true)); SizeF ef37 = new SizeF(32f, 16f); Rectangle rectangle = new Rectangle(-16, -16, 0x20, 0x10); obj14.GetAnimation(AnimType.Stopped).HitboxSize = ef37; obj14.GetAnimation(AnimType.Stopped).SecondaryCollisionRectangle = rectangle; obj14.GetAnimation(AnimType.Hit).HitboxSize = ef37; if (color != ColorSwaps.Red) { if (color == ColorSwaps.Green) { smogFireball = ObjectType.SmogFireball2; } else { smogFireball = ObjectType.SmogFireball3; } } else { smogFireball = ObjectType.SmogFireball; } behavior5.AddNearAction(new PlayAnimation(AnimType.Stopped)); behavior5.AddNearAction(new FacePlayer()); behavior5.AddNearAction(new Hover(new Speed(0f, 0.8f, 4f), new Speed(0f, 0f, 0f), 60, true)); behavior5.AddNearAction(new Shoot(smogFireball, GetEnemyBulletDamage(difficulty, (int) color), 0f, -3f, 1, 1, true, false)); behavior5.AddFarAction(new PlayAnimation(AnimType.Stopped)); behavior5.AddFarAction(new FacePlayer()); behavior5.AddHitAction(new Wait(1)); behavior5.AddHitAction(new FacePlayer()); behavior5.AddHitAction(new Stop(true, true, true)); behavior5.AddHitAction(new Wait(60)); behavior5.AddHitWallAction(new Bounce(-2, 0, 0.2f)); behavior5.AddHitWallAction(new Wait(30)); behavior5.AttackDistance = 300; if (color > ColorSwaps.Red) { behavior5.AttackDistance = 600; } obj14.SetBehavior(behavior5); obj14.ObjClass = ObjectClass.Enemy; obj14.AttackDamage = GetEnemyDamage(difficulty, (int) color); obj14.StopsAtBoundries = false; AddItemDrops(behavior5, itemDrops); obj14.Solid = true; return obj14; } case ObjectType.Toad: { difficulty = 4; GameTexture texture10 = new GameTexture("toad.bmp", new Size(0x20, 0x20), ColorSwaps.Red, color, TextureDisposePolicy.DisposeOnTileChange); GameObject obj11 = new GameObject(texture10, t, color); Size size10 = new Size(0x20, 0x20); EnemyBehavior behavior2 = new EnemyBehavior(obj11, GetEnemyHP(3, 6, 7, 8, (int) color), delay, ActivationTypes.ActivateIfClose, FacePlayerBehavior.FaceWhenCreated); obj11.YSpeed.Acceleration = 1f; obj11.YSpeed.TargetSpeed = 4f; obj11.XSpeed.TargetSpeed = 0f; obj11.XSpeed.Acceleration = 1f; numArray = new int[1]; obj11.DefineAnimation(AnimType.Stopped, new Animation(AnimHitType.None, size10, numArray, 8, true)); numArray = new int[2]; numArray[1] = 1; obj11.DefineAnimation(AnimType.Stopped2, new Animation(AnimHitType.None, size10, numArray, 8, true)); obj11.DefineAnimation(AnimType.Jump, new Animation(AnimHitType.None, size10, new int[] { 2 }, 1, true)); obj11.DefineAnimation(AnimType.Hit, new Animation(AnimHitType.None, size10, new int[] { 3 }, 1, true)); obj11.DefineAnimation(AnimType.Dying, new Animation(AnimHitType.None, size10, new int[] { 3 }, 1, true)); SizeF ef33 = new SizeF(18f, 25f); SizeF ef34 = new SizeF(25f, 25f); obj11.GetAnimation(AnimType.Stopped).HitboxSize = ef33; obj11.GetAnimation(AnimType.Stopped2).HitboxSize = ef33; obj11.GetAnimation(AnimType.Hit).HitboxSize = ef33; obj11.GetAnimation(AnimType.Jump).HitboxSize = ef34; behavior2.AddNearAction(new Wait(30)); behavior2.AddNearAction(new FacePlayer()); behavior2.AddNearAction(new MultiAction(new Jump(new Speed(1.4f, 1.4f, 1.4f), new Speed(-6f, 1f, 6f), true, true), ((int) color) + 1, 0)); behavior2.AddNearAction(new Stop(true, false, true)); behavior2.AddNearAction(new PlayAnimation(AnimType.Stopped2)); if (color != ColorSwaps.Red) { behavior2.AddNearAction(new Wait(30)); } else { behavior2.AddNearAction(new Wait(180)); } behavior2.AddFarAction(new Stop(true, false, true)); behavior2.AddFarAction(new SetSpeed(ActionPresets.Gravity)); behavior2.AddFarAction(new Wait(30)); behavior2.AddFarAction(new FacePlayer()); behavior2.AddHitAction(new Wait(1)); behavior2.AddHitAction(new FacePlayer()); behavior2.AddHitAction(new Jump(ActionPresets.Recoil)); behavior2.AddHitAction(new Wait(40)); behavior2.AttackDistance = 200; obj11.SetBehavior(behavior2); obj11.ObjClass = ObjectClass.Enemy; obj11.AttackDamage = GetEnemyDamage(difficulty, (int) color); obj11.StopsAtBoundries = false; AddItemDrops(behavior2, itemDrops); return obj11; } case ObjectType.Willowisp: { difficulty = 3; int num3 = GetEnemyHP(3, 6, 7, 8, (int) color); if (color > ColorSwaps.Red) { num3 += 30; } GameTexture texture15 = new GameTexture("willowisp.bmp", new Size(0x10, 0x10), ColorSwaps.Red, color, TextureDisposePolicy.DisposeOnTileChange); GameObject obj16 = new GameObject(texture15, t, color); Size size15 = new Size(0x10, 0x10); EnemyBehavior behavior7 = new EnemyBehavior(obj16, num3, delay, ActivationTypes.AlwaysActivated, FacePlayerBehavior.None); numArray = new int[2]; numArray[1] = 1; obj16.DefineAnimation(AnimType.Stopped, new Animation(AnimHitType.None, size15, numArray, 8, true)); obj16.DefineAnimation(AnimType.Hit, new Animation(AnimHitType.None, size15, new int[] { 2, 3 }, 1, true)); obj16.DefineAnimation(AnimType.Dying, new Animation(AnimHitType.None, size15, new int[] { 2, 3 }, 1, true)); SizeF ef40 = new SizeF(16f, 16f); obj16.GetAnimation(AnimType.Stopped).HitboxSize = ef40; obj16.GetAnimation(AnimType.Hit).HitboxSize = ef40; behavior7.AddNearAction(new PlayAnimation(AnimType.Stopped)); behavior7.AddNearAction(new FacePlayer()); behavior7.AddNearAction(new SetSpeed(1f, 0.5f, true)); behavior7.AddNearAction(new Hover(new Speed(0f, 0f, 0f), new Speed(0f, 0.2f, 1f), 180, true)); behavior7.AddFarAction(new PlayAnimation(AnimType.Stopped)); behavior7.AddFarAction(new FacePlayer()); behavior7.AddHitAction(new Wait(1)); behavior7.AddHitAction(new FacePlayer()); behavior7.AddHitAction(new Bounce(-2, -2)); behavior7.AddHitAction(new Wait(40)); behavior7.AddHitWallAction(new Bounce(-1, -1, 0.1f)); behavior7.AddHitWallAction(new Wait(30)); behavior7.AttackDistance = 300; obj16.SetBehavior(behavior7); obj16.ObjClass = ObjectClass.Enemy; obj16.AttackDamage = GetEnemyDamage(difficulty, (int) color); obj16.StopsAtBoundries = true; AddItemDrops(behavior7, itemDrops); obj16.Solid = true; return obj16; } case ObjectType.MechaDragon: { GameTexture texture33 = new GameTexture("mecha.bmp", new Size(0x40, 0x48), TextureDisposePolicy.DisposeOnTileChange); GameObject obj34 = new GameObject(texture33, t, color); Size size33 = new Size(0x40, 0x48); difficulty = 5; obj34.ObjClass = ObjectClass.Boss; obj34.YSpeed.Acceleration = 1f; obj34.YSpeed.TargetSpeed = 4f; obj34.XSpeed.SetSpeed((float) 0f); obj34.DefineAnimation(AnimType.Stopped, new Animation(AnimHitType.HeadOnly, size33, new int[] { 3 }, 8, true)); obj34.DefineAnimation(AnimType.Stopped2, new Animation(AnimHitType.HeadOnly, size33, new int[] { 3, 2 }, 8, true)); obj34.DefineAnimation(AnimType.Attacking, new Animation(AnimHitType.HeadOnly, size33, new int[] { 1 }, 8, true)); numArray = new int[1]; obj34.DefineAnimation(AnimType.Hit, new Animation(AnimHitType.HeadOnly, size33, numArray, 4, true)); numArray = new int[1]; obj34.DefineAnimation(AnimType.Dying, new Animation(AnimHitType.None, size33, numArray, 4, true)); SizeF ef71 = new SizeF(56f, 72f); RectangleF ef72 = new RectangleF(8f, -64f, 24f, 24f); obj34.GetAnimation(AnimType.Stopped).HitboxSize = ef71; obj34.GetAnimation(AnimType.Stopped2).HitboxSize = ef71; obj34.GetAnimation(AnimType.Stopped2).SecondaryCollisionRectangle = ef72; obj34.GetAnimation(AnimType.Attacking).HitboxSize = ef71; obj34.GetAnimation(AnimType.Attacking).SecondaryCollisionRectangle = ef72; obj34.GetAnimation(AnimType.Hit).HitboxSize = ef71; obj34.GetAnimation(AnimType.Dying).HitboxSize = ef71; obj34.GetAnimation(AnimType.Dying).SecondaryCollisionRectangle = ef72; EnemyBehavior behavior25 = new EnemyBehavior(obj34, 0x7d0, delay); obj34.CurrentDirection = Direction.Left; behavior25.AddFarAction(new Wait(10)); MultiAction action = new MultiAction(new Shoot(ObjectType.MechaFireball, GetEnemyBulletDamage(difficulty, 2), 6f, 4f, 1, 1, false, true, SoundEffects.LizardFire), 10, 3); behavior25.AddNearAction(new PlayAnimation(AnimType.Stopped2)); behavior25.AddNearAction(new MechaDragonMotion()); behavior25.AddNearAction(new Stop(true, true, false)); behavior25.AddNearAction(action); behavior25.AddNearAction(new Wait(20)); behavior25.AddHitAction(new Wait(1)); behavior25.AddHitAction(new Jump(ActionPresets.BossRecoil)); behavior25.AddHitAction(new Wait(40)); behavior25.AddHitAction(new Stop(true, true, false)); behavior25.AddHitAction(action); behavior25.AddHitAction(new Wait(20)); behavior25.AttackDistance = 0x3e8; obj34.SetBehavior(behavior25); obj34.StopsAtBoundries = true; obj34.AttackDamage = GetEnemyDamage(difficulty, 2); obj34.CurrentAnimation = AnimType.Stopped; AddItemDrops(behavior25, itemDrops); return obj34; } case ObjectType.MummyDragon: { difficulty = 5; GameTexture texture34 = new GameTexture("mummydragon.bmp", new Size(0x40, 0x40), TextureDisposePolicy.DisposeOnTileChange); GameObject obj35 = new GameObject(texture34, t, color); Size size34 = new Size(0x40, 0x40); obj35.ObjClass = ObjectClass.Boss; obj35.YSpeed.Acceleration = 1f; obj35.YSpeed.TargetSpeed = 4f; obj35.XSpeed.SetSpeed((float) 0f); numArray = new int[2]; numArray[1] = 1; obj35.DefineAnimation(AnimType.Stopped, new Animation(AnimHitType.HeadOnly, size34, numArray, 8, true)); numArray = new int[2]; numArray[1] = 1; obj35.DefineAnimation(AnimType.Stopped2, new Animation(AnimHitType.HeadOnly, size34, numArray, 8, true)); obj35.DefineAnimation(AnimType.Attacking, new Animation(AnimHitType.HeadOnly, size34, new int[] { 2 }, 8, true)); obj35.DefineAnimation(AnimType.Hit, new Animation(AnimHitType.HeadOnly, size34, new int[] { 3 }, 4, true)); obj35.DefineAnimation(AnimType.Dying, new Animation(AnimHitType.Invincible, size34, new int[] { 3 }, 4, true)); SizeF ef73 = new SizeF(56f, 72f); RectangleF ef74 = new RectangleF(16f, -48f, 16f, 8f); RectangleF ef75 = new RectangleF(8f, -56f, 16f, 8f); obj35.GetAnimation(AnimType.Stopped).HitboxSize = ef73; obj35.GetAnimation(AnimType.Stopped2).HitboxSize = ef73; obj35.GetAnimation(AnimType.Stopped2).SecondaryCollisionRectangle = ef75; obj35.GetAnimation(AnimType.Attacking).HitboxSize = ef73; obj35.GetAnimation(AnimType.Attacking).SecondaryCollisionRectangle = ef74; obj35.GetAnimation(AnimType.Hit).HitboxSize = ef73; obj35.GetAnimation(AnimType.Dying).HitboxSize = ef73; obj35.GetAnimation(AnimType.Dying).SecondaryCollisionRectangle = ef75; EnemyBehavior behavior26 = new EnemyBehavior(obj35, 200, delay); obj35.CurrentDirection = Direction.Left; behavior26.AddFarAction(new Wait(10)); behavior26.AddFarAction(new PlayAnimation(AnimType.Stopped2)); behavior26.AddNearAction(new PlayAnimation(AnimType.Stopped2)); behavior26.AddNearAction(new MummyDragonMotion()); behavior26.AddHitAction(new Wait(1)); behavior26.AddHitAction(new Jump(ActionPresets.BossRecoil)); behavior26.AddHitAction(new Wait(40)); behavior26.AddHitAction(new SetSpeed(-2f, -3f, false)); behavior26.AddHitAction(new Wait(3)); behavior26.AddHitAction(new SetSpeed(0f, 0f, false)); obj35.AttackDamage = GetEnemyDamage(difficulty, (int) color); behavior26.AttackDistance = 0x3e8; obj35.SetBehavior(behavior26); obj35.StopsAtBoundries = true; obj35.CurrentAnimation = AnimType.Stopped; AddItemDrops(behavior26, itemDrops); return obj35; } case ObjectType.ZombieDragon: { difficulty = 8; GameTexture texture35 = new GameTexture("dragonzombie.bmp", new Size(0x40, 0x40), TextureDisposePolicy.DisposeOnTileChange); GameObject obj36 = new GameObject(texture35, t, color); Size size35 = new Size(0x40, 0x40); obj36.ObjClass = ObjectClass.Boss; obj36.DefineAnimation(AnimType.Stopped, new Animation(AnimHitType.HeadOnly, size35, new int[] { 1, 2 }, 8, true)); numArray = new int[1]; obj36.DefineAnimation(AnimType.Stopped2, new Animation(AnimHitType.Invincible, size35, numArray, 8, true)); obj36.DefineAnimation(AnimType.Attacking, new Animation(AnimHitType.Invincible, size35, new int[] { 3, 4 }, 8, true)); obj36.DefineAnimation(AnimType.Hit, new Animation(AnimHitType.Invincible, size35, new int[] { 5 }, 4, true)); obj36.DefineAnimation(AnimType.Dying, new Animation(AnimHitType.Invincible, size35, new int[] { 5 }, 4, true)); SizeF ef76 = new SizeF(32f, 64f); RectangleF ef77 = new RectangleF(12f, -48f, 16f, 16f); RectangleF ef78 = new RectangleF(16f, -40f, 16f, 16f); obj36.GetAnimation(AnimType.Stopped).HitboxSize = ef76; obj36.GetAnimation(AnimType.Stopped).SecondaryCollisionRectangle = ef77; obj36.GetAnimation(AnimType.Stopped2).HitboxSize = ef76; obj36.GetAnimation(AnimType.Stopped2).SecondaryCollisionRectangle = ef77; obj36.GetAnimation(AnimType.Attacking).HitboxSize = ef76; obj36.GetAnimation(AnimType.Attacking).SecondaryCollisionRectangle = ef78; obj36.GetAnimation(AnimType.Hit).HitboxSize = ef76; obj36.GetAnimation(AnimType.Dying).HitboxSize = ef76; obj36.GetAnimation(AnimType.Dying).SecondaryCollisionRectangle = ef78; EnemyBehavior behavior27 = new EnemyBehavior(obj36, 0x4b0, delay); obj36.CurrentDirection = Direction.Left; behavior27.AddFarAction(new Wait(10)); behavior27.AddNearAction(new ZombieDragonMotion()); behavior27.AddHitAction(new Wait(1)); behavior27.AddHitAction(new Jump(ActionPresets.BossRecoil)); behavior27.AddHitAction(new Wait(40)); behavior27.AddHitAction(new PlayAnimation(AnimType.Stopped2)); behavior27.AddHitAction(new SetSpeed(2f, 2f, 2f, false)); obj36.AttackDamage = GetEnemyDamage(difficulty, 0); behavior27.AttackDistance = 0x3e8; obj36.SetBehavior(behavior27); obj36.StopsAtBoundries = false; obj36.Solid = false; obj36.CurrentAnimation = AnimType.Stopped2; AddItemDrops(behavior27, itemDrops); return obj36; } case ObjectType.PirateDragon: { GameTexture texture36 = new GameTexture("piratedragon.bmp", new Size(0x48, 0x48), TextureDisposePolicy.DisposeOnTileChange); GameObject obj37 = new GameObject(texture36, t, color); Size size36 = new Size(0x48, 0x48); obj37.ObjClass = ObjectClass.Boss; obj37.XSpeed.SetSpeed((float) 0f); obj37.YSpeed.SetSpeed((float) 0f); int num8 = 0x20; numArray = new int[2]; numArray[1] = 1; obj37.DefineAnimation(AnimType.Stopped, new Animation(AnimHitType.HeadOnly, size36, numArray, 8, num8, true)); obj37.DefineAnimation(AnimType.Stopped2, new Animation(AnimHitType.HeadOnly, size36, new int[] { 2, 3 }, 8, num8, true)); obj37.DefineAnimation(AnimType.Stopped2, new Animation(AnimHitType.HeadOnly, size36, new int[] { 4, 5 }, 8, num8, true)); obj37.DefineAnimation(AnimType.Attacking, new Animation(AnimHitType.HeadOnly, size36, new int[] { 6 }, 8, num8, true)); obj37.DefineAnimation(AnimType.Hit, new Animation(AnimHitType.HeadOnly, size36, new int[] { 7 }, 4, true)); obj37.DefineAnimation(AnimType.Dying, new Animation(AnimHitType.Invincible, size36, new int[] { 7 }, 4, true)); SizeF ef79 = new SizeF(32f, 72f); RectangleF ef80 = new RectangleF(0f, -64f, 24f, 16f); RectangleF ef81 = new RectangleF(24f, -72f, 8f, 8f); obj37.GetAnimation(AnimType.Stopped).HitboxSize = ef79; obj37.GetAnimation(AnimType.Stopped).SecondaryCollisionRectangle = ef80; obj37.GetAnimation(AnimType.Stopped2).HitboxSize = ef79; obj37.GetAnimation(AnimType.Stopped2).SecondaryCollisionRectangle = ef80; obj37.GetAnimation(AnimType.Stopped2).HitboxSize = ef79; obj37.GetAnimation(AnimType.Stopped2).SecondaryCollisionRectangle = ef80; obj37.GetAnimation(AnimType.Attacking).HitboxSize = ef79; obj37.GetAnimation(AnimType.Attacking).SecondaryCollisionRectangle = ef81; obj37.GetAnimation(AnimType.Hit).HitboxSize = ef79; obj37.GetAnimation(AnimType.Dying).HitboxSize = ef79; obj37.GetAnimation(AnimType.Dying).SecondaryCollisionRectangle = ef81; EnemyBehavior behavior28 = new EnemyBehavior(obj37, 0x5dc, delay); obj37.CurrentDirection = Direction.Left; behavior28.AddFarAction(new Wait(10)); behavior28.AddFarAction(new PlayAnimation(AnimType.Stopped2)); behavior28.AddNearAction(new PlayAnimation(AnimType.Stopped2)); behavior28.AddNearAction(new PirateDragonMotion()); behavior28.AddHitAction(new Wait(1)); behavior28.AddHitAction(new Jump(ActionPresets.BossRecoil)); behavior28.AddHitAction(new Wait(5)); obj37.AttackDamage = GetEnemyDamage(5, 1); behavior28.AttackDistance = 0x3e8; obj37.SetBehavior(behavior28); obj37.StopsAtBoundries = true; obj37.Solid = true; obj37.CurrentAnimation = AnimType.Stopped; AddItemDrops(behavior28, itemDrops); return obj37; } case ObjectType.DaiymoDragon: { GameTexture texture37 = new GameTexture("daiymodragon.bmp", new Size(0x40, 0x60), TextureDisposePolicy.DisposeOnTileChange); GameObject obj38 = new GameObject(texture37, t, color); Size size37 = new Size(0x40, 0x60); obj38.ObjClass = ObjectClass.Boss; obj38.XSpeed.SetSpeed((float) 0f); obj38.YSpeed.SetSpeed((float) 0f); int num9 = 0x18; obj38.DefineAnimation(AnimType.Stopped, new Animation(AnimHitType.HeadOnly, size37, new int[] { 2 }, 8, num9, true)); numArray = new int[2]; numArray[1] = 1; obj38.DefineAnimation(AnimType.Stopped2, new Animation(AnimHitType.Invincible, size37, numArray, 8, num9, true)); obj38.DefineAnimation(AnimType.Attacking, new Animation(AnimHitType.Invincible, size37, new int[] { 2, 1, 3 }, 4, num9, true)); obj38.DefineAnimation(AnimType.Hit, new Animation(AnimHitType.HeadOnly, size37, new int[] { 4 }, 4, true)); obj38.DefineAnimation(AnimType.Dying, new Animation(AnimHitType.Invincible, size37, new int[] { 4 }, 4, true)); SizeF ef82 = new SizeF(24f, 48f); RectangleF ef83 = new RectangleF(0f, -64f, 20f, 20f); obj38.GetAnimation(AnimType.Stopped).HitboxSize = ef82; obj38.GetAnimation(AnimType.Stopped).SecondaryCollisionRectangle = ef83; obj38.GetAnimation(AnimType.Stopped2).HitboxSize = ef82; obj38.GetAnimation(AnimType.Stopped2).SecondaryCollisionRectangle = ef83; obj38.GetAnimation(AnimType.Attacking).HitboxSize = ef82; obj38.GetAnimation(AnimType.Attacking).SecondaryCollisionRectangle = ef83; obj38.GetAnimation(AnimType.Attacking).Repeat = false; obj38.GetAnimation(AnimType.Hit).HitboxSize = ef82; obj38.GetAnimation(AnimType.Dying).HitboxSize = ef82; obj38.GetAnimation(AnimType.Dying).SecondaryCollisionRectangle = ef83; EnemyBehavior behavior29 = new EnemyBehavior(obj38, 0xbb8, delay); obj38.CurrentDirection = Direction.Left; behavior29.AddFarAction(new Wait(10)); behavior29.AddFarAction(new PlayAnimation(AnimType.Stopped2)); behavior29.AddNearAction(new DaiymoDragonMotion()); behavior29.AddHitAction(new Wait(1)); behavior29.AddHitAction(new Jump(new Speed(-2f, 0.5f, 0f), true, false, false)); behavior29.AddHitAction(new Wait(20)); obj38.AttackDamage = GetEnemyDamage(7, 2); behavior29.AttackDistance = 0x3e8; behavior29.AwakenDistance = 0x3e8; obj38.SetBehavior(behavior29); obj38.StopsAtBoundries = true; obj38.Solid = true; obj38.CurrentAnimation = AnimType.Stopped; AddItemDrops(behavior29, itemDrops); return obj38; } case ObjectType.VampireDragon: { GameTexture texture38 = new GameTexture("vampireDragon.bmp", new Size(0x48, 0x48), TextureDisposePolicy.DisposeOnTileChange); GameObject obj39 = new GameObject(texture38, t, color); Size size38 = new Size(0x48, 0x48); difficulty = 10; obj39.ObjClass = ObjectClass.Boss; obj39.XSpeed.SetSpeed((float) -2f); obj39.YSpeed.SetSpeed((float) 0f); int num10 = 0x2a; numArray = new int[2]; numArray[1] = 1; obj39.DefineAnimation(AnimType.Stopped, new Animation(AnimHitType.HeadOnly, size38, numArray, 8, num10, true)); obj39.DefineAnimation(AnimType.Attacking, new Animation(AnimHitType.HeadOnly, size38, new int[] { 2, 3 }, 4, num10, true)); obj39.DefineAnimation(AnimType.Hit, new Animation(AnimHitType.HeadOnly, size38, new int[] { 4 }, 4, true)); obj39.DefineAnimation(AnimType.Dying, new Animation(AnimHitType.None, size38, new int[] { 4 }, 4, true)); SizeF ef84 = new SizeF(24f, 64f); RectangleF ef85 = new RectangleF(-8f, -40f, 20f, 20f); obj39.GetAnimation(AnimType.Stopped).HitboxSize = ef84; obj39.GetAnimation(AnimType.Stopped).SecondaryCollisionRectangle = ef85; obj39.GetAnimation(AnimType.Attacking).HitboxSize = ef84; obj39.GetAnimation(AnimType.Attacking).SecondaryCollisionRectangle = ef85; obj39.GetAnimation(AnimType.Hit).HitboxSize = ef84; obj39.GetAnimation(AnimType.Dying).HitboxSize = ef84; obj39.GetAnimation(AnimType.Dying).SecondaryCollisionRectangle = ef85; EnemyBehavior behavior30 = new EnemyBehavior(obj39, 0xbb8, delay); obj39.CurrentDirection = Direction.Left; behavior30.AddFarAction(new Wait(10)); behavior30.AddFarAction(new PlayAnimation(AnimType.Stopped)); behavior30.AddNearAction(new VampireDragonMotion()); behavior30.AddHitAction(new Wait(1)); behavior30.AddHitAction(new Jump(ActionPresets.BossRecoil)); behavior30.AddHitAction(new Wait(20)); behavior30.AddHitAction(new VampireDragonFlee()); obj39.AttackDamage = GetEnemyDamage(7, 3); behavior30.AttackDistance = 0x2328; obj39.SetBehavior(behavior30); obj39.StopsAtBoundries = false; obj39.StopsAtSides = false; obj39.Solid = false; obj39.DeactivateIfFar = false; obj39.CurrentAnimation = AnimType.Stopped; AddItemDrops(behavior30, itemDrops); return obj39; } case ObjectType.MechaDragonX: { GameTexture texture39 = new GameTexture("mecha.bmp", new Size(0x40, 0x48), TextureDisposePolicy.DisposeOnTileChange); GameObject obj40 = new GameObject(texture39, t, color); Size size39 = new Size(0x40, 0x48); difficulty = 12; obj40.ObjClass = ObjectClass.Boss; obj40.YSpeed.Acceleration = 1f; obj40.YSpeed.TargetSpeed = 4f; obj40.XSpeed.SetSpeed((float) 0f); obj40.DefineAnimation(AnimType.Stopped, new Animation(AnimHitType.HeadOnly, size39, new int[] { 3 }, 8, true)); obj40.DefineAnimation(AnimType.Stopped2, new Animation(AnimHitType.HeadOnly, size39, new int[] { 3, 2 }, 8, true)); obj40.DefineAnimation(AnimType.Attacking, new Animation(AnimHitType.HeadOnly, size39, new int[] { 1 }, 8, true)); numArray = new int[1]; obj40.DefineAnimation(AnimType.Hit, new Animation(AnimHitType.HeadOnly, size39, numArray, 4, true)); numArray = new int[1]; obj40.DefineAnimation(AnimType.Dying, new Animation(AnimHitType.None, size39, numArray, 4, true)); SizeF ef86 = new SizeF(56f, 72f); RectangleF ef87 = new RectangleF(8f, -64f, 24f, 24f); obj40.GetAnimation(AnimType.Stopped).HitboxSize = ef86; obj40.GetAnimation(AnimType.Stopped2).HitboxSize = ef86; obj40.GetAnimation(AnimType.Stopped2).SecondaryCollisionRectangle = ef87; obj40.GetAnimation(AnimType.Attacking).HitboxSize = ef86; obj40.GetAnimation(AnimType.Attacking).SecondaryCollisionRectangle = ef87; obj40.GetAnimation(AnimType.Hit).HitboxSize = ef86; obj40.GetAnimation(AnimType.Dying).HitboxSize = ef86; obj40.GetAnimation(AnimType.Dying).SecondaryCollisionRectangle = ef87; EnemyBehavior behavior31 = new EnemyBehavior(obj40, 0x7d0, delay); obj40.CurrentDirection = Direction.Left; behavior31.AddFarAction(new Wait(10)); MultiAction action2 = new MultiAction(new Shoot(ObjectType.MechaFireball2, GetEnemyBulletDamage(difficulty, 2), 6f, 4f, 1, 1, false, true, SoundEffects.LizardFire), 5, 3); behavior31.AddNearAction(new PlayAnimation(AnimType.Stopped2)); behavior31.AddNearAction(new MechaDragonXMotion()); behavior31.AddNearAction(new Stop(true, true, false)); behavior31.AddNearAction(action2); behavior31.AddNearAction(new Wait(20)); behavior31.AddHitAction(new Wait(1)); behavior31.AddHitAction(new Jump(ActionPresets.BossRecoil)); behavior31.AddHitAction(new Wait(40)); behavior31.AddHitAction(new Stop(true, true, false)); behavior31.AddHitAction(new SetSpeed(1.5f, 0f, 0.1f, true)); behavior31.AddHitAction(action2); behavior31.AddHitAction(new Wait(20)); behavior31.AttackDistance = 0x3e8; obj40.SetBehavior(behavior31); obj40.StopsAtBoundries = true; obj40.AttackDamage = GetEnemyDamage(difficulty, 2); obj40.CurrentAnimation = AnimType.Stopped; AddItemDrops(behavior31, itemDrops); return obj40; } case ObjectType.FinalDragon: { GameTexture texture40 = new GameTexture("mechaX.bmp", new Size(0x80, 0x80), TextureDisposePolicy.DisposeOnTileChange); GameObject obj41 = new GameObject(texture40, t, color); Size size40 = new Size(0x80, 0x70); difficulty = 12; obj41.ObjClass = ObjectClass.Boss; numArray = new int[2]; numArray[1] = 1; obj41.DefineAnimation(AnimType.Stopped, new Animation(AnimHitType.HeadOnly, size40, numArray, 8, true)); numArray = new int[2]; numArray[1] = 1; obj41.DefineAnimation(AnimType.Stopped2, new Animation(AnimHitType.HeadOnly, size40, numArray, 8, true)); obj41.DefineAnimation(AnimType.Attacking, new Animation(AnimHitType.HeadOnly, size40, new int[] { 2 }, 8, true)); obj41.DefineAnimation(AnimType.Hit, new Animation(AnimHitType.HeadOnly, size40, new int[] { 3 }, 4, true)); obj41.DefineAnimation(AnimType.Dying, new Animation(AnimHitType.None, size40, new int[] { 3 }, 4, true)); SizeF ef88 = new SizeF(32f, 64f); RectangleF ef89 = new RectangleF(4f, -72f, 24f, 24f); obj41.GetAnimation(AnimType.Stopped).HitboxSize = ef88; obj41.GetAnimation(AnimType.Stopped).SecondaryCollisionRectangle = ef89; obj41.GetAnimation(AnimType.Stopped2).HitboxSize = ef88; obj41.GetAnimation(AnimType.Stopped2).SecondaryCollisionRectangle = ef89; obj41.GetAnimation(AnimType.Attacking).HitboxSize = ef88; obj41.GetAnimation(AnimType.Attacking).SecondaryCollisionRectangle = ef89; obj41.GetAnimation(AnimType.Hit).HitboxSize = ef88; obj41.GetAnimation(AnimType.Dying).HitboxSize = ef88; obj41.GetAnimation(AnimType.Dying).SecondaryCollisionRectangle = ef89; EnemyBehavior behavior32 = new EnemyBehavior(obj41, 0x1388, delay, ActivationTypes.AlwaysActivated, FacePlayerBehavior.AlwaysFace); obj41.CurrentDirection = Direction.Left; behavior32.AddFarAction(new Wait(5)); behavior32.AddNearAction(new FinalDragonMotion()); behavior32.AddHitAction(new Wait(1)); behavior32.AddHitAction(new Jump(ActionPresets.BossRecoil)); behavior32.AddHitAction(new Wait(40)); behavior32.AddHitAction(new Stop(true, true, false)); behavior32.AttackDistance = 0x1388; obj41.SetBehavior(behavior32); obj41.StopsAtBoundries = false; obj41.AttackDamage = GetEnemyDamage(difficulty, 2); obj41.DeactivateIfFar = false; obj41.CurrentAnimation = AnimType.Stopped; AddItemDrops(behavior32, itemDrops); return obj41; } case ObjectType.PolarDragon: { GameTexture texture41 = new GameTexture("polardragon.bmp", new Size(0x80, 0x80), TextureDisposePolicy.DisposeOnTileChange); GameObject obj42 = new GameObject(texture41, t, color); Size size41 = new Size(0x80, 0x80); difficulty = 6; obj42.ObjClass = ObjectClass.Boss; numArray = new int[1]; obj42.DefineAnimation(AnimType.Stopped, new Animation(AnimHitType.HeadOnly, size41, numArray, 8, true)); obj42.DefineAnimation(AnimType.Stopped2, new Animation(AnimHitType.HeadOnly, size41, new int[] { 1, 2 }, 8, true)); obj42.DefineAnimation(AnimType.Attacking, new Animation(AnimHitType.HeadOnly, size41, new int[] { 3 }, 8, true)); obj42.DefineAnimation(AnimType.DuckingAndAttacking, new Animation(AnimHitType.HeadOnly, size41, new int[] { 4 }, 8, true)); obj42.DefineAnimation(AnimType.Jump, new Animation(AnimHitType.HeadOnly, size41, new int[] { 6 }, 8, true)); obj42.DefineAnimation(AnimType.Hit, new Animation(AnimHitType.HeadOnly, size41, new int[] { 5 }, 4, true)); obj42.DefineAnimation(AnimType.Dying, new Animation(AnimHitType.None, size41, new int[] { 5 }, 4, true)); SizeF ef90 = new SizeF(64f, 76f); RectangleF ef91 = new RectangleF(8f, -80f, 24f, 24f); SizeF ef92 = new SizeF(64f, 64f); RectangleF ef93 = new RectangleF(8f, -50f, 24f, 24f); obj42.GetAnimation(AnimType.Stopped).HitboxSize = ef90; obj42.GetAnimation(AnimType.Stopped).SecondaryCollisionRectangle = ef91; obj42.GetAnimation(AnimType.Stopped2).HitboxSize = ef90; obj42.GetAnimation(AnimType.Stopped2).SecondaryCollisionRectangle = ef91; obj42.GetAnimation(AnimType.Jump).HitboxSize = ef90; obj42.GetAnimation(AnimType.Jump).SecondaryCollisionRectangle = ef91; obj42.GetAnimation(AnimType.Attacking).HitboxSize = ef90; obj42.GetAnimation(AnimType.Attacking).SecondaryCollisionRectangle = ef91; obj42.GetAnimation(AnimType.DuckingAndAttacking).HitboxSize = ef92; obj42.GetAnimation(AnimType.DuckingAndAttacking).SecondaryCollisionRectangle = ef93; obj42.GetAnimation(AnimType.Hit).HitboxSize = ef90; obj42.GetAnimation(AnimType.Dying).HitboxSize = ef90; obj42.GetAnimation(AnimType.Dying).SecondaryCollisionRectangle = ef91; EnemyBehavior behavior33 = new EnemyBehavior(obj42, 0x9c4, delay, ActivationTypes.AlwaysActivated, FacePlayerBehavior.AlwaysFace); obj42.CurrentDirection = Direction.Left; behavior33.AddFarAction(new Wait(5)); behavior33.AddNearAction(new PolarDragonMotion()); behavior33.AddHitAction(new Wait(1)); behavior33.AddHitAction(new Jump(ActionPresets.BossRecoil)); behavior33.AddHitAction(new Wait(10)); behavior33.AddHitAction(new Stop(true, true, false)); behavior33.AttackDistance = 0x1388; obj42.SetBehavior(behavior33); obj42.StopsAtBoundries = false; obj42.AttackDamage = GetEnemyDamage(difficulty, 2); obj42.DeactivateIfFar = false; obj42.CurrentAnimation = AnimType.Stopped; AddItemDrops(behavior33, itemDrops); return obj42; } case ObjectType.TransformSpirit: { TransformSpiritBehavior behavior34; GameTexture texture42 = new GameTexture("spirit.bmp", new Size(0x20, 0x20), ColorSwaps.CaveAlternate, color, TextureDisposePolicy.NeverDispose); GameObject obj43 = new GameObject(texture42, t, color); Size size42 = new Size(0x20, 0x20); obj43.ObjClass = ObjectClass.Special; obj43.DefineAnimation(AnimType.Stopped, new Animation(AnimHitType.None, size42, new int[] { 0, 1, 2, 3, 2, 1 }, 4, true)); obj43.GetAnimation(AnimType.Stopped).HitboxSize = new SizeF(24f, 24f); if (GameEngine.Game.GetPlayer().Type != ObjectType.Fox) { behavior34 = new TransformSpiritBehavior(obj43, GameEngine.Game.GetPlayerStats().LatestTransform + 1); } else { behavior34 = new TransformSpiritBehavior(obj43, ObjectType.Fox); } obj43.SetBehavior(behavior34); obj43.AttackDamage = GetEnemyDamage(8, 2); obj43.StopsAtBoundries = false; obj43.DeactivateIfFar = false; return obj43; } case ObjectType.Fox: { GameTexture texture2 = new GameTexture("foxman.bmp", new Size(0x40, 0x20), TextureDisposePolicy.DisposeOnTileChange); GameObject obj3 = new GameObject(texture2, t); Size size2 = new Size(0x40, 0x20); obj3.SetBehavior(new PlayerBehavior(obj3, t)); numArray = new int[1]; obj3.DefineAnimation(AnimType.Stopped, new Animation(AnimHitType.Shield, size2, numArray, 1, true)); obj3.DefineAnimation(AnimType.Stopped2, new Animation(AnimHitType.Shield, size2, new int[] { 1, 2 }, 6, true)); obj3.DefineAnimation(AnimType.Jump, new Animation(AnimHitType.Shield, size2, new int[] { 2 }, 1, true)); obj3.DefineAnimation(AnimType.Attacking, new Animation(AnimHitType.Sword, size2, new int[] { 3 }, 6, true)); obj3.DefineAnimation(AnimType.Ducking, new Animation(AnimHitType.Shield, size2, new int[] { 4 }, 1, true)); obj3.DefineAnimation(AnimType.DuckingAndAttacking, new Animation(AnimHitType.Sword, size2, new int[] { 5 }, 4, true)); obj3.DefineAnimation(AnimType.Hit, new Animation(AnimHitType.None, size2, new int[] { 6 }, 1, true)); SizeF ef7 = new SizeF(16f, 27f); SizeF ef8 = new SizeF(16f, 16f); RectangleF ef9 = new RectangleF(4f, -18f, 8f, 12f); RectangleF ef10 = new RectangleF(8f, -18f, 16f, 12f); RectangleF ef11 = new RectangleF(4f, -12f, 8f, 10f); RectangleF ef12 = new RectangleF(8f, -12f, 16f, 8f); obj3.GetAnimation(AnimType.Stopped).HitboxSize = ef7; obj3.GetAnimation(AnimType.Stopped).SecondaryCollisionRectangle = ef9; obj3.GetAnimation(AnimType.Hit).HitboxSize = ef7; obj3.GetAnimation(AnimType.Hit).SecondaryCollisionRectangle = ef9; obj3.GetAnimation(AnimType.Stopped2).HitboxSize = ef7; obj3.GetAnimation(AnimType.Stopped2).SecondaryCollisionRectangle = ef9; obj3.GetAnimation(AnimType.Jump).HitboxSize = ef7; obj3.GetAnimation(AnimType.Jump).SecondaryCollisionRectangle = ef9; obj3.GetAnimation(AnimType.Attacking).HitboxSize = ef7; obj3.GetAnimation(AnimType.Attacking).SecondaryCollisionRectangle = ef10; obj3.GetAnimation(AnimType.Attacking).Repeat = false; obj3.GetAnimation(AnimType.Ducking).HitboxSize = ef8; obj3.GetAnimation(AnimType.Ducking).SecondaryCollisionRectangle = ef11; obj3.GetAnimation(AnimType.DuckingAndAttacking).HitboxSize = ef8; obj3.GetAnimation(AnimType.DuckingAndAttacking).SecondaryCollisionRectangle = ef12; obj3.GetAnimation(AnimType.DuckingAndAttacking).Repeat = false; obj3.StopsAtBoundries = true; obj3.ObjClass = ObjectClass.Player; return obj3; } case ObjectType.Human: { GameTexture texture = new GameTexture("human.bmp", new Size(0x20, 0x20), TextureDisposePolicy.DisposeOnTileChange); GameObject obj2 = new GameObject(texture, t); Size size = new Size(0x20, 0x20); obj2.SetBehavior(new PlayerBehavior(obj2, t)); numArray = new int[1]; obj2.DefineAnimation(AnimType.Stopped, new Animation(AnimHitType.Shield, size, numArray, 1, false)); obj2.DefineAnimation(AnimType.Stopped2, new Animation(AnimHitType.Shield, size, new int[] { 1, 0, 1, 2 }, 6, false)); obj2.DefineAnimation(AnimType.Jump, new Animation(AnimHitType.Shield, size, new int[] { 2 }, 1, false)); obj2.DefineAnimation(AnimType.Attacking, new Animation(AnimHitType.Sword, size, new int[] { 5 }, 6, 8, false)); obj2.DefineAnimation(AnimType.Ducking, new Animation(AnimHitType.Shield, size, new int[] { 4 }, 1, 12, false)); obj2.DefineAnimation(AnimType.DuckingAndAttacking, new Animation(AnimHitType.Sword, size, new int[] { 3 }, 4, 12, false)); obj2.DefineAnimation(AnimType.Hit, new Animation(AnimHitType.None, size, new int[] { 6 }, 1, false)); SizeF ef = new SizeF(16f, 27f); SizeF ef2 = new SizeF(16f, 16f); RectangleF ef3 = new RectangleF(4f, -18f, 8f, 12f); RectangleF ef4 = new RectangleF(8f, -18f, 16f, 12f); RectangleF ef5 = new RectangleF(4f, -12f, 8f, 10f); RectangleF ef6 = new RectangleF(8f, -12f, 16f, 8f); obj2.GetAnimation(AnimType.Stopped).HitboxSize = ef; obj2.GetAnimation(AnimType.Stopped).SecondaryCollisionRectangle = ef3; obj2.GetAnimation(AnimType.Hit).HitboxSize = ef; obj2.GetAnimation(AnimType.Hit).SecondaryCollisionRectangle = ef3; obj2.GetAnimation(AnimType.Stopped2).HitboxSize = ef; obj2.GetAnimation(AnimType.Stopped2).SecondaryCollisionRectangle = ef3; obj2.GetAnimation(AnimType.Jump).HitboxSize = ef; obj2.GetAnimation(AnimType.Jump).SecondaryCollisionRectangle = ef3; obj2.GetAnimation(AnimType.Attacking).HitboxSize = ef; obj2.GetAnimation(AnimType.Attacking).SecondaryCollisionRectangle = ef4; obj2.GetAnimation(AnimType.Attacking).Repeat = false; obj2.GetAnimation(AnimType.Ducking).HitboxSize = ef2; obj2.GetAnimation(AnimType.Ducking).SecondaryCollisionRectangle = ef5; obj2.GetAnimation(AnimType.DuckingAndAttacking).HitboxSize = ef2; obj2.GetAnimation(AnimType.DuckingAndAttacking).SecondaryCollisionRectangle = ef6; obj2.GetAnimation(AnimType.DuckingAndAttacking).Repeat = false; obj2.StopsAtBoundries = true; obj2.ObjClass = ObjectClass.Player; return obj2; } case ObjectType.Lizard: { GameTexture texture3 = new GameTexture("lizardman.bmp", new Size(0x20, 0x20), TextureDisposePolicy.DisposeOnTileChange); GameObject obj4 = new GameObject(texture3, t); Size size3 = new Size(0x20, 0x20); obj4.SetBehavior(new PlayerBehavior(obj4, t)); numArray = new int[1]; obj4.DefineAnimation(AnimType.Stopped, new Animation(AnimHitType.None, size3, numArray, 1, true)); obj4.DefineAnimation(AnimType.Stopped2, new Animation(AnimHitType.None, size3, new int[] { 1, 0, 1, 2 }, 6, true)); obj4.DefineAnimation(AnimType.Jump, new Animation(AnimHitType.None, size3, new int[] { 2 }, 1, true)); obj4.DefineAnimation(AnimType.Attacking, new Animation(AnimHitType.None, size3, new int[] { 3 }, 12, 0x10, true)); obj4.DefineAnimation(AnimType.Ducking, new Animation(AnimHitType.None, size3, new int[] { 4 }, 1, 12, true)); obj4.DefineAnimation(AnimType.DuckingAndAttacking, new Animation(AnimHitType.None, size3, new int[] { 5 }, 12, 12, true)); obj4.DefineAnimation(AnimType.Hit, new Animation(AnimHitType.None, size3, new int[] { 6 }, 1, true)); SizeF ef13 = new SizeF(16f, 27f); SizeF ef14 = new SizeF(16f, 16f); new RectangleF(0f, -16f, 1f, 1f); RectangleF ef15 = new RectangleF(0f, -32f, 8f, 16f); new RectangleF(8f, -2f, 16f, 8f); RectangleF ef16 = new RectangleF(0f, -16f, 8f, 16f); obj4.GetAnimation(AnimType.Stopped).HitboxSize = ef13; obj4.GetAnimation(AnimType.Stopped).SecondaryCollisionRectangle = ef15; obj4.GetAnimation(AnimType.Hit).HitboxSize = ef13; obj4.GetAnimation(AnimType.Hit).SecondaryCollisionRectangle = ef15; obj4.GetAnimation(AnimType.Stopped2).HitboxSize = ef13; obj4.GetAnimation(AnimType.Stopped2).SecondaryCollisionRectangle = ef15; obj4.GetAnimation(AnimType.Jump).HitboxSize = ef13; obj4.GetAnimation(AnimType.Jump).SecondaryCollisionRectangle = ef15; obj4.GetAnimation(AnimType.Attacking).HitboxSize = ef13; obj4.GetAnimation(AnimType.Attacking).SecondaryCollisionRectangle = ef15; obj4.GetAnimation(AnimType.Attacking).Repeat = false; obj4.GetAnimation(AnimType.Ducking).HitboxSize = ef14; obj4.GetAnimation(AnimType.Ducking).SecondaryCollisionRectangle = ef16; obj4.GetAnimation(AnimType.DuckingAndAttacking).HitboxSize = ef14; obj4.GetAnimation(AnimType.DuckingAndAttacking).SecondaryCollisionRectangle = ef16; obj4.GetAnimation(AnimType.DuckingAndAttacking).Repeat = false; obj4.StopsAtBoundries = true; obj4.ObjClass = ObjectClass.Player; return obj4; } case ObjectType.Mouse: { GameTexture texture5 = new GameTexture("mouseman.bmp", new Size(0x20, 0x20), TextureDisposePolicy.DisposeOnTileChange); GameObject obj6 = new GameObject(texture5, t); Size size5 = new Size(0x20, 0x20); obj6.SetBehavior(new PlayerBehavior(obj6, t)); numArray = new int[1]; obj6.DefineAnimation(AnimType.Stopped, new Animation(AnimHitType.Shield, size5, numArray, 1, false)); obj6.DefineAnimation(AnimType.Stopped2, new Animation(AnimHitType.Shield, size5, new int[] { 1, 0, 1, 2 }, 3, false)); obj6.DefineAnimation(AnimType.Jump, new Animation(AnimHitType.Shield, size5, new int[] { 1, 0, 1, 2 }, 3, false)); obj6.DefineAnimation(AnimType.Attacking, new Animation(AnimHitType.Sword, size5, new int[] { 3 }, 3, 15, false)); obj6.DefineAnimation(AnimType.Hit, new Animation(AnimHitType.None, size5, new int[] { 4 }, 1, false)); obj6.DefineAnimation(AnimType.Special, new Animation(AnimHitType.Shield, size5, new int[] { 1, 0, 1, 2 }, 3, false)); SizeF ef20 = new SizeF(16f, 16f); new SizeF(2f, 16f); RectangleF ef21 = new RectangleF(4f, -12f, 8f, 12f); RectangleF ef22 = new RectangleF(8f, -8f, 12f, 4f); obj6.GetAnimation(AnimType.Stopped).HitboxSize = ef20; obj6.GetAnimation(AnimType.Stopped).SecondaryCollisionRectangle = ef21; obj6.GetAnimation(AnimType.Hit).HitboxSize = ef20; obj6.GetAnimation(AnimType.Hit).SecondaryCollisionRectangle = ef21; obj6.GetAnimation(AnimType.Stopped2).HitboxSize = ef20; obj6.GetAnimation(AnimType.Stopped2).SecondaryCollisionRectangle = ef21; obj6.GetAnimation(AnimType.Special).HitboxSize = ef20; obj6.GetAnimation(AnimType.Special).SecondaryCollisionRectangle = ef21; obj6.GetAnimation(AnimType.Jump).HitboxSize = ef20; obj6.GetAnimation(AnimType.Jump).SecondaryCollisionRectangle = ef21; obj6.GetAnimation(AnimType.Attacking).HitboxSize = ef20; obj6.GetAnimation(AnimType.Attacking).SecondaryCollisionRectangle = ef22; obj6.GetAnimation(AnimType.Attacking).Repeat = false; obj6.StopsAtBoundries = true; obj6.ObjClass = ObjectClass.Player; return obj6; } case ObjectType.Piranha: { GameTexture texture4 = new GameTexture("piranhaman.bmp", new Size(0x20, 0x20), TextureDisposePolicy.DisposeOnTileChange); GameObject obj5 = new GameObject(texture4, t); Size size4 = new Size(0x20, 0x20); obj5.SetBehavior(new PlayerBehavior(obj5, t)); numArray = new int[1]; obj5.DefineAnimation(AnimType.Stopped, new Animation(AnimHitType.Shield, size4, numArray, 1, false)); obj5.DefineAnimation(AnimType.Stopped2, new Animation(AnimHitType.Shield, size4, new int[] { 1, 0, 1, 2 }, 6, false)); obj5.DefineAnimation(AnimType.Jump, new Animation(AnimHitType.Shield, size4, new int[] { 1 }, 1, false)); obj5.DefineAnimation(AnimType.Attacking, new Animation(AnimHitType.Sword, size4, new int[] { 3 }, 6, 8, false)); obj5.DefineAnimation(AnimType.Hit, new Animation(AnimHitType.None, size4, new int[] { 6 }, 1, false)); obj5.DefineAnimation(AnimType.Special, new Animation(AnimHitType.None, size4, new int[] { 4, 5 }, 4, true)); SizeF ef17 = new SizeF(16f, 27f); new SizeF(16f, 16f); RectangleF ef18 = new RectangleF(4f, -18f, 8f, 12f); RectangleF ef19 = new RectangleF(8f, -18f, 16f, 12f); obj5.GetAnimation(AnimType.Stopped).HitboxSize = ef17; obj5.GetAnimation(AnimType.Stopped).SecondaryCollisionRectangle = ef18; obj5.GetAnimation(AnimType.Hit).HitboxSize = ef17; obj5.GetAnimation(AnimType.Hit).SecondaryCollisionRectangle = ef18; obj5.GetAnimation(AnimType.Stopped2).HitboxSize = ef17; obj5.GetAnimation(AnimType.Stopped2).SecondaryCollisionRectangle = ef18; obj5.GetAnimation(AnimType.Special).HitboxSize = ef17; obj5.GetAnimation(AnimType.Special).SecondaryCollisionRectangle = ef18; obj5.GetAnimation(AnimType.Jump).HitboxSize = ef17; obj5.GetAnimation(AnimType.Jump).SecondaryCollisionRectangle = ef18; obj5.GetAnimation(AnimType.Attacking).HitboxSize = ef17; obj5.GetAnimation(AnimType.Attacking).SecondaryCollisionRectangle = ef19; obj5.GetAnimation(AnimType.Attacking).Repeat = false; obj5.StopsAtBoundries = true; obj5.ObjClass = ObjectClass.Player; return obj5; } case ObjectType.Tiger: { GameTexture texture6 = new GameTexture("tigerman.bmp", new Size(0x20, 0x40), TextureDisposePolicy.DisposeOnTileChange); GameObject obj7 = new GameObject(texture6, t); Size size6 = new Size(0x20, 0x40); obj7.SetBehavior(new PlayerBehavior(obj7, t)); numArray = new int[1]; obj7.DefineAnimation(AnimType.Stopped, new Animation(AnimHitType.Shield, size6, numArray, 1, false)); obj7.DefineAnimation(AnimType.Stopped2, new Animation(AnimHitType.Shield, size6, new int[] { 1, 0, 1, 2 }, 6, false)); obj7.DefineAnimation(AnimType.Jump, new Animation(AnimHitType.Shield, size6, new int[] { 1 }, 1, false)); obj7.DefineAnimation(AnimType.Attacking, new Animation(AnimHitType.Sword, size6, new int[] { 3, 4, 5, 6 }, 2, 12, false)); obj7.DefineAnimation(AnimType.Hit, new Animation(AnimHitType.None, size6, new int[] { 7 }, 1, false)); SizeF ef23 = new SizeF(16f, 27f); new SizeF(16f, 16f); RectangleF ef24 = new RectangleF(4f, -20f, 8f, 12f); RectangleF ef25 = new RectangleF(6f, -38f, 12f, 20f); obj7.GetAnimation(AnimType.Stopped).HitboxSize = ef23; obj7.GetAnimation(AnimType.Stopped).SecondaryCollisionRectangle = ef24; obj7.GetAnimation(AnimType.Hit).HitboxSize = ef23; obj7.GetAnimation(AnimType.Hit).SecondaryCollisionRectangle = ef24; obj7.GetAnimation(AnimType.Stopped2).HitboxSize = ef23; obj7.GetAnimation(AnimType.Stopped2).SecondaryCollisionRectangle = ef24; obj7.GetAnimation(AnimType.Jump).HitboxSize = ef23; obj7.GetAnimation(AnimType.Jump).SecondaryCollisionRectangle = ef24; obj7.GetAnimation(AnimType.Attacking).HitboxSize = ef23; obj7.GetAnimation(AnimType.Attacking).YMove = 20f; obj7.GetAnimation(AnimType.Attacking).SecondaryCollisionRectangle = ef25; obj7.GetAnimation(AnimType.Attacking).Repeat = false; obj7.StopsAtBoundries = true; obj7.ObjClass = ObjectClass.Player; return obj7; } case ObjectType.Hawk: { GameTexture texture7 = new GameTexture("hawkman.bmp", new Size(0x20, 0x20), TextureDisposePolicy.DisposeOnTileChange); GameObject obj8 = new GameObject(texture7, t); Size size7 = new Size(0x20, 0x20); obj8.SetBehavior(new PlayerBehavior(obj8, t)); numArray = new int[1]; obj8.DefineAnimation(AnimType.Stopped, new Animation(AnimHitType.Shield, size7, numArray, 1, false)); numArray = new int[2]; numArray[0] = 1; obj8.DefineAnimation(AnimType.Stopped2, new Animation(AnimHitType.Shield, size7, numArray, 6, false)); numArray = new int[2]; numArray[0] = 1; obj8.DefineAnimation(AnimType.Jump, new Animation(AnimHitType.Shield, size7, numArray, 3, false)); obj8.DefineAnimation(AnimType.Attacking, new Animation(AnimHitType.Sword, size7, new int[] { 2 }, 6, 8, false)); obj8.DefineAnimation(AnimType.Hit, new Animation(AnimHitType.None, size7, new int[] { 5 }, 1, false)); obj8.DefineAnimation(AnimType.Special, new Animation(AnimHitType.None, size7, new int[] { 3, 4 }, 4, true)); SizeF ef26 = new SizeF(16f, 27f); new SizeF(16f, 16f); RectangleF ef27 = new RectangleF(4f, -18f, 8f, 12f); RectangleF ef28 = new RectangleF(8f, -18f, 16f, 12f); RectangleF ef29 = new RectangleF(0f, -18f, 2f, 2f); obj8.GetAnimation(AnimType.Stopped).HitboxSize = ef26; obj8.GetAnimation(AnimType.Stopped).SecondaryCollisionRectangle = ef27; obj8.GetAnimation(AnimType.Hit).HitboxSize = ef26; obj8.GetAnimation(AnimType.Hit).SecondaryCollisionRectangle = ef27; obj8.GetAnimation(AnimType.Stopped2).HitboxSize = ef26; obj8.GetAnimation(AnimType.Stopped2).SecondaryCollisionRectangle = ef27; obj8.GetAnimation(AnimType.Jump).HitboxSize = ef26; obj8.GetAnimation(AnimType.Jump).SecondaryCollisionRectangle = ef27; obj8.GetAnimation(AnimType.Attacking).HitboxSize = ef26; obj8.GetAnimation(AnimType.Attacking).SecondaryCollisionRectangle = ef28; obj8.GetAnimation(AnimType.Attacking).Repeat = false; obj8.GetAnimation(AnimType.Special).HitboxSize = ef26; obj8.GetAnimation(AnimType.Special).SecondaryCollisionRectangle = ef29; obj8.StopsAtBoundries = true; obj8.ObjClass = ObjectClass.Player; return obj8; } case ObjectType.DeadPlayer: { GameTexture texture8 = new GameTexture("angel.bmp", new Size(0x20, 0x20), TextureDisposePolicy.DisposeOnTileChange); GameObject obj9 = new GameObject(texture8, t); Size size8 = new Size(0x20, 0x20); obj9.SetBehavior(new DeadPlayerBehavior(obj9, t)); numArray = new int[2]; numArray[1] = 1; obj9.DefineAnimation(AnimType.Stopped, new Animation(AnimHitType.Shield, size8, numArray, 8, false)); SizeF ef30 = new SizeF(32f, 32f); obj9.GetAnimation(AnimType.Stopped).HitboxSize = ef30; obj9.Solid = false; obj9.StopsAtSides = false; obj9.StopsAtBoundries = false; obj9.StopsAtSides = false; obj9.ObjClass = ObjectClass.Player; return obj9; } case ObjectType.LizardFire: case ObjectType.Bullet: case ObjectType.BlueBullet: case ObjectType.GravityBullet: case ObjectType.BouncingBullet: case ObjectType.CyclopsFireball: case ObjectType.MechaFireball: case ObjectType.MechaFireball2: case ObjectType.ExplodingFireball: case ObjectType.SmogFireball: case ObjectType.SmogFireball2: case ObjectType.SmogFireball3: case ObjectType.GoblinArrow: case ObjectType.NinjaStar: case ObjectType.MummySmoke: case ObjectType.ZombieBreath: case ObjectType.PirateHook: case ObjectType.Orb: case ObjectType.VampireFire: case ObjectType.IceBreath: case ObjectType.BossDieStar: case ObjectType.AirBubble: case ObjectType.Fireball: case ObjectType.Arrow: { GameObject player = GameEngine.Game.GetPlayer(); bool flag = false; int num11 = 120; GameTexture texture54 = null; if ((t != ObjectType.Bullet) && (t != ObjectType.GravityBullet)) { if (t == ObjectType.BouncingBullet) { texture54 = new GameTexture("shot.bmp", new Size(0x10, 0x10), TextureDisposePolicy.DisposeOnTileChange); num11 = 300; } else if (t == ObjectType.BlueBullet) { texture54 = new GameTexture("blueshot.bmp", new Size(0x10, 0x10), TextureDisposePolicy.DisposeOnTileChange); num11 = 300; } else if (((t == ObjectType.CyclopsFireball) || (t == ObjectType.MechaFireball)) || ((t == ObjectType.MechaFireball2) || (t == ObjectType.ExplodingFireball))) { flag = t != ObjectType.CyclopsFireball; texture54 = new GameTexture("cyclopsFire.bmp", new Size(0x10, 0x10), TextureDisposePolicy.DisposeOnTileChange); } else if (t == ObjectType.GoblinArrow) { texture54 = new GameTexture("goblinArrow.bmp", new Size(0x10, 0x10), TextureDisposePolicy.DisposeOnTileChange); } else if (((t == ObjectType.SmogFireball) || (t == ObjectType.SmogFireball2)) || (t == ObjectType.SmogFireball3)) { texture54 = new GameTexture("smogFireball.bmp", new Size(0x10, 0x10), TextureDisposePolicy.DisposeOnTileChange); num11 = 300; } else if (t == ObjectType.MummySmoke) { texture54 = new GameTexture("mummysmoke.bmp", new Size(0x10, 0x10), TextureDisposePolicy.DisposeOnTileChange); num11 = 120; flag = true; } else if (t == ObjectType.IceBreath) { texture54 = new GameTexture("icebreath.bmp", new Size(0x10, 0x10), TextureDisposePolicy.DisposeOnTileChange); num11 = 120; flag = true; } else if (t == ObjectType.ZombieBreath) { texture54 = new GameTexture("zombiebullet.bmp", new Size(0x20, 0x10), TextureDisposePolicy.DisposeOnTileChange); num11 = 300; flag = true; } else if (t == ObjectType.BossDieStar) { texture54 = new GameTexture("star.bmp", new Size(0x20, 0x20), TextureDisposePolicy.DisposeOnTileChange); num11 = 120; } else if (t == ObjectType.AirBubble) { texture54 = new GameTexture("border.bmp", new Size(8, 8), TextureDisposePolicy.DisposeOnTileChange); num11 = 200; } else if (t == ObjectType.LizardFire) { texture54 = new GameTexture("lizardFire.bmp", new Size(0x10, 0x10), TextureDisposePolicy.DisposeOnTileChange); num11 = 20; } else if (t == ObjectType.NinjaStar) { texture54 = new GameTexture("ninjastar.bmp", new Size(0x10, 0x10), TextureDisposePolicy.DisposeOnTileChange); num11 = 120; } else if (t == ObjectType.Fireball) { texture54 = new GameTexture("fireball.bmp", new Size(0x10, 0x10), TextureDisposePolicy.DisposeOnTileChange); num11 = 20; } else if (t == ObjectType.Arrow) { texture54 = new GameTexture("arrow.bmp", new Size(0x10, 0x10), TextureDisposePolicy.DisposeOnTileChange); num11 = 120; } else if (t == ObjectType.PirateHook) { flag = true; texture54 = new GameTexture("piratehook.bmp", new Size(0x10, 0x10), TextureDisposePolicy.DisposeOnTileChange); num11 = 600; } else if (t == ObjectType.Orb) { flag = true; texture54 = new GameTexture("daiymobullet.bmp", new Size(0x10, 0x10), TextureDisposePolicy.DisposeOnTileChange); num11 = 300; } else if (t == ObjectType.VampireFire) { flag = true; texture54 = new GameTexture("vampireBullet.bmp", new Size(0x10, 0x10), TextureDisposePolicy.DisposeOnTileChange); num11 = 300; } } else { texture54 = new GameTexture("shot.bmp", new Size(0x10, 0x10), TextureDisposePolicy.DisposeOnTileChange); num11 = 120; } GameObject obj60 = new GameObject(texture54, t); Size size54 = new Size(0x10, 0x10); if (t == ObjectType.AirBubble) { obj60.DefineAnimation(AnimType.Stopped, new Animation(new Point(7, 0), new Size(8, 8))); } else if (texture54.XCells == 1) { numArray = new int[1]; obj60.DefineAnimation(AnimType.Stopped, new Animation(AnimHitType.Sword, size54, numArray, 4, true)); } else if (texture54.XCells == 4) { obj60.DefineAnimation(AnimType.Stopped, new Animation(AnimHitType.Sword, size54, new int[] { 0, 1, 2, 3 }, 4, true)); } else { numArray = new int[2]; numArray[1] = 1; obj60.DefineAnimation(AnimType.Stopped, new Animation(AnimHitType.Sword, size54, numArray, 4, true)); } SizeF ef104 = new SizeF(16f, 16f); if (t == ObjectType.AirBubble) { ef104 = new SizeF(8f, 8f); } obj60.GetAnimation(AnimType.Stopped).HitboxSize = ef104; BulletBehavior behavior43 = new BulletBehavior(obj60, num11, ((t == ObjectType.AirBubble) || (t == ObjectType.LizardFire)) || (t == ObjectType.Bullet), flag); obj60.SetBehavior(behavior43); obj60.Solid = false; obj60.ObjClass = ObjectClass.EnemyProjectile; obj60.StopsAtBoundries = false; obj60.StopsAtSides = false; obj60.DestroyIFFar = true; obj60.DeactivateIfFar = false; switch (t) { case ObjectType.LizardFire: obj60.AttackDamage = player.AttackDamage; obj60.ObjClass = ObjectClass.PlayerProjectile; obj60.Solid = true; return obj60; case ObjectType.Bullet: obj60.Solid = false; return obj60; case ObjectType.BlueBullet: obj60.Solid = false; return obj60; case ObjectType.GravityBullet: obj60.Solid = false; return obj60; case ObjectType.BouncingBullet: obj60.Solid = true; obj60.ObjClass = ObjectClass.EnemyProjectile; return obj60; case ObjectType.CyclopsFireball: case ObjectType.MechaFireball: case ObjectType.SmogFireball: case ObjectType.GoblinArrow: case ObjectType.NinjaStar: case ObjectType.MummySmoke: case ObjectType.SwordSpark: case ObjectType.Orb: case ObjectType.VampireFire: case ObjectType.IceBreath: return obj60; case ObjectType.MechaFireball2: case ObjectType.ExplodingFireball: obj60.Solid = true; return obj60; case ObjectType.SmogFireball2: case ObjectType.SmogFireball3: obj60.Solid = true; return obj60; case ObjectType.ZombieBreath: obj60.Solid = true; obj60.ObjClass = ObjectClass.EnemyProjectile; return obj60; case ObjectType.PirateHook: obj60.Solid = true; obj60.ObjClass = ObjectClass.EnemyProjectile; return obj60; case ObjectType.BossDieStar: obj60.ObjClass = ObjectClass.Special; return obj60; case ObjectType.AirBubble: { GameAction[] actions = new GameAction[] { new Move(0.5f, -0.5f), new Wait(8), new Move(-0.5f, -0.5f), new Wait(0x10), new Move(0.5f, -0.5f), new Wait(0x10), new Move(-0.5f, -0.5f) }; behavior43.SetMotion(actions); obj60.Aquatic = true; obj60.ObjClass = ObjectClass.Special; obj60.Solid = true; return obj60; } case ObjectType.Fireball: { GameAction[] actionArray = new GameAction[] { new Move(4f, -6f), new Wait(2), new Move(4f, 6f), new Wait(4), new Move(4f, -6f), new Wait(4), new Move(4f, 6f) }; behavior43.SetMotion(actionArray); obj60.CurrentDirection = player.CurrentDirection; obj60.ObjClass = ObjectClass.PlayerProjectile; obj60.AttackDamage = player.AttackDamage * 2; return obj60; } case ObjectType.Tornado: return obj60; case ObjectType.Arrow: obj60.AttackDamage = player.AttackDamage * 2; obj60.YSpeed.SetSpeed((float) -6f); obj60.ObjClass = ObjectClass.PlayerProjectile; return obj60; default: return obj60; } goto Label_8CC8; } case ObjectType.Coin: { GameTexture texture43 = new GameTexture("items.bmp", new Size(0x10, 0x10), TextureDisposePolicy.DisposeOnTileChange); GameObject obj44 = new GameObject(texture43, t); Size size43 = new Size(0x10, 0x10); obj44.YSpeed.TargetSpeed = 4f; obj44.YSpeed.Acceleration = 1f; obj44.YSpeed.CurrentSpeed = -5f; ItemBehavior behavior35 = new ItemBehavior(obj44, 8, 180); obj44.SetBehavior(behavior35); obj44.DefineAnimation(AnimType.Stopped, new Animation(AnimHitType.None, size43, new int[] { 1, 2, 3, 4 }, 8, true)); behavior35.DropSound = SoundEffects.DropItem; behavior35.CollectSound = SoundEffects.GetMoney; SizeF ef94 = new SizeF(16f, 16f); obj44.GetAnimation(AnimType.Stopped).HitboxSize = ef94; obj44.StopsAtBoundries = false; obj44.ObjClass = ObjectClass.Item; return obj44; } case ObjectType.MoneyBag: { GameTexture texture45 = new GameTexture("items.bmp", new Size(0x10, 0x10), TextureDisposePolicy.NeverDispose); GameObject obj46 = new GameObject(texture45, t); Size size45 = new Size(0x10, 0x10); obj46.YSpeed.TargetSpeed = 4f; obj46.YSpeed.Acceleration = 1f; obj46.YSpeed.CurrentSpeed = -5f; ItemBehavior behavior37 = new ItemBehavior(obj46, 0, 180); obj46.SetBehavior(behavior37); obj46.DefineAnimation(AnimType.Stopped2, new Animation(AnimHitType.None, size45, new int[] { 8 }, 8, true)); obj46.DefineAnimation(AnimType.Stopped, new Animation(AnimHitType.None, size45, new int[] { 6, 7, 8 }, 8, true)); obj46.DefineAnimation(AnimType.Jump, new Animation(AnimHitType.None, size45, new int[] { 6 }, 8, true)); obj46.CurrentAnimation = AnimType.Jump; behavior37.DropSound = SoundEffects.DropItem; behavior37.CollectSound = SoundEffects.GetMoney; SizeF ef96 = new SizeF(16f, 16f); obj46.GetAnimation(AnimType.Stopped).HitboxSize = ef96; obj46.GetAnimation(AnimType.Stopped).Repeat = false; obj46.GetAnimation(AnimType.Jump).HitboxSize = ef96; obj46.GetAnimation(AnimType.Stopped2).HitboxSize = ef96; obj46.StopsAtBoundries = false; obj46.ObjClass = ObjectClass.Item; return obj46; } case ObjectType.Heart: { GameTexture texture48 = new GameTexture("items.bmp", new Size(0x10, 0x10), TextureDisposePolicy.NeverDispose); GameObject obj49 = new GameObject(texture48, t); Size size48 = new Size(0x10, 0x10); obj49.YSpeed.TargetSpeed = 4f; obj49.YSpeed.Acceleration = 2f; obj49.YSpeed.CurrentSpeed = -4f; ItemBehavior behavior40 = new ItemBehavior(obj49, 0, 180) { Value = GameEngine.Game.GetPlayerStats().MaxHP / 4, DropSound = SoundEffects.Nothing, CollectSound = SoundEffects.GetHeart }; obj49.SetBehavior(behavior40); obj49.DefineAnimation(AnimType.Stopped, new Animation(AnimHitType.None, size48, new int[] { 5 }, 8, true)); SizeF ef99 = new SizeF(16f, 16f); obj49.GetAnimation(AnimType.Stopped).HitboxSize = ef99; obj49.ObjClass = ObjectClass.Item; return obj49; } case ObjectType.LargeHeart: { GameTexture texture50 = new GameTexture("items.bmp", new Size(0x10, 0x10), TextureDisposePolicy.NeverDispose); GameObject obj51 = new GameObject(texture50, t); Size size50 = new Size(0x10, 0x10); obj51.YSpeed.TargetSpeed = 4f; obj51.YSpeed.Acceleration = 2f; obj51.YSpeed.CurrentSpeed = -4f; ItemBehavior behavior42 = new ItemBehavior(obj51, 0, 180) { Value = 5, DropSound = SoundEffects.Nothing, CollectSound = SoundEffects.GetHeart }; obj51.SetBehavior(behavior42); obj51.DefineAnimation(AnimType.Stopped, new Animation(AnimHitType.None, size50, new int[] { 10 }, 8, true)); SizeF ef101 = new SizeF(16f, 16f); obj51.GetAnimation(AnimType.Stopped).HitboxSize = ef101; obj51.ObjClass = ObjectClass.Item; return obj51; } case ObjectType.ExtraHeart: { GameTexture texture46 = new GameTexture("items.bmp", new Size(0x10, 0x10), TextureDisposePolicy.NeverDispose); GameObject obj47 = new GameObject(texture46, t); Size size46 = new Size(0x10, 0x10); ItemBehavior behavior38 = new ItemBehavior(obj47, 0, 180); obj47.SetBehavior(behavior38); obj47.DefineAnimation(AnimType.Stopped, new Animation(AnimHitType.None, size46, new int[] { 11 }, 8, true)); behavior38.DropSound = SoundEffects.DropItem; behavior38.CollectSound = SoundEffects.GetItem; SizeF ef97 = new SizeF(16f, 16f); obj47.GetAnimation(AnimType.Stopped).HitboxSize = ef97; obj47.ObjClass = ObjectClass.Item; return obj47; } case ObjectType.ItemPickup: { GameTexture texture55 = new GameTexture("cursor.bmp", new Size(0x10, 0x10), TextureDisposePolicy.NeverDispose); GameObject obj61 = new GameObject(texture55, t); Size size55 = new Size(0x10, 0x10); obj61.YSpeed.TargetSpeed = 4f; obj61.YSpeed.Acceleration = 2f; obj61.YSpeed.CurrentSpeed = -4f; ItemBehavior behavior44 = new ItemBehavior(obj61, 0, 180) { DropSound = SoundEffects.Nothing, CollectSound = SoundEffects.GetItem }; obj61.SetBehavior(behavior44); obj61.DefineAnimation(AnimType.Stopped, new Animation(AnimHitType.None, size55, new int[] { 5 }, 8, true)); SizeF ef105 = new SizeF(16f, 16f); obj61.GetAnimation(AnimType.Stopped).HitboxSize = ef105; obj61.ObjClass = ObjectClass.Item; return obj61; } case ObjectType.Key: { GameTexture texture47 = new GameTexture("cursor.bmp", new Size(0x10, 0x10), TextureDisposePolicy.NeverDispose); GameObject obj48 = new GameObject(texture47, t); Size size47 = new Size(0x10, 0x10); ItemBehavior behavior39 = new ItemBehavior(obj48, 0, 180); obj48.SetBehavior(behavior39); obj48.DefineAnimation(AnimType.Stopped, new Animation(new Point(1, 1), size47)); behavior39.DropSound = SoundEffects.Nothing; behavior39.CollectSound = SoundEffects.GetItem; SizeF ef98 = new SizeF(16f, 16f); obj48.GetAnimation(AnimType.Stopped).HitboxSize = ef98; obj48.ObjClass = ObjectClass.Item; return obj48; } case ObjectType.Stone: { GameTexture texture44 = new GameTexture("items.bmp", new Size(0x10, 0x10), TextureDisposePolicy.DisposeOnTileChange); GameObject obj45 = new GameObject(texture44, t); Size size44 = new Size(0x10, 0x10); obj45.YSpeed.TargetSpeed = 4f; obj45.YSpeed.Acceleration = 2f; obj45.YSpeed.CurrentSpeed = -5f; ItemBehavior behavior36 = new ItemBehavior(obj45, 0, 180); obj45.SetBehavior(behavior36); numArray = new int[1]; obj45.DefineAnimation(AnimType.Stopped, new Animation(AnimHitType.None, size44, numArray, 8, true)); behavior36.DropSound = SoundEffects.Nothing; behavior36.CollectSound = SoundEffects.GetItem; SizeF ef95 = new SizeF(16f, 16f); obj45.GetAnimation(AnimType.Stopped).HitboxSize = ef95; obj45.StopsAtBoundries = false; obj45.ObjClass = ObjectClass.Item; return obj45; } case ObjectType.LavaSplash: return new GameObject(null, ObjectType.LavaSplash) { AttackDamage = GetEnemyDamage(GameEngine.Game.BaseDifficulty, 1) }; case ObjectType.Tornado: { GameObject obj52 = GameEngine.Game.GetPlayer(); GameTexture texture51 = new GameTexture("tornado.bmp", new Size(0x10, 0x10), TextureDisposePolicy.NeverDispose); GameObject obj53 = new GameObject(texture51, t); Size size51 = new Size(0x10, 0x10); numArray = new int[3]; numArray[1] = 1; numArray[2] = 2; obj53.DefineAnimation(AnimType.Stopped, new Animation(AnimHitType.Sword, size51, numArray, 4, true)); obj53.Location = obj52.GetProjectileSpawnLocation((SizeF) size51); SizeF ef102 = new SizeF(16f, 16f); obj53.GetAnimation(AnimType.Stopped).HitboxSize = ef102; obj53.CurrentDirection = obj52.CurrentDirection; obj53.YSpeed.Acceleration = 2f; obj53.YSpeed.TargetSpeed = 4f; obj53.XSpeed.Acceleration = 3f; obj53.SetBehavior(new TornadoBehavior(obj53, obj52)); obj53.ObjClass = ObjectClass.PlayerProjectile; obj53.AttackDamage = obj52.AttackDamage; obj53.StopsAtBoundries = false; return obj53; } case ObjectType.Boomerang: { GameObject obj54 = GameEngine.Game.GetPlayer(); GameTexture texture52 = new GameTexture("boomerang.bmp", new Size(0x10, 0x10), TextureDisposePolicy.NeverDispose); GameObject obj55 = new GameObject(texture52, t); Size size52 = new Size(0x10, 0x10); obj55.DefineAnimation(AnimType.Stopped, new Animation(AnimHitType.Sword, size52, new int[] { 0, 1, 2, 3 }, 4, true)); obj55.Location = obj54.GetProjectileSpawnLocation((SizeF) size52); SizeF ef103 = new SizeF(16f, 16f); obj55.GetAnimation(AnimType.Stopped).HitboxSize = ef103; obj55.CurrentDirection = obj54.CurrentDirection; obj55.SetBehavior(new BoomerangBehavior(obj55, obj54)); obj55.Solid = false; obj55.ObjClass = ObjectClass.PlayerProjectile; obj55.AttackDamage = GameEngine.Game.GetPlayer().AttackDamage / 2; obj55.StopsAtBoundries = false; obj55.StopsAtSides = false; obj55.DestroyIFFar = true; return obj55; } case ObjectType.SalamanderCross: { GameTexture texture49 = new GameTexture("salamandercross.bmp", new Size(0x10, 0x10), TextureDisposePolicy.NeverDispose); GameObject obj50 = new GameObject(texture49, t); Size size49 = new Size(0x10, 0x10); obj50.XSpeed.SetSpeed((float) 0f); obj50.YSpeed.SetSpeed((float) 0f); SalamanderCrossBehavior behavior41 = new SalamanderCrossBehavior(obj50); obj50.SetBehavior(behavior41); numArray = new int[2]; numArray[1] = 1; obj50.DefineAnimation(AnimType.Stopped, new Animation(AnimHitType.None, size49, numArray, 8, true)); SizeF ef100 = new SizeF(16f, 16f); obj50.GetAnimation(AnimType.Stopped).HitboxSize = ef100; obj50.ObjClass = ObjectClass.Item; return obj50; } case ObjectType.Explosion: { GameTexture texture53 = new GameTexture("explosion.bmp", new Size(0x10, 0x10), TextureDisposePolicy.DisposeOnTileChange); GameObject obj58 = new GameObject(texture53, t); Size size53 = new Size(0x10, 0x10); obj58.DefineAnimation(AnimType.Stopped, new Animation(AnimHitType.None, size53, new int[] { 0, 1, 2, 3, 4, 5 }, 8, false)); new SizeF(16f, 16f); obj58.SetBehavior(new BulletBehavior(obj58, 0x30, false, false)); obj58.ObjClass = ObjectClass.Special; return obj58; } case ObjectType.MysteryBlock: { GameObject obj56 = new GameObject(new GameTexture("cursor.bmp", new Size(0x10, 0x10), TextureDisposePolicy.DisposeOnSceneChange), ObjectType.MysteryBlock); obj56.SetBehavior(new ItemBehavior(obj56, 0, 0x270f)); obj56.DefineAnimation(AnimType.Stopped, new Animation(new Point(3, 2), new Size(0x10, 0x10))); obj56.GetAnimation(AnimType.Stopped).HitboxSize = new SizeF(16f, 16f); obj56.Solid = true; obj56.YSpeed.TargetSpeed = 4f; obj56.YSpeed.CurrentSpeed = -1f; obj56.YSpeed.Acceleration = 1f; obj56.ObjClass = ObjectClass.Item; return obj56; } case ObjectType.MusicTrigger: { GameTexture texture56 = new GameTexture("cursor.bmp", new Size(0x10, 0x10), TextureDisposePolicy.NeverDispose); GameObject o = new GameObject(texture56, t); Size size56 = new Size(0x10, 0x10); o.SetBehavior(new MusicTriggerBehavior(o)); o.DefineAnimation(AnimType.Stopped, new Animation(AnimHitType.None, size56, new int[] { 5 }, 8, true)); SizeF ef106 = new SizeF(16f, 16f); o.GetAnimation(AnimType.Stopped).HitboxSize = ef106; o.Visible = false; o.ObjClass = ObjectClass.Item; return o; } default: goto Label_8CC8; } behavior.AddNearAction(new FacePlayer()); if (color == ColorSwaps.Red) { behavior.AddNearAction(new Jump(0f, 6f, true, true)); } else if (color == ColorSwaps.Green) { behavior.AddNearAction(new Jump(2f, 6f, true, true)); } else if (color >= ColorSwaps.Blue) { behavior.AddNearAction(new Jump(3f, 6f, true, true)); } if (color == ColorSwaps.Blue) { behavior.AddNearAction(new Wait(60)); } else if (color == ColorSwaps.Yellow) { behavior.AddNearAction(new Wait(10)); } else { behavior.AddNearAction(new Wait(100)); } behavior.AddFarAction(new SetSpeed(ActionPresets.Gravity)); behavior.AddFarAction(new FacePlayer()); behavior.AddFarAction(new Wait(2)); behavior.AddHitAction(new Wait(1)); behavior.AddHitAction(new FacePlayer()); behavior.AddHitAction(new Jump(ActionPresets.Recoil)); behavior.AddHitAction(new Wait(40)); behavior.AttackDistance = 80 + Utility.RandomInt(-40, 40); obj10.SetBehavior(behavior); obj10.ObjClass = ObjectClass.Enemy; if (color == ColorSwaps.Yellow) { obj10.AttackDamage = GetEnemyDamage(4, 3); } else { obj10.AttackDamage = GetEnemyDamage(difficulty, (int) color); } obj10.StopsAtBoundries = false; obj10.CurrentDirection = direction; AddItemDrops(behavior, itemDrops); return obj10; Label_1E10: obj13.XSpeed.SetSpeed(num2); Label_1E1E: behavior4 = new EnemyBehavior(obj13, GetEnemyHP(difficulty, (int) color), delay); if (color == ColorSwaps.Yellow) { difficulty = 9; } numArray = new int[2]; numArray[1] = 1; obj13.DefineAnimation(AnimType.Stopped, new Animation(AnimHitType.None, size12, numArray, 4, true)); obj13.DefineAnimation(AnimType.Hit, new Animation(AnimHitType.None, size12, new int[] { 2 }, 1, true)); obj13.DefineAnimation(AnimType.Dying, new Animation(AnimHitType.None, size12, new int[] { 2 }, 1, true)); SizeF ef36 = new SizeF(16f, 16f); obj13.GetAnimation(AnimType.Stopped).HitboxSize = ef36; obj13.GetAnimation(AnimType.Hit).HitboxSize = ef36; behavior4.AddNearAction(new PlayAnimation(AnimType.Stopped)); behavior4.AddFarAction(new PlayAnimation(AnimType.Stopped)); behavior4.AddHitAction(new Wait(40)); behavior4.AddHitAction(new SetSpeed(num2)); behavior4.AddHitWallAction(new ClimbWall()); behavior4.AttackDistance = 500; obj13.StopsAtLedges = true; obj13.SetBehavior(behavior4); obj13.ObjClass = ObjectClass.Enemy; obj13.NoRotate = true; obj13.AttackDamage = GetEnemyDamage(difficulty, (int) color); AddItemDrops(behavior4, itemDrops); obj13.Solid = true; return obj13; Label_8CC8: return null; }
public override bool DoAction(GameObject o) { if (!this.added) { GameEngine.Game.CurrentMap.AddObject(this.shotPoint); this.added = true; } this.shotPoint.Location = new PointF(o.X, o.Y - 18f); this.shotPoint.CurrentDirection = o.CurrentDirection; if (this.shooting) { if (!this.shootAct.DoAction(this.shotPoint)) { this.shooting = false; this.shotDelay.Timer = Utility.RandomInt(2, 10); this.shotsLeft--; if (this.shotsLeft == 0) { o.CurrentAnimation = AnimType.Stopped; this.shotDelay.Timer = Utility.RandomInt(60, 180); } } } else if (this.shotsLeft > 0) { if (this.shotDelay.Update()) { this.shootAct = new Shoot(ObjectType.VampireFire, ObjectFactory.GetEnemyBulletDamage(8, 3), (float) Utility.RandomInt(4, 6), 0f, 1, 1, false, false, SoundEffects.LizardFire); this.shooting = true; } } else if (this.shotDelay.Update()) { this.shotsLeft = Utility.RandomInt(1, 4); this.shotDelay.Timer = 1; o.CurrentAnimation = AnimType.Attacking; } switch (this.state) { case -1: if (o.XSpeed.CurrentSpeed == 0f) { this.state = 1; } else { this.state = 2; } goto Label_0484; case 0: if ((o.X < 60f) && (o.CurrentDirection == Direction.Left)) { o.CurrentDirection = Direction.Right; if (Utility.RandomInt(1, 3) >= 2) { o.XSpeed.SetSpeed((float) 0f); o.YSpeed.SetSpeed(-this.speed); this.state = 1; break; } o.XSpeed.SetSpeed(this.speed); } break; case 1: if (o.Y >= 100f) { if ((o.Y > 220f) && (o.YSpeed.CurrentSpeed > 0f)) { if (Utility.RandomInt(1, 2) == 1) { if (o.X < 150f) { this.state = 0; o.CurrentDirection = Direction.Right; o.XSpeed.SetSpeed(this.speed); o.YSpeed.SetSpeed((float) 0f); } else { this.state = 0; o.CurrentDirection = Direction.Left; o.XSpeed.SetSpeed(-this.speed); o.YSpeed.SetSpeed((float) 0f); } } else { o.YSpeed.SetSpeed(-this.speed); } } } else if (Utility.RandomInt(1, 2) != 1) { o.YSpeed.SetSpeed(this.speed); } else if (o.X >= 150f) { this.state = 2; o.CurrentDirection = Direction.Left; o.XSpeed.SetSpeed(-this.speed); o.YSpeed.SetSpeed((float) 0f); } else { this.state = 2; o.CurrentDirection = Direction.Right; o.XSpeed.SetSpeed(this.speed); o.YSpeed.SetSpeed((float) 0f); } goto Label_0484; case 2: if ((o.X < 60f) && (o.CurrentDirection == Direction.Left)) { o.CurrentDirection = Direction.Right; if (Utility.RandomInt(1, 3) >= 2) { o.XSpeed.SetSpeed((float) 0f); o.YSpeed.SetSpeed(this.speed); this.state = 1; } else { o.XSpeed.SetSpeed(this.speed); } } if ((o.X > 290f) && (o.CurrentDirection == Direction.Right)) { o.CurrentDirection = Direction.Left; if (Utility.RandomInt(1, 3) < 2) { o.XSpeed.SetSpeed(-this.speed); } else { o.XSpeed.SetSpeed((float) 0f); o.YSpeed.SetSpeed(this.speed); this.state = 1; } } goto Label_0484; default: goto Label_0484; } if ((o.X > 290f) && (o.CurrentDirection == Direction.Right)) { o.CurrentDirection = Direction.Left; if (Utility.RandomInt(1, 3) < 2) { o.XSpeed.SetSpeed(-this.speed); } else { o.XSpeed.SetSpeed((float) 0f); o.YSpeed.SetSpeed(-this.speed); this.state = 1; } } Label_0484: return false; }
private void DoShoot() { Shoot shoot = new Shoot(ObjectType.BlueBullet, ObjectFactory.GetEnemyBulletDamage(12, 2), 0f, -6f, 1f, 1, false); Shoot shoot2 = new Shoot(ObjectType.BlueBullet, ObjectFactory.GetEnemyBulletDamage(12, 2), -2f, -6f, 1f, 1, false); Shoot shoot3 = new Shoot(ObjectType.BlueBullet, ObjectFactory.GetEnemyBulletDamage(12, 2), 2f, -6f, 1f, 1, false); shoot.DoAction(this.thisObject); shoot2.DoAction(this.thisObject); shoot3.DoAction(this.thisObject); }
private bool HandleEvents() { if (this.currentAction == null) { this.CheckProximity(); } if (this.currentAction.DoAction(this.thisObject)) { if (this.hitPoints <= 0) { this.currentAction.Finish(); if (this.thisObject.Type == ObjectType.FinalDragon) { if (this.timerOffset <= 0) { this.timerOffset = 0x3e7; GameEngine.Game.CurrentMap.HandleFinalBossDeath(); return true; } } else if (this.thisObject.Type == ObjectType.MechaDragonX) { if (this.timerOffset <= 0) { this.timerOffset = 0x3e7; GameEngine.Game.CurrentMap.HandleMechaXDeath(this.thisObject); return false; } } else if (this.thisObject.ObjClass == ObjectClass.Boss) { Shoot[] shootArray = new Shoot[8]; int num = 8; shootArray[0] = new Shoot(ObjectType.BossDieStar, 0, 0f, (float) -num, 1, 1, false, false, SoundEffects.Nothing); shootArray[1] = new Shoot(ObjectType.BossDieStar, 0, (float) -num, (float) -num, 1, 1, false, false, SoundEffects.Nothing); shootArray[2] = new Shoot(ObjectType.BossDieStar, 0, (float) -num, 0f, 1, 1, false, false, SoundEffects.Nothing); shootArray[3] = new Shoot(ObjectType.BossDieStar, 0, (float) -num, (float) num, 1, 1, false, false, SoundEffects.Nothing); shootArray[4] = new Shoot(ObjectType.BossDieStar, 0, 0f, (float) num, 1, 1, false, false, SoundEffects.Nothing); shootArray[5] = new Shoot(ObjectType.BossDieStar, 0, (float) num, 0f, 1, 1, false, false, SoundEffects.Nothing); shootArray[6] = new Shoot(ObjectType.BossDieStar, 0, (float) num, (float) -num, 1, 1, false, false, SoundEffects.Nothing); shootArray[7] = new Shoot(ObjectType.BossDieStar, 0, (float) num, (float) num, 1, 1, false, false, SoundEffects.Nothing); foreach (Shoot shoot in shootArray) { shoot.DoAction(this.thisObject); } string[] strArray = new string[1]; if (this.thisObject.Type == ObjectType.MechaDragon) { strArray = new string[] { "GOLD|1|5", "GOLD|1|5", "GOLD|5|10" }; } else if (this.thisObject.Type == ObjectType.MummyDragon) { strArray = new string[] { "GOLD|1|10", "GOLD|1|10", "GOLD|5|15" }; } else if (this.thisObject.Type == ObjectType.ZombieDragon) { strArray = new string[] { "GOLD|1|20", "GOLD|2|10", "GOLD|10|30" }; } else if (this.thisObject.Type == ObjectType.PirateDragon) { strArray = new string[] { "GOLD|10|20", "GOLD|5|15", "GOLD|10|30" }; } else if (this.thisObject.Type == ObjectType.DaiymoDragon) { strArray = new string[] { "GOLD|20|50", "GOLD|10|30", "GOLD|20|40" }; } else if (this.thisObject.Type == ObjectType.PolarDragon) { strArray = new string[] { "GOLD|50|100", "GOLD|40|60", "GOLD|20|40" }; } else if (this.thisObject.Type == ObjectType.VampireDragon) { GameEngine.Game.CurrentMap.RevealDoor(false); return false; } GameObject obj2 = ObjectFactory.CreateObjectOfType(ObjectType.TransformSpirit, ColorSwaps.Normal, Direction.Right, "", 0); PointF tf = new PointF(this.thisObject.Location.X, this.thisObject.Location.Y - 48f); obj2.Location = tf; obj2.Solid = false; TransformSpiritBehavior objectBehavior = (TransformSpiritBehavior) obj2.ObjectBehavior; ObjectGenerator g = new ObjectGenerator(new PointF(tf.X - 16f, tf.Y), strArray, ColorSwaps.Red, false, 0x23); g.SetSpawnSpeeds(new Speed(0f, 0f, 0f), new Speed(-6f, 1f, 4f)); GameEngine.Game.CurrentMap.AddObject(obj2); objectBehavior.SetMoneyGenerator(g); g.SetActivated(true); } else { this.DropItem(); } return false; } if (this.actionQueue.Count == 0) { this.CheckProximity(); } else { this.currentAction.Finish(); this.currentAction = this.actionQueue.Dequeue(); this.currentAction.Reset(); } } return true; }