// Decompiled with JetBrains decompiler // Type: Terraria.NPC // Assembly: Terraria, Version=1.3.5.3, Culture=neutral, PublicKeyToken=null // MVID: 68659D26-2BE6-448F-8663-74FA559E6F08 // Assembly location: C:\Users\mikeyisbaeyt\Downloads\depotdownloader-2.4.5\depots\105601\6707058\Terraria.exe using Microsoft.Xna.Framework; using Microsoft.Xna.Framework.Graphics; using ReLogic.Utilities; using System; using System.Collections.Generic; using Terraria.Audio; using Terraria.DataStructures; using Terraria.Enums; using Terraria.GameContent; using Terraria.GameContent.Achievements; using Terraria.GameContent.Events; using Terraria.GameContent.UI; using Terraria.ID; using Terraria.Localization; using Terraria.Utilities; using Terraria.World.Generation; namespace Terraria { public class NPC : Entity { private const int NPC_TARGETS_START = 300; private float waterMovementSpeed = 0.5f; private float lavaMovementSpeed = 0.5f; private float honeyMovementSpeed = 0.25f; public static readonly int[,,,] MoonLordAttacksArray = NPC.InitializeMoonLordAttacks(); public static readonly int[,] MoonLordAttacksArray2 = NPC.InitializeMoonLordAttacks2(); public static int MoonLordCountdown = 0; public const int MaxMoonLordCountdown = 3600; public int teleportStyle; public float teleportTime; public static int immuneTime = 20; public static int maxAI = 4; public int netSpam; public static int goldCritterChance = 150; public static int[] killCount = new int[580]; public static float waveKills = 0.0f; public static int waveNumber = 0; public const float nameOverIncrement = 0.025f; public const float nameOverDistance = 400f; public float nameOver; public bool SpawnedFromStatue; public bool dripping; public bool drippingSlime; public int altTexture; public Vector2 visualOffset = Vector2.Zero; public short catchItem; public short releaseOwner = (short) byte.MaxValue; public int rarity; public static bool taxCollector = false; public bool[] playerInteraction = new bool[256]; public int lastInteraction = (int) byte.MaxValue; public float takenDamageMultiplier = 1f; private static int spawnSpaceX = 3; private static int spawnSpaceY = 3; public float gfxOffY; public float stepSpeed; private static float gravity = 0.3f; public bool teleporting; private static int maxAttack = 20; private static int[] attackNPC = new int[NPC.maxAttack]; public bool stairFall; public static int fireFlyFriendly = 0; public static int fireFlyChance = 0; public static int fireFlyMultiple = 0; public static int butterflyChance = 0; private byte netStream; private byte[] streamPlayer = new byte[(int) byte.MaxValue]; private byte npcNameLookup; public Vector2[] oldPos = new Vector2[10]; public float[] oldRot = new float[10]; public bool setFrameSize; public static int golemBoss = -1; public static int plantBoss = -1; public static int crimsonBoss = -1; public int netSkip; public bool netAlways; public int realLife = -1; private string _givenName = ""; public static int sWidth = 1920; public static int sHeight = 1080; private static int spawnRangeX = (int) ((double) (NPC.sWidth / 16) * 0.7); private static int spawnRangeY = (int) ((double) (NPC.sHeight / 16) * 0.7); public static int safeRangeX = (int) ((double) (NPC.sWidth / 16) * 0.52); public static int safeRangeY = (int) ((double) (NPC.sHeight / 16) * 0.52); private static int activeRangeX = (int) ((double) NPC.sWidth * 2.1); private static int activeRangeY = (int) ((double) NPC.sHeight * 2.1); private static int townRangeX = NPC.sWidth; private static int townRangeY = NPC.sHeight; public float npcSlots = 1f; private static bool noSpawnCycle = false; private static int activeTime = 750; private static int defaultSpawnRate = 600; private static int defaultMaxSpawns = 5; public bool dontCountMe; public const int maxBuffs = 5; public int[] buffType = new int[5]; public int[] buffTime = new int[5]; public bool[] buffImmune = new bool[206]; public bool midas; public bool ichor; public bool onFire; public bool onFire2; public bool onFrostBurn; public bool poisoned; public bool venom; public bool shadowFlame; public bool soulDrain; public int lifeRegen; public int lifeRegenCount; public int lifeRegenExpectedLossPerSecond = -1; public bool confused; public bool loveStruck; public bool stinky; public bool dryadWard; public bool immortal; public bool chaseable = true; public bool canGhostHeal = true; public bool javelined; public bool celled; public bool dryadBane; public bool daybreak; public bool dontTakeDamageFromHostiles; public bool betsysCurse; public bool oiled; public static bool savedTaxCollector = false; public static bool savedGoblin = false; public static bool savedWizard = false; public static bool savedMech = false; public static bool savedAngler = false; public static bool savedStylist = false; public static bool savedBartender = false; public static bool downedBoss1 = false; public static bool downedBoss2 = false; public static bool downedBoss3 = false; public static bool downedQueenBee = false; public static bool downedSlimeKing = false; public static bool downedGoblins = false; public static bool downedFrost = false; public static bool downedPirates = false; public static bool downedClown = false; public static bool downedPlantBoss = false; public static bool downedGolemBoss = false; public static bool downedMartians = false; public static bool downedFishron = false; public static bool downedHalloweenTree = false; public static bool downedHalloweenKing = false; public static bool downedChristmasIceQueen = false; public static bool downedChristmasTree = false; public static bool downedChristmasSantank = false; public static bool downedAncientCultist = false; public static bool downedMoonlord = false; public static bool downedTowerSolar = false; public static bool downedTowerVortex = false; public static bool downedTowerNebula = false; public static bool downedTowerStardust = false; public static int ShieldStrengthTowerSolar = 0; public static int ShieldStrengthTowerVortex = 0; public static int ShieldStrengthTowerNebula = 0; public static int ShieldStrengthTowerStardust = 0; public static int LunarShieldPowerNormal = 100; public static int LunarShieldPowerExpert = 150; public static bool TowerActiveSolar = false; public static bool TowerActiveVortex = false; public static bool TowerActiveNebula = false; public static bool TowerActiveStardust = false; public static bool LunarApocalypseIsUp = false; public static bool downedMechBossAny = false; public static bool downedMechBoss1 = false; public static bool downedMechBoss2 = false; public static bool downedMechBoss3 = false; public static bool[] npcsFoundForCheckActive = new bool[580]; private static int spawnRate = NPC.defaultSpawnRate; private static int maxSpawns = NPC.defaultMaxSpawns; public int soundDelay; public int[] immune = new int[256]; public int directionY = 1; public int type; public float[] ai = new float[NPC.maxAI]; public float[] localAI = new float[NPC.maxAI]; public int aiAction; public int aiStyle; public bool justHit; public int timeLeft; public int target = -1; public int damage; public int defense; public int defDamage; public int defDefense; public bool coldDamage; public bool trapImmune; public LegacySoundStyle HitSound; public LegacySoundStyle DeathSound; public int life; public int lifeMax; public Microsoft.Xna.Framework.Rectangle targetRect; public double frameCounter; public Microsoft.Xna.Framework.Rectangle frame; public Color color; public int alpha; public bool hide; public float scale = 1f; public float knockBackResist = 1f; public int oldDirectionY; public int oldTarget; public float rotation; public bool noGravity; public bool noTileCollide; public bool netUpdate; public bool netUpdate2; public bool collideX; public bool collideY; public bool boss; public int spriteDirection = -1; public bool behindTiles; public bool lavaImmune; public float value; public float extraValue; public bool dontTakeDamage; public int netID; public bool townNPC; public static bool travelNPC = false; public bool homeless; public int homeTileX = -1; public int homeTileY = -1; public bool oldHomeless; public int oldHomeTileX = -1; public int oldHomeTileY = -1; public bool friendly; public bool closeDoor; public int doorX; public int doorY; public int friendlyRegen; public int breath; public const int breathMax = 200; public int breathCounter; public bool reflectingProjectiles; public int lastPortalColorIndex; public static int[,] cavernMonsterType = new int[2, 3]; private static int ignorePlayerInteractions = 0; public bool CanTalk => (this.townNPC || this.type == 453) && this.aiStyle == 7 && (double) this.velocity.Y == 0.0; public bool HasValidTarget { get { if (this.HasPlayerTarget && Main.player[this.target].active && !Main.player[this.target].dead && !Main.player[this.target].ghost) return true; return this.SupportsNPCTargets && this.HasNPCTarget && Main.npc[this.TranslatedTargetIndex].active; } } public bool HasPlayerTarget => this.target >= 0 && this.target < (int) byte.MaxValue; public bool HasNPCTarget => this.target >= 300 && this.target < 500; public bool SupportsNPCTargets => NPCID.Sets.UsesNewTargetting[this.type]; public int TranslatedTargetIndex => this.HasNPCTarget ? this.target - 300 : this.target; public int WhoAmIToTargettingIndex => this.whoAmI + 300; public NPCAimedTarget GetTargetData(bool ignorePlayerTankPets = true) { if (!this.HasValidTarget) return new NPCAimedTarget(); return this.SupportsNPCTargets && this.HasNPCTarget ? new NPCAimedTarget(Main.npc[this.TranslatedTargetIndex]) : new NPCAimedTarget(Main.player[this.target], ignorePlayerTankPets); } public static int[,,,] InitializeMoonLordAttacks() { int[,,,] numArray; if (NPC.MoonLordAttacksArray != null) { numArray = NPC.MoonLordAttacksArray; for (int index1 = 0; index1 < numArray.GetLength(0); ++index1) { for (int index2 = 0; index2 < numArray.GetLength(1); ++index2) { for (int index3 = 0; index3 < numArray.GetLength(2); ++index3) { for (int index4 = 0; index4 < numArray.GetLength(3); ++index4) numArray[index1, index2, index3, index4] = 0; } } } } else numArray = new int[3, 3, 2, 5]; numArray[0, 0, 0, 0] = 0; numArray[0, 0, 1, 0] = 60; numArray[0, 0, 0, 1] = 1; numArray[0, 0, 1, 1] = 70; numArray[0, 0, 0, 2] = 2; numArray[0, 0, 1, 2] = 330; numArray[0, 0, 0, 3] = 0; numArray[0, 0, 1, 3] = 60; numArray[0, 0, 0, 4] = 3; numArray[0, 0, 1, 4] = 90; numArray[0, 1, 0, 0] = 1; numArray[0, 1, 1, 0] = 70; numArray[0, 1, 0, 1] = 0; numArray[0, 1, 1, 1] = 120; numArray[0, 1, 0, 2] = 3; numArray[0, 1, 1, 2] = 90; numArray[0, 1, 0, 3] = 0; numArray[0, 1, 1, 3] = 120; numArray[0, 1, 0, 4] = 2; numArray[0, 1, 1, 4] = 390; numArray[0, 2, 0, 0] = 3; numArray[0, 2, 1, 0] = 90; numArray[0, 2, 0, 1] = 0; numArray[0, 2, 1, 1] = 120; numArray[0, 2, 0, 2] = 2; numArray[0, 2, 1, 2] = 435; numArray[0, 2, 0, 3] = 0; numArray[0, 2, 1, 3] = 120; numArray[0, 2, 0, 4] = 1; numArray[0, 2, 1, 4] = 375; numArray[1, 0, 0, 0] = 0; numArray[1, 0, 1, 0] = 0; numArray[1, 0, 0, 1] = 0; numArray[1, 0, 1, 1] = 0; numArray[1, 0, 0, 2] = 0; numArray[1, 0, 1, 2] = 0; numArray[1, 0, 0, 3] = 0; numArray[1, 0, 1, 3] = 0; numArray[1, 0, 0, 4] = 0; numArray[1, 0, 1, 4] = 0; numArray[1, 1, 0, 0] = 0; numArray[1, 1, 1, 0] = 0; numArray[1, 1, 0, 1] = 0; numArray[1, 1, 1, 1] = 0; numArray[1, 1, 0, 2] = 0; numArray[1, 1, 1, 2] = 0; numArray[1, 1, 0, 3] = 0; numArray[1, 1, 1, 3] = 0; numArray[1, 1, 0, 4] = 0; numArray[1, 1, 1, 4] = 0; numArray[1, 2, 0, 0] = 0; numArray[1, 2, 1, 0] = 0; numArray[1, 2, 0, 1] = 0; numArray[1, 2, 1, 1] = 0; numArray[1, 2, 0, 2] = 0; numArray[1, 2, 1, 2] = 0; numArray[1, 2, 0, 3] = 0; numArray[1, 2, 1, 3] = 0; numArray[1, 2, 0, 4] = 0; numArray[1, 2, 1, 4] = 0; numArray[2, 0, 0, 0] = 0; numArray[2, 0, 1, 0] = 0; numArray[2, 0, 0, 1] = 0; numArray[2, 0, 1, 1] = 0; numArray[2, 0, 0, 2] = 0; numArray[2, 0, 1, 2] = 0; numArray[2, 0, 0, 3] = 0; numArray[2, 0, 1, 3] = 0; numArray[2, 0, 0, 4] = 0; numArray[2, 0, 1, 4] = 0; numArray[2, 1, 0, 0] = 0; numArray[2, 1, 1, 0] = 0; numArray[2, 1, 0, 1] = 0; numArray[2, 1, 1, 1] = 0; numArray[2, 1, 0, 2] = 0; numArray[2, 1, 1, 2] = 0; numArray[2, 1, 0, 3] = 0; numArray[2, 1, 1, 3] = 0; numArray[2, 1, 0, 4] = 0; numArray[2, 1, 1, 4] = 0; numArray[2, 2, 0, 0] = 0; numArray[2, 2, 1, 0] = 0; numArray[2, 2, 0, 1] = 0; numArray[2, 2, 1, 1] = 0; numArray[2, 2, 0, 2] = 0; numArray[2, 2, 1, 2] = 0; numArray[2, 2, 0, 3] = 0; numArray[2, 2, 1, 3] = 0; numArray[2, 2, 0, 4] = 0; numArray[2, 2, 1, 4] = 0; NPC.InitializeMoonLordAttacks2(); return numArray; } public static int[,] InitializeMoonLordAttacks2() { int[,] numArray; if (NPC.MoonLordAttacksArray2 != null) { numArray = NPC.MoonLordAttacksArray2; for (int index1 = 0; index1 < numArray.GetLength(0); ++index1) { for (int index2 = 0; index2 < numArray.GetLength(1); ++index2) numArray[index1, index2] = 0; } } else numArray = new int[2, 10]; numArray[0, 0] = 0; numArray[1, 0] = 90; numArray[0, 1] = 1; numArray[1, 1] = 90; numArray[0, 2] = 0; numArray[1, 2] = 90; numArray[0, 3] = 2; numArray[1, 3] = 135; numArray[0, 4] = 0; numArray[1, 4] = 90; numArray[0, 5] = 3; numArray[1, 5] = 200; numArray[0, 6] = 0; numArray[1, 6] = 90; numArray[0, 7] = 4; numArray[1, 7] = 375; numArray[0, 8] = 0; numArray[1, 8] = 90; numArray[0, 9] = 2; numArray[1, 9] = 135; return numArray; } public string TypeName => Lang.GetNPCNameValue(this.netID); public string FullName => !this.HasGivenName ? this.TypeName : Language.GetTextValue("Game.NPCTitle", (object) this._givenName, (object) this.TypeName); public bool HasGivenName => (uint) this._givenName.Length > 0U; public string GivenOrTypeName => !this.HasGivenName ? this.TypeName : this._givenName; public string GivenName { get => this._givenName; set => this._givenName = value ?? ""; } public static bool downedTowers => NPC.downedTowerSolar && NPC.downedTowerVortex && NPC.downedTowerNebula && NPC.downedTowerStardust; public static int ShieldStrengthTowerMax => !Main.expertMode ? NPC.LunarShieldPowerNormal : NPC.LunarShieldPowerExpert; public static bool TowersDefeated => NPC.TowerActiveSolar && NPC.TowerActiveVortex && NPC.TowerActiveNebula && NPC.TowerActiveStardust; public static bool BusyWithAnyInvasionOfSorts() => Main.slimeRainTime != 0.0 || Main.bloodMoon || Main.eclipse || Main.snowMoon || Main.pumpkinMoon || Main.invasionType != 0 || DD2Event.Ongoing; public float Opacity { get => (float) (1.0 - (double) this.alpha / (double) byte.MaxValue); set => this.alpha = (int) MathHelper.Clamp((float) ((1.0 - (double) value) * (double) byte.MaxValue), 0.0f, (float) byte.MaxValue); } public static void ClearFoundActiveNPCs() { for (int index = 0; index < NPC.npcsFoundForCheckActive.Length; ++index) NPC.npcsFoundForCheckActive[index] = false; } public static void UpdateFoundActiveNPCs() { for (int index = 0; index < 200; ++index) { NPC npc = Main.npc[index]; if (npc.active && npc.type >= 0 && npc.type < 580) NPC.npcsFoundForCheckActive[npc.type] = true; } } public static string getNewNPCName(int npcType) { switch (npcType) { case 17: switch (WorldGen.genRand.Next(23)) { case 0: return "Alfred"; case 1: return "Barney"; case 2: return "Calvin"; case 3: return "Edmund"; case 4: return "Edwin"; case 5: return "Eugene"; case 6: return "Frank"; case 7: return "Frederick"; case 8: return "Gilbert"; case 9: return "Gus"; case 10: return "Wilbur"; case 11: return "Seymour"; case 12: return "Louis"; case 13: return "Humphrey"; case 14: return "Harold"; case 15: return "Milton"; case 16: return "Mortimer"; case 17: return "Howard"; case 18: return "Walter"; case 19: return "Finn"; case 20: return "Isaac"; case 21: return "Joseph"; default: return "Ralph"; } case 18: switch (WorldGen.genRand.Next(24)) { case 0: return "Molly"; case 1: return "Amy"; case 2: return "Claire"; case 3: return "Emily"; case 4: return "Katie"; case 5: return "Madeline"; case 6: return "Katelyn"; case 7: return "Emma"; case 8: return "Abigail"; case 9: return "Carly"; case 10: return "Jenna"; case 11: return "Heather"; case 12: return "Katherine"; case 13: return "Caitlin"; case 14: return "Kaitlin"; case 15: return "Holly"; case 16: return "Kaitlyn"; case 17: return "Hannah"; case 18: return "Kathryn"; case 19: return "Lorraine"; case 20: return "Helen"; case 21: return "Kayla"; case 22: return "Lisa"; default: return "Allison"; } case 19: switch (WorldGen.genRand.Next(24)) { case 0: return "DeShawn"; case 1: return "DeAndre"; case 2: return "Marquis"; case 3: return "Darnell"; case 4: return "Terrell"; case 5: return "Malik"; case 6: return "Trevon"; case 7: return "Tyrone"; case 8: return "Willie"; case 9: return "Dominique"; case 10: return "Demetrius"; case 11: return "Reginald"; case 12: return "Jamal"; case 13: return "Maurice"; case 14: return "Jalen"; case 15: return "Darius"; case 16: return "Xavier"; case 17: return "Terrance"; case 18: return "Andre"; case 19: return "Dante"; case 20: return "Brimst"; case 21: return "Bronson"; case 22: return "Tony"; default: return "Darryl"; } case 20: switch (WorldGen.genRand.Next(22)) { case 0: return "Alalia"; case 1: return "Alalia"; case 2: return "Alura"; case 3: return "Ariella"; case 4: return "Caelia"; case 5: return "Calista"; case 6: return "Chryseis"; case 7: return "Emerenta"; case 8: return "Elysia"; case 9: return "Evvie"; case 10: return "Faye"; case 11: return "Felicitae"; case 12: return "Lunette"; case 13: return "Nata"; case 14: return "Nissa"; case 15: return "Tatiana"; case 16: return "Rosalva"; case 17: return "Shea"; case 18: return "Tania"; case 19: return "Isis"; case 20: return "Celestia"; default: return "Xylia"; } case 22: switch (WorldGen.genRand.Next(35)) { case 0: return "Joe"; case 1: return "Connor"; case 2: return "Tanner"; case 3: return "Wyatt"; case 4: return "Cody"; case 5: return "Levi"; case 6: return "Luke"; case 7: return "Jack"; case 8: return "Scott"; case 9: return "Logan"; case 10: return "Cole"; case 11: return "Asher"; case 12: return "Bradley"; case 13: return "Jacob"; case 14: return "Garrett"; case 15: return "Dylan"; case 16: return "Maxwell"; case 17: return "Steve"; case 18: return "Brett"; case 19: return "Andrew"; case 20: return "Harley"; case 21: return "Kyle"; case 22: return "Jake"; case 23: return "Ryan"; case 24: return "Jeffrey"; case 25: return "Seth"; case 26: return "Marty"; case 27: return "Brandon"; case 28: return "Zach"; case 29: return "Jeff"; case 30: return "Daniel"; case 31: return "Trent"; case 32: return "Kevin"; case 33: return "Brian"; default: return "Colin"; } case 38: switch (WorldGen.genRand.Next(22)) { case 0: return "Dolbere"; case 1: return "Bazdin"; case 2: return "Durim"; case 3: return "Tordak"; case 4: return "Garval"; case 5: return "Morthal"; case 6: return "Oten"; case 7: return "Dolgen"; case 8: return "Gimli"; case 9: return "Gimut"; case 10: return "Duerthen"; case 11: return "Beldin"; case 12: return "Jarut"; case 13: return "Ovbere"; case 14: return "Norkas"; case 15: return "Dolgrim"; case 16: return "Boften"; case 17: return "Norsun"; case 18: return "Dias"; case 19: return "Fikod"; case 20: return "Urist"; default: return "Darur"; } case 54: switch (WorldGen.genRand.Next(26)) { case 0: return "Sebastian"; case 1: return "Rupert"; case 2: return "Clive"; case 3: return "Nigel"; case 4: return "Mervyn"; case 5: return "Cedric"; case 6: return "Pip"; case 7: return "Cyril"; case 8: return "Fitz"; case 9: return "Lloyd"; case 10: return "Arthur"; case 11: return "Rodney"; case 12: return "Graham"; case 13: return "Edward"; case 14: return "Alfred"; case 15: return "Edmund"; case 16: return "Henry"; case 17: return "Herald"; case 18: return "Roland"; case 19: return "Lincoln"; case 20: return "Lloyd"; case 21: return "Edgar"; case 22: return "Eustace"; case 23: return "Benjamin"; case 24: return "James"; default: return "Rodrick"; } case 107: switch (WorldGen.genRand.Next(25)) { case 0: return "Grodax"; case 1: return "Sarx"; case 2: return "Xon"; case 3: return "Mrunok"; case 4: return "Nuxatk"; case 5: return "Tgerd"; case 6: return "Darz"; case 7: return "Smador"; case 8: return "Stazen"; case 9: return "Mobart"; case 10: return "Knogs"; case 11: return "Tkanus"; case 12: return "Negurk"; case 13: return "Nort"; case 14: return "Durnok"; case 15: return "Trogem"; case 16: return "Stezom"; case 17: return "Gnudar"; case 18: return "Ragz"; case 19: return "Fahd"; case 20: return "Xanos"; case 21: return "Arback"; case 22: return "Fjell"; case 23: return "Dalek"; default: return "Knub"; } case 108: switch (WorldGen.genRand.Next(22)) { case 0: return "Dalamar"; case 1: return "Dulais"; case 2: return "Elric"; case 3: return "Arddun"; case 4: return "Maelor"; case 5: return "Leomund"; case 6: return "Hirael"; case 7: return "Gwentor"; case 8: return "Greum"; case 9: return "Gearroid"; case 10: return "Fizban"; case 11: return "Ningauble"; case 12: return "Seonag"; case 13: return "Sargon"; case 14: return "Merlyn"; case 15: return "Magius"; case 16: return "Berwyn"; case 17: return "Arwyn"; case 18: return "Alasdair"; case 19: return "Tagar"; case 20: return "Abram"; default: return "Xanadu"; } case 124: switch (WorldGen.genRand.Next(24)) { case 0: return "Shayna"; case 1: return "Korrie"; case 2: return "Ginger"; case 3: return "Brooke"; case 4: return "Jenny"; case 5: return "Autumn"; case 6: return "Nancy"; case 7: return "Ella"; case 8: return "Kayla"; case 9: return "Selah"; case 10: return "Sophia"; case 11: return "Marshanna"; case 12: return "Lauren"; case 13: return "Trisha"; case 14: return "Shirlena"; case 15: return "Sheena"; case 16: return "Ellen"; case 17: return "Amy"; case 18: return "Dawn"; case 19: return "Susana"; case 20: return "Meredith"; case 21: return "Selene"; case 22: return "Terra"; default: return "Sally"; } case 160: switch (WorldGen.genRand.Next(12)) { case 0: return "Reishi"; case 1: return "Maitake"; case 2: return "Chanterelle"; case 3: return "Porcini"; case 4: return "Shimeji"; case 5: return "Amanita"; case 6: return "Muscaria"; case 7: return "Agaric"; case 8: return "Cremini"; case 9: return "Morel"; case 10: return "Enoki"; default: return "Shiitake"; } case 178: switch (WorldGen.genRand.Next(20)) { case 0: return "Whitney"; case 1: return "Verity"; case 2: return "Ada"; case 3: return "Cornelia"; case 4: return "Lydia"; case 5: return "Leila"; case 6: return "Minerva"; case 7: return "Emeline"; case 8: return "Cynthia"; case 9: return "Fidelia"; case 10: return "Lilly"; case 11: return "Phoebe"; case 12: return "Zylphia"; case 13: return "Zelda"; case 14: return "Selina"; case 15: return "Hope"; case 16: return "Isabella"; case 17: return "Judith"; case 18: return "Savannah"; default: return "Vivian"; } case 207: switch (WorldGen.genRand.Next(16)) { case 0: return "Abdosir"; case 1: return "Akbar"; case 2: return "Bodashtart"; case 3: return "Danel"; case 4: return "Hanno"; case 5: return "Hiram"; case 6: return "Kanmi"; case 7: return "Philosir"; case 8: return "Tabnit"; case 9: return "Yutpan"; case 10: return "Ahirom"; case 11: return "Batnoam"; case 12: return "Sikarbaal"; case 13: return "Hannibal"; case 14: return "Yehomilk"; default: return "Ahinadab"; } case 208: switch (WorldGen.genRand.Next(17)) { case 0: return "Candy"; case 1: return "Isis"; case 2: return "Trixy"; case 3: return "Destiny"; case 4: return "Lexus"; case 5: return "Bambi"; case 6: return "Bailey"; case 7: return "Glitter"; case 8: return "Sparkle"; case 9: return "Paris"; case 10: return "Dazzle"; case 11: return "Fantasy"; case 12: return "Bunny"; case 13: return "Sugar"; case 14: return "Fantasia"; case 15: return "Star"; default: return "Cherry"; } case 209: switch (WorldGen.genRand.Next(23)) { case 0: return "Alpha"; case 1: return "Beta"; case 2: return "Delta"; case 3: return "Omega"; case 4: return "Gamma"; case 5: return "Theta"; case 6: return "Kappa"; case 7: return "Omicron"; case 8: return "Sigma"; case 9: return "Upsilon"; case 10: return "Phi"; case 11: return "Zeta"; case 12: return "Lambda"; case 13: return "Nu"; case 14: return "Ci"; case 15: return "Rho"; case 16: return "Phi"; case 17: return "Fender"; case 18: return "T-3E0"; case 19: return "Niner-7"; case 20: return "A.N.D.Y"; case 21: return "Syn-X"; default: return "Mu"; } case 227: switch (WorldGen.genRand.Next(18)) { case 0: return "Marco"; case 1: return "Guido"; case 2: return "Enzo"; case 3: return "Martino"; case 4: return "Mauro"; case 5: return "Lorenzo"; case 6: return "Ludo"; case 7: return "Luciano"; case 8: return "Carlo"; case 9: return "Bruno"; case 10: return "Mario"; case 11: return "Leonardo"; case 12: return "Raphael"; case 13: return "Luigi"; case 14: return "Luca"; case 15: return "Darren"; case 16: return "Esreadel"; default: return "Stefano"; } case 228: switch (WorldGen.genRand.Next(10)) { case 0: return "Abibe"; case 1: return "Jamundi"; case 2: return "U'wa"; case 3: return "Tairona"; case 4: return "Xirigua"; case 5: return "Zop'a"; case 6: return "Opuni"; case 7: return "Kogi-ghi"; case 8: return "Konah"; default: return "Gboto"; } case 229: switch (WorldGen.genRand.Next(11)) { case 0: return "David"; case 1: return "Red Beard"; case 2: return "Jack"; case 3: return "Black Beard"; case 4: return "Captain Morgan"; case 5: return "Wet Beard"; case 6: return "James T. Beard"; case 7: return "Gunpowder Garry"; case 8: return "Captain Stoney Dirt"; case 9: return "Jake"; default: return "Captain Bullywort"; } case 353: switch (WorldGen.genRand.Next(20)) { case 0: return "Bri"; case 1: return "Brianne"; case 2: return "Flora"; case 3: return "Iris"; case 4: return "Scarlett"; case 5: return "Lola"; case 6: return "Hazel"; case 7: return "Stella"; case 8: return "Pearl"; case 9: return "Tallulah"; case 10: return "Ruby"; case 11: return "Esmeralda"; case 12: return "Kylie"; case 13: return "Kati"; case 14: return "Biah"; case 15: return "Meliyah"; case 16: return "Petra"; case 17: return "Rox"; case 18: return "Roxanne"; default: return "Annabel"; } case 368: switch (WorldGen.genRand.Next(13)) { case 0: return "Abraham"; case 1: return "Bohemas"; case 2: return "Eladon"; case 3: return "Aphraim"; case 4: return "Gallius"; case 5: return "Llewellyn"; case 6: return "Riley"; case 7: return "Rawleigh"; case 8: return "Shipton"; case 9: return "Romeo"; case 10: return "Aedan"; case 11: return "Mercer"; default: return "Willy"; } case 369: switch (WorldGen.genRand.Next(22)) { case 0: return "Bobby"; case 1: return "Sammy"; case 2: return "Jimmy"; case 3: return "Danny"; case 4: return "Timmy"; case 5: return "Simon"; case 6: return "Johnny"; case 7: return "Billy"; case 8: return "Matty"; case 9: return "Bart"; case 10: return "Phillip"; case 11: return "Spencer"; case 12: return "Nathan"; case 13: return "Grayson"; case 14: return "Bryce"; case 15: return "Miles"; case 16: return "Charles"; case 17: return "Adam"; case 18: return "Tyler"; case 19: return "Jey"; case 20: return "Ivan"; default: return "Izzy"; } case 441: switch (WorldGen.genRand.Next(20)) { case 0: return "McKinly"; case 1: return "Millard"; case 2: return "Fillmore"; case 3: return "Rutherford"; case 4: return "Chester"; case 5: return "Grover"; case 6: return "Cleveland"; case 7: return "Theodore"; case 8: return "Herbert"; case 9: return "Warren"; case 10: return "Lyndon"; case 11: return "Ronald"; case 12: return "Harrison"; case 13: return "Woodrow"; case 14: return "Tweed"; case 15: return "Blanton"; case 16: return "Dwyer"; case 17: return "Carroll"; default: return "Agnew"; } case 453: switch (WorldGen.genRand.Next(10)) { case 0: return "Skellington"; case 1: return "Bones McGee"; case 2: return "Gloomy Mays"; case 3: return "Jack Sellington"; case 4: return "Billy Marrows"; case 5: return "Tom"; case 6: return "Rattles Magoo"; case 7: return "Mandible Calavera"; case 8: return "Mika"; default: return "No-Eyed Wiley"; } case 550: return Language.RandomFromCategory("BartenderNames", WorldGen.genRand).Value; default: return ""; } } public NetworkText GetTypeNetName() => NetworkText.FromKey(Lang.GetNPCName(this.netID).Key); public NetworkText GetFullNetName() { if (!this.HasGivenName) return this.GetTypeNetName(); return NetworkText.FromKey("Game.NPCTitle", (object) this.GetGivenNetName(), (object) this.GetTypeNetName()); } public NetworkText GetGivenOrTypeNetName() => !this.HasGivenName ? this.GetTypeNetName() : this.GetGivenNetName(); public NetworkText GetGivenNetName() => NetworkText.FromLiteral(this._givenName); public static void setNPCName(string newName, int npcType, bool resetExtras = false) { bool flag = false; for (int index = 0; index < 200; ++index) { if (Main.npc[index].active && Main.npc[index].type == npcType) { if (flag) { Main.npc[index].GivenName = NPC.getNewNPCName(npcType); } else { Main.npc[index].GivenName = newName; if (!resetExtras) break; flag = true; } } } } public static string firstNPCName(int npcType) { for (int index = 0; index < 200; ++index) { if (Main.npc[index].active && Main.npc[index].type == npcType) return Main.npc[index].GivenOrTypeName; } return NPC.getNewNPCName(npcType); } public static string GetFirstNPCNameOrNull(int npcType) { for (int index = 0; index < 200; ++index) { if (Main.npc[index].active && Main.npc[index].type == npcType) return Main.npc[index].GivenOrTypeName; } return (string) null; } public static bool MechSpawn(float x, float y, int type) { int num1 = 0; int num2 = 0; int num3 = 0; for (int index = 0; index < 200; ++index) { if (Main.npc[index].active && Main.npc[index].type == type) { ++num1; Vector2 vector2 = new Vector2(x, y); double num4 = (double) Main.npc[index].position.X - (double) vector2.X; float num5 = Main.npc[index].position.Y - vector2.Y; double num6 = Math.Sqrt(num4 * num4 + (double) num5 * (double) num5); if (num6 < 200.0) ++num2; if (num6 < 600.0) ++num3; } } return num2 < 3 && num3 < 6 && num1 < 10; } public static int TypeToHeadIndex(int type) { switch (type) { case 17: return 2; case 18: return 3; case 19: return 6; case 20: return 5; case 22: return 1; case 38: return 4; case 54: return 7; case 107: return 9; case 108: return 10; case 124: return 8; case 142: return 11; case 160: return 12; case 178: return 13; case 207: return 14; case 208: return 15; case 209: return 16; case 227: return 17; case 228: return 18; case 229: return 19; case 353: return 20; case 368: return 21; case 369: return 22; case 441: return 23; case 550: return 24; default: return -1; } } public static int HeadIndexToType(int type) { switch (type) { case 1: return 22; case 2: return 17; case 3: return 18; case 4: return 38; case 5: return 20; case 6: return 19; case 7: return 54; case 8: return 124; case 9: return 107; case 10: return 108; case 11: return 142; case 12: return 160; case 13: return 178; case 14: return 207; case 15: return 208; case 16: return 209; case 17: return 227; case 18: return 228; case 19: return 229; case 20: return 353; case 21: return 368; case 22: return 369; case 23: return 441; case 24: return 550; default: return -1; } } public int GetBossHeadTextureIndex() { int num = NPCID.Sets.BossHeadTextures[this.type]; switch (this.type) { case 4: if ((double) this.ai[0] >= 2.0) { num = 1; break; } break; case 125: if ((double) this.ai[0] >= 3.0) { num = 20; break; } break; case 126: if ((double) this.ai[0] >= 3.0) { num = 21; break; } break; case 262: if (this.life <= this.lifeMax / 2) { num = 12; break; } break; case 439: if ((double) this.ai[0] == 5.0 && this.alpha == (int) byte.MaxValue) { num = -1; break; } break; case 440: if ((double) this.ai[0] != 5.0 || this.alpha == (int) byte.MaxValue) { num = -1; break; } break; } return num; } public float GetBossHeadRotation() { float num = 0.0f; switch (this.type) { case 35: case (int) sbyte.MaxValue: if ((double) this.ai[1] == 1.0 || (double) this.ai[1] == 2.0) { num = this.rotation; break; } break; case 68: case 262: num = this.rotation; break; case 345: if ((double) this.ai[0] == 2.0) { num = this.rotation; break; } break; } return num; } public SpriteEffects GetBossHeadSpriteEffects() { SpriteEffects spriteEffects = SpriteEffects.None; if (this.type == 491 && this.spriteDirection == 1) spriteEffects = SpriteEffects.FlipHorizontally; return spriteEffects; } public int BannerID() => this.netID >= -10 ? this.netID : this.type; private void SetDefaultsFromNetId(int id) { bool flag = false; int Type = NPCID.FromNetId(id); this.SetDefaults(0); switch (id) { case -65: this.SetDefaults(Type, 1.21f); this.defense = (int) ((double) this.defense * (double) this.scale); this.damage = (int) ((double) this.damage * (double) this.scale); this.life = (int) ((double) this.life * (double) this.scale); this.value = (float) (int) ((double) this.value * (double) this.scale); this.npcSlots *= this.scale; this.knockBackResist *= 2f - this.scale; break; case -64: this.SetDefaults(Type, 0.87f); this.defense = (int) ((double) this.defense * (double) this.scale); this.damage = (int) ((double) this.damage * (double) this.scale); this.life = (int) ((double) this.life * (double) this.scale); this.value = (float) (int) ((double) this.value * (double) this.scale); this.npcSlots *= this.scale; this.knockBackResist *= 2f - this.scale; break; case -63: this.SetDefaults(Type, 1.16f); this.defense = (int) ((double) this.defense * (double) this.scale); this.damage = (int) ((double) this.damage * (double) this.scale); this.life = (int) ((double) this.life * (double) this.scale); this.value = (float) (int) ((double) this.value * (double) this.scale); this.npcSlots *= this.scale; this.knockBackResist *= 2f - this.scale; break; case -62: this.SetDefaults(Type, 0.78f); this.defense = (int) ((double) this.defense * (double) this.scale); this.damage = (int) ((double) this.damage * (double) this.scale); this.life = (int) ((double) this.life * (double) this.scale); this.value = (float) (int) ((double) this.value * (double) this.scale); this.npcSlots *= this.scale; this.knockBackResist *= 2f - this.scale; break; case -61: this.SetDefaults(Type, 1.1f); this.defense = (int) ((double) this.defense * (double) this.scale); this.damage = (int) ((double) this.damage * (double) this.scale); this.life = (int) ((double) this.life * (double) this.scale); this.value = (float) (int) ((double) this.value * (double) this.scale); this.npcSlots *= this.scale; this.knockBackResist *= 2f - this.scale; break; case -60: this.SetDefaults(Type, 0.92f); this.defense = (int) ((double) this.defense * (double) this.scale); this.damage = (int) ((double) this.damage * (double) this.scale); this.life = (int) ((double) this.life * (double) this.scale); this.value = (float) (int) ((double) this.value * (double) this.scale); this.npcSlots *= this.scale; this.knockBackResist *= 2f - this.scale; break; case -59: this.SetDefaults(Type, 1.15f); this.defense = (int) ((double) this.defense * (double) this.scale); this.damage = (int) ((double) this.damage * (double) this.scale); this.life = (int) ((double) this.life * (double) this.scale); this.value = (float) (int) ((double) this.value * (double) this.scale); this.npcSlots *= this.scale; this.knockBackResist *= 2f - this.scale; break; case -58: this.SetDefaults(Type, 0.8f); this.defense = (int) ((double) this.defense * (double) this.scale); this.damage = (int) ((double) this.damage * (double) this.scale); this.life = (int) ((double) this.life * (double) this.scale); this.value = (float) (int) ((double) this.value * (double) this.scale); this.npcSlots *= this.scale; this.knockBackResist *= 2f - this.scale; break; case -57: this.SetDefaults(Type, 1.25f); this.defense = (int) ((double) this.defense * (double) this.scale); this.damage = (int) ((double) this.damage * (double) this.scale); this.life = (int) ((double) this.life * (double) this.scale); this.value = (float) (int) ((double) this.value * (double) this.scale); this.npcSlots *= this.scale; this.knockBackResist *= 2f - this.scale; break; case -56: this.SetDefaults(Type, 0.85f); this.defense = (int) ((double) this.defense * (double) this.scale); this.damage = (int) ((double) this.damage * (double) this.scale); this.life = (int) ((double) this.life * (double) this.scale); this.value = (float) (int) ((double) this.value * (double) this.scale); this.npcSlots *= this.scale; this.knockBackResist *= 2f - this.scale; break; case -55: this.SetDefaults(Type, 1.1f); this.defense = (int) ((double) this.defense * (double) this.scale); this.damage = (int) ((double) this.damage * (double) this.scale); this.life = (int) ((double) this.life * (double) this.scale); this.value = (float) (int) ((double) this.value * (double) this.scale); this.npcSlots *= this.scale; this.knockBackResist *= 2f - this.scale; break; case -54: this.SetDefaults(Type, 0.9f); this.defense = (int) ((double) this.defense * (double) this.scale); this.damage = (int) ((double) this.damage * (double) this.scale); this.life = (int) ((double) this.life * (double) this.scale); this.value = (float) (int) ((double) this.value * (double) this.scale); this.npcSlots *= this.scale; this.knockBackResist *= 2f - this.scale; break; case -53: this.SetDefaults(Type, 1.15f); this.defense = (int) ((double) this.defense * (double) this.scale); this.damage = (int) ((double) this.damage * (double) this.scale); this.life = (int) ((double) this.life * (double) this.scale); this.value = (float) (int) ((double) this.value * (double) this.scale); this.npcSlots *= this.scale; this.knockBackResist *= 2f - this.scale; break; case -52: this.SetDefaults(Type, 0.85f); this.defense = (int) ((double) this.defense * (double) this.scale); this.damage = (int) ((double) this.damage * (double) this.scale); this.life = (int) ((double) this.life * (double) this.scale); this.value = (float) (int) ((double) this.value * (double) this.scale); this.npcSlots *= this.scale; this.knockBackResist *= 2f - this.scale; break; case -51: this.SetDefaults(Type, 1.13f); this.defense = (int) ((double) this.defense * (double) this.scale); this.damage = (int) ((double) this.damage * (double) this.scale); this.life = (int) ((double) this.life * (double) this.scale); this.value = (float) (int) ((double) this.value * (double) this.scale); this.npcSlots *= this.scale; this.knockBackResist *= 2f - this.scale; break; case -50: this.SetDefaults(Type, 0.87f); this.defense = (int) ((double) this.defense * (double) this.scale); this.damage = (int) ((double) this.damage * (double) this.scale); this.life = (int) ((double) this.life * (double) this.scale); this.value = (float) (int) ((double) this.value * (double) this.scale); this.npcSlots *= this.scale; this.knockBackResist *= 2f - this.scale; break; case -49: this.SetDefaults(Type, 1.07f); this.defense = (int) ((double) this.defense * (double) this.scale); this.damage = (int) ((double) this.damage * (double) this.scale); this.life = (int) ((double) this.life * (double) this.scale); this.value = (float) (int) ((double) this.value * (double) this.scale); this.npcSlots *= this.scale; this.knockBackResist *= 2f - this.scale; break; case -48: this.SetDefaults(Type, 0.93f); this.defense = (int) ((double) this.defense * (double) this.scale); this.damage = (int) ((double) this.damage * (double) this.scale); this.life = (int) ((double) this.life * (double) this.scale); this.value = (float) (int) ((double) this.value * (double) this.scale); this.npcSlots *= this.scale; this.knockBackResist *= 2f - this.scale; break; case -47: this.SetDefaults(Type, 1.1f); this.defense = (int) ((double) this.defense * (double) this.scale); this.damage = (int) ((double) this.damage * (double) this.scale); this.life = (int) ((double) this.life * (double) this.scale); this.value = (float) (int) ((double) this.value * (double) this.scale); this.npcSlots *= this.scale; this.knockBackResist *= 2f - this.scale; break; case -46: this.SetDefaults(Type, 0.9f); this.defense = (int) ((double) this.defense * (double) this.scale); this.damage = (int) ((double) this.damage * (double) this.scale); this.life = (int) ((double) this.life * (double) this.scale); this.value = (float) (int) ((double) this.value * (double) this.scale); this.npcSlots *= this.scale; this.knockBackResist *= 2f - this.scale; break; case -45: this.SetDefaults(Type, 1.05f); this.defense = (int) ((double) this.defense * (double) this.scale); this.damage = (int) ((double) this.damage * (double) this.scale); this.life = (int) ((double) this.life * (double) this.scale); this.value = (float) (int) ((double) this.value * (double) this.scale); this.npcSlots *= this.scale; this.knockBackResist *= 2f - this.scale; break; case -44: this.SetDefaults(Type, 0.87f); this.defense = (int) ((double) this.defense * (double) this.scale); this.damage = (int) ((double) this.damage * (double) this.scale); this.life = (int) ((double) this.life * (double) this.scale); this.value = (float) (int) ((double) this.value * (double) this.scale); this.npcSlots *= this.scale; this.knockBackResist *= 2f - this.scale; break; case -43: this.SetDefaults(Type, 1.15f); this.defense = (int) ((double) this.defense * (double) this.scale); this.damage = (int) ((double) this.damage * (double) this.scale); this.life = (int) ((double) this.life * (double) this.scale); this.value = (float) (int) ((double) this.value * (double) this.scale); this.npcSlots *= this.scale; this.knockBackResist *= 2f - this.scale; break; case -42: this.SetDefaults(Type, 1.1f); this.defense = (int) ((double) this.defense * (double) this.scale); this.damage = (int) ((double) this.damage * (double) this.scale); this.life = (int) ((double) this.life * (double) this.scale); this.value = (float) (int) ((double) this.value * (double) this.scale); this.npcSlots *= this.scale; this.knockBackResist *= 2f - this.scale; break; case -41: this.SetDefaults(Type, 0.85f); this.defense = (int) ((double) this.defense * (double) this.scale); this.damage = (int) ((double) this.damage * (double) this.scale); this.life = (int) ((double) this.life * (double) this.scale); this.value = (float) (int) ((double) this.value * (double) this.scale); this.npcSlots *= this.scale; this.knockBackResist *= 2f - this.scale; break; case -40: this.SetDefaults(Type, 0.9f); this.defense = (int) ((double) this.defense * (double) this.scale); this.damage = (int) ((double) this.damage * (double) this.scale); this.life = (int) ((double) this.life * (double) this.scale); this.value = (float) (int) ((double) this.value * (double) this.scale); this.npcSlots *= this.scale; this.knockBackResist *= 2f - this.scale; break; case -39: this.SetDefaults(Type, 1.1f); this.defense = (int) ((double) this.defense * (double) this.scale); this.damage = (int) ((double) this.damage * (double) this.scale); this.life = (int) ((double) this.life * (double) this.scale); this.value = (float) (int) ((double) this.value * (double) this.scale); this.npcSlots *= this.scale; this.knockBackResist *= 2f - this.scale; break; case -38: this.SetDefaults(Type, 1.15f); this.defense = (int) ((double) this.defense * (double) this.scale); this.damage = (int) ((double) this.damage * (double) this.scale); this.life = (int) ((double) this.life * (double) this.scale); this.value = (float) (int) ((double) this.value * (double) this.scale); this.npcSlots *= this.scale; this.knockBackResist *= 2f - this.scale; break; case -37: this.SetDefaults(Type, 1.08f); this.defense = (int) ((double) this.defense * (double) this.scale); this.damage = (int) ((double) this.damage * (double) this.scale); this.life = (int) ((double) this.life * (double) this.scale); this.value = (float) (int) ((double) this.value * (double) this.scale); this.npcSlots *= this.scale; this.knockBackResist *= 2f - this.scale; break; case -36: this.SetDefaults(Type, 0.92f); this.defense = (int) ((double) this.defense * (double) this.scale); this.damage = (int) ((double) this.damage * (double) this.scale); this.life = (int) ((double) this.life * (double) this.scale); this.value = (float) (int) ((double) this.value * (double) this.scale); this.npcSlots *= this.scale; this.knockBackResist *= 2f - this.scale; break; case -35: this.SetDefaults(Type, 1.13f); this.defense = (int) ((double) this.defense * (double) this.scale); this.damage = (int) ((double) this.damage * (double) this.scale); this.life = (int) ((double) this.life * (double) this.scale); this.value = (float) (int) ((double) this.value * (double) this.scale); this.npcSlots *= this.scale; this.knockBackResist *= 2f - this.scale; break; case -34: this.SetDefaults(Type, 0.87f); this.defense = (int) ((double) this.defense * (double) this.scale); this.damage = (int) ((double) this.damage * (double) this.scale); this.life = (int) ((double) this.life * (double) this.scale); this.value = (float) (int) ((double) this.value * (double) this.scale); this.npcSlots *= this.scale; this.knockBackResist *= 2f - this.scale; break; case -33: this.SetDefaults(Type, 1.11f); this.defense = (int) ((double) this.defense * (double) this.scale); this.damage = (int) ((double) this.damage * (double) this.scale); this.life = (int) ((double) this.life * (double) this.scale); this.value = (float) (int) ((double) this.value * (double) this.scale); this.npcSlots *= this.scale; this.knockBackResist *= 2f - this.scale; break; case -32: this.SetDefaults(Type, 0.89f); this.defense = (int) ((double) this.defense * (double) this.scale); this.damage = (int) ((double) this.damage * (double) this.scale); this.life = (int) ((double) this.life * (double) this.scale); this.value = (float) (int) ((double) this.value * (double) this.scale); this.npcSlots *= this.scale; this.knockBackResist *= 2f - this.scale; break; case -31: this.SetDefaults(Type, 1.13f); this.defense = (int) ((double) this.defense * (double) this.scale); this.damage = (int) ((double) this.damage * (double) this.scale); this.life = (int) ((double) this.life * (double) this.scale); this.value = (float) (int) ((double) this.value * (double) this.scale); this.npcSlots *= this.scale; this.knockBackResist *= 2f - this.scale; break; case -30: this.SetDefaults(Type, 0.93f); this.defense = (int) ((double) this.defense * (double) this.scale); this.damage = (int) ((double) this.damage * (double) this.scale); this.life = (int) ((double) this.life * (double) this.scale); this.value = (float) (int) ((double) this.value * (double) this.scale); this.npcSlots *= this.scale; this.knockBackResist *= 2f - this.scale; break; case -29: this.SetDefaults(Type, 1.15f); this.defense = (int) ((double) this.defense * (double) this.scale); this.damage = (int) ((double) this.damage * (double) this.scale); this.life = (int) ((double) this.life * (double) this.scale); this.value = (float) (int) ((double) this.value * (double) this.scale); this.npcSlots *= this.scale; this.knockBackResist *= 2f - this.scale; break; case -28: this.SetDefaults(Type, 0.85f); this.defense = (int) ((double) this.defense * (double) this.scale); this.damage = (int) ((double) this.damage * (double) this.scale); this.life = (int) ((double) this.life * (double) this.scale); this.value = (float) (int) ((double) this.value * (double) this.scale); this.npcSlots *= this.scale; this.knockBackResist *= 2f - this.scale; break; case -27: this.SetDefaults(Type, 1.1f); this.defense = (int) ((double) this.defense * (double) this.scale); this.damage = (int) ((double) this.damage * (double) this.scale); this.life = (int) ((double) this.life * (double) this.scale); this.value = (float) (int) ((double) this.value * (double) this.scale); this.npcSlots *= this.scale; this.knockBackResist *= 2f - this.scale; break; case -26: this.SetDefaults(Type, 0.9f); this.defense = (int) ((double) this.defense * (double) this.scale); this.damage = (int) ((double) this.damage * (double) this.scale); this.life = (int) ((double) this.life * (double) this.scale); this.value = (float) (int) ((double) this.value * (double) this.scale); this.npcSlots *= this.scale; this.knockBackResist *= 2f - this.scale; break; case -25: this.SetDefaults(Type, 1.15f); this.defense = (int) ((double) this.defense * (double) this.scale); this.damage = (int) ((double) this.damage * (double) this.scale); this.life = (int) ((double) this.life * (double) this.scale); this.value = (float) (int) ((double) this.value * (double) this.scale); this.npcSlots *= this.scale; this.knockBackResist *= 2f - this.scale; break; case -24: this.SetDefaults(Type, 0.85f); this.defense = (int) ((double) this.defense * (double) this.scale); this.damage = (int) ((double) this.damage * (double) this.scale); this.life = (int) ((double) this.life * (double) this.scale); this.value = (float) (int) ((double) this.value * (double) this.scale); this.npcSlots *= this.scale; this.knockBackResist *= 2f - this.scale; break; case -23: this.SetDefaults(Type, 1.15f); this.defense = (int) ((double) this.defense * (double) this.scale); this.damage = (int) ((double) this.damage * (double) this.scale); this.life = (int) ((double) this.life * (double) this.scale); this.value = (float) (int) ((double) this.value * (double) this.scale); this.npcSlots *= this.scale; this.knockBackResist *= 2f - this.scale; break; case -22: this.SetDefaults(Type, 0.85f); this.defense = (int) ((double) this.defense * (double) this.scale); this.damage = (int) ((double) this.damage * (double) this.scale); this.life = (int) ((double) this.life * (double) this.scale); this.value = (float) (int) ((double) this.value * (double) this.scale); this.npcSlots *= this.scale; this.knockBackResist *= 2f - this.scale; break; case -21: this.SetDefaults(Type, 1.2f); this.defense = (int) ((double) this.defense * (double) this.scale); this.damage = (int) ((double) this.damage * (double) this.scale); this.life = (int) ((double) this.life * (double) this.scale); this.value = (float) (int) ((double) this.value * (double) this.scale); this.npcSlots *= this.scale; this.knockBackResist *= 2f - this.scale; break; case -20: this.SetDefaults(Type, 1.1f); this.defense = (int) ((double) this.defense * (double) this.scale); this.damage = (int) ((double) this.damage * (double) this.scale); this.life = (int) ((double) this.life * (double) this.scale); this.value = (float) (int) ((double) this.value * (double) this.scale); this.npcSlots *= this.scale; this.knockBackResist *= 2f - this.scale; break; case -19: this.SetDefaults(Type, 0.9f); this.defense = (int) ((double) this.defense * (double) this.scale); this.damage = (int) ((double) this.damage * (double) this.scale); this.life = (int) ((double) this.life * (double) this.scale); this.value = (float) (int) ((double) this.value * (double) this.scale); this.npcSlots *= this.scale; this.knockBackResist *= 2f - this.scale; break; case -18: this.SetDefaults(Type, 0.8f); this.defense = (int) ((double) this.defense * (double) this.scale); this.damage = (int) ((double) this.damage * (double) this.scale); this.life = (int) ((double) this.life * (double) this.scale); this.value = (float) (int) ((double) this.value * (double) this.scale); this.npcSlots *= this.scale; this.knockBackResist *= 2f - this.scale; break; case -17: this.SetDefaults(Type, 1.2f); this.defense = (int) ((double) this.defense * (double) this.scale); this.damage = (int) ((double) this.damage * (double) this.scale); this.life = (int) ((double) this.life * (double) this.scale); this.value = (float) (int) ((double) this.value * (double) this.scale); this.npcSlots *= this.scale; this.knockBackResist *= 2f - this.scale; break; case -16: this.SetDefaults(Type, 0.85f); this.defense = (int) ((double) this.defense * (double) this.scale); this.damage = (int) ((double) this.damage * (double) this.scale); this.life = (int) ((double) this.life * (double) this.scale); this.value = (float) (int) ((double) this.value * (double) this.scale); this.npcSlots *= this.scale; this.knockBackResist *= 2f - this.scale; break; case -15: this.SetDefaults(Type, 1.15f); this.defense = (int) ((double) this.defense * (double) this.scale); this.damage = (int) ((double) this.damage * (double) this.scale * 1.1); this.life = 400; this.value = (float) (int) ((double) this.value * (double) this.scale); this.npcSlots = 2f; this.knockBackResist *= 2f - this.scale; this.height = 44; break; case -14: this.SetDefaults(Type, 1.15f); this.defense = (int) ((double) this.defense * (double) this.scale); this.damage = (int) ((double) this.damage * (double) this.scale * 1.1); this.life = (int) ((double) this.life * (double) this.scale * 1.1); this.value = (float) (int) ((double) this.value * (double) this.scale); this.npcSlots = 2f; this.knockBackResist *= 2f - this.scale; break; case -13: this.SetDefaults(Type, 0.9f); this.defense = (int) ((double) this.defense * (double) this.scale); this.damage = (int) ((double) this.damage * (double) this.scale); this.life = (int) ((double) this.life * (double) this.scale); this.value = (float) (int) ((double) this.value * (double) this.scale); break; case -12: this.SetDefaults(Type, 1.15f); this.defense = (int) ((double) this.defense * (double) this.scale); this.damage = (int) ((double) this.damage * (double) this.scale); this.life = (int) ((double) this.life * (double) this.scale); this.value = (float) (int) ((double) this.value * (double) this.scale); this.npcSlots *= this.scale; this.knockBackResist *= 2f - this.scale; break; case -11: this.SetDefaults(Type, 0.85f); this.defense = (int) ((double) this.defense * (double) this.scale); this.damage = (int) ((double) this.damage * (double) this.scale); this.life = (int) ((double) this.life * (double) this.scale); this.value = (float) (int) ((double) this.value * (double) this.scale); this.npcSlots *= this.scale; this.knockBackResist *= 2f - this.scale; break; case -10: this.SetDefaults(Type, 1.1f); this.damage = 18; this.defense = 6; this.life = 60; this.color = new Color(143, 215, 93, 100); this.value = 500f; flag = true; break; case -9: this.SetDefaults(Type, 1.2f); this.damage = 15; this.defense = 7; this.life = 45; this.color = new Color((int) byte.MaxValue, (int) byte.MaxValue, 0, 100); this.value = 10f; flag = true; break; case -8: this.SetDefaults(Type, 1.025f); this.damage = 12; this.defense = 4; this.life = 35; this.color = new Color((int) byte.MaxValue, 30, 0, 100); this.value = 8f; flag = true; break; case -7: this.SetDefaults(Type, 1.2f); this.damage = 12; this.defense = 6; this.life = 40; this.knockBackResist *= 0.9f; this.color = new Color(200, 0, (int) byte.MaxValue, 150); this.value = 10f; flag = true; break; case -6: this.SetDefaults(Type, 1.05f); this.damage = 15; this.defense = 4; this.life = 45; this.color = new Color(0, 0, 0, 50); this.value = 20f; flag = true; break; case -5: this.SetDefaults(Type, 0.9f); this.damage = 13; this.defense = 4; this.life = 30; this.knockBackResist *= 0.95f; this.alpha = 120; this.color = new Color(0, 0, 0, 50); this.value = 10f; flag = true; break; case -4: this.SetDefaults(Type, 0.6f); this.damage = 5; this.defense = 5; this.life = 150; this.knockBackResist *= 1.4f; this.color = new Color(250, 30, 90, 90); this.value = 10000f; flag = true; this.rarity = 1; break; case -3: this.SetDefaults(Type, 0.9f); this.damage = 6; this.defense = 0; this.life = 14; this.knockBackResist *= 1.2f; this.color = new Color(0, 220, 40, 100); this.value = 3f; flag = true; break; case -2: this.SetDefaults(Type, 0.9f); this.damage = 45; this.defense = 20; this.life = 90; this.knockBackResist *= 1.2f; this.value = 100f; flag = true; break; case -1: this.SetDefaults(Type, 0.6f); this.damage = 45; this.defense = 10; this.life = 90; this.knockBackResist *= 1.2f; this.value = 100f; flag = true; break; default: return; } this.netID = id; this.lifeMax = this.life; this.defDamage = this.damage; this.defDefense = this.defense; if (!(Main.expertMode & flag)) return; this.scaleStats(); } public void SetDefaultsKeepPlayerInteraction(int Type) { bool[] flagArray = new bool[this.playerInteraction.Length]; for (int index = 0; index < this.playerInteraction.Length; ++index) flagArray[index] = this.playerInteraction[index]; this.SetDefaults(Type); for (int index = 0; index < this.playerInteraction.Length; ++index) this.playerInteraction[index] = flagArray[index]; } public void SetDefaults(int Type, float scaleOverride = -1f) { if (Type < 0) { this.SetDefaultsFromNetId(Type); } else { this.waterMovementSpeed = this.lavaMovementSpeed = 0.5f; this.honeyMovementSpeed = 0.25f; this.altTexture = 0; this.nameOver = 0.0f; this.takenDamageMultiplier = 1f; this.extraValue = 0.0f; for (int index = 0; index < this.playerInteraction.Length; ++index) this.playerInteraction[index] = false; this.rarity = 0; this.dontCountMe = false; this.releaseOwner = (short) byte.MaxValue; this.catchItem = (short) 0; this.npcNameLookup = (byte) 0; this.netStream = (byte) 32; bool flag = false; this.netID = 0; this.netAlways = false; this.netSpam = 0; this.SpawnedFromStatue = false; int newSize = 10; if (Type >= 0) newSize = NPCID.Sets.TrailCacheLength[Type]; if (newSize != this.oldPos.Length) { Array.Resize(ref this.oldPos, newSize); Array.Resize(ref this.oldRot, newSize); } for (int index = 0; index < this.oldPos.Length; ++index) { this.oldRot[index] = 0.0f; this.oldPos[index].X = 0.0f; this.oldPos[index].Y = 0.0f; } for (int index = 0; index < 5; ++index) { this.buffTime[index] = 0; this.buffType[index] = 0; } for (int index = 0; index < 206; ++index) this.buffImmune[index] = false; this.setFrameSize = false; this.buffImmune[31] = true; this.netSkip = -2; this.realLife = -1; this.lifeRegen = 0; this.lifeRegenExpectedLossPerSecond = -1; this.lifeRegenCount = 0; this.poisoned = false; this.soulDrain = false; this.venom = false; this.shadowFlame = false; this.onFire = false; this.midas = false; this.ichor = false; this.onFrostBurn = false; this.confused = false; this.loveStruck = false; this.dontTakeDamageFromHostiles = false; this.stinky = false; this.dryadWard = false; this.onFire2 = false; this.justHit = false; this.dontTakeDamage = false; this.npcSlots = 1f; this.lavaImmune = false; this.lavaWet = false; this.wetCount = (byte) 0; this.wet = false; this.townNPC = false; this.homeless = false; this.homeTileX = -1; this.homeTileY = -1; this.friendly = false; this.behindTiles = false; this.boss = false; this.noTileCollide = false; this.rotation = 0.0f; this.active = true; this.alpha = 0; this.color = new Color(); this.collideX = false; this.collideY = false; this.direction = 0; this.oldDirection = this.direction; this.frameCounter = 0.0; this.netUpdate = true; this.netUpdate2 = false; this.knockBackResist = 1f; this.GivenName = ""; this.noGravity = false; this.scale = 1f; this.HitSound = (LegacySoundStyle) null; this.DeathSound = (LegacySoundStyle) null; this.spriteDirection = -1; this.target = (int) byte.MaxValue; this.oldTarget = this.target; this.targetRect = new Microsoft.Xna.Framework.Rectangle(); this.timeLeft = NPC.activeTime; this.type = Type; this.value = 0.0f; this.coldDamage = false; this.trapImmune = false; this.hide = false; this.immortal = false; this.chaseable = true; this.breath = 200; this.breathCounter = 0; this.reflectingProjectiles = false; this.canGhostHeal = true; this.javelined = false; this.daybreak = false; this.celled = false; this.dryadBane = false; this.betsysCurse = false; this.oiled = false; for (int index = 0; index < NPC.maxAI; ++index) this.ai[index] = 0.0f; for (int index = 0; index < NPC.maxAI; ++index) this.localAI[index] = 0.0f; if (this.type == 1) { this.width = 24; this.height = 18; this.aiStyle = 1; this.damage = 7; this.defense = 2; this.lifeMax = 25; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath1; this.alpha = 175; this.color = new Color(0, 80, (int) byte.MaxValue, 100); this.value = 25f; this.buffImmune[20] = true; this.buffImmune[31] = false; } else if (this.type == 2) { this.width = 30; this.height = 32; this.aiStyle = 2; this.damage = 18; this.defense = 2; this.lifeMax = 60; this.HitSound = SoundID.NPCHit1; this.knockBackResist = 0.8f; this.DeathSound = SoundID.NPCDeath1; this.value = 75f; this.buffImmune[31] = false; } else if (this.type == 3) { this.width = 18; this.height = 40; this.aiStyle = 3; this.damage = 14; this.defense = 6; this.lifeMax = 45; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath2; this.knockBackResist = 0.5f; this.value = 60f; this.buffImmune[31] = false; } else if (this.type == 430) { this.width = 18; this.height = 40; this.aiStyle = 3; this.damage = 14; this.defense = 6; this.lifeMax = 45; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath2; this.knockBackResist = 0.5f; this.value = 60f; this.buffImmune[31] = false; } else if (this.type == 431) { this.width = 18; this.height = 40; this.aiStyle = 3; this.damage = 16; this.defense = 8; this.lifeMax = 50; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath2; this.knockBackResist = 0.45f; this.value = 80f; this.buffImmune[31] = false; } else if (this.type == 432) { this.width = 18; this.height = 40; this.aiStyle = 3; this.damage = 16; this.defense = 8; this.lifeMax = 50; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath2; this.knockBackResist = 0.45f; this.value = 65f; this.buffImmune[31] = false; } else if (this.type == 433) { this.width = 18; this.height = 40; this.aiStyle = 3; this.damage = 13; this.defense = 6; this.lifeMax = 40; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath2; this.knockBackResist = 0.55f; this.value = 55f; this.buffImmune[31] = false; } else if (this.type == 434) { this.width = 18; this.height = 40; this.aiStyle = 3; this.damage = 13; this.defense = 8; this.lifeMax = 45; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath2; this.knockBackResist = 0.45f; this.value = 80f; this.buffImmune[31] = false; } else if (this.type == 435) { this.width = 18; this.height = 40; this.aiStyle = 3; this.damage = 16; this.defense = 4; this.lifeMax = 45; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath2; this.knockBackResist = 0.55f; this.value = 70f; this.buffImmune[31] = false; } else if (this.type == 436) { this.width = 18; this.height = 40; this.aiStyle = 3; this.damage = 12; this.defense = 4; this.lifeMax = 38; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath2; this.knockBackResist = 0.6f; this.value = 65f; this.buffImmune[31] = false; } else if (this.type == 4) { this.width = 100; this.height = 110; this.aiStyle = 4; this.damage = 15; this.defense = 12; this.lifeMax = 2800; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath1; this.knockBackResist = 0.0f; this.noGravity = true; this.noTileCollide = true; this.timeLeft = NPC.activeTime * 30; this.boss = true; this.value = 30000f; this.npcSlots = 5f; } else if (this.type == 5) { this.width = 20; this.height = 20; this.aiStyle = 5; this.damage = 12; this.defense = 0; this.lifeMax = 8; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath1; this.noGravity = true; this.noTileCollide = true; } else if (this.type == 6) { this.npcSlots = 1f; this.width = 30; this.height = 30; this.aiStyle = 5; this.damage = 22; this.defense = 8; this.lifeMax = 40; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath1; this.noGravity = true; this.knockBackResist = 0.5f; this.value = 90f; } else if (this.type == 7) { this.npcSlots = 3.5f; this.width = 22; this.height = 22; this.aiStyle = 6; this.damage = 31; this.defense = 2; this.lifeMax = 100; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath1; this.noGravity = true; this.noTileCollide = true; this.knockBackResist = 0.0f; this.behindTiles = true; this.value = 140f; this.netAlways = true; } else if (this.type == 8) { this.width = 22; this.height = 22; this.aiStyle = 6; this.netAlways = true; this.damage = 16; this.defense = 6; this.lifeMax = 100; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath1; this.noGravity = true; this.noTileCollide = true; this.knockBackResist = 0.0f; this.behindTiles = true; this.value = 140f; this.dontCountMe = true; } else if (this.type == 9) { this.width = 22; this.height = 22; this.aiStyle = 6; this.netAlways = true; this.damage = 13; this.defense = 10; this.lifeMax = 100; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath1; this.noGravity = true; this.noTileCollide = true; this.knockBackResist = 0.0f; this.behindTiles = true; this.value = 140f; this.dontCountMe = true; } else if (this.type == 10) { this.width = 14; this.height = 14; this.aiStyle = 6; this.netAlways = true; this.damage = 8; this.defense = 0; this.lifeMax = 30; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath1; this.noGravity = true; this.noTileCollide = true; this.knockBackResist = 0.0f; this.behindTiles = true; this.value = 40f; } else if (this.type == 11) { this.width = 14; this.height = 14; this.aiStyle = 6; this.netAlways = true; this.damage = 4; this.defense = 4; this.lifeMax = 30; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath1; this.noGravity = true; this.noTileCollide = true; this.knockBackResist = 0.0f; this.behindTiles = true; this.value = 40f; this.dontCountMe = true; } else if (this.type == 12) { this.width = 14; this.height = 14; this.aiStyle = 6; this.netAlways = true; this.damage = 4; this.defense = 6; this.lifeMax = 30; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath1; this.noGravity = true; this.noTileCollide = true; this.knockBackResist = 0.0f; this.behindTiles = true; this.value = 40f; this.dontCountMe = true; } else if (this.type == 13) { this.npcSlots = 5f; this.width = 38; this.height = 38; this.aiStyle = 6; this.netAlways = true; this.damage = 22; this.defense = 2; this.lifeMax = 65; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath1; this.noGravity = true; this.noTileCollide = true; this.knockBackResist = 0.0f; this.behindTiles = true; this.value = 300f; this.scale = 1f; this.buffImmune[20] = true; this.buffImmune[24] = true; this.buffImmune[39] = true; } else if (this.type == 14) { this.width = 38; this.height = 38; this.aiStyle = 6; this.netAlways = true; this.damage = 13; this.defense = 4; this.lifeMax = 150; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath1; this.noGravity = true; this.noTileCollide = true; this.knockBackResist = 0.0f; this.behindTiles = true; this.value = 300f; this.scale = 1f; this.buffImmune[20] = true; this.buffImmune[24] = true; this.buffImmune[39] = true; this.dontCountMe = true; } else if (this.type == 15) { this.width = 38; this.height = 38; this.aiStyle = 6; this.netAlways = true; this.damage = 11; this.defense = 8; this.lifeMax = 220; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath1; this.noGravity = true; this.noTileCollide = true; this.knockBackResist = 0.0f; this.behindTiles = true; this.value = 300f; this.scale = 1f; this.buffImmune[20] = true; this.buffImmune[24] = true; this.buffImmune[39] = true; this.dontCountMe = true; } else if (this.type == 16) { this.npcSlots = 2f; this.width = 36; this.height = 24; this.aiStyle = 1; this.damage = 20; this.defense = 7; this.lifeMax = 90; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath1; this.alpha = 120; this.color = new Color(0, 0, 0, 50); this.value = 75f; this.scale = 1.25f; this.knockBackResist = 0.6f; this.buffImmune[20] = true; this.buffImmune[31] = false; } else if (this.type == 17) { this.townNPC = true; this.friendly = true; this.width = 18; this.height = 40; this.aiStyle = 7; this.damage = 10; this.defense = 15; this.lifeMax = 250; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath1; this.knockBackResist = 0.5f; } else if (this.type == 18) { this.townNPC = true; this.friendly = true; this.width = 18; this.height = 40; this.aiStyle = 7; this.damage = 10; this.defense = 15; this.lifeMax = 250; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath1; this.knockBackResist = 0.5f; } else if (this.type == 19) { this.townNPC = true; this.friendly = true; this.width = 18; this.height = 40; this.aiStyle = 7; this.damage = 10; this.defense = 15; this.lifeMax = 250; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath1; this.knockBackResist = 0.5f; } else if (this.type == 20) { this.townNPC = true; this.friendly = true; this.width = 18; this.height = 40; this.aiStyle = 7; this.damage = 10; this.defense = 15; this.lifeMax = 250; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath1; this.knockBackResist = 0.5f; } else if (this.type == 21) { this.width = 18; this.height = 40; this.aiStyle = 3; this.damage = 20; this.defense = 8; this.lifeMax = 60; this.HitSound = SoundID.NPCHit2; this.DeathSound = SoundID.NPCDeath2; this.knockBackResist = 0.5f; this.value = 100f; this.buffImmune[20] = true; this.buffImmune[31] = false; } else if (this.type == 22) { this.townNPC = true; this.friendly = true; this.width = 18; this.height = 40; this.aiStyle = 7; this.damage = 10; this.defense = 15; this.lifeMax = 250; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath1; this.knockBackResist = 0.5f; } else if (this.type == 23) { this.width = 22; this.height = 22; this.aiStyle = 5; this.damage = 40; this.defense = 6; this.lifeMax = 26; this.HitSound = SoundID.NPCHit3; this.DeathSound = SoundID.NPCDeath3; this.noGravity = true; this.noTileCollide = true; this.value = 80f; this.knockBackResist = 0.4f; this.buffImmune[20] = true; this.buffImmune[24] = true; this.buffImmune[39] = true; } else if (this.type == 24) { this.npcSlots = 3f; this.width = 18; this.height = 40; this.aiStyle = 8; this.damage = 30; this.defense = 16; this.lifeMax = 70; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath1; this.knockBackResist = 0.5f; this.lavaImmune = true; this.value = 350f; this.buffImmune[24] = true; this.buffImmune[39] = true; } else if (this.type == 25) { this.width = 16; this.height = 16; this.aiStyle = 9; this.damage = 30; this.defense = 0; this.lifeMax = 1; this.HitSound = SoundID.NPCHit3; this.DeathSound = SoundID.NPCDeath3; this.noGravity = true; this.noTileCollide = true; this.knockBackResist = 0.0f; this.alpha = 100; } else if (this.type == 31) { this.width = 18; this.height = 40; this.aiStyle = 3; this.damage = 26; this.defense = 8; this.lifeMax = 80; this.HitSound = SoundID.NPCHit2; this.DeathSound = SoundID.NPCDeath2; this.knockBackResist = 0.8f; this.value = 130f; this.buffImmune[20] = true; this.buffImmune[31] = false; } else if (this.type == 32) { this.width = 18; this.height = 40; this.aiStyle = 8; this.damage = 20; this.defense = 2; this.lifeMax = 50; this.HitSound = SoundID.NPCHit2; this.DeathSound = SoundID.NPCDeath2; this.knockBackResist = 0.6f; this.value = 140f; this.npcSlots = 2f; this.buffImmune[20] = true; } else if (this.type == 33) { this.width = 16; this.height = 16; this.aiStyle = 9; this.damage = 20; this.defense = 0; this.lifeMax = 1; this.HitSound = SoundID.NPCHit3; this.DeathSound = SoundID.NPCDeath3; this.noGravity = true; this.noTileCollide = true; this.alpha = (int) byte.MaxValue; this.knockBackResist = 0.0f; } else if (this.type == 34) { this.width = 26; this.height = 28; this.aiStyle = 10; this.damage = 35; this.defense = 6; this.lifeMax = 40; this.HitSound = SoundID.NPCHit2; this.DeathSound = SoundID.NPCDeath2; this.noGravity = true; this.noTileCollide = true; this.value = 150f; this.knockBackResist = 0.2f; this.npcSlots = 0.75f; this.buffImmune[20] = true; this.buffImmune[24] = true; this.buffImmune[39] = true; } else if (this.type == 35) { this.width = 80; this.height = 102; this.aiStyle = 11; this.damage = 32; this.defense = 10; this.lifeMax = 4400; this.HitSound = SoundID.NPCHit2; this.DeathSound = SoundID.NPCDeath2; this.noGravity = true; this.noTileCollide = true; this.value = 50000f; this.knockBackResist = 0.0f; this.boss = true; this.npcSlots = 6f; this.buffImmune[20] = true; this.buffImmune[24] = true; this.buffImmune[39] = true; this.buffImmune[189] = this.buffImmune[169] = this.buffImmune[183] = true; } else if (this.type == 36) { this.width = 52; this.height = 52; this.aiStyle = 12; this.damage = 20; this.defense = 14; this.lifeMax = 600; this.HitSound = SoundID.NPCHit2; this.DeathSound = SoundID.NPCDeath2; this.noGravity = true; this.noTileCollide = true; this.knockBackResist = 0.0f; this.buffImmune[20] = true; this.buffImmune[24] = true; this.buffImmune[39] = true; } else if (this.type == 37) { this.townNPC = true; this.friendly = true; this.width = 18; this.height = 40; this.aiStyle = 7; this.damage = 10; this.defense = 15; this.lifeMax = 250; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath1; this.knockBackResist = 0.5f; } else if (this.type == 38) { this.townNPC = true; this.friendly = true; this.width = 18; this.height = 40; this.aiStyle = 7; this.damage = 10; this.defense = 15; this.lifeMax = 250; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath1; this.knockBackResist = 0.5f; } else if (this.type == 39) { this.npcSlots = 6f; this.width = 22; this.height = 22; this.aiStyle = 6; this.netAlways = true; this.damage = 30; this.defense = 10; this.lifeMax = 250; this.HitSound = SoundID.NPCHit2; this.DeathSound = SoundID.NPCDeath5; this.noGravity = true; this.noTileCollide = true; this.knockBackResist = 0.0f; this.behindTiles = true; this.value = 1200f; this.buffImmune[20] = true; this.buffImmune[24] = true; this.buffImmune[39] = true; } else if (this.type == 40) { this.width = 22; this.height = 22; this.aiStyle = 6; this.netAlways = true; this.damage = 15; this.defense = 12; this.lifeMax = 250; this.HitSound = SoundID.NPCHit2; this.DeathSound = SoundID.NPCDeath5; this.noGravity = true; this.noTileCollide = true; this.knockBackResist = 0.0f; this.behindTiles = true; this.value = 1200f; this.buffImmune[20] = true; this.buffImmune[24] = true; this.buffImmune[39] = true; this.dontCountMe = true; } else if (this.type == 41) { this.width = 22; this.height = 22; this.aiStyle = 6; this.netAlways = true; this.damage = 10; this.defense = 18; this.lifeMax = 250; this.HitSound = SoundID.NPCHit2; this.DeathSound = SoundID.NPCDeath5; this.noGravity = true; this.noTileCollide = true; this.knockBackResist = 0.0f; this.behindTiles = true; this.value = 1200f; this.buffImmune[20] = true; this.buffImmune[24] = true; this.buffImmune[39] = true; this.dontCountMe = true; } else if (this.type == 42) { this.width = 34; this.height = 32; this.aiStyle = 5; this.damage = 26; this.defense = 12; this.lifeMax = 48; this.HitSound = SoundID.NPCHit1; this.knockBackResist = 0.5f; this.DeathSound = SoundID.NPCDeath1; this.value = 200f; this.noGravity = true; this.buffImmune[20] = true; } else if (this.type == 43) { this.noGravity = true; this.noTileCollide = true; this.width = 30; this.height = 30; this.aiStyle = 13; this.damage = 34; this.defense = 10; this.lifeMax = 110; this.HitSound = SoundID.NPCHit1; this.knockBackResist = 0.0f; this.DeathSound = SoundID.NPCDeath1; this.value = 350f; this.buffImmune[20] = true; } else if (this.type == 44) { this.width = 18; this.height = 40; this.aiStyle = 3; this.damage = 22; this.defense = 9; this.lifeMax = 70; this.HitSound = SoundID.NPCHit2; this.DeathSound = SoundID.NPCDeath2; this.knockBackResist = 0.5f; this.value = 250f; this.buffImmune[20] = true; this.buffImmune[31] = false; } else if (this.type == 45) { this.width = 18; this.height = 40; this.aiStyle = 8; this.damage = 20; this.defense = 4; this.lifeMax = 200; this.HitSound = SoundID.NPCHit2; this.DeathSound = SoundID.NPCDeath2; this.knockBackResist = 0.6f; this.value = 5000f; this.buffImmune[20] = true; this.rarity = 4; } else if (this.type == 46 || this.type == 303 || this.type == 337 || this.type == 540) { this.width = 18; this.height = 20; this.aiStyle = 7; this.damage = 0; this.defense = 0; this.lifeMax = 5; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath1; this.catchItem = (short) 2019; } else if (this.type == 47) { this.width = 18; this.height = 20; this.aiStyle = 3; this.damage = 20; this.defense = 4; this.lifeMax = 70; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath1; this.value = 500f; this.buffImmune[31] = false; } else if (this.type == 48) { this.width = 24; this.height = 34; this.aiStyle = 14; this.damage = 25; this.defense = 8; this.lifeMax = 100; this.HitSound = SoundID.NPCHit1; this.knockBackResist = 0.6f; this.DeathSound = SoundID.NPCDeath1; this.value = 300f; } else if (this.type == 49) { this.npcSlots = 0.5f; this.width = 22; this.height = 18; this.aiStyle = 14; this.damage = 13; this.defense = 2; this.lifeMax = 16; this.HitSound = SoundID.NPCHit1; this.knockBackResist = 0.8f; this.DeathSound = SoundID.NPCDeath4; this.value = 90f; this.buffImmune[31] = false; } else if (this.type == 50) { this.boss = true; this.width = 98; this.height = 92; this.aiStyle = 15; this.damage = 40; this.defense = 10; this.lifeMax = 2000; this.knockBackResist = 0.0f; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath1; this.alpha = 30; this.value = 10000f; this.scale = 1.25f; this.buffImmune[20] = true; this.timeLeft = NPC.activeTime * 30; } else if (this.type == 51) { this.npcSlots = 0.5f; this.width = 22; this.height = 18; this.aiStyle = 14; this.damage = 20; this.defense = 4; this.lifeMax = 34; this.HitSound = SoundID.NPCHit1; this.knockBackResist = 0.8f; this.DeathSound = SoundID.NPCDeath4; this.value = 80f; this.buffImmune[31] = false; } else if (this.type == 52) { this.width = 18; this.height = 40; this.aiStyle = 3; this.damage = 20; this.defense = 10; this.lifeMax = 500; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath2; this.knockBackResist = 0.5f; this.value = 1000f; this.buffImmune[31] = false; this.rarity = 2; } else if (this.type == 53) { this.width = 18; this.height = 40; this.aiStyle = 3; this.damage = 14; this.defense = 8; this.lifeMax = 200; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath2; this.knockBackResist = 0.5f; this.value = 1000f; this.buffImmune[31] = false; this.rarity = 2; } else if (this.type == 54) { this.townNPC = true; this.friendly = true; this.width = 18; this.height = 40; this.aiStyle = 7; this.damage = 10; this.defense = 15; this.lifeMax = 250; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath1; this.knockBackResist = 0.5f; } else if (this.type == 55) { this.noGravity = true; this.width = 20; this.height = 18; this.aiStyle = 16; this.damage = 0; this.defense = 0; this.lifeMax = 5; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath1; this.knockBackResist = 0.5f; this.catchItem = (short) 261; } else if (this.type == 56) { this.noTileCollide = true; this.noGravity = true; this.width = 30; this.height = 30; this.aiStyle = 13; this.damage = 25; this.defense = 10; this.lifeMax = 60; this.HitSound = SoundID.NPCHit1; this.knockBackResist = 0.0f; this.DeathSound = SoundID.NPCDeath1; this.value = 90f; this.buffImmune[20] = true; } else if (this.type == 57) { this.noGravity = true; this.width = 18; this.height = 20; this.aiStyle = 16; this.damage = 30; this.defense = 6; this.lifeMax = 100; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath1; this.value = 500f; } else if (this.type == 58) { this.npcSlots = 0.5f; this.noGravity = true; this.width = 18; this.height = 20; this.aiStyle = 16; this.damage = 25; this.defense = 2; this.lifeMax = 30; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath1; this.value = 50f; } else if (this.type == 59) { this.width = 24; this.height = 18; this.aiStyle = 1; this.damage = 15; this.defense = 10; this.lifeMax = 50; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath1; this.scale = 1.1f; this.alpha = 50; this.lavaImmune = true; this.value = 120f; this.buffImmune[20] = true; this.buffImmune[24] = true; this.buffImmune[39] = true; this.buffImmune[31] = false; } else if (this.type == 60) { this.npcSlots = 0.5f; this.width = 22; this.height = 18; this.aiStyle = 14; this.damage = 35; this.defense = 8; this.lifeMax = 46; this.HitSound = SoundID.NPCHit1; this.knockBackResist = 0.8f; this.DeathSound = SoundID.NPCDeath4; this.value = 120f; this.scale = 1.1f; this.lavaImmune = true; this.buffImmune[24] = true; this.buffImmune[39] = true; this.buffImmune[31] = false; } else if (this.type == 61) { this.width = 36; this.height = 36; this.aiStyle = 17; this.damage = 15; this.defense = 4; this.lifeMax = 40; this.knockBackResist = 0.8f; this.HitSound = SoundID.NPCHit28; this.DeathSound = SoundID.NPCDeath31; this.value = 60f; } else if (this.type == 62) { this.npcSlots = 2f; this.width = 28; this.height = 48; this.aiStyle = 14; this.damage = 32; this.defense = 8; this.lifeMax = 120; this.HitSound = SoundID.NPCHit21; this.knockBackResist = 0.8f; this.DeathSound = SoundID.NPCDeath24; this.value = 300f; this.lavaImmune = true; this.buffImmune[24] = true; this.buffImmune[39] = true; } else if (this.type == 63) { this.noGravity = true; this.width = 26; this.height = 26; this.aiStyle = 18; this.damage = 25; this.defense = 4; this.lifeMax = 34; this.HitSound = SoundID.NPCHit25; this.DeathSound = SoundID.NPCDeath28; this.value = 100f; this.alpha = 20; } else if (this.type == 64) { this.noGravity = true; this.width = 26; this.height = 26; this.aiStyle = 18; this.damage = 30; this.defense = 6; this.lifeMax = 70; this.HitSound = SoundID.NPCHit25; this.DeathSound = SoundID.NPCDeath28; this.value = 100f; this.alpha = 20; } else if (this.type == 65) { this.noGravity = true; this.width = 100; this.height = 24; this.aiStyle = 16; this.damage = 40; this.defense = 2; this.lifeMax = 300; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath1; this.value = 400f; this.knockBackResist = 0.7f; } else if (this.type == 66) { this.npcSlots = 2f; this.width = 28; this.height = 48; this.aiStyle = 14; this.damage = 32; this.defense = 8; this.lifeMax = 140; this.HitSound = SoundID.NPCHit1; this.knockBackResist = 0.8f; this.DeathSound = SoundID.NPCDeath1; this.value = 1000f; this.lavaImmune = true; this.buffImmune[24] = true; this.buffImmune[39] = true; } else if (this.type == 67) { this.width = 28; this.height = 20; this.aiStyle = 3; this.damage = 20; this.defense = 10; this.lifeMax = 40; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath1; this.value = 60f; } else if (this.type == 68) { this.width = 80; this.height = 102; this.aiStyle = 11; this.damage = 1000; this.defense = 9999; this.lifeMax = 9999; this.HitSound = SoundID.NPCHit2; this.DeathSound = SoundID.NPCDeath2; this.noGravity = true; this.noTileCollide = true; this.knockBackResist = 0.0f; this.buffImmune[20] = true; this.buffImmune[24] = true; this.buffImmune[39] = true; this.buffImmune[189] = this.buffImmune[169] = this.buffImmune[183] = true; } else if (this.type == 69) { this.width = 24; this.height = 24; this.aiStyle = 19; this.damage = 10; this.defense = 6; this.lifeMax = 45; this.HitSound = SoundID.NPCHit31; this.DeathSound = SoundID.NPCDeath34; this.knockBackResist = 0.0f; this.value = 60f; this.behindTiles = true; } else if (this.type == 70) { this.npcSlots = 0.3f; this.width = 34; this.height = 34; this.aiStyle = 20; this.damage = 32; this.defense = 100; this.lifeMax = 100; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath1; this.knockBackResist = 0.0f; this.noGravity = true; this.noTileCollide = true; this.dontTakeDamage = true; this.scale = 1.5f; } else if (this.type == 71) { this.npcSlots = 2f; this.width = 36; this.height = 24; this.aiStyle = 1; this.damage = 30; this.defense = 7; this.lifeMax = 150; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath1; this.alpha = 60; this.value = 150f; this.scale = 1.25f; this.knockBackResist = 0.6f; this.buffImmune[20] = true; this.buffImmune[31] = false; this.rarity = 1; } else if (this.type == 72) { this.npcSlots = 0.3f; this.width = 34; this.height = 34; this.aiStyle = 21; this.damage = 24; this.defense = 100; this.lifeMax = 100; this.alpha = 100; this.behindTiles = true; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath1; this.knockBackResist = 0.0f; this.noGravity = true; this.dontTakeDamage = true; this.scale = 1.2f; this.buffImmune[20] = true; this.buffImmune[24] = true; this.buffImmune[39] = true; } else if (this.type == 73) { this.scale = 0.95f; this.width = 18; this.height = 40; this.aiStyle = 3; this.damage = 20; this.defense = 6; this.lifeMax = 80; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath1; this.knockBackResist = 0.7f; this.value = 200f; this.buffImmune[31] = false; this.rarity = 1; } else if (this.type == 74 || this.type == 297 || this.type == 298) { this.width = 14; this.height = 14; this.aiStyle = 24; this.damage = 0; this.defense = 0; this.lifeMax = 5; this.HitSound = SoundID.NPCHit1; this.knockBackResist = 0.8f; this.DeathSound = SoundID.NPCDeath1; if (this.type == 74) this.catchItem = (short) 2015; if (this.type == 297) this.catchItem = (short) 2016; if (this.type == 298) this.catchItem = (short) 2017; this.npcSlots = 0.4f; } else if (this.type == 75) { this.noGravity = true; this.width = 20; this.height = 20; this.aiStyle = 22; this.damage = 55; this.defense = 20; this.lifeMax = 150; this.HitSound = SoundID.NPCHit5; this.knockBackResist = 0.6f; this.DeathSound = SoundID.NPCDeath7; this.value = 350f; this.buffImmune[20] = true; this.buffImmune[24] = true; this.buffImmune[39] = true; this.buffImmune[31] = false; } else if (this.type == 77) { this.width = 18; this.height = 40; this.aiStyle = 3; this.damage = 40; this.defense = 28; this.lifeMax = 260; this.HitSound = SoundID.NPCHit2; this.DeathSound = SoundID.NPCDeath2; this.knockBackResist = 0.4f; this.value = 400f; this.buffImmune[20] = true; this.buffImmune[31] = false; } else if (this.type == 78) { this.width = 18; this.height = 40; this.aiStyle = 3; this.damage = 50; this.defense = 16; this.lifeMax = 130; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath6; this.knockBackResist = 0.6f; this.value = 600f; this.buffImmune[31] = false; } else if (this.type == 79) { this.width = 18; this.height = 40; this.aiStyle = 3; this.damage = 60; this.defense = 18; this.lifeMax = 180; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath6; this.knockBackResist = 0.5f; this.value = 700f; this.buffImmune[31] = false; } else if (this.type == 80) { this.width = 18; this.height = 40; this.aiStyle = 3; this.damage = 55; this.defense = 18; this.lifeMax = 200; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath6; this.knockBackResist = 0.55f; this.value = 700f; this.buffImmune[31] = false; } else if (this.type == 81) { this.width = 40; this.height = 30; this.aiStyle = 1; this.damage = 55; this.defense = 20; this.lifeMax = 170; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath1; this.alpha = 55; this.value = 400f; this.scale = 1.1f; this.buffImmune[20] = true; this.buffImmune[31] = false; } else if (this.type == 82) { this.noGravity = true; this.noTileCollide = true; this.width = 24; this.height = 44; this.aiStyle = 22; this.damage = 65; this.defense = 16; this.lifeMax = 160; this.HitSound = SoundID.NPCHit54; this.DeathSound = SoundID.NPCDeath52; this.alpha = 100; this.value = 500f; this.buffImmune[20] = true; this.buffImmune[24] = true; this.buffImmune[39] = true; this.knockBackResist = 0.7f; } else if (this.type == 83) { this.width = 40; this.height = 40; this.aiStyle = 23; this.damage = 80; this.defense = 18; this.lifeMax = 200; this.HitSound = SoundID.NPCHit4; this.DeathSound = SoundID.NPCDeath6; this.value = 1000f; this.buffImmune[20] = true; this.buffImmune[24] = true; this.buffImmune[39] = true; this.knockBackResist = 0.4f; } else if (this.type == 84) { this.width = 40; this.height = 40; this.aiStyle = 23; this.damage = 80; this.defense = 18; this.lifeMax = 200; this.HitSound = SoundID.NPCHit4; this.DeathSound = SoundID.NPCDeath6; this.value = 1000f; this.buffImmune[20] = true; this.buffImmune[24] = true; this.buffImmune[39] = true; this.knockBackResist = 0.4f; } else if (this.type == 85) { this.width = 24; this.height = 24; this.aiStyle = 25; this.damage = 80; this.defense = 30; this.lifeMax = 500; this.HitSound = SoundID.NPCHit4; this.DeathSound = SoundID.NPCDeath6; this.value = 100000f; this.knockBackResist = 0.3f; this.buffImmune[20] = true; this.buffImmune[24] = true; this.buffImmune[39] = true; this.rarity = 4; } else if (this.type == 86) { this.width = 46; this.height = 42; this.aiStyle = 26; this.damage = 65; this.defense = 30; this.lifeMax = 400; this.HitSound = SoundID.NPCHit12; this.DeathSound = SoundID.NPCDeath18; this.knockBackResist = 0.3f; this.value = 1000f; this.buffImmune[31] = false; } else if (this.type == 87) { this.noTileCollide = true; this.npcSlots = 5f; this.width = 32; this.height = 32; this.aiStyle = 6; this.netAlways = true; this.damage = 80; this.defense = 10; this.lifeMax = 4000; this.HitSound = SoundID.NPCHit7; this.DeathSound = SoundID.NPCDeath8; this.noGravity = true; this.knockBackResist = 0.0f; this.value = 10000f; this.scale = 1f; this.buffImmune[20] = true; this.buffImmune[24] = true; this.buffImmune[39] = true; } else if (this.type == 88) { this.noTileCollide = true; this.width = 32; this.height = 32; this.aiStyle = 6; this.netAlways = true; this.damage = 40; this.defense = 20; this.lifeMax = 4000; this.HitSound = SoundID.NPCHit7; this.DeathSound = SoundID.NPCDeath8; this.noGravity = true; this.knockBackResist = 0.0f; this.value = 10000f; this.scale = 1f; this.buffImmune[20] = true; this.buffImmune[24] = true; this.buffImmune[39] = true; this.dontCountMe = true; } else if (this.type == 89) { this.noTileCollide = true; this.width = 32; this.height = 32; this.aiStyle = 6; this.netAlways = true; this.damage = 40; this.defense = 20; this.lifeMax = 4000; this.HitSound = SoundID.NPCHit7; this.DeathSound = SoundID.NPCDeath8; this.noGravity = true; this.knockBackResist = 0.0f; this.value = 2000f; this.scale = 1f; this.buffImmune[20] = true; this.buffImmune[24] = true; this.buffImmune[39] = true; this.dontCountMe = true; } else if (this.type == 90) { this.noTileCollide = true; this.width = 32; this.height = 32; this.aiStyle = 6; this.netAlways = true; this.damage = 40; this.defense = 20; this.lifeMax = 4000; this.HitSound = SoundID.NPCHit7; this.DeathSound = SoundID.NPCDeath8; this.noGravity = true; this.knockBackResist = 0.0f; this.value = 10000f; this.scale = 1f; this.buffImmune[20] = true; this.buffImmune[24] = true; this.buffImmune[39] = true; this.dontCountMe = true; } else if (this.type == 91) { this.noTileCollide = true; this.width = 32; this.height = 32; this.aiStyle = 6; this.netAlways = true; this.damage = 40; this.defense = 20; this.lifeMax = 4000; this.HitSound = SoundID.NPCHit7; this.DeathSound = SoundID.NPCDeath8; this.noGravity = true; this.knockBackResist = 0.0f; this.value = 10000f; this.scale = 1f; this.buffImmune[20] = true; this.buffImmune[24] = true; this.buffImmune[39] = true; this.dontCountMe = true; } else if (this.type == 92) { this.noTileCollide = true; this.width = 32; this.height = 32; this.aiStyle = 6; this.netAlways = true; this.damage = 40; this.defense = 20; this.lifeMax = 4000; this.HitSound = SoundID.NPCHit7; this.DeathSound = SoundID.NPCDeath8; this.noGravity = true; this.knockBackResist = 0.0f; this.value = 10000f; this.scale = 1f; this.buffImmune[20] = true; this.buffImmune[24] = true; this.buffImmune[39] = true; this.dontCountMe = true; } else if (this.type == 93) { this.npcSlots = 0.5f; this.width = 26; this.height = 20; this.aiStyle = 14; this.damage = 45; this.defense = 16; this.lifeMax = 100; this.HitSound = SoundID.NPCHit1; this.knockBackResist = 0.75f; this.DeathSound = SoundID.NPCDeath4; this.value = 400f; this.buffImmune[31] = false; } else if (this.type == 94) { this.npcSlots = 1f; this.width = 44; this.height = 44; this.aiStyle = 5; this.damage = 60; this.defense = 32; this.lifeMax = 230; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath1; this.noGravity = true; this.knockBackResist = 0.55f; this.value = 500f; } else if (this.type == 95) { this.width = 22; this.height = 22; this.aiStyle = 6; this.netAlways = true; this.damage = 45; this.defense = 10; this.lifeMax = 200; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath1; this.noGravity = true; this.noTileCollide = true; this.knockBackResist = 0.0f; this.behindTiles = true; this.scale = 0.9f; this.value = 300f; } else if (this.type == 96) { this.width = 22; this.height = 22; this.aiStyle = 6; this.netAlways = true; this.damage = 28; this.defense = 20; this.lifeMax = 200; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath1; this.noGravity = true; this.noTileCollide = true; this.knockBackResist = 0.0f; this.behindTiles = true; this.scale = 0.9f; this.value = 300f; this.dontCountMe = true; } else if (this.type == 97) { this.width = 22; this.height = 22; this.aiStyle = 6; this.netAlways = true; this.damage = 26; this.defense = 30; this.lifeMax = 200; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath1; this.noGravity = true; this.noTileCollide = true; this.knockBackResist = 0.0f; this.behindTiles = true; this.scale = 0.9f; this.value = 300f; this.dontCountMe = true; } else if (this.type == 98) { this.npcSlots = 3.5f; this.width = 22; this.height = 22; this.aiStyle = 6; this.netAlways = true; this.damage = 70; this.defense = 36; this.lifeMax = 500; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath1; this.noGravity = true; this.noTileCollide = true; this.knockBackResist = 0.0f; this.behindTiles = true; this.value = 700f; } else if (this.type == 99) { this.width = 22; this.height = 22; this.aiStyle = 6; this.netAlways = true; this.damage = 55; this.defense = 40; this.lifeMax = 500; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath1; this.noGravity = true; this.noTileCollide = true; this.knockBackResist = 0.0f; this.behindTiles = true; this.value = 700f; this.dontCountMe = true; } else if (this.type == 100) { this.width = 22; this.height = 22; this.aiStyle = 6; this.netAlways = true; this.damage = 40; this.defense = 44; this.lifeMax = 500; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath1; this.noGravity = true; this.noTileCollide = true; this.knockBackResist = 0.0f; this.behindTiles = true; this.value = 700f; this.dontCountMe = true; } else if (this.type == 101) { this.noGravity = true; this.noTileCollide = true; this.behindTiles = true; this.width = 30; this.height = 30; this.aiStyle = 13; this.damage = 70; this.defense = 30; this.lifeMax = 320; this.HitSound = SoundID.NPCHit1; this.knockBackResist = 0.2f; this.DeathSound = SoundID.NPCDeath1; this.value = 600f; } else if (this.type == 102) { this.npcSlots = 0.5f; this.noGravity = true; this.width = 18; this.height = 20; this.aiStyle = 16; this.damage = 80; this.defense = 22; this.lifeMax = 90; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath1; this.value = 500f; } else if (this.type == 103) { this.noGravity = true; this.width = 26; this.height = 26; this.aiStyle = 18; this.damage = 80; this.defense = 30; this.lifeMax = 120; this.HitSound = SoundID.NPCHit25; this.DeathSound = SoundID.NPCDeath28; this.value = 800f; this.alpha = 20; } else if (this.type == 104) { this.width = 18; this.height = 40; this.aiStyle = 3; this.damage = 70; this.defense = 38; this.lifeMax = 350; this.HitSound = SoundID.NPCHit6; this.DeathSound = SoundID.NPCDeath1; this.knockBackResist = 0.4f; this.value = 1000f; this.buffImmune[31] = false; } else if (this.type == 105) { this.friendly = true; this.width = 18; this.height = 34; this.aiStyle = 0; this.damage = 10; this.defense = 15; this.lifeMax = 250; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath1; this.knockBackResist = 0.5f; this.rarity = 1; } else if (this.type == 106) { this.friendly = true; this.width = 18; this.height = 40; this.aiStyle = 0; this.damage = 10; this.defense = 15; this.lifeMax = 250; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath1; this.knockBackResist = 0.5f; this.rarity = 1; } else if (this.type == 107) { this.townNPC = true; this.friendly = true; this.width = 18; this.height = 40; this.aiStyle = 7; this.damage = 10; this.defense = 15; this.lifeMax = 250; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath1; this.knockBackResist = 0.5f; } else if (this.type == 108) { this.townNPC = true; this.friendly = true; this.width = 18; this.height = 40; this.aiStyle = 7; this.damage = 10; this.defense = 15; this.lifeMax = 250; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath1; this.knockBackResist = 0.5f; } else if (this.type == 109) { this.width = 34; this.height = 78; this.aiStyle = 3; this.damage = 50; this.defense = 20; this.lifeMax = 400; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath2; this.knockBackResist = 0.4f; this.value = 8000f; } else if (this.type == 110) { this.width = 18; this.height = 40; this.aiStyle = 3; this.damage = 45; this.defense = 14; this.lifeMax = 210; this.HitSound = SoundID.NPCHit2; this.DeathSound = SoundID.NPCDeath2; this.knockBackResist = 0.55f; this.value = 400f; this.buffImmune[20] = true; this.buffImmune[31] = false; } else if (this.type == 112) { this.width = 16; this.height = 16; this.aiStyle = 9; this.damage = 65; this.defense = 0; this.lifeMax = 1; this.HitSound = (LegacySoundStyle) null; this.DeathSound = SoundID.NPCDeath9; this.noGravity = true; this.noTileCollide = true; this.knockBackResist = 0.0f; this.scale = 0.9f; this.alpha = 80; } else if (this.type == 113) { this.npcSlots = 10f; this.width = 100; this.height = 100; this.aiStyle = 27; this.damage = 50; this.defense = 12; this.lifeMax = 8000; this.HitSound = SoundID.NPCHit8; this.DeathSound = SoundID.NPCDeath10; this.noGravity = true; this.noTileCollide = true; this.behindTiles = true; this.knockBackResist = 0.0f; this.scale = 1.2f; this.boss = true; this.buffImmune[20] = true; this.buffImmune[24] = true; this.buffImmune[39] = true; this.value = 80000f; } else if (this.type == 114) { this.width = 100; this.height = 100; this.aiStyle = 28; this.damage = 50; this.defense = 0; this.lifeMax = 8000; this.HitSound = SoundID.NPCHit8; this.DeathSound = SoundID.NPCDeath10; this.noGravity = true; this.noTileCollide = true; this.behindTiles = true; this.knockBackResist = 0.0f; this.scale = 1.2f; this.buffImmune[20] = true; this.buffImmune[24] = true; this.buffImmune[39] = true; this.value = 80000f; } else if (this.type == 115) { this.width = 30; this.height = 30; this.aiStyle = 29; this.damage = 30; this.defense = 10; this.lifeMax = 240; this.HitSound = SoundID.NPCHit9; this.DeathSound = SoundID.NPCDeath11; this.noGravity = true; this.behindTiles = true; this.noTileCollide = true; this.knockBackResist = 1.1f; } else if (this.type == 116) { this.width = 30; this.height = 32; this.aiStyle = 2; this.damage = 30; this.defense = 6; this.lifeMax = 80; this.HitSound = SoundID.NPCHit9; this.knockBackResist = 0.8f; this.DeathSound = SoundID.NPCDeath12; } else if (this.type == 117) { this.width = 14; this.height = 14; this.aiStyle = 6; this.netAlways = true; this.damage = 26; this.defense = 2; this.lifeMax = 60; this.HitSound = SoundID.NPCHit9; this.DeathSound = SoundID.NPCDeath12; this.noGravity = true; this.noTileCollide = true; this.knockBackResist = 0.0f; this.behindTiles = true; } else if (this.type == 118) { this.width = 14; this.height = 14; this.aiStyle = 6; this.netAlways = true; this.damage = 22; this.defense = 6; this.lifeMax = 60; this.HitSound = SoundID.NPCHit9; this.DeathSound = SoundID.NPCDeath12; this.noGravity = true; this.noTileCollide = true; this.knockBackResist = 0.0f; this.behindTiles = true; } else if (this.type == 119) { this.width = 14; this.height = 14; this.aiStyle = 6; this.netAlways = true; this.damage = 18; this.defense = 10; this.lifeMax = 60; this.HitSound = SoundID.NPCHit9; this.DeathSound = SoundID.NPCDeath12; this.noGravity = true; this.noTileCollide = true; this.knockBackResist = 0.0f; this.behindTiles = true; } else if (this.type == 120) { this.width = 18; this.height = 40; this.aiStyle = 3; this.damage = 40; this.defense = 30; this.lifeMax = 370; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath6; this.knockBackResist = 0.4f; this.value = 600f; this.buffImmune[20] = true; this.buffImmune[24] = true; this.buffImmune[39] = true; this.buffImmune[31] = false; } else if (this.type == 121) { this.width = 40; this.height = 30; this.aiStyle = 14; this.damage = 45; this.defense = 20; this.lifeMax = 60; this.HitSound = SoundID.NPCHit1; this.alpha = 55; this.knockBackResist = 0.8f; this.scale = 1.1f; this.buffImmune[20] = true; this.buffImmune[31] = false; } else if (this.type == 122) { this.noGravity = true; this.width = 20; this.height = 20; this.aiStyle = 22; this.damage = 60; this.defense = 22; this.lifeMax = 220; this.HitSound = SoundID.NPCHit1; this.knockBackResist = 0.8f; this.DeathSound = SoundID.NPCDeath1; this.value = 600f; this.buffImmune[20] = true; } else if (this.type == 123) { this.friendly = true; this.width = 18; this.height = 34; this.aiStyle = 0; this.damage = 10; this.defense = 15; this.lifeMax = 250; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath1; this.knockBackResist = 0.5f; this.scale = 0.9f; this.rarity = 1; } else if (this.type == 124) { this.townNPC = true; this.friendly = true; this.width = 18; this.height = 40; this.aiStyle = 7; this.damage = 10; this.defense = 15; this.lifeMax = 250; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath1; this.knockBackResist = 0.5f; } else if (this.type == 125) { this.width = 100; this.height = 110; this.aiStyle = 30; this.defense = 10; this.damage = 45; this.lifeMax = 20000; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath14; this.knockBackResist = 0.0f; this.noGravity = true; this.noTileCollide = true; this.timeLeft = NPC.activeTime * 30; this.boss = true; this.value = 120000f; this.npcSlots = 5f; } else if (this.type == 126) { this.width = 100; this.height = 110; this.aiStyle = 31; this.defense = 10; this.damage = 50; this.lifeMax = 23000; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath14; this.knockBackResist = 0.0f; this.noGravity = true; this.noTileCollide = true; this.timeLeft = NPC.activeTime * 30; this.boss = true; this.value = 120000f; this.npcSlots = 5f; } else if (this.type == (int) sbyte.MaxValue) { this.width = 80; this.height = 102; this.aiStyle = 32; this.damage = 47; this.defense = 24; this.lifeMax = 28000; this.HitSound = SoundID.NPCHit4; this.DeathSound = SoundID.NPCDeath14; this.noGravity = true; this.noTileCollide = true; this.value = 120000f; this.knockBackResist = 0.0f; this.boss = true; this.npcSlots = 6f; this.buffImmune[20] = true; this.buffImmune[24] = true; this.buffImmune[39] = true; this.buffImmune[189] = this.buffImmune[169] = this.buffImmune[183] = true; this.boss = true; } else if (this.type == 128) { this.width = 52; this.height = 52; this.aiStyle = 35; this.damage = 30; this.defense = 23; this.lifeMax = 7000; this.HitSound = SoundID.NPCHit4; this.DeathSound = SoundID.NPCDeath14; this.noGravity = true; this.noTileCollide = true; this.knockBackResist = 0.0f; this.buffImmune[20] = true; this.buffImmune[24] = true; this.netAlways = true; } else if (this.type == 129) { this.width = 52; this.height = 52; this.aiStyle = 33; this.damage = 56; this.defense = 38; this.lifeMax = 9000; this.HitSound = SoundID.NPCHit4; this.DeathSound = SoundID.NPCDeath14; this.noGravity = true; this.noTileCollide = true; this.knockBackResist = 0.0f; this.buffImmune[20] = true; this.buffImmune[24] = true; this.netAlways = true; } else if (this.type == 130) { this.width = 52; this.height = 52; this.aiStyle = 34; this.damage = 52; this.defense = 34; this.lifeMax = 9000; this.HitSound = SoundID.NPCHit4; this.DeathSound = SoundID.NPCDeath14; this.noGravity = true; this.noTileCollide = true; this.knockBackResist = 0.0f; this.buffImmune[20] = true; this.buffImmune[24] = true; this.netAlways = true; } else if (this.type == 131) { this.width = 52; this.height = 52; this.aiStyle = 36; this.damage = 29; this.defense = 20; this.lifeMax = 6000; this.HitSound = SoundID.NPCHit4; this.DeathSound = SoundID.NPCDeath14; this.noGravity = true; this.noTileCollide = true; this.knockBackResist = 0.0f; this.buffImmune[20] = true; this.buffImmune[24] = true; this.netAlways = true; } else if (this.type == 132) { this.width = 18; this.height = 40; this.aiStyle = 3; this.damage = 15; this.defense = 5; this.lifeMax = 40; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath2; this.knockBackResist = 0.5f; this.value = 65f; this.buffImmune[31] = false; } else if (this.type == 133) { this.width = 30; this.height = 32; this.aiStyle = 2; this.damage = 40; this.defense = 20; this.lifeMax = 300; this.HitSound = SoundID.NPCHit1; this.knockBackResist = 0.8f; this.DeathSound = SoundID.NPCDeath1; this.value = 500f; this.buffImmune[31] = false; } else if (this.type == 134) { this.npcSlots = 5f; this.width = 38; this.height = 38; this.aiStyle = 37; this.defense = 0; this.damage = 70; this.lifeMax = 80000; this.HitSound = SoundID.NPCHit4; this.DeathSound = SoundID.NPCDeath14; this.noGravity = true; this.noTileCollide = true; this.knockBackResist = 0.0f; this.behindTiles = true; this.value = 120000f; this.scale = 1.25f; this.boss = true; this.netAlways = true; this.buffImmune[20] = true; this.buffImmune[24] = true; this.buffImmune[39] = true; flag = true; this.alpha = (int) byte.MaxValue; } else if (this.type == 135) { this.npcSlots = 5f; this.width = 38; this.height = 38; this.aiStyle = 37; this.damage = 55; this.defense = 30; this.lifeMax = 80000; this.HitSound = SoundID.NPCHit4; this.DeathSound = SoundID.NPCDeath14; this.noGravity = true; this.noTileCollide = true; this.knockBackResist = 0.0f; this.behindTiles = true; this.netAlways = true; this.scale = 1.25f; this.buffImmune[20] = true; this.buffImmune[24] = true; this.buffImmune[39] = true; flag = true; this.dontCountMe = true; this.alpha = (int) byte.MaxValue; } else if (this.type == 136) { this.npcSlots = 5f; this.width = 38; this.height = 38; this.aiStyle = 37; this.damage = 40; this.defense = 35; this.lifeMax = 80000; this.HitSound = SoundID.NPCHit4; this.DeathSound = SoundID.NPCDeath14; this.noGravity = true; this.noTileCollide = true; this.knockBackResist = 0.0f; this.behindTiles = true; this.scale = 1.25f; this.netAlways = true; this.buffImmune[20] = true; this.buffImmune[24] = true; this.buffImmune[39] = true; flag = true; this.dontCountMe = true; this.alpha = (int) byte.MaxValue; } else if (this.type == 139) { this.npcSlots = 1f; this.width = 30; this.height = 30; this.aiStyle = 5; this.damage = 50; this.defense = 20; this.lifeMax = 200; this.HitSound = SoundID.NPCHit4; this.DeathSound = SoundID.NPCDeath14; this.noGravity = true; this.knockBackResist = 0.8f; this.noTileCollide = true; flag = true; } else if (this.type == 137) { this.width = 26; this.height = 20; this.aiStyle = 14; this.damage = 75; this.defense = 30; this.lifeMax = 200; this.HitSound = SoundID.NPCHit1; this.knockBackResist = 0.75f; this.DeathSound = SoundID.NPCDeath6; this.value = 500f; this.buffImmune[20] = true; this.buffImmune[24] = true; this.buffImmune[39] = true; this.buffImmune[31] = false; } else if (this.type == 138) { this.width = 24; this.height = 18; this.aiStyle = 1; this.damage = 70; this.defense = 30; this.lifeMax = 180; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath6; this.alpha = 100; this.value = 400f; this.buffImmune[20] = true; this.buffImmune[24] = true; this.buffImmune[39] = true; this.knockBackResist = 0.85f; this.scale = 1.05f; this.buffImmune[31] = false; } else if (this.type == 140) { this.width = 18; this.height = 40; this.aiStyle = 3; this.damage = 55; this.defense = 28; this.lifeMax = 260; this.HitSound = SoundID.NPCHit4; this.DeathSound = SoundID.NPCDeath6; this.knockBackResist = 0.4f; this.value = 400f; this.buffImmune[20] = true; this.buffImmune[31] = false; this.buffImmune[24] = true; } else if (this.type == 141) { this.width = 34; this.height = 28; this.aiStyle = 1; this.damage = 50; this.defense = 18; this.lifeMax = 150; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath1; this.alpha = 55; this.value = 400f; this.scale = 1.1f; this.buffImmune[20] = true; this.buffImmune[31] = false; this.knockBackResist = 0.8f; } else if (this.type == 142) { this.townNPC = true; this.friendly = true; this.width = 18; this.height = 40; this.aiStyle = 7; this.damage = 10; this.defense = 15; this.lifeMax = 250; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath1; this.knockBackResist = 0.5f; } else if (this.type == 143) { this.width = 26; this.height = 40; this.aiStyle = 38; this.damage = 50; this.defense = 20; this.lifeMax = 200; this.HitSound = SoundID.NPCHit11; this.DeathSound = SoundID.NPCDeath15; this.knockBackResist = 0.6f; this.value = 400f; this.buffImmune[20] = true; this.buffImmune[31] = false; this.buffImmune[24] = true; this.buffImmune[39] = true; } else if (this.type == 144) { this.width = 26; this.height = 40; this.aiStyle = 38; this.damage = 65; this.defense = 26; this.lifeMax = 240; this.HitSound = SoundID.NPCHit11; this.DeathSound = SoundID.NPCDeath15; this.knockBackResist = 0.6f; this.value = 400f; this.buffImmune[20] = true; this.buffImmune[31] = false; this.buffImmune[24] = true; this.buffImmune[39] = true; this.coldDamage = true; } else if (this.type == 145) { this.width = 26; this.height = 40; this.aiStyle = 38; this.damage = 55; this.defense = 22; this.lifeMax = 220; this.HitSound = SoundID.NPCHit11; this.DeathSound = SoundID.NPCDeath15; this.knockBackResist = 0.6f; this.value = 400f; this.buffImmune[20] = true; this.buffImmune[31] = false; this.buffImmune[24] = true; this.buffImmune[39] = true; this.coldDamage = true; } else if (this.type == 147) { this.width = 24; this.height = 18; this.aiStyle = 1; this.damage = 8; this.defense = 4; this.lifeMax = 30; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath1; this.alpha = 50; this.value = 50f; this.buffImmune[20] = true; this.buffImmune[31] = false; this.coldDamage = true; } else if (this.type == 148) { this.width = 16; this.height = 34; this.aiStyle = 7; this.damage = 0; this.defense = 0; this.lifeMax = 5; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath1; this.catchItem = (short) 2205; } else if (this.type == 149) { this.width = 16; this.height = 34; this.aiStyle = 7; this.damage = 0; this.defense = 0; this.lifeMax = 5; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath1; this.catchItem = (short) 2205; } else if (this.type == 150) { this.npcSlots = 0.5f; this.width = 22; this.height = 22; this.aiStyle = 14; this.damage = 18; this.defense = 6; this.lifeMax = 30; this.HitSound = SoundID.NPCHit1; this.knockBackResist = 0.8f; this.DeathSound = SoundID.NPCDeath4; this.value = 250f; this.buffImmune[31] = false; } else if (this.type == 151) { this.npcSlots = 0.5f; this.width = 22; this.height = 22; this.aiStyle = 14; this.damage = 50; this.defense = 16; this.lifeMax = 160; this.HitSound = SoundID.NPCHit1; this.knockBackResist = 0.6f; this.DeathSound = SoundID.NPCDeath4; this.value = 400f; this.scale = 1.15f; this.lavaImmune = true; this.buffImmune[24] = true; this.buffImmune[39] = true; this.buffImmune[31] = false; } else if (this.type == 152) { this.npcSlots = 0.5f; this.width = 38; this.height = 34; this.aiStyle = 14; this.damage = 80; this.defense = 24; this.lifeMax = 220; this.HitSound = SoundID.NPCHit1; this.knockBackResist = 0.65f; this.DeathSound = SoundID.NPCDeath4; this.value = 400f; this.buffImmune[31] = false; } else if (this.type == 153) { this.npcSlots = 2f; this.width = 46; this.height = 32; this.aiStyle = 39; this.damage = 80; this.defense = 30; this.lifeMax = 470; this.HitSound = SoundID.NPCHit24; this.knockBackResist = 0.3f; this.DeathSound = SoundID.NPCDeath27; this.value = 500f; this.noGravity = false; this.buffImmune[31] = false; } else if (this.type == 154) { this.npcSlots = 1.5f; this.width = 46; this.height = 32; this.aiStyle = 39; this.damage = 55; this.defense = 28; this.lifeMax = 400; this.HitSound = SoundID.NPCHit24; this.knockBackResist = 0.3f; this.DeathSound = SoundID.NPCDeath27; this.value = 450f; this.noGravity = false; this.buffImmune[31] = false; } else if (this.type == 155) { this.width = 46; this.height = 30; this.aiStyle = 26; this.damage = 65; this.defense = 30; this.lifeMax = 300; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath1; this.knockBackResist = 0.3f; this.value = 1000f; this.buffImmune[31] = false; } else if (this.type == 156) { this.npcSlots = 2f; this.width = 28; this.height = 48; this.aiStyle = 14; this.damage = 50; this.defense = 40; this.lifeMax = 600; this.HitSound = SoundID.NPCHit21; this.knockBackResist = 0.5f; this.DeathSound = SoundID.NPCDeath24; this.value = 1200f; this.lavaImmune = true; this.buffImmune[24] = true; this.buffImmune[39] = true; } else if (this.type == 157) { this.npcSlots = 0.5f; this.noGravity = true; this.width = 74; this.height = 20; this.aiStyle = 16; this.damage = 75; this.defense = 30; this.lifeMax = 200; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath1; this.value = 500f; } else if (this.type == 160) { this.townNPC = true; this.friendly = true; this.width = 18; this.height = 40; this.aiStyle = 7; this.damage = 10; this.defense = 15; this.lifeMax = 250; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath1; this.knockBackResist = 0.5f; } else if (this.type == 161) { this.width = 18; this.height = 40; this.aiStyle = 3; this.damage = 16; this.defense = 8; this.lifeMax = 50; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath2; this.knockBackResist = 0.45f; this.value = 80f; this.buffImmune[31] = false; } else if (this.type == 163) { this.width = 50; this.height = 20; this.aiStyle = 3; this.damage = 90; this.defense = 40; this.lifeMax = 350; this.HitSound = SoundID.NPCHit29; this.DeathSound = SoundID.NPCDeath31; this.knockBackResist = 0.25f; this.value = 500f; this.buffImmune[20] = true; this.buffImmune[31] = false; this.npcSlots = 0.5f; this.timeLeft = NPC.activeTime * 2; } else if (this.type == 238) { this.noGravity = true; this.width = 36; this.height = 36; this.aiStyle = 40; this.damage = 100; this.defense = 40; this.lifeMax = 350; this.HitSound = SoundID.NPCHit29; this.DeathSound = SoundID.NPCDeath31; this.knockBackResist = 0.25f; this.value = 500f; this.timeLeft = NPC.activeTime * 2; this.npcSlots = 0.5f; this.buffImmune[20] = true; this.buffImmune[31] = false; } else if (this.type == 164) { this.width = 50; this.height = 20; this.aiStyle = 3; this.damage = 30; this.defense = 10; this.lifeMax = 80; this.HitSound = SoundID.NPCHit29; this.DeathSound = SoundID.NPCDeath31; this.knockBackResist = 0.25f; this.value = 100f; this.timeLeft = NPC.activeTime * 2; this.npcSlots = 0.5f; this.buffImmune[20] = true; } else if (this.type == 165) { this.noGravity = true; this.width = 36; this.height = 36; this.aiStyle = 40; this.damage = 30; this.defense = 10; this.lifeMax = 80; this.HitSound = SoundID.NPCHit29; this.DeathSound = SoundID.NPCDeath31; this.knockBackResist = 0.25f; this.value = 100f; this.timeLeft = NPC.activeTime * 2; this.npcSlots = 0.5f; this.buffImmune[20] = true; } else if (this.type == 167) { this.width = 18; this.height = 40; this.aiStyle = 3; this.damage = 24; this.defense = 10; this.lifeMax = 70; this.HitSound = SoundID.NPCHit2; this.DeathSound = SoundID.NPCDeath2; this.knockBackResist = 0.5f; this.value = 200f; this.buffImmune[31] = false; this.buffImmune[20] = true; } else if (this.type == 168) { this.width = 16; this.height = 34; this.aiStyle = 3; this.damage = 20; this.defense = 4; this.lifeMax = 70; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath1; this.value = 500f; this.buffImmune[31] = false; } else if (this.type == 169) { this.noGravity = true; this.width = 18; this.height = 40; this.aiStyle = 22; this.damage = 55; this.defense = 20; this.lifeMax = 200; this.HitSound = SoundID.NPCHit5; this.knockBackResist = 0.6f; this.DeathSound = SoundID.NPCDeath7; this.value = 1500f; this.buffImmune[20] = true; this.buffImmune[24] = true; this.buffImmune[39] = true; this.buffImmune[31] = false; this.buffImmune[44] = true; this.coldDamage = true; } else if (this.type == 170) { this.width = 44; this.height = 36; this.aiStyle = 2; this.damage = 70; this.defense = 16; this.lifeMax = 210; this.HitSound = SoundID.NPCHit27; this.DeathSound = SoundID.NPCDeath30; this.knockBackResist = 0.5f; this.value = 2000f; this.buffImmune[31] = false; } else if (this.type == 171) { this.width = 44; this.height = 36; this.aiStyle = 2; this.damage = 70; this.defense = 16; this.lifeMax = 210; this.HitSound = SoundID.NPCHit27; this.DeathSound = SoundID.NPCDeath30; this.knockBackResist = 0.5f; this.value = 2000f; this.buffImmune[31] = false; } else if (this.type == 172) { this.width = 18; this.height = 40; this.aiStyle = 8; this.damage = 200; this.defense = 30; this.lifeMax = 600; this.HitSound = SoundID.NPCHit2; this.DeathSound = SoundID.NPCDeath2; this.knockBackResist = 0.3f; this.value = 5000f; this.buffImmune[20] = true; this.rarity = 2; } else if (this.type == 173) { this.npcSlots = 1f; this.width = 30; this.height = 30; this.aiStyle = 5; this.damage = 22; this.defense = 8; this.lifeMax = 40; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath1; this.noGravity = true; this.knockBackResist = 0.5f; this.value = 90f; } else if (this.type == 174) { this.npcSlots = 1f; this.width = 52; this.height = 26; this.aiStyle = 41; this.damage = 65; this.defense = 26; this.lifeMax = 220; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath1; this.knockBackResist = 0.3f; this.value = 450f; } else if (this.type == 175) { this.noGravity = true; this.noTileCollide = true; this.width = 30; this.height = 30; this.aiStyle = 13; this.damage = 100; this.defense = 30; this.lifeMax = 300; this.HitSound = SoundID.NPCHit1; this.knockBackResist = 0.25f; this.DeathSound = SoundID.NPCDeath1; this.value = 650f; this.buffImmune[20] = true; } else if (this.type == 176) { this.width = 34; this.height = 32; this.aiStyle = 5; this.damage = 70; this.defense = 22; this.lifeMax = 220; this.HitSound = SoundID.NPCHit1; this.knockBackResist = 0.5f; this.DeathSound = SoundID.NPCDeath1; this.value = 600f; this.noGravity = true; this.buffImmune[20] = true; this.npcSlots = 1.5f; } else if (this.type == 177) { this.npcSlots = 1f; this.width = 58; this.height = 44; this.aiStyle = 41; this.damage = 80; this.defense = 26; this.lifeMax = 300; this.HitSound = SoundID.NPCHit22; this.DeathSound = SoundID.NPCDeath25; this.knockBackResist = 0.5f; this.value = 500f; } else if (this.type == 178) { this.townNPC = true; this.friendly = true; this.width = 18; this.height = 40; this.aiStyle = 7; this.damage = 10; this.defense = 15; this.lifeMax = 250; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath1; this.knockBackResist = 0.5f; } else if (this.type == 179) { this.width = 40; this.height = 40; this.aiStyle = 23; this.damage = 80; this.defense = 18; this.lifeMax = 200; this.HitSound = SoundID.NPCHit4; this.DeathSound = SoundID.NPCDeath6; this.value = 1000f; this.buffImmune[20] = true; this.buffImmune[24] = true; this.buffImmune[39] = true; this.knockBackResist = 0.4f; } else if (this.type == 180) { this.width = 44; this.height = 36; this.aiStyle = 2; this.damage = 70; this.defense = 16; this.lifeMax = 210; this.HitSound = SoundID.NPCHit27; this.DeathSound = SoundID.NPCDeath30; this.knockBackResist = 0.5f; this.value = 4000f; this.buffImmune[31] = false; } else if (this.type == 181) { this.width = 18; this.height = 44; this.aiStyle = 3; this.damage = 25; this.defense = 10; this.lifeMax = 70; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath2; this.knockBackResist = 0.4f; this.value = 200f; this.buffImmune[20] = true; this.buffImmune[31] = false; } else if (this.type == 182) { this.noGravity = true; this.noTileCollide = true; this.width = 24; this.height = 62; this.aiStyle = 22; this.damage = 65; this.defense = 18; this.lifeMax = 240; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath2; this.alpha = 100; this.value = 500f; this.buffImmune[20] = true; this.buffImmune[24] = true; this.buffImmune[39] = true; this.knockBackResist = 0.7f; } else if (this.type == 183) { this.width = 40; this.height = 30; this.aiStyle = 1; this.damage = 60; this.defense = 26; this.lifeMax = 200; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath1; this.alpha = 55; this.value = 400f; this.scale = 1.1f; this.buffImmune[20] = true; this.buffImmune[31] = false; } else if (this.type == 184) { this.width = 24; this.height = 18; this.aiStyle = 1; this.damage = 12; this.defense = 8; this.lifeMax = 60; this.scale = 1.1f; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath1; this.alpha = 50; this.value = 200f; this.buffImmune[20] = true; this.buffImmune[31] = false; this.coldDamage = true; } else if (this.type == 185) { this.width = 28; this.height = 28; this.aiStyle = 3; this.damage = 26; this.defense = 12; this.lifeMax = 70; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath1; this.knockBackResist = 1.1f; this.value = 200f; this.buffImmune[20] = true; this.buffImmune[31] = false; this.coldDamage = true; } else if (this.type == 186) { this.width = 18; this.height = 40; this.aiStyle = 3; this.damage = 16; this.defense = 8; this.lifeMax = 50; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath2; this.knockBackResist = 0.45f; this.value = 65f; this.buffImmune[31] = false; } else if (this.type == 187) { this.width = 18; this.height = 40; this.aiStyle = 3; this.damage = 13; this.defense = 6; this.lifeMax = 40; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath2; this.knockBackResist = 0.55f; this.value = 55f; this.buffImmune[31] = false; } else if (this.type == 188) { this.width = 18; this.height = 40; this.aiStyle = 3; this.damage = 13; this.defense = 8; this.lifeMax = 45; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath2; this.knockBackResist = 0.45f; this.value = 80f; this.buffImmune[31] = false; } else if (this.type == 189) { this.width = 18; this.height = 40; this.aiStyle = 3; this.damage = 16; this.defense = 4; this.lifeMax = 45; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath2; this.knockBackResist = 0.55f; this.value = 70f; this.buffImmune[31] = false; } else if (this.type == 190) { this.width = 30; this.height = 32; this.aiStyle = 2; this.damage = 18; this.defense = 4; this.lifeMax = 65; this.HitSound = SoundID.NPCHit1; this.knockBackResist = 0.7f; this.DeathSound = SoundID.NPCDeath1; this.value = 75f; this.buffImmune[31] = false; } else if (this.type == 191) { this.width = 30; this.height = 32; this.aiStyle = 2; this.damage = 16; this.defense = 2; this.lifeMax = 60; this.HitSound = SoundID.NPCHit1; this.knockBackResist = 0.85f; this.DeathSound = SoundID.NPCDeath1; this.value = 75f; this.buffImmune[31] = false; } else if (this.type == 192) { this.width = 30; this.height = 32; this.aiStyle = 2; this.damage = 18; this.defense = 2; this.lifeMax = 50; this.HitSound = SoundID.NPCHit1; this.knockBackResist = 0.8f; this.DeathSound = SoundID.NPCDeath1; this.value = 75f; this.buffImmune[31] = false; } else if (this.type == 193) { this.width = 30; this.height = 32; this.aiStyle = 2; this.damage = 20; this.defense = 0; this.lifeMax = 60; this.HitSound = SoundID.NPCHit1; this.knockBackResist = 0.8f; this.DeathSound = SoundID.NPCDeath1; this.value = 75f; this.buffImmune[31] = false; } else if (this.type == 194) { this.width = 30; this.height = 32; this.aiStyle = 2; this.damage = 14; this.defense = 4; this.lifeMax = 60; this.HitSound = SoundID.NPCHit1; this.knockBackResist = 0.8f; this.DeathSound = SoundID.NPCDeath1; this.value = 75f; this.buffImmune[31] = false; } else if (this.type == 195) { this.width = 18; this.height = 40; this.aiStyle = 42; this.damage = 10; this.defense = 30; this.lifeMax = 250; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath1; this.knockBackResist = 0.5f; this.rarity = 1; } else if (this.type == 196) { this.width = 18; this.height = 40; this.aiStyle = 3; this.damage = 35; this.defense = 16; this.lifeMax = 300; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath2; this.knockBackResist = 0.4f; this.value = 10000f; this.buffImmune[31] = false; this.rarity = 1; } else if (this.type == 197) { this.width = 18; this.height = 40; this.aiStyle = 3; this.damage = 50; this.defense = 28; this.lifeMax = 280; this.HitSound = SoundID.NPCHit2; this.DeathSound = SoundID.NPCDeath2; this.knockBackResist = 0.45f; this.value = 500f; this.buffImmune[20] = true; this.buffImmune[31] = false; } else if (this.type == 198) { this.width = 18; this.height = 40; this.aiStyle = 3; this.damage = 38; this.defense = 20; this.lifeMax = 400; this.HitSound = SoundID.NPCHit26; this.DeathSound = SoundID.NPCDeath29; this.knockBackResist = 0.4f; this.value = 650f; this.buffImmune[20] = true; this.buffImmune[31] = false; } else if (this.type == 199) { this.width = 42; this.height = 30; this.aiStyle = 3; this.damage = 60; this.defense = 30; this.lifeMax = 400; this.HitSound = SoundID.NPCHit26; this.DeathSound = SoundID.NPCDeath29; this.knockBackResist = 0.0f; this.value = 650f; this.buffImmune[20] = true; this.buffImmune[31] = false; } else if (this.type == 200) { this.width = 18; this.height = 40; this.aiStyle = 3; this.damage = 12; this.defense = 4; this.lifeMax = 38; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath2; this.knockBackResist = 0.6f; this.value = 65f; this.buffImmune[31] = false; } else if (this.type == 201) { this.width = 18; this.height = 40; this.aiStyle = 3; this.damage = 20; this.defense = 12; this.lifeMax = 55; this.HitSound = SoundID.NPCHit2; this.DeathSound = SoundID.NPCDeath2; this.knockBackResist = 0.5f; this.value = 130f; this.buffImmune[20] = true; this.buffImmune[31] = false; } else if (this.type == 202) { this.width = 18; this.height = 40; this.aiStyle = 3; this.damage = 18; this.defense = 8; this.lifeMax = 65; this.HitSound = SoundID.NPCHit2; this.DeathSound = SoundID.NPCDeath2; this.knockBackResist = 0.5f; this.value = 120f; this.buffImmune[20] = true; this.buffImmune[31] = false; } else if (this.type == 203) { this.width = 18; this.height = 40; this.aiStyle = 3; this.damage = 22; this.defense = 8; this.lifeMax = 60; this.HitSound = SoundID.NPCHit2; this.DeathSound = SoundID.NPCDeath2; this.knockBackResist = 0.5f; this.value = 110f; this.buffImmune[20] = true; this.buffImmune[31] = false; } else if (this.type == 204) { this.width = 24; this.height = 18; this.aiStyle = 1; this.damage = 28; this.defense = 8; this.lifeMax = 65; this.scale = 1.15f; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath1; this.alpha = 50; this.value = 300f; this.buffImmune[20] = true; this.buffImmune[31] = false; } else if (this.type == 205) { this.width = 40; this.height = 40; this.aiStyle = 5; this.damage = 70; this.defense = 28; this.lifeMax = 1000; this.HitSound = SoundID.NPCHit1; this.knockBackResist = 0.4f; this.DeathSound = SoundID.NPCDeath1; this.value = 600f; this.noGravity = true; this.buffImmune[20] = true; this.rarity = 2; } else if (this.type == 206) { this.width = 18; this.height = 40; this.aiStyle = 3; this.damage = 60; this.defense = 30; this.lifeMax = 280; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath1; this.knockBackResist = 0.5f; this.value = 500f; this.buffImmune[31] = false; this.coldDamage = true; } else if (this.type == 207) { this.townNPC = true; this.friendly = true; this.width = 18; this.height = 40; this.aiStyle = 7; this.damage = 10; this.defense = 15; this.lifeMax = 250; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath1; this.knockBackResist = 0.5f; } else if (this.type == 208) { this.townNPC = true; this.friendly = true; this.width = 18; this.height = 40; this.aiStyle = 7; this.damage = 10; this.defense = 15; this.lifeMax = 250; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath1; this.knockBackResist = 0.5f; } else if (this.type == 209) { this.townNPC = true; this.friendly = true; this.width = 18; this.height = 40; this.aiStyle = 7; this.damage = 10; this.defense = 15; this.lifeMax = 250; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath1; this.knockBackResist = 0.5f; } else if (this.type == 210) { this.width = 12; this.height = 12; this.aiStyle = 5; this.damage = 20; this.defense = 5; this.lifeMax = 20; this.HitSound = SoundID.NPCHit1; this.knockBackResist = 0.5f; this.DeathSound = SoundID.NPCDeath1; this.noGravity = true; this.buffImmune[20] = true; } else if (this.type == 211) { this.width = 8; this.height = 8; this.aiStyle = 5; this.damage = 15; this.defense = 2; this.lifeMax = 10; this.HitSound = SoundID.NPCHit1; this.knockBackResist = 0.5f; this.DeathSound = SoundID.NPCDeath1; this.noGravity = true; this.buffImmune[20] = true; } else if (this.type == 212) { this.width = 18; this.height = 40; this.aiStyle = 3; this.damage = 35; this.defense = 17; this.lifeMax = 300; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath1; this.knockBackResist = 0.4f; this.value = 700f; this.buffImmune[20] = true; this.buffImmune[31] = false; } else if (this.type == 213) { this.width = 18; this.height = 40; this.aiStyle = 3; this.damage = 50; this.defense = 22; this.lifeMax = 450; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath1; this.knockBackResist = 0.2f; this.value = 1000f; this.buffImmune[20] = true; this.buffImmune[31] = false; } else if (this.type == 214) { this.width = 18; this.height = 40; this.aiStyle = 3; this.damage = 30; this.defense = 14; this.lifeMax = 225; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath1; this.knockBackResist = 0.3f; this.value = 1000f; this.buffImmune[20] = true; this.buffImmune[31] = false; } else if (this.type == 215) { this.width = 18; this.height = 40; this.aiStyle = 3; this.damage = 35; this.defense = 20; this.lifeMax = 350; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath1; this.knockBackResist = 0.35f; this.value = 1500f; this.buffImmune[20] = true; this.buffImmune[31] = false; } else if (this.type == 216) { this.width = 18; this.height = 40; this.aiStyle = 3; this.damage = 70; this.defense = 30; this.lifeMax = 3000; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath1; this.knockBackResist = 0.0f; this.value = 50000f; this.buffImmune[20] = true; this.buffImmune[31] = true; } else if (this.type == 217) { this.width = 28; this.height = 20; this.aiStyle = 3; this.damage = 20; this.defense = 10; this.lifeMax = 40; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath16; this.value = 60f; } else if (this.type == 218) { this.width = 28; this.height = 20; this.aiStyle = 3; this.damage = 20; this.defense = 10; this.lifeMax = 40; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath16; this.value = 60f; } else if (this.type == 219) { this.width = 28; this.height = 20; this.aiStyle = 3; this.damage = 20; this.defense = 10; this.lifeMax = 40; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath16; this.value = 60f; } else if (this.type == 220) { this.width = 28; this.height = 20; this.aiStyle = 3; this.damage = 20; this.defense = 10; this.lifeMax = 40; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath1; this.value = 60f; } else if (this.type == 221) { this.noGravity = true; this.width = 26; this.height = 26; this.aiStyle = 18; this.damage = 20; this.defense = 2; this.lifeMax = 30; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath1; this.value = 100f; this.alpha = 20; } else if (this.type == 222) { this.width = 66; this.height = 66; this.aiStyle = 43; this.damage = 30; this.defense = 8; this.lifeMax = 3400; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath1; this.knockBackResist = 0.0f; this.noGravity = true; this.noTileCollide = true; this.timeLeft = NPC.activeTime * 30; this.boss = true; this.value = 100000f; this.npcSlots = 7f; } else if (this.type == 223) { this.width = 18; this.height = 40; this.aiStyle = 3; this.damage = 16; this.defense = 8; this.lifeMax = 50; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath2; this.knockBackResist = 0.45f; this.value = 70f; this.buffImmune[31] = false; } else if (this.type == 224) { this.width = 32; this.height = 18; this.aiStyle = 44; this.damage = 9; this.defense = 4; this.lifeMax = 20; this.HitSound = SoundID.NPCHit1; this.knockBackResist = 0.8f; this.DeathSound = SoundID.NPCDeath1; this.value = 90f; this.buffImmune[31] = false; } if (this.type == 225) { this.width = 38; this.height = 26; this.aiStyle = 1; this.damage = 10; this.defense = 5; this.lifeMax = 35; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath1; this.knockBackResist = 0.75f; this.value = 25f; this.buffImmune[20] = true; this.buffImmune[31] = false; } else if (this.type == 226) { this.npcSlots = 0.5f; this.width = 34; this.height = 50; this.aiStyle = 14; this.damage = 85; this.defense = 28; this.lifeMax = 260; this.HitSound = SoundID.NPCHit23; this.knockBackResist = 0.65f; this.DeathSound = SoundID.NPCDeath26; this.value = 400f; this.buffImmune[31] = false; } else if (this.type == 227) { this.townNPC = true; this.friendly = true; this.width = 18; this.height = 40; this.aiStyle = 7; this.damage = 10; this.defense = 15; this.lifeMax = 250; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath1; this.knockBackResist = 0.5f; } else if (this.type == 228) { this.townNPC = true; this.friendly = true; this.width = 18; this.height = 40; this.aiStyle = 7; this.damage = 10; this.defense = 15; this.lifeMax = 250; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath1; this.knockBackResist = 0.5f; } else if (this.type == 229) { this.townNPC = true; this.friendly = true; this.width = 18; this.height = 40; this.aiStyle = 7; this.damage = 10; this.defense = 15; this.lifeMax = 250; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath1; this.knockBackResist = 0.5f; } else if (this.type == 230) { this.width = 18; this.height = 20; this.aiStyle = 7; this.damage = 0; this.defense = 0; this.lifeMax = 5; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath1; this.catchItem = (short) 261; } else if (this.type == 231) { this.width = 34; this.height = 32; this.aiStyle = 5; this.damage = 22; this.defense = 16; this.lifeMax = 50; this.HitSound = SoundID.NPCHit1; this.knockBackResist = 0.3f; this.DeathSound = SoundID.NPCDeath1; this.value = 200f; this.noGravity = true; this.buffImmune[20] = true; } else if (this.type == 232) { this.width = 34; this.height = 32; this.aiStyle = 5; this.damage = 28; this.defense = 12; this.lifeMax = 42; this.HitSound = SoundID.NPCHit1; this.knockBackResist = 0.6f; this.DeathSound = SoundID.NPCDeath1; this.value = 200f; this.noGravity = true; this.buffImmune[20] = true; } else if (this.type == 233) { this.width = 34; this.height = 32; this.aiStyle = 5; this.damage = 30; this.defense = 14; this.lifeMax = 38; this.HitSound = SoundID.NPCHit1; this.knockBackResist = 0.45f; this.DeathSound = SoundID.NPCDeath1; this.value = 200f; this.noGravity = true; this.buffImmune[20] = true; } else if (this.type == 234) { this.width = 34; this.height = 32; this.aiStyle = 5; this.damage = 32; this.defense = 6; this.lifeMax = 42; this.HitSound = SoundID.NPCHit1; this.knockBackResist = 0.55f; this.DeathSound = SoundID.NPCDeath1; this.value = 200f; this.noGravity = true; this.buffImmune[20] = true; } else if (this.type == 235) { this.width = 34; this.height = 32; this.aiStyle = 5; this.damage = 34; this.defense = 4; this.lifeMax = 38; this.HitSound = SoundID.NPCHit1; this.knockBackResist = 0.6f; this.DeathSound = SoundID.NPCDeath1; this.value = 200f; this.noGravity = true; this.buffImmune[20] = true; } else if (this.type == 236) { this.width = 50; this.height = 20; this.aiStyle = 3; this.damage = 50; this.defense = 14; this.lifeMax = 120; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath1; this.knockBackResist = 0.25f; this.value = 1000f; this.timeLeft = NPC.activeTime * 2; this.npcSlots = 0.75f; this.buffImmune[20] = true; } else if (this.type == 237) { this.noGravity = true; this.width = 36; this.height = 36; this.aiStyle = 40; this.damage = 50; this.defense = 14; this.lifeMax = 120; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath1; this.knockBackResist = 0.25f; this.value = 1000f; this.timeLeft = NPC.activeTime * 2; this.npcSlots = 0.75f; this.buffImmune[20] = true; } else if (this.type == 239) { this.width = 50; this.height = 20; this.aiStyle = 3; this.damage = 30; this.defense = 8; this.lifeMax = 60; this.HitSound = SoundID.NPCHit20; this.DeathSound = SoundID.NPCDeath23; this.knockBackResist = 0.5f; this.value = 130f; this.timeLeft = NPC.activeTime * 2; this.buffImmune[20] = true; } else if (this.type == 240) { this.noGravity = true; this.width = 50; this.height = 20; this.aiStyle = 40; this.damage = 30; this.defense = 8; this.lifeMax = 60; this.HitSound = SoundID.NPCHit20; this.DeathSound = SoundID.NPCDeath23; this.knockBackResist = 0.5f; this.value = 130f; this.timeLeft = NPC.activeTime * 2; this.buffImmune[20] = true; } else if (this.type == 241) { this.npcSlots = 0.5f; this.noGravity = true; this.width = 18; this.height = 20; this.aiStyle = 16; this.damage = 30; this.defense = 4; this.lifeMax = 20; this.HitSound = SoundID.NPCHit13; this.DeathSound = SoundID.NPCDeath19; this.value = 350f; } else if (this.type == 242) { this.noGravity = true; this.width = 26; this.height = 26; this.aiStyle = 18; this.damage = 75; this.defense = 20; this.lifeMax = 150; this.HitSound = SoundID.NPCHit13; this.DeathSound = SoundID.NPCDeath19; this.value = 800f; this.alpha = 20; } else if (this.type == 243) { this.width = 30; this.height = 114; this.aiStyle = 3; this.damage = 60; this.defense = 32; this.lifeMax = 4000; this.HitSound = SoundID.NPCHit5; this.DeathSound = SoundID.NPCDeath7; this.knockBackResist = 0.05f; this.value = (float) Item.buyPrice(gold: 1, silver: 50); this.buffImmune[20] = true; this.buffImmune[44] = true; this.coldDamage = true; this.rarity = 2; } else if (this.type == 244) { this.width = 60; this.height = 42; this.aiStyle = 1; this.damage = 85; this.defense = 26; this.lifeMax = 400; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath1; this.alpha = 175; this.value = (float) Item.buyPrice(silver: 20); this.knockBackResist = 0.3f; this.buffImmune[20] = true; this.buffImmune[31] = false; this.rarity = 1; } else if (this.type == 245) { this.width = 140; this.height = 140; this.aiStyle = 45; this.damage = 72; this.defense = 26; this.lifeMax = 9000; this.HitSound = SoundID.NPCHit4; this.DeathSound = SoundID.NPCDeath14; this.knockBackResist = 0.0f; this.value = (float) Item.buyPrice(gold: 15); this.alpha = (int) byte.MaxValue; this.boss = true; this.buffImmune[20] = true; this.buffImmune[24] = true; } else if (this.type == 246) { this.noGravity = true; this.width = 70; this.height = 70; this.aiStyle = 46; this.damage = 64; this.defense = 20; this.lifeMax = 16000; this.HitSound = SoundID.NPCHit4; this.DeathSound = (LegacySoundStyle) null; this.knockBackResist = 0.0f; this.alpha = (int) byte.MaxValue; this.buffImmune[20] = true; this.buffImmune[24] = true; } else if (this.type == 247 || this.type == 248) { this.noGravity = true; this.width = 40; this.height = 30; this.aiStyle = 47; this.damage = 59; this.defense = 28; this.lifeMax = 7000; this.HitSound = SoundID.NPCHit4; this.DeathSound = SoundID.NPCDeath14; this.alpha = (int) byte.MaxValue; this.buffImmune[20] = true; this.buffImmune[24] = true; } else if (this.type == 249) { this.noGravity = true; this.width = 70; this.height = 70; this.aiStyle = 48; this.damage = 80; this.defense = 32; this.lifeMax = 11000; this.HitSound = SoundID.NPCHit4; this.DeathSound = SoundID.NPCDeath14; this.knockBackResist = 0.0f; this.dontTakeDamage = true; this.buffImmune[20] = true; this.buffImmune[24] = true; } else if (this.type == 250) { this.width = 34; this.height = 26; this.aiStyle = 49; this.damage = 50; this.defense = 24; this.lifeMax = 300; this.HitSound = SoundID.NPCHit30; this.DeathSound = SoundID.NPCDeath33; this.knockBackResist = 0.3f; this.value = 300f; this.buffImmune[20] = true; } else if (this.type == 251) { this.width = 18; this.height = 40; this.aiStyle = 3; this.damage = 50; this.defense = 30; this.lifeMax = 1000; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath2; this.knockBackResist = 0.3f; this.value = (float) Item.buyPrice(silver: 50); this.buffImmune[31] = false; } else if (this.type == 252) { this.noGravity = true; this.npcSlots = 0.5f; this.width = 32; this.height = 32; this.aiStyle = 5; this.damage = 80; this.defense = 12; this.lifeMax = 100; this.HitSound = SoundID.NPCHit46; this.knockBackResist = 0.7f; this.DeathSound = SoundID.NPCDeath48; this.value = 500f; this.buffImmune[31] = false; } else if (this.type == 254) { this.width = 18; this.height = 40; this.aiStyle = 3; this.damage = 40; this.defense = 10; this.lifeMax = 180; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath6; this.knockBackResist = 0.4f; this.value = 1000f; this.buffImmune[31] = false; } else if (this.type == (int) byte.MaxValue) { this.width = 18; this.height = 40; this.aiStyle = 3; this.damage = 38; this.defense = 16; this.lifeMax = 220; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath6; this.knockBackResist = 0.3f; this.value = 1200f; this.buffImmune[31] = false; } else if (this.type == 256) { this.noGravity = true; this.width = 26; this.height = 26; this.aiStyle = 18; this.damage = 90; this.defense = 20; this.lifeMax = 140; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath6; this.value = 1200f; this.alpha = 20; this.npcSlots = 0.3f; } else if (this.type == 257) { this.width = 44; this.height = 34; this.aiStyle = 3; this.damage = 38; this.defense = 24; this.lifeMax = 230; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath6; this.knockBackResist = 0.3f; this.value = 1300f; this.buffImmune[31] = false; this.npcSlots = 0.3f; } else if (this.type == 258) { this.width = 30; this.height = 24; this.aiStyle = 3; this.damage = 60; this.defense = 16; this.lifeMax = 220; this.HitSound = SoundID.NPCHit45; this.DeathSound = SoundID.NPCDeath47; this.knockBackResist = 0.3f; this.value = 1500f; this.buffImmune[31] = false; this.npcSlots = 0.3f; } else if (this.type == 259) { this.noGravity = true; this.noTileCollide = true; this.width = 20; this.height = 20; this.aiStyle = 13; this.damage = 24; this.defense = 4; this.lifeMax = 90; this.HitSound = SoundID.NPCHit1; this.knockBackResist = 0.0f; this.DeathSound = SoundID.NPCDeath1; this.value = 350f; this.buffImmune[20] = true; this.npcSlots = 0.3f; } else if (this.type == 260) { this.noGravity = true; this.noTileCollide = true; this.width = 36; this.height = 36; this.aiStyle = 13; this.damage = 70; this.defense = 20; this.lifeMax = 300; this.HitSound = SoundID.NPCHit1; this.knockBackResist = 0.0f; this.DeathSound = SoundID.NPCDeath1; this.value = 1250f; this.buffImmune[20] = true; this.npcSlots = 0.3f; } else if (this.type == 261) { this.width = 12; this.height = 12; this.aiStyle = 50; this.damage = 80; this.defense = 0; this.lifeMax = 1; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath1; this.noGravity = true; this.noTileCollide = true; this.knockBackResist = 0.0f; this.npcSlots = 0.0f; } else if (this.type == 262) { this.noTileCollide = true; this.width = 86; this.height = 86; this.aiStyle = 51; this.damage = 50; this.defense = 14; this.lifeMax = 30000; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath1; this.knockBackResist = 0.0f; this.value = (float) Item.buyPrice(gold: 15); this.noGravity = true; this.boss = true; this.npcSlots = 16f; this.buffImmune[20] = true; } else if (this.type == 263) { this.noTileCollide = true; this.noGravity = true; this.width = 40; this.height = 40; this.aiStyle = 52; this.damage = 60; this.defense = 24; this.lifeMax = 4000; this.dontTakeDamage = true; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath1; this.buffImmune[20] = true; } else if (this.type == 264) { this.width = 24; this.height = 24; this.aiStyle = 53; this.damage = 60; this.defense = 20; this.lifeMax = 1000; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath1; this.noGravity = true; this.noTileCollide = true; this.buffImmune[20] = true; } else if (this.type == 265) { this.width = 18; this.height = 18; this.aiStyle = 50; this.damage = 70; this.defense = 0; this.lifeMax = 1; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath1; this.noGravity = true; this.noTileCollide = true; this.knockBackResist = 0.0f; this.npcSlots = 0.0f; } else if (this.type == 266) { this.dontTakeDamage = true; this.width = 160; this.height = 110; this.aiStyle = 54; this.damage = 30; this.defense = 14; this.lifeMax = 1000; this.HitSound = SoundID.NPCHit9; this.DeathSound = SoundID.NPCDeath11; this.knockBackResist = 0.0f; this.noGravity = true; this.noTileCollide = true; this.timeLeft = NPC.activeTime * 30; this.boss = true; this.value = 50000f; this.npcSlots = 6f; } else if (this.type == 267) { this.width = 30; this.height = 30; this.aiStyle = 55; this.damage = 20; this.defense = 10; this.lifeMax = 100; this.HitSound = SoundID.NPCHit9; this.DeathSound = SoundID.NPCDeath11; this.noGravity = true; this.noTileCollide = true; this.knockBackResist = 0.8f; } else if (this.type == 268) { this.noGravity = true; this.width = 28; this.height = 56; this.aiStyle = 22; this.damage = 55; this.defense = 20; this.lifeMax = 340; this.HitSound = SoundID.NPCHit13; this.DeathSound = SoundID.NPCDeath19; this.knockBackResist = 0.6f; this.value = 450f; this.buffImmune[20] = true; this.buffImmune[31] = false; } else if (this.type == 269) { this.width = 18; this.height = 40; this.aiStyle = 3; this.damage = 70; this.defense = 34; this.lifeMax = 550; this.HitSound = SoundID.NPCHit2; this.DeathSound = SoundID.NPCDeath2; this.knockBackResist = 0.3f; this.value = 1000f; this.buffImmune[20] = true; this.buffImmune[31] = false; } else if (this.type == 270) { this.width = 18; this.height = 40; this.aiStyle = 3; this.damage = 55; this.defense = 50; this.lifeMax = 400; this.HitSound = SoundID.NPCHit2; this.DeathSound = SoundID.NPCDeath2; this.knockBackResist = 0.2f; this.value = 1000f; this.buffImmune[20] = true; this.buffImmune[31] = false; } else if (this.type == 271) { this.width = 18; this.height = 40; this.aiStyle = 3; this.damage = 70; this.defense = 40; this.lifeMax = 450; this.HitSound = SoundID.NPCHit2; this.DeathSound = SoundID.NPCDeath2; this.knockBackResist = 0.25f; this.value = 1000f; this.buffImmune[20] = true; this.buffImmune[31] = false; } else if (this.type == 272) { this.width = 18; this.height = 40; this.aiStyle = 3; this.damage = 75; this.defense = 28; this.lifeMax = 400; this.HitSound = SoundID.NPCHit2; this.DeathSound = SoundID.NPCDeath2; this.knockBackResist = 0.35f; this.value = 1000f; this.buffImmune[20] = true; this.buffImmune[31] = false; } else if (this.type == 273) { this.width = 18; this.height = 40; this.aiStyle = 3; this.damage = 45; this.defense = 50; this.lifeMax = 500; this.HitSound = SoundID.NPCHit2; this.DeathSound = SoundID.NPCDeath2; this.knockBackResist = 0.15f; this.value = 1000f; this.buffImmune[20] = true; this.buffImmune[31] = false; } else if (this.type == 274) { this.width = 18; this.height = 40; this.aiStyle = 3; this.damage = 65; this.defense = 34; this.lifeMax = 350; this.HitSound = SoundID.NPCHit2; this.DeathSound = SoundID.NPCDeath2; this.knockBackResist = 0.4f; this.value = 1000f; this.buffImmune[20] = true; this.buffImmune[31] = false; } else if (this.type == 275) { this.width = 18; this.height = 40; this.aiStyle = 3; this.damage = 45; this.defense = 50; this.lifeMax = 550; this.HitSound = SoundID.NPCHit2; this.DeathSound = SoundID.NPCDeath2; this.knockBackResist = 0.15f; this.value = 1000f; this.buffImmune[20] = true; this.buffImmune[31] = false; } else if (this.type == 276) { this.width = 18; this.height = 40; this.aiStyle = 3; this.damage = 85; this.defense = 54; this.lifeMax = 500; this.HitSound = SoundID.NPCHit2; this.DeathSound = SoundID.NPCDeath2; this.knockBackResist = 0.2f; this.value = 1000f; this.buffImmune[20] = true; this.buffImmune[31] = false; } else if (this.type == 277) { this.width = 18; this.height = 40; this.aiStyle = 3; this.damage = 70; this.defense = 32; this.lifeMax = 400; this.HitSound = SoundID.NPCHit2; this.DeathSound = SoundID.NPCDeath2; this.knockBackResist = 0.4f; this.value = 1000f; this.buffImmune[20] = true; this.buffImmune[24] = true; this.buffImmune[31] = false; } else if (this.type == 278) { this.width = 18; this.height = 40; this.aiStyle = 3; this.damage = 65; this.defense = 48; this.lifeMax = 450; this.HitSound = SoundID.NPCHit2; this.DeathSound = SoundID.NPCDeath2; this.knockBackResist = 0.3f; this.value = 1000f; this.buffImmune[20] = true; this.buffImmune[24] = true; this.buffImmune[31] = false; } else if (this.type == 279) { this.width = 18; this.height = 40; this.aiStyle = 3; this.damage = 40; this.defense = 54; this.lifeMax = 500; this.HitSound = SoundID.NPCHit2; this.DeathSound = SoundID.NPCDeath2; this.knockBackResist = 0.2f; this.value = 1000f; this.buffImmune[20] = true; this.buffImmune[24] = true; this.buffImmune[31] = false; } else if (this.type == 280) { this.width = 18; this.height = 40; this.aiStyle = 3; this.damage = 75; this.defense = 34; this.lifeMax = 500; this.HitSound = SoundID.NPCHit2; this.DeathSound = SoundID.NPCDeath2; this.knockBackResist = 0.4f; this.value = 1000f; this.buffImmune[20] = true; this.buffImmune[24] = true; this.buffImmune[31] = false; } else if (this.type == 281) { this.width = 18; this.height = 40; this.aiStyle = 8; this.damage = 40; this.defense = 20; this.lifeMax = 400; this.HitSound = SoundID.NPCHit2; this.DeathSound = SoundID.NPCDeath2; this.knockBackResist = 0.6f; this.value = 1500f; this.npcSlots = 2f; this.buffImmune[20] = true; } else if (this.type == 282) { this.width = 18; this.height = 40; this.aiStyle = 8; this.damage = 35; this.defense = 28; this.lifeMax = 450; this.HitSound = SoundID.NPCHit2; this.DeathSound = SoundID.NPCDeath2; this.knockBackResist = 0.5f; this.value = 1500f; this.npcSlots = 2f; this.buffImmune[20] = true; } else if (this.type == 283) { this.width = 18; this.height = 40; this.aiStyle = 8; this.damage = 50; this.defense = 18; this.lifeMax = 300; this.HitSound = SoundID.NPCHit2; this.DeathSound = SoundID.NPCDeath2; this.knockBackResist = 0.55f; this.value = 1500f; this.npcSlots = 2f; this.buffImmune[20] = true; } else if (this.type == 284) { this.width = 18; this.height = 40; this.aiStyle = 8; this.damage = 35; this.defense = 24; this.lifeMax = 450; this.HitSound = SoundID.NPCHit2; this.DeathSound = SoundID.NPCDeath2; this.knockBackResist = 0.5f; this.value = 1500f; this.npcSlots = 2f; this.buffImmune[20] = true; } else if (this.type == 285) { this.width = 18; this.height = 40; this.aiStyle = 8; this.damage = 50; this.defense = 12; this.lifeMax = 200; this.HitSound = SoundID.NPCHit2; this.DeathSound = SoundID.NPCDeath2; this.knockBackResist = 0.7f; this.value = 1500f; this.npcSlots = 2f; this.buffImmune[20] = true; } else if (this.type == 286) { this.width = 18; this.height = 40; this.aiStyle = 8; this.damage = 60; this.defense = 10; this.lifeMax = 250; this.HitSound = SoundID.NPCHit2; this.DeathSound = SoundID.NPCDeath2; this.knockBackResist = 0.65f; this.value = 1500f; this.npcSlots = 2f; this.buffImmune[20] = true; } else if (this.type == 287) { this.width = 18; this.height = 40; this.aiStyle = 3; this.damage = 90; this.defense = 42; this.lifeMax = 1000; this.HitSound = SoundID.NPCHit2; this.DeathSound = SoundID.NPCDeath2; this.knockBackResist = 0.3f; this.value = 2000f; this.buffImmune[20] = true; this.buffImmune[31] = false; this.rarity = 1; } else if (this.type == 288) { this.width = 20; this.height = 20; this.aiStyle = 56; this.damage = 70; this.defense = 30; this.lifeMax = 200; this.knockBackResist = 0.2f; this.HitSound = SoundID.NPCHit36; this.DeathSound = SoundID.NPCDeath39; this.value = 500f; this.noTileCollide = true; this.noGravity = true; flag = true; } else if (this.type == 289) { this.width = 44; this.height = 44; this.aiStyle = 10; this.damage = 60; this.defense = 20; this.lifeMax = 400; this.HitSound = SoundID.NPCHit2; this.DeathSound = SoundID.NPCDeath2; this.noGravity = true; this.noTileCollide = true; this.value = 150f; this.knockBackResist = 0.2f; this.npcSlots = 0.75f; this.buffImmune[20] = true; this.buffImmune[24] = true; this.buffImmune[39] = true; } else if (this.type == 290) { this.width = 34; this.height = 62; this.aiStyle = 3; this.damage = 100; this.defense = 50; this.lifeMax = 5000; this.HitSound = SoundID.NPCHit4; this.DeathSound = SoundID.NPCDeath6; this.knockBackResist = 0.0f; this.value = 50000f; this.buffImmune[20] = true; this.buffImmune[31] = true; this.rarity = 1; } else if (this.type == 291) { this.width = 18; this.height = 40; this.aiStyle = 3; this.damage = 60; this.defense = 28; this.lifeMax = 400; this.HitSound = SoundID.NPCHit2; this.DeathSound = SoundID.NPCDeath2; this.knockBackResist = 0.4f; this.value = 1000f; this.buffImmune[20] = true; this.buffImmune[31] = false; this.rarity = 2; } else if (this.type == 292) { this.width = 18; this.height = 40; this.aiStyle = 3; this.damage = 60; this.defense = 28; this.lifeMax = 400; this.HitSound = SoundID.NPCHit2; this.DeathSound = SoundID.NPCDeath2; this.knockBackResist = 0.4f; this.value = 1000f; this.buffImmune[20] = true; this.buffImmune[31] = false; this.rarity = 2; } else if (this.type == 293) { this.width = 18; this.height = 40; this.aiStyle = 3; this.damage = 60; this.defense = 28; this.lifeMax = 400; this.HitSound = SoundID.NPCHit2; this.DeathSound = SoundID.NPCDeath2; this.knockBackResist = 0.4f; this.value = 1000f; this.buffImmune[20] = true; this.buffImmune[31] = false; this.rarity = 2; } else if (this.type == 294) { this.width = 18; this.height = 40; this.aiStyle = 3; this.damage = 34; this.defense = 6; this.lifeMax = 70; this.HitSound = SoundID.NPCHit2; this.DeathSound = SoundID.NPCDeath2; this.knockBackResist = 0.9f; this.value = 130f; this.buffImmune[20] = true; this.buffImmune[31] = false; } else if (this.type == 295) { this.width = 18; this.height = 40; this.aiStyle = 3; this.damage = 28; this.defense = 12; this.lifeMax = 70; this.HitSound = SoundID.NPCHit2; this.DeathSound = SoundID.NPCDeath2; this.knockBackResist = 0.7f; this.value = 130f; this.buffImmune[20] = true; this.buffImmune[31] = false; } else if (this.type == 296) { this.width = 18; this.height = 40; this.aiStyle = 3; this.damage = 24; this.defense = 14; this.lifeMax = 120; this.HitSound = SoundID.NPCHit2; this.DeathSound = SoundID.NPCDeath2; this.knockBackResist = 0.6f; this.value = 130f; this.buffImmune[20] = true; this.buffImmune[31] = false; } else if (this.type == 299) { this.width = 18; this.height = 20; this.aiStyle = 7; this.damage = 0; this.defense = 0; this.lifeMax = 5; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath1; this.catchItem = (short) 2018; } else if (this.type == 300) { this.width = 14; this.height = 12; this.aiStyle = 7; this.damage = 0; this.defense = 0; this.lifeMax = 5; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath4; this.npcSlots = 0.25f; this.catchItem = (short) 2003; } else if (this.type == 301) { this.width = 36; this.height = 26; this.aiStyle = 17; this.damage = 12; this.defense = 2; this.lifeMax = 35; this.HitSound = SoundID.NPCHit1; this.knockBackResist = 0.85f; this.DeathSound = SoundID.NPCDeath1; this.value = 50f; } if (this.type == 302) { this.width = 24; this.height = 18; this.aiStyle = 1; this.damage = 7; this.defense = 2; this.lifeMax = 25; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath1; this.value = 25f; this.buffImmune[20] = true; this.buffImmune[31] = false; } else if (this.type == 304) { this.width = 34; this.height = 28; this.aiStyle = 1; this.damage = 80; this.defense = 20; this.lifeMax = 175; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath1; this.value = 500f; this.scale = 1.1f; this.buffImmune[20] = true; this.buffImmune[31] = false; this.knockBackResist = 0.5f; this.npcSlots = 0.3f; } else if (this.type >= 305 && this.type <= 314) { this.width = 18; this.height = 40; this.aiStyle = 3; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath6; this.value = 1200f; this.buffImmune[31] = false; this.npcSlots = 0.5f; if (this.type == 305 || this.type == 310) { this.damage = 60; this.defense = 18; this.lifeMax = 500; this.knockBackResist = 0.4f; } else if (this.type == 306 || this.type == 311) { this.damage = 52; this.defense = 14; this.lifeMax = 400; this.knockBackResist = 0.2f; this.scale = 1.05f; } else if (this.type == 307 || this.type == 312) { this.damage = 78; this.defense = 16; this.lifeMax = 600; this.knockBackResist = 0.25f; this.scale = 0.9f; } else if (this.type == 308 || this.type == 313) { this.damage = 66; this.defense = 14; this.lifeMax = 650; this.knockBackResist = 0.35f; this.scale = 0.95f; } else if (this.type == 309 || this.type == 314) { this.damage = 52; this.defense = 26; this.lifeMax = 450; this.knockBackResist = 0.5f; this.scale = 1.1f; } } else if (this.type == 315) { this.width = 74; this.height = 70; this.aiStyle = 26; this.damage = 130; this.defense = 40; this.lifeMax = 10000; this.HitSound = SoundID.NPCHit12; this.DeathSound = SoundID.NPCDeath18; this.knockBackResist = 0.0f; this.value = 10000f; flag = true; } else if (this.type == 316) { this.noGravity = true; this.noTileCollide = true; this.width = 24; this.height = 44; this.aiStyle = 22; this.damage = 40; this.defense = 14; this.lifeMax = 100; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath6; this.alpha = 100; this.value = 700f; flag = true; this.knockBackResist = 0.7f; } else if (this.type == 317) { this.width = 30; this.height = 32; this.aiStyle = 2; this.damage = 16; this.defense = 6; this.lifeMax = 75; this.HitSound = SoundID.NPCHit1; this.knockBackResist = 0.7f; this.DeathSound = SoundID.NPCDeath1; this.value = 100f; this.buffImmune[31] = false; } else if (this.type == 318) { this.width = 30; this.height = 32; this.aiStyle = 2; this.damage = 20; this.defense = 4; this.lifeMax = 60; this.HitSound = SoundID.NPCHit1; this.knockBackResist = 0.65f; this.DeathSound = SoundID.NPCDeath1; this.value = 100f; this.buffImmune[31] = false; } else if (this.type == 319) { this.width = 18; this.height = 40; this.aiStyle = 3; this.damage = 20; this.defense = 6; this.lifeMax = 40; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath2; this.knockBackResist = 0.6f; this.value = 85f; this.buffImmune[31] = false; this.scale = 0.9f; } else if (this.type == 320) { this.width = 18; this.height = 40; this.aiStyle = 3; this.damage = 15; this.defense = 8; this.lifeMax = 60; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath2; this.knockBackResist = 0.5f; this.value = 105f; this.buffImmune[31] = false; this.scale = 1.05f; } else if (this.type == 321) { this.width = 18; this.height = 40; this.aiStyle = 3; this.damage = 20; this.defense = 14; this.lifeMax = 34; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath2; this.knockBackResist = 0.3f; this.value = 120f; this.buffImmune[31] = false; this.scale = 1.1f; } else if (this.type == 322) { this.width = 18; this.height = 40; this.aiStyle = 3; this.damage = 23; this.defense = 0; this.lifeMax = 115; this.HitSound = SoundID.NPCHit2; this.DeathSound = SoundID.NPCDeath2; this.knockBackResist = 0.65f; this.value = 130f; this.buffImmune[20] = true; this.buffImmune[31] = false; } else if (this.type == 323) { this.width = 18; this.height = 40; this.aiStyle = 3; this.damage = 18; this.defense = 10; this.lifeMax = 65; this.HitSound = SoundID.NPCHit2; this.DeathSound = SoundID.NPCDeath2; this.knockBackResist = 0.5f; this.value = 120f; this.buffImmune[20] = true; this.buffImmune[31] = false; } else if (this.type == 324) { this.width = 18; this.height = 40; this.aiStyle = 3; this.damage = 22; this.defense = 10; this.lifeMax = 70; this.HitSound = SoundID.NPCHit2; this.DeathSound = SoundID.NPCDeath2; this.knockBackResist = 0.4f; this.value = 130f; this.buffImmune[20] = true; this.buffImmune[31] = false; this.scale = 1.05f; } else if (this.type == 325) { this.width = 164; this.height = 154; this.aiStyle = 57; this.damage = 120; this.defense = 28; this.lifeMax = 12000; this.HitSound = SoundID.NPCHit7; this.DeathSound = SoundID.NPCDeath5; this.knockBackResist = 0.0f; this.value = 10000f; flag = true; } else if (this.type == 326) { this.width = 18; this.height = 40; this.aiStyle = 3; this.damage = 100; this.defense = 32; this.lifeMax = 900; this.HitSound = SoundID.NPCHit7; this.DeathSound = SoundID.NPCDeath6; this.knockBackResist = 0.2f; this.value = 2000f; this.buffImmune[20] = true; this.buffImmune[31] = false; } else if (this.type == 327) { this.width = 100; this.height = 100; this.aiStyle = 58; this.damage = 50; this.defense = 36; this.lifeMax = 22000; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath1; this.noGravity = true; this.noTileCollide = true; this.value = 50000f; this.knockBackResist = 0.0f; flag = true; } else if (this.type == 328) { this.width = 80; this.height = 80; this.aiStyle = 59; this.damage = 65; this.defense = 14; this.lifeMax = 5000; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath1; this.noGravity = true; this.noTileCollide = true; this.knockBackResist = 0.0f; flag = true; this.dontTakeDamage = true; this.npcSlots = 0.0f; } else if (this.type == 329) { this.width = 46; this.height = 30; this.aiStyle = 26; this.damage = 80; this.defense = 38; this.lifeMax = 1200; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath5; this.knockBackResist = 0.3f; this.value = 3000f; flag = true; } else if (this.type == 330) { this.noGravity = true; this.noTileCollide = true; this.width = 24; this.height = 44; this.aiStyle = 22; this.damage = 90; this.defense = 44; this.lifeMax = 2000; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath6; this.alpha = 100; this.value = 4500f; flag = true; this.knockBackResist = 0.4f; } else if (this.type == 331) { this.width = 18; this.height = 40; this.aiStyle = 3; this.damage = 14; this.defense = 6; this.lifeMax = 45; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath2; this.knockBackResist = 0.5f; this.value = 60f; this.buffImmune[31] = false; } else if (this.type == 332) { this.width = 18; this.height = 40; this.aiStyle = 3; this.damage = 14; this.defense = 6; this.lifeMax = 45; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath2; this.knockBackResist = 0.5f; this.value = 60f; this.buffImmune[31] = false; } if (this.type == 333) { this.width = 24; this.height = 18; this.aiStyle = 1; this.damage = 7; this.defense = 2; this.lifeMax = 25; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath1; this.value = 25f; this.buffImmune[20] = true; this.buffImmune[31] = false; } if (this.type == 334) { this.width = 24; this.height = 18; this.aiStyle = 1; this.damage = 6; this.defense = 2; this.lifeMax = 23; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath1; this.scale = 0.9f; this.value = 25f; this.buffImmune[20] = true; this.buffImmune[31] = false; } if (this.type == 335) { this.width = 24; this.height = 18; this.aiStyle = 1; this.damage = 8; this.defense = 3; this.lifeMax = 29; this.scale = 1.05f; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath1; this.value = 25f; this.buffImmune[20] = true; this.buffImmune[31] = false; } if (this.type == 336) { this.width = 24; this.height = 18; this.aiStyle = 1; this.damage = 5; this.defense = 1; this.lifeMax = 22; this.scale = 0.85f; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath1; this.value = 25f; this.buffImmune[20] = true; this.buffImmune[31] = false; } else if (this.type >= 338 && this.type <= 340) { this.width = 18; this.height = 40; this.aiStyle = 3; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath1; this.value = 1200f; this.buffImmune[31] = false; this.npcSlots = 0.5f; if (this.type == 338) { this.damage = 65; this.defense = 18; this.lifeMax = 600; this.knockBackResist = 0.4f; } else if (this.type == 339) { this.damage = 52; this.defense = 24; this.lifeMax = 700; this.knockBackResist = 0.2f; this.scale = 1.05f; } else if (this.type == 340) { this.damage = 78; this.defense = 14; this.lifeMax = 500; this.knockBackResist = 0.25f; this.scale = 0.9f; } } else if (this.type == 341) { this.width = 24; this.height = 24; this.aiStyle = 25; this.damage = 100; this.defense = 32; this.lifeMax = 900; this.HitSound = SoundID.NPCHit4; this.DeathSound = SoundID.NPCDeath6; this.value = (float) Item.buyPrice(silver: 20); this.knockBackResist = 0.25f; this.buffImmune[20] = true; this.buffImmune[24] = true; this.buffImmune[39] = true; } else if (this.type == 342) { this.width = 18; this.height = 40; this.aiStyle = 3; this.damage = 90; this.defense = 26; this.lifeMax = 750; this.HitSound = SoundID.NPCHit7; this.DeathSound = SoundID.NPCDeath6; this.knockBackResist = 0.2f; this.value = 1800f; this.buffImmune[20] = true; this.buffImmune[31] = false; } else if (this.type == 343) { this.width = 38; this.height = 78; this.aiStyle = 3; this.damage = 140; this.defense = 50; this.lifeMax = 3500; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath1; this.knockBackResist = 0.0f; this.value = 3000f; this.buffImmune[31] = false; this.npcSlots = 2f; } else if (this.type == 344) { this.width = 172; this.height = 130; this.aiStyle = 57; this.damage = 110; this.defense = 38; this.lifeMax = 13000; this.HitSound = SoundID.NPCHit7; this.DeathSound = SoundID.NPCDeath5; this.knockBackResist = 0.0f; this.value = 10000f; this.buffImmune[20] = true; this.npcSlots = 3f; } else if (this.type == 345) { this.width = 130; this.height = 140; this.aiStyle = 60; this.damage = 120; this.defense = 38; this.lifeMax = 34000; this.HitSound = SoundID.NPCHit7; this.DeathSound = SoundID.NPCDeath5; this.knockBackResist = 0.0f; this.value = 10000f; this.buffImmune[20] = true; this.noTileCollide = true; this.noGravity = true; this.npcSlots = 5f; this.coldDamage = true; } else if (this.type == 346) { this.width = 112; this.height = 140; this.aiStyle = 61; this.damage = 120; this.defense = 56; this.lifeMax = 18000; this.HitSound = SoundID.NPCHit4; this.DeathSound = SoundID.NPCDeath14; this.knockBackResist = 0.0f; this.value = 10000f; this.buffImmune[20] = true; this.npcSlots = 4f; } else if (this.type == 347) { this.width = 50; this.height = 50; this.aiStyle = 62; this.damage = 60; this.defense = 28; this.lifeMax = 1200; this.HitSound = SoundID.NPCHit4; this.knockBackResist = 0.4f; this.DeathSound = SoundID.NPCDeath14; this.value = 1000f; this.noTileCollide = true; this.noGravity = true; this.npcSlots = 1.5f; } else if (this.type == 348) { this.width = 28; this.height = 76; this.aiStyle = 3; this.damage = 80; this.defense = 26; this.lifeMax = 1800; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath1; this.knockBackResist = 0.4f; this.value = 1500f; this.buffImmune[31] = false; this.npcSlots = 1.5f; } else if (this.type == 349) { this.width = 28; this.height = 76; this.aiStyle = 3; this.damage = 100; this.defense = 42; this.lifeMax = 1800; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath1; this.knockBackResist = 0.1f; this.value = 1500f; this.buffImmune[31] = false; this.npcSlots = 1.5f; } else if (this.type == 350) { this.width = 18; this.height = 40; this.aiStyle = 3; this.damage = 70; this.defense = 30; this.lifeMax = 900; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath1; this.knockBackResist = 0.45f; this.value = 900f; this.buffImmune[20] = true; this.buffImmune[31] = false; } else if (this.type == 351) { this.width = 18; this.height = 90; this.aiStyle = 3; this.damage = 100; this.defense = 40; this.lifeMax = 2500; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath1; this.knockBackResist = 0.1f; this.value = 3000f; this.buffImmune[20] = true; this.buffImmune[31] = false; this.npcSlots = 1.75f; } else if (this.type == 352) { this.width = 54; this.height = 54; this.aiStyle = 63; this.damage = 75; this.defense = 8; this.lifeMax = 450; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath6; this.value = 500f; this.buffImmune[20] = true; this.buffImmune[24] = true; this.buffImmune[39] = true; this.knockBackResist = 0.4f; this.noGravity = true; this.noTileCollide = true; this.npcSlots = 2f; this.coldDamage = true; } else if (this.type == 353) { this.townNPC = true; this.friendly = true; this.width = 18; this.height = 40; this.aiStyle = 7; this.damage = 10; this.defense = 15; this.lifeMax = 250; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath1; this.knockBackResist = 0.5f; } else if (this.type == 354) { this.friendly = true; this.width = 18; this.height = 34; this.aiStyle = 0; this.damage = 10; this.defense = 15; this.lifeMax = 250; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath1; this.knockBackResist = 0.5f; this.scale = 0.9f; this.rarity = 1; } else if (this.type == 355) { this.width = 10; this.height = 10; this.aiStyle = 64; this.damage = 0; this.defense = 0; this.lifeMax = 5; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath1; this.npcSlots = 0.2f; this.noGravity = true; this.catchItem = (short) 1992; } else if (this.type == 356) { this.width = 10; this.height = 10; this.aiStyle = 65; this.damage = 0; this.defense = 0; this.lifeMax = 5; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath1; this.npcSlots = 0.25f; this.noGravity = true; this.catchItem = (short) 1994; } else if (this.type == 357) { this.width = 10; this.height = 4; this.aiStyle = 66; this.damage = 0; this.defense = 0; this.lifeMax = 5; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath1; this.npcSlots = 0.1f; this.catchItem = (short) 2002; this.friendly = true; } else if (this.type == 358) { this.width = 12; this.height = 12; this.aiStyle = 64; this.damage = 0; this.defense = 0; this.lifeMax = 5; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath1; this.npcSlots = 0.2f; this.noGravity = true; this.catchItem = (short) 2004; } else if (this.type == 359) { this.width = 12; this.height = 12; this.aiStyle = 67; this.damage = 0; this.defense = 0; this.lifeMax = 5; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath1; this.npcSlots = 0.5f; this.noGravity = true; this.catchItem = (short) 2006; } else if (this.type == 360) { this.width = 14; this.height = 14; this.aiStyle = 67; this.damage = 0; this.defense = 0; this.lifeMax = 5; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath1; this.npcSlots = 0.5f; this.noGravity = true; this.catchItem = (short) 2007; } else if (this.type == 361) { this.width = 18; this.height = 20; this.aiStyle = 7; this.damage = 0; this.defense = 0; this.lifeMax = 5; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath1; this.catchItem = (short) 2121; } else if (this.type == 362) { this.width = 22; this.height = 26; this.aiStyle = 7; this.damage = 0; this.defense = 0; this.lifeMax = 5; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath1; this.catchItem = (short) 2122; } else if (this.type == 363) { this.width = 28; this.height = 22; this.aiStyle = 68; this.damage = 0; this.defense = 0; this.lifeMax = 5; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath1; this.catchItem = (short) 2122; } else if (this.type == 364) { this.width = 22; this.height = 26; this.aiStyle = 7; this.damage = 0; this.defense = 0; this.lifeMax = 5; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath1; this.catchItem = (short) 2123; } else if (this.type == 365) { this.width = 28; this.height = 22; this.aiStyle = 68; this.damage = 0; this.defense = 0; this.lifeMax = 5; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath1; this.catchItem = (short) 2123; } else if (this.type == 366 || this.type == 367) { this.width = 26; this.height = 18; this.aiStyle = 7; this.damage = 0; this.defense = 0; this.lifeMax = 5; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath1; this.catchItem = (short) (2156 + this.type - 366); } else if (this.type == 368) { this.townNPC = true; this.friendly = true; this.width = 18; this.height = 40; this.aiStyle = 7; this.damage = 10; this.defense = 15; this.lifeMax = 250; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath1; this.knockBackResist = 0.5f; } else if (this.type == 369) { this.townNPC = true; this.friendly = true; this.width = 18; this.height = 40; this.aiStyle = 7; this.damage = 10; this.defense = 15; this.lifeMax = 250; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath6; this.knockBackResist = 0.5f; } else if (this.type == 370) { this.width = 150; this.height = 100; this.aiStyle = 69; this.damage = 100; this.defense = 50; this.lifeMax = 50000; this.knockBackResist = 0.0f; this.noTileCollide = true; this.noGravity = true; this.npcSlots = 10f; this.HitSound = SoundID.NPCHit14; this.DeathSound = SoundID.NPCDeath20; this.value = 10000f; this.boss = true; this.netAlways = true; this.timeLeft = NPC.activeTime * 30; this.buffImmune[20] = true; this.buffImmune[24] = true; this.buffImmune[31] = true; this.buffImmune[44] = true; } else if (this.type == 371) { this.width = 36; this.height = 36; this.aiStyle = 70; this.damage = 100; this.defense = 0; this.lifeMax = 1; this.HitSound = SoundID.NPCHit3; this.DeathSound = SoundID.NPCDeath3; this.noGravity = true; this.noTileCollide = true; this.knockBackResist = 0.0f; this.alpha = (int) byte.MaxValue; } else if (this.type == 372) { this.noGravity = true; this.width = 120; this.height = 24; this.aiStyle = 71; this.damage = 100; this.defense = 100; this.lifeMax = 100; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath1; this.knockBackResist = 0.0f; this.alpha = (int) byte.MaxValue; } else if (this.type == 373) { this.noGravity = true; this.width = 100; this.height = 24; this.aiStyle = 71; this.damage = 120; this.defense = 100; this.lifeMax = 100; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath1; this.knockBackResist = 0.0f; this.alpha = (int) byte.MaxValue; } else if (this.type == 374) { this.width = 20; this.height = 10; this.aiStyle = 66; this.damage = 0; this.defense = 0; this.lifeMax = 5; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath1; this.npcSlots = 0.15f; this.catchItem = (short) 2673; this.rarity = 4; } else if (this.type == 375) { this.width = 10; this.height = 10; this.aiStyle = 6; this.damage = 0; this.defense = 0; this.lifeMax = 5; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath1; this.noGravity = true; this.noTileCollide = true; this.knockBackResist = 0.0f; this.behindTiles = true; this.npcSlots = 0.15f; this.catchItem = (short) 2673; } else if (this.type == 376) { this.friendly = true; this.width = 34; this.height = 8; this.aiStyle = 0; this.damage = 10; this.defense = 15; this.lifeMax = 250; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath6; this.knockBackResist = 0.5f; this.scale = 0.9f; this.rarity = 1; } else if (this.type == 377) { this.width = 14; this.height = 12; this.aiStyle = 1; this.damage = 0; this.defense = 0; this.lifeMax = 5; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath1; this.friendly = true; this.catchItem = (short) 2740; this.npcSlots = 0.1f; } else if (this.type == 378) { this.npcSlots = 1f; this.width = 20; this.height = 26; this.aiStyle = 41; this.damage = 80; this.defense = 30; this.lifeMax = 200; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath1; this.knockBackResist = 0.5f; this.value = 450f; } else if (this.type >= 379 && this.type <= 380) { this.width = 18; this.height = 40; this.aiStyle = 3; this.damage = 45; this.defense = 14; this.lifeMax = 210; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath1; this.knockBackResist = 0.55f; this.value = 1000f; this.npcSlots = 0.0f; this.lavaImmune = true; this.netAlways = true; this.chaseable = false; } else if (this.type >= 381 && this.type <= 382) { this.width = 18; this.height = 40; this.aiStyle = 3; this.damage = 50; this.defense = 25; this.lifeMax = 350; this.HitSound = SoundID.NPCHit2; this.DeathSound = SoundID.NPCDeath2; this.knockBackResist = 0.35f; this.value = 1000f; } else if (this.type == 383) { this.lifeMax = 300; this.defense = 50; this.damage = 75; this.width = 18; this.height = 40; this.aiStyle = 3; this.HitSound = SoundID.NPCHit43; this.DeathSound = SoundID.NPCDeath45; this.value = 1200f; this.knockBackResist = 0.25f; this.buffImmune[31] = false; } else if (this.type == 384) { this.lifeMax = 1000; this.width = 18; this.defense = 20; this.height = 40; this.aiStyle = 72; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath1; flag = true; this.npcSlots = 0.0f; this.noTileCollide = true; this.canGhostHeal = false; } else if (this.type == 385) { this.lifeMax = 750; this.defense = 30; this.damage = 80; this.width = 18; this.height = 40; this.aiStyle = 3; this.HitSound = SoundID.NPCHit43; this.DeathSound = SoundID.NPCDeath45; this.value = 600f; this.knockBackResist = 0.0f; this.npcSlots = 0.75f; } else if (this.type == 386) { this.lifeMax = 400; this.defense = 34; this.damage = 40; this.width = 18; this.height = 40; this.aiStyle = 3; this.HitSound = SoundID.NPCHit43; this.DeathSound = SoundID.NPCDeath45; this.value = 1200f; this.knockBackResist = 0.4f; } else if (this.type == 387) { this.width = 20; this.height = 50; this.aiStyle = 73; this.damage = 10; this.defense = 40; this.lifeMax = 200; this.HitSound = SoundID.NPCHit53; this.DeathSound = SoundID.NPCDeath56; this.knockBackResist = 0.0f; this.buffImmune[31] = true; this.canGhostHeal = false; } else if (this.type == 388) { this.width = 40; this.height = 30; this.aiStyle = 74; this.damage = 60; this.defense = 16; this.lifeMax = 300; this.HitSound = SoundID.NPCHit42; this.knockBackResist = 0.4f; this.DeathSound = SoundID.NPCDeath44; this.value = 1000f; this.noTileCollide = true; this.noGravity = true; this.npcSlots = 1.5f; this.canGhostHeal = false; } else if (this.type == 389) { this.lifeMax = 600; this.defense = 38; this.damage = 75; this.width = 18; this.height = 40; this.aiStyle = 3; this.HitSound = SoundID.NPCHit39; this.DeathSound = SoundID.NPCDeath57; this.value = 1200f; this.npcSlots = 0.5f; this.knockBackResist = 0.3f; } else if (this.type == 390) { this.damage = 65; this.defense = 30; this.lifeMax = 350; this.width = 18; this.height = 40; this.aiStyle = 75; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath1; this.value = 1200f; this.npcSlots = 0.5f; } else if (this.type == 391) { this.lifeMax = 600; this.defense = 30; this.damage = 85; this.width = 60; this.height = 40; this.aiStyle = 3; this.HitSound = SoundID.NPCHit51; this.DeathSound = SoundID.NPCDeath54; this.value = 1200f; this.npcSlots = 0.5f; this.knockBackResist = 0.1f; } else if (this.type == 392) { this.lifeMax = 100; this.defense = 100; this.damage = 50; this.width = 150; this.height = 80; this.aiStyle = 75; this.HitSound = SoundID.NPCHit4; this.DeathSound = SoundID.NPCDeath14; this.value = 0.0f; this.npcSlots = 0.0f; this.knockBackResist = 0.0f; this.noGravity = true; this.noTileCollide = true; this.dontTakeDamage = true; flag = true; this.netAlways = true; } else if (this.type == 393) { this.lifeMax = 5000; this.defense = 20; this.damage = 60; this.width = 40; this.height = 16; this.aiStyle = 75; this.HitSound = SoundID.NPCHit4; this.DeathSound = SoundID.NPCDeath14; this.value = 0.0f; this.npcSlots = 1f; this.knockBackResist = 0.0f; this.noGravity = true; this.noTileCollide = true; flag = true; this.netAlways = true; } else if (this.type == 394) { this.lifeMax = 3500; this.defense = 20; this.damage = 60; this.width = 46; this.height = 36; this.aiStyle = 75; this.HitSound = SoundID.NPCHit4; this.DeathSound = SoundID.NPCDeath14; this.value = 0.0f; this.npcSlots = 1f; this.knockBackResist = 0.0f; this.noGravity = true; this.noTileCollide = true; flag = true; this.netAlways = true; } else if (this.type == 395) { this.lifeMax = 10000; this.defense = 0; this.damage = 80; this.width = 46; this.height = 36; this.aiStyle = 76; this.HitSound = SoundID.NPCHit4; this.DeathSound = SoundID.NPCDeath14; this.value = 0.0f; this.npcSlots = 6f; this.knockBackResist = 0.0f; this.noGravity = true; this.noTileCollide = true; this.dontTakeDamage = true; this.boss = true; flag = true; this.netAlways = true; } else if (this.type == 399) { this.defense = 5; this.damage = 5; this.lifeMax = 500; this.aiStyle = 80; this.width = 42; this.height = 72; this.value = 0.0f; this.knockBackResist = 0.0f; this.HitSound = SoundID.NPCHit4; this.DeathSound = SoundID.NPCDeath14; this.npcSlots = 0.0f; this.noGravity = true; this.timeLeft = NPC.activeTime * 30; this.chaseable = false; this.netAlways = true; this.rarity = 1; } else if (this.type == 396) { this.lifeMax = 45000; this.defense = 50; this.damage = 0; this.width = 38; this.height = 56; this.aiStyle = 79; this.HitSound = SoundID.NPCHit57; this.DeathSound = SoundID.NPCDeath62; this.value = 0.0f; this.npcSlots = 6f; this.knockBackResist = 0.0f; this.noGravity = true; this.noTileCollide = true; this.boss = true; this.hide = true; this.netAlways = true; } else if (this.type == 397) { this.lifeMax = 25000; this.defense = 40; this.damage = 0; this.width = 46; this.height = 66; this.aiStyle = 78; this.HitSound = SoundID.NPCHit57; this.DeathSound = SoundID.NPCDeath62; this.value = 0.0f; this.npcSlots = 6f; this.knockBackResist = 0.0f; this.noGravity = true; this.noTileCollide = true; this.boss = true; this.hide = true; this.netAlways = true; } else if (this.type == 398) { this.lifeMax = 50000; this.defense = 70; this.damage = 0; this.width = 46; this.height = 66; this.aiStyle = 77; this.HitSound = SoundID.NPCHit57; this.DeathSound = (LegacySoundStyle) null; this.value = 0.0f; this.npcSlots = 6f; this.knockBackResist = 0.0f; this.noGravity = true; this.noTileCollide = true; this.dontTakeDamage = true; this.boss = true; this.behindTiles = true; this.hide = true; this.netAlways = true; } else if (this.type == 400) { this.defense = 0; this.damage = 60; this.lifeMax = 100; this.aiStyle = 81; this.width = 60; this.height = 60; this.value = 0.0f; this.knockBackResist = 0.0f; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath1; this.npcSlots = 0.0f; this.noGravity = true; this.dontTakeDamage = true; this.noTileCollide = true; this.netAlways = true; } else if (this.type == 401) { this.lifeMax = 400; this.defense = 0; this.damage = 0; this.width = 30; this.height = 30; this.aiStyle = 82; this.HitSound = SoundID.NPCHit57; this.DeathSound = SoundID.NPCDeath62; this.value = 0.0f; this.npcSlots = 0.0f; this.knockBackResist = 0.0f; this.noGravity = true; this.noTileCollide = true; this.hide = true; } else if (this.type == 437) { this.lifeMax = 400; this.defense = 0; this.damage = 0; this.width = 54; this.height = 54; this.aiStyle = 83; this.HitSound = SoundID.NPCHit4; this.DeathSound = SoundID.NPCDeath14; this.value = 0.0f; this.npcSlots = 0.0f; this.knockBackResist = 0.0f; this.noGravity = true; this.noTileCollide = true; this.dontTakeDamage = true; this.netAlways = true; } else if (this.type == 438) { this.lifeMax = 400; this.defense = 0; this.damage = 0; this.width = 22; this.height = 40; this.aiStyle = 83; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath1; this.value = 0.0f; this.npcSlots = 0.0f; this.knockBackResist = 0.0f; this.lavaImmune = true; this.netAlways = true; this.chaseable = false; } else if (this.type == 439) { this.width = 24; this.height = 50; this.aiStyle = 84; this.damage = 50; this.defense = 42; this.lifeMax = 32000; this.knockBackResist = 0.0f; this.noTileCollide = true; this.noGravity = true; this.npcSlots = 10f; this.HitSound = SoundID.NPCHit55; this.DeathSound = SoundID.NPCDeath59; this.value = 10000f; this.boss = true; this.netAlways = true; this.timeLeft = NPC.activeTime * 30; flag = true; } else if (this.type == 440) { this.width = 24; this.height = 50; this.aiStyle = 84; this.damage = 0; this.defense = 35; this.lifeMax = 10000; this.knockBackResist = 0.0f; this.noTileCollide = true; this.noGravity = true; this.npcSlots = 0.0f; this.HitSound = SoundID.NPCHit2; this.DeathSound = SoundID.NPCDeath2; this.netAlways = true; this.timeLeft = NPC.activeTime * 30; flag = true; this.chaseable = false; } else if (this.type == 442) { this.width = 14; this.height = 14; this.aiStyle = 24; this.damage = 0; this.defense = 0; this.lifeMax = 5; this.HitSound = SoundID.NPCHit1; this.knockBackResist = 0.8f; this.DeathSound = SoundID.NPCDeath1; this.catchItem = (short) 2889; this.npcSlots = 0.4f; this.rarity = 3; } else if (this.type == 443) { this.width = 18; this.height = 20; this.aiStyle = 7; this.damage = 0; this.defense = 0; this.lifeMax = 5; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath1; this.catchItem = (short) 2890; this.rarity = 3; } else if (this.type == 444) { this.width = 10; this.height = 10; this.aiStyle = 65; this.damage = 0; this.defense = 0; this.lifeMax = 5; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath1; this.npcSlots = 0.25f; this.noGravity = true; this.catchItem = (short) 2891; this.rarity = 3; } else if (this.type == 445) { this.width = 18; this.height = 20; this.aiStyle = 7; this.damage = 0; this.defense = 0; this.lifeMax = 5; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath1; this.catchItem = (short) 2892; this.rarity = 3; } else if (this.type == 446) { this.width = 14; this.height = 12; this.aiStyle = 1; this.damage = 0; this.defense = 0; this.lifeMax = 5; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath1; this.friendly = true; this.catchItem = (short) 2893; this.npcSlots = 0.1f; this.rarity = 3; } else if (this.type == 447) { this.width = 14; this.height = 12; this.aiStyle = 7; this.damage = 0; this.defense = 0; this.lifeMax = 5; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath4; this.npcSlots = 0.25f; this.catchItem = (short) 2894; this.rarity = 3; } else if (this.type == 448) { this.width = 10; this.height = 4; this.aiStyle = 66; this.damage = 0; this.defense = 0; this.lifeMax = 5; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath1; this.npcSlots = 0.1f; this.catchItem = (short) 2895; this.friendly = true; this.rarity = 3; } else if (this.type == 449) { this.width = 18; this.height = 40; this.aiStyle = 3; this.damage = 20; this.defense = 8; this.lifeMax = 60; this.HitSound = SoundID.NPCHit2; this.DeathSound = SoundID.NPCDeath2; this.knockBackResist = 0.5f; this.value = 100f; this.buffImmune[20] = true; this.buffImmune[31] = false; } else if (this.type == 450) { this.width = 18; this.height = 40; this.aiStyle = 3; this.damage = 20; this.defense = 12; this.lifeMax = 55; this.HitSound = SoundID.NPCHit2; this.DeathSound = SoundID.NPCDeath2; this.knockBackResist = 0.5f; this.value = 130f; this.buffImmune[20] = true; this.buffImmune[31] = false; } else if (this.type == 451) { this.width = 18; this.height = 40; this.aiStyle = 3; this.damage = 18; this.defense = 8; this.lifeMax = 65; this.HitSound = SoundID.NPCHit2; this.DeathSound = SoundID.NPCDeath2; this.knockBackResist = 0.5f; this.value = 120f; this.buffImmune[20] = true; this.buffImmune[31] = false; } else if (this.type == 452) { this.width = 18; this.height = 40; this.aiStyle = 3; this.damage = 22; this.defense = 8; this.lifeMax = 60; this.HitSound = SoundID.NPCHit2; this.DeathSound = SoundID.NPCDeath2; this.knockBackResist = 0.5f; this.value = 110f; this.buffImmune[20] = true; this.buffImmune[31] = false; } else if (this.type == 453) { this.friendly = true; this.width = 18; this.height = 40; this.aiStyle = 7; this.damage = 10; this.defense = 30; this.lifeMax = 250; this.HitSound = SoundID.NPCHit2; this.DeathSound = SoundID.NPCDeath2; this.knockBackResist = 0.5f; this.npcSlots = 7f; } else if (this.type == 454) { this.noTileCollide = true; this.npcSlots = 5f; this.width = 32; this.height = 32; this.aiStyle = 6; this.netAlways = true; this.damage = 80; this.defense = 10; this.lifeMax = 4000; this.HitSound = SoundID.NPCHit56; this.DeathSound = SoundID.NPCDeath60; this.noGravity = true; this.knockBackResist = 0.0f; this.value = 0.0f; this.scale = 1f; flag = true; this.alpha = (int) byte.MaxValue; } else if (this.type == 459) { this.noTileCollide = true; this.width = 32; this.height = 32; this.aiStyle = 6; this.netAlways = true; this.damage = 40; this.defense = 20; this.lifeMax = 4000; this.HitSound = SoundID.NPCHit56; this.DeathSound = SoundID.NPCDeath60; this.noGravity = true; this.knockBackResist = 0.0f; this.value = 0.0f; this.scale = 1f; flag = true; this.alpha = (int) byte.MaxValue; this.dontCountMe = true; } else if (this.type == 455 || this.type == 456 || this.type == 457 || this.type == 458) { this.noTileCollide = true; this.width = 32; this.height = 32; this.aiStyle = 6; this.netAlways = true; this.damage = 40; this.defense = 20; this.lifeMax = 4000; this.HitSound = SoundID.NPCHit56; this.DeathSound = SoundID.NPCDeath60; this.noGravity = true; this.knockBackResist = 0.0f; this.value = 0.0f; this.scale = 1f; flag = true; this.alpha = (int) byte.MaxValue; this.dontCountMe = true; } else if (this.type == 464) { this.width = 18; this.height = 20; this.aiStyle = 3; this.damage = 21; this.defense = 5; this.lifeMax = 75; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath1; this.value = 500f; this.buffImmune[31] = false; } else if (this.type == 465) { this.noGravity = true; this.width = 18; this.height = 20; this.aiStyle = 16; this.damage = 31; this.defense = 7; this.lifeMax = 110; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath1; this.value = 500f; } else if (this.type == 470) { this.width = 16; this.height = 34; this.aiStyle = 3; this.damage = 21; this.defense = 5; this.lifeMax = 75; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath1; this.value = 500f; this.buffImmune[31] = false; } else if (this.type == 473 || this.type == 474 || this.type == 475 || this.type == 476) { this.width = 28; this.height = 44; this.aiStyle = 87; this.damage = 90; this.defense = 34; this.lifeMax = 3500; this.HitSound = SoundID.NPCHit4; this.DeathSound = SoundID.NPCDeath6; this.value = 30000f; this.knockBackResist = 0.1f; this.buffImmune[20] = true; this.buffImmune[24] = true; this.buffImmune[39] = true; this.rarity = 2; } else if (this.type == 480) { this.width = 18; this.height = 40; this.aiStyle = 3; this.damage = 30; this.defense = 20; this.lifeMax = 400; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath1; this.knockBackResist = 0.15f; this.value = 1000f; } else if (this.type == 481) { this.width = 18; this.height = 40; this.aiStyle = 3; this.damage = 22; this.defense = 10; this.lifeMax = 70; this.HitSound = SoundID.NPCHit2; this.DeathSound = SoundID.NPCDeath2; this.knockBackResist = 0.4f; this.value = 300f; this.buffImmune[31] = false; this.buffImmune[20] = true; } else if (this.type == 482) { this.width = 28; this.height = 48; this.aiStyle = 3; this.damage = 30; this.defense = 18; this.lifeMax = 110; this.HitSound = SoundID.NPCHit41; this.DeathSound = SoundID.NPCDeath44; this.knockBackResist = 0.35f; this.value = 500f; this.buffImmune[20] = true; this.buffImmune[24] = true; } else if (this.type == 483) { this.npcSlots = 0.5f; this.width = 20; this.height = 30; this.aiStyle = 91; this.damage = 24; this.defense = 8; this.lifeMax = 40; this.HitSound = SoundID.NPCHit7; this.knockBackResist = 0.6f; this.DeathSound = SoundID.NPCDeath6; this.value = 1000f; this.buffImmune[20] = true; this.buffImmune[24] = true; } else if (this.type >= 484 && this.type <= 487) { this.width = 10; this.height = 4; this.aiStyle = 66; this.damage = 0; this.defense = 0; this.lifeMax = 5; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath1; this.npcSlots = 0.1f; this.catchItem = (short) (3191 + this.type - 484); this.friendly = true; } else if (this.type == 488) { this.width = 18; this.height = 40; this.aiStyle = 92; this.damage = 0; this.defense = 0; this.lifeMax = 1000; this.HitSound = SoundID.NPCHit15; this.DeathSound = SoundID.NPCDeath2; this.knockBackResist = 0.0f; this.value = 0.0f; this.immortal = true; this.netAlways = true; } else if (this.type == 489) { this.width = 18; this.height = 40; this.aiStyle = 3; this.damage = 20; this.defense = 8; this.lifeMax = 75; this.HitSound = SoundID.NPCHit18; this.DeathSound = SoundID.NPCDeath21; this.knockBackResist = 0.4f; this.value = 150f; this.buffImmune[31] = false; } else if (this.type == 490) { this.noGravity = true; this.width = 28; this.height = 30; this.aiStyle = 22; this.damage = 28; this.defense = 14; this.lifeMax = 50; this.HitSound = SoundID.NPCHit19; this.knockBackResist = 0.6f; this.DeathSound = SoundID.NPCDeath22; this.value = 150f; this.buffImmune[31] = false; } else if (this.type == 491) { this.noGravity = true; this.width = 350; this.height = 120; this.aiStyle = 93; this.damage = 0; this.defense = 100; this.lifeMax = 50; this.HitSound = SoundID.NPCHit19; this.knockBackResist = 0.0f; this.DeathSound = SoundID.NPCDeath22; this.value = 0.0f; flag = true; this.dontTakeDamage = true; this.netAlways = true; } else if (this.type == 492) { this.lifeMax = 2000; this.defense = 20; this.damage = 30; this.width = 30; this.height = 30; this.aiStyle = 75; this.HitSound = SoundID.NPCHit4; this.DeathSound = SoundID.NPCDeath14; this.value = 0.0f; this.npcSlots = 1f; this.knockBackResist = 0.0f; this.noGravity = true; this.noTileCollide = true; flag = true; this.hide = true; this.netAlways = true; } else if (this.type >= 494 && this.type <= 495) { this.width = 28; this.height = 22; this.aiStyle = 3; this.damage = 28; this.defense = 6; this.lifeMax = 50; this.HitSound = SoundID.NPCHit33; this.DeathSound = SoundID.NPCDeath36; this.value = 120f; } else if (this.type >= 496 && this.type <= 497) { this.width = 28; this.height = 22; this.aiStyle = 39; this.damage = 16; this.defense = 12; this.lifeMax = 50; this.HitSound = SoundID.NPCHit38; this.DeathSound = SoundID.NPCDeath41; this.knockBackResist = 0.75f; this.value = 120f; } else if (this.type >= 498 && this.type <= 506) { this.width = 24; this.height = 44; this.aiStyle = 3; this.damage = 18; this.defense = 10; this.lifeMax = 65; this.HitSound = SoundID.NPCHit50; this.DeathSound = SoundID.NPCDeath53; this.knockBackResist = 0.45f; this.value = 120f; this.buffImmune[31] = false; } else if (this.type == 441) { this.townNPC = true; this.friendly = true; this.width = 18; this.height = 40; this.aiStyle = 7; this.damage = 10; this.defense = 15; this.lifeMax = 250; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath1; this.knockBackResist = 0.5f; } else if (this.type == 513) { this.npcSlots = 4f; this.width = 22; this.height = 22; this.aiStyle = 6; this.damage = 34; this.defense = 0; this.lifeMax = 80; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath1; this.noGravity = true; this.noTileCollide = true; this.knockBackResist = 0.0f; this.behindTiles = true; this.value = 140f; } else if (this.type == 514) { this.width = 22; this.height = 22; this.aiStyle = 6; this.netAlways = true; this.damage = 18; this.defense = 12; this.lifeMax = 80; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath1; this.noGravity = true; this.noTileCollide = true; this.knockBackResist = 0.0f; this.behindTiles = true; this.value = 140f; this.dontCountMe = true; this.npcSlots = 0.0f; } else if (this.type == 515) { this.width = 22; this.height = 22; this.aiStyle = 6; this.netAlways = true; this.damage = 16; this.defense = 20; this.lifeMax = 80; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath1; this.noGravity = true; this.noTileCollide = true; this.knockBackResist = 0.0f; this.behindTiles = true; this.value = 140f; this.dontCountMe = true; this.npcSlots = 0.0f; } else if (this.type == 510) { this.npcSlots = 5f; this.width = 34; this.height = 34; this.aiStyle = 6; this.damage = 58; this.defense = 18; this.lifeMax = 500; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath1; this.noGravity = true; this.noTileCollide = true; this.knockBackResist = 0.0f; this.behindTiles = true; this.value = 700f; } else if (this.type == 511) { this.width = 34; this.height = 34; this.aiStyle = 6; this.netAlways = true; this.damage = 54; this.defense = 28; this.lifeMax = 500; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath1; this.noGravity = true; this.noTileCollide = true; this.knockBackResist = 0.0f; this.behindTiles = true; this.value = 700f; this.dontCountMe = true; this.npcSlots = 0.0f; } else if (this.type == 512) { this.width = 34; this.height = 34; this.aiStyle = 6; this.netAlways = true; this.damage = 50; this.defense = 34; this.lifeMax = 500; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath1; this.noGravity = true; this.noTileCollide = true; this.knockBackResist = 0.0f; this.behindTiles = true; this.value = 700f; this.dontCountMe = true; this.npcSlots = 0.0f; } else if (this.type == 508) { this.width = 33; this.height = 31; this.aiStyle = 3; this.damage = 24; this.defense = 16; this.lifeMax = 70; this.HitSound = SoundID.NPCHit31; this.DeathSound = SoundID.NPCDeath34; this.knockBackResist = 0.2f; this.value = 80f; this.buffImmune[31] = false; this.npcSlots = 0.8f; } else if (this.type == 509) { this.width = 40; this.height = 31; this.aiStyle = 44; this.damage = 30; this.defense = 12; this.lifeMax = 50; this.knockBackResist = 0.6f; this.HitSound = SoundID.NPCHit32; this.DeathSound = SoundID.NPCDeath35; this.value = 90f; this.buffImmune[31] = false; this.npcSlots = 0.8f; } else if (this.type >= 524 && this.type <= 527) { this.width = 24; this.height = 44; this.aiStyle = 3; this.damage = 50; this.defense = 26; this.lifeMax = 180; this.HitSound = SoundID.NPCHit37; this.DeathSound = SoundID.NPCDeath40; this.knockBackResist = 0.6f; this.value = 500f; this.buffImmune[31] = false; this.npcSlots = 0.5f; switch (this.type) { case 525: this.lifeMax += 70; this.defense += 4; this.damage += 10; this.knockBackResist -= 0.1f; this.value += 150f; break; case 526: this.lifeMax += 40; this.defense += 6; this.damage += 14; this.knockBackResist -= 0.1f; this.value += 150f; break; case 527: this.lifeMax += 120; this.defense += 6; this.damage += 4; this.knockBackResist -= 0.2f; this.value += 250f; break; } } else if (this.type >= 528 && this.type <= 529) { this.width = 24; this.height = 44; this.aiStyle = 3; this.damage = 52; this.defense = 28; this.lifeMax = 350; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath1; this.knockBackResist = 0.35f; this.value = 600f; this.buffImmune[31] = false; } else if (this.type == 530) { this.width = 50; this.height = 20; this.aiStyle = 3; this.damage = 66; this.defense = 24; this.lifeMax = 320; this.HitSound = SoundID.NPCHit13; this.DeathSound = SoundID.NPCDeath19; this.knockBackResist = 0.5f; this.value = 600f; this.timeLeft = NPC.activeTime * 2; this.buffImmune[20] = true; this.buffImmune[70] = true; } else if (this.type == 531) { this.noGravity = true; this.width = 36; this.height = 36; this.aiStyle = 40; this.damage = 66; this.defense = 24; this.lifeMax = 320; this.HitSound = SoundID.NPCHit13; this.DeathSound = SoundID.NPCDeath19; this.knockBackResist = 0.5f; this.value = 600f; this.timeLeft = NPC.activeTime * 2; this.buffImmune[20] = true; this.buffImmune[70] = true; } else if (this.type == 532) { this.width = 32; this.height = 31; this.aiStyle = 3; this.damage = 65; this.defense = 34; this.lifeMax = 270; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath1; this.knockBackResist = 0.3f; this.value = 800f; this.buffImmune[31] = false; this.npcSlots = 0.75f; } else if (this.type == 533) { this.width = 28; this.height = 62; this.aiStyle = 8; this.damage = 40; this.defense = 20; this.lifeMax = 220; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath6; this.knockBackResist = 0.0f; this.value = 1200f; this.npcSlots = 2f; flag = true; } else if (this.type == 493) { this.lifeMax = 20000; this.defense = 20; this.damage = 0; this.width = 130; this.height = 270; this.aiStyle = 94; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath1; this.value = 0.0f; this.knockBackResist = 0.0f; this.noGravity = true; this.noTileCollide = true; flag = true; this.npcSlots = 0.0f; } else if (this.type == 402) { this.noTileCollide = true; this.npcSlots = 1f; this.width = 32; this.height = 32; this.aiStyle = 6; this.netAlways = true; this.damage = 80; this.defense = 10; this.lifeMax = 1200; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath1; this.noGravity = true; this.knockBackResist = 0.0f; this.value = 0.0f; this.scale = 1f; flag = true; } else if (this.type == 405) { this.width = 44; this.height = 44; this.aiStyle = 85; this.damage = 120; this.defense = 50; this.lifeMax = 300; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath1; this.knockBackResist = 0.5f; this.noGravity = true; this.buffImmune[31] = true; this.npcSlots = 2f; } else if (this.type == 406) { this.width = 22; this.height = 22; this.aiStyle = 95; this.damage = 70; this.defense = 0; this.lifeMax = 300; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath1; this.knockBackResist = 0.4f; this.noGravity = true; this.buffImmune[31] = true; } else if (this.type == 411) { this.width = 22; this.height = 56; this.aiStyle = 3; this.damage = 80; this.defense = 34; this.lifeMax = 700; this.HitSound = SoundID.NPCHit6; this.DeathSound = SoundID.NPCDeath1; this.knockBackResist = 0.4f; this.buffImmune[31] = false; } else if (this.type == 409) { this.width = 34; this.height = 42; this.aiStyle = 3; this.damage = 70; this.defense = 40; this.lifeMax = 800; this.HitSound = SoundID.NPCHit6; this.DeathSound = SoundID.NPCDeath1; this.knockBackResist = 0.4f; this.buffImmune[31] = false; this.npcSlots = 3f; } else if (this.type == 410) { this.width = 22; this.height = 22; this.aiStyle = 26; this.damage = 80; this.defense = 10; this.lifeMax = 200; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath5; this.knockBackResist = 0.3f; this.buffImmune[31] = false; this.npcSlots = 0.5f; } else if (this.type == 407) { this.width = 40; this.height = 60; this.aiStyle = 96; this.damage = 70; this.defense = 38; this.lifeMax = 1500; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath1; this.noGravity = true; this.knockBackResist = 0.03f; this.buffImmune[31] = true; this.npcSlots = 3f; } else if (this.type == 507) { this.lifeMax = 20000; this.defense = 20; this.damage = 0; this.width = 130; this.height = 270; this.aiStyle = 94; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath1; this.value = 0.0f; this.knockBackResist = 0.0f; this.noGravity = true; this.noTileCollide = true; flag = true; this.npcSlots = 0.0f; } else if (this.type == 423) { this.width = 50; this.height = 44; this.aiStyle = 26; this.damage = 90; this.defense = 46; this.lifeMax = 850; this.HitSound = SoundID.NPCHit6; this.DeathSound = SoundID.NPCDeath1; this.knockBackResist = 0.2f; flag = true; this.npcSlots = 1f; } else if (this.type == 421) { this.width = 44; this.height = 44; this.aiStyle = 85; this.damage = 70; this.defense = 34; this.lifeMax = 330; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath1; this.knockBackResist = 0.5f; this.noGravity = true; this.buffImmune[31] = true; this.npcSlots = 1f; } else if (this.type == 424) { this.width = 22; this.height = 56; this.aiStyle = 3; this.damage = 80; this.defense = 30; this.lifeMax = 700; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath5; this.knockBackResist = 0.6f; this.buffImmune[31] = false; this.npcSlots = 2f; } else if (this.type == 420) { this.width = 40; this.height = 40; this.aiStyle = 97; this.damage = 75; this.defense = 20; this.lifeMax = 1300; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath1; this.knockBackResist = 0.5f; this.noTileCollide = true; this.noGravity = true; this.npcSlots = 3f; } else if (this.type == 422) { this.lifeMax = 20000; this.defense = 20; this.damage = 0; this.width = 130; this.height = 270; this.aiStyle = 94; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath1; this.value = 0.0f; this.knockBackResist = 0.0f; this.noGravity = true; this.noTileCollide = true; flag = true; this.npcSlots = 0.0f; } else if (this.type == 425) { this.width = 30; this.height = 56; this.aiStyle = 3; this.damage = 100; this.defense = 40; this.lifeMax = 800; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath6; this.knockBackResist = 0.4f; this.buffImmune[31] = false; } else if (this.type == 429) { this.width = 22; this.height = 56; this.aiStyle = 3; this.damage = 90; this.defense = 34; this.lifeMax = 700; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath5; this.knockBackResist = 0.6f; this.buffImmune[31] = false; this.npcSlots = 2f; } else if (this.type == 428) { this.width = 24; this.height = 26; this.aiStyle = 3; this.damage = 50; this.defense = 6; this.lifeMax = 200; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath1; } else if (this.type == 427) { this.width = 40; this.height = 28; this.aiStyle = 3; this.damage = 75; this.defense = 20; this.lifeMax = 500; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath6; this.knockBackResist = 0.5f; this.buffImmune[31] = false; this.npcSlots = 0.5f; } else if (this.type == 426) { this.width = 50; this.height = 62; this.aiStyle = 3; this.damage = 100; this.defense = 44; this.lifeMax = 1000; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath6; this.knockBackResist = 0.3f; this.buffImmune[31] = false; } else if (this.type == 517) { this.lifeMax = 20000; this.defense = 20; this.damage = 0; this.width = 130; this.height = 270; this.aiStyle = 94; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath1; this.value = 0.0f; this.knockBackResist = 0.0f; this.noGravity = true; this.noTileCollide = true; flag = true; this.npcSlots = 0.0f; } else if (this.type == 412) { this.width = 20; this.height = 20; this.aiStyle = 6; this.netAlways = true; this.damage = 150; this.defense = 1000; this.lifeMax = 10000; this.HitSound = SoundID.NPCHit11; this.DeathSound = SoundID.NPCDeath22; this.noGravity = true; this.noTileCollide = true; this.knockBackResist = 0.0f; this.dontTakeDamage = true; this.npcSlots = 2f; } else if (this.type == 413) { this.width = 20; this.height = 20; this.aiStyle = 6; this.netAlways = true; this.damage = 100; this.defense = 1000; this.lifeMax = 10000; this.HitSound = SoundID.NPCHit11; this.DeathSound = SoundID.NPCDeath22; this.noGravity = true; this.noTileCollide = true; this.knockBackResist = 0.0f; this.dontCountMe = true; this.dontTakeDamage = true; this.npcSlots = 0.0f; } else if (this.type == 414) { this.width = 20; this.height = 20; this.aiStyle = 6; this.netAlways = true; this.damage = 50; this.defense = 0; this.lifeMax = 10000; this.HitSound = SoundID.NPCHit8; this.DeathSound = SoundID.NPCDeath22; this.noGravity = true; this.noTileCollide = true; this.knockBackResist = 0.0f; this.dontCountMe = true; this.takenDamageMultiplier = 10f; this.npcSlots = 0.0f; } else if (this.type == 415) { this.lifeMax = 800; this.defense = 32; this.damage = 55; this.width = 60; this.height = 40; this.aiStyle = 3; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath1; this.knockBackResist = 0.2f; } else if (this.type == 416) { this.damage = 80; this.defense = 28; this.lifeMax = 800; this.width = 18; this.height = 40; this.aiStyle = 75; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath1; this.knockBackResist = 0.2f; } else if (this.type == 518) { this.lifeMax = 1000; this.defense = 28; this.damage = 80; this.width = 22; this.height = 56; this.aiStyle = 3; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath1; this.knockBackResist = 0.4f; } else if (this.type == 417) { this.npcSlots = 2f; this.width = 46; this.height = 32; this.aiStyle = 39; this.damage = 80; this.defense = 34; this.lifeMax = 700; this.HitSound = SoundID.NPCHit7; this.knockBackResist = 0.0f; this.DeathSound = SoundID.NPCDeath5; } else if (this.type == 418) { this.width = 38; this.height = 38; this.aiStyle = 74; this.damage = 70; this.defense = 26; this.lifeMax = 600; this.HitSound = SoundID.NPCHit3; this.DeathSound = SoundID.NPCDeath3; this.noGravity = true; this.noTileCollide = true; this.knockBackResist = 0.2f; this.buffImmune[20] = true; this.buffImmune[24] = true; this.buffImmune[39] = true; } else if (this.type == 419) { this.lifeMax = 800; this.defense = 30; this.damage = 90; this.width = 22; this.height = 56; this.aiStyle = 3; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath1; this.knockBackResist = 0.4f; } else if (this.type == 516) { this.width = 26; this.height = 26; this.aiStyle = 9; this.damage = 100; this.defense = 0; this.lifeMax = 1; this.HitSound = (LegacySoundStyle) null; this.DeathSound = (LegacySoundStyle) null; this.noGravity = true; this.noTileCollide = false; this.alpha = 0; this.knockBackResist = 0.0f; } else if (this.type == 519) { this.width = 26; this.height = 26; this.aiStyle = 99; this.damage = 120; this.defense = 0; this.lifeMax = 1; this.HitSound = (LegacySoundStyle) null; this.DeathSound = (LegacySoundStyle) null; this.noGravity = true; this.noTileCollide = false; this.alpha = 0; this.knockBackResist = 0.0f; } else if (this.type == 162) { this.width = 18; this.height = 40; this.aiStyle = 3; this.damage = 65; this.defense = 18; this.lifeMax = 350; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath2; this.knockBackResist = 0.3f; this.value = 600f; this.buffImmune[31] = false; } else if (this.type == 166) { this.width = 18; this.height = 40; this.aiStyle = 3; this.damage = 70; this.defense = 26; this.lifeMax = 450; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath2; this.knockBackResist = 0.2f; this.value = 1000f; this.buffImmune[31] = false; this.buffImmune[20] = true; } else if (this.type == 253) { this.noGravity = true; this.noTileCollide = true; this.width = 24; this.height = 44; this.aiStyle = 22; this.damage = 80; this.defense = 22; this.lifeMax = 700; this.HitSound = SoundID.NPCHit49; this.DeathSound = SoundID.NPCDeath51; this.alpha = 100; this.value = 1500f; this.buffImmune[20] = true; this.buffImmune[24] = true; this.buffImmune[39] = true; this.knockBackResist = 0.6f; } else if (this.type == 158) { this.npcSlots = 2f; this.width = 22; this.height = 22; this.aiStyle = 14; this.damage = 60; this.defense = 32; this.lifeMax = 750; this.HitSound = SoundID.NPCHit1; this.knockBackResist = 0.75f; this.DeathSound = SoundID.NPCDeath6; this.value = 5000f; this.buffImmune[31] = false; } else if (this.type == 159) { this.npcSlots = 2f; this.width = 18; this.height = 40; this.aiStyle = 3; this.damage = 80; this.defense = 24; this.lifeMax = 750; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath6; this.knockBackResist = 0.4f; this.value = 5000f; this.buffImmune[31] = false; } else if (this.type == 460) { this.width = 18; this.height = 40; this.aiStyle = 3; this.damage = 70; this.defense = 30; this.lifeMax = 700; this.HitSound = SoundID.NPCHit7; this.DeathSound = SoundID.NPCDeath17; this.knockBackResist = 0.25f; this.value = 1000f; this.buffImmune[31] = false; } else if (this.type == 461) { this.width = 18; this.height = 40; this.aiStyle = 3; this.damage = 60; this.defense = 22; this.lifeMax = 400; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath1; this.knockBackResist = 0.3f; this.value = 1000f; } else if (this.type == 462) { this.width = 20; this.height = 24; this.aiStyle = 3; this.damage = 70; this.defense = 14; this.lifeMax = 270; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath1; this.knockBackResist = 0.7f; this.value = 600f; this.buffImmune[31] = false; this.npcSlots = 0.5f; } else if (this.type == 463) { this.width = 18; this.height = 40; this.aiStyle = 3; this.damage = 100; this.defense = 34; this.lifeMax = 4000; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath1; this.knockBackResist = 0.1f; this.value = 3000f; } else if (this.type == 466) { this.width = 18; this.height = 40; this.aiStyle = 3; this.damage = 70; this.defense = 40; this.lifeMax = 550; this.HitSound = SoundID.NPCHit48; this.DeathSound = SoundID.NPCDeath50; this.knockBackResist = 0.5f; this.value = 1500f; } else if (this.type == 467) { this.width = 22; this.height = 22; this.aiStyle = 85; this.damage = 100; this.defense = 80; this.lifeMax = 350; this.HitSound = SoundID.NPCHit34; this.DeathSound = SoundID.NPCDeath37; this.value = 900f; this.buffImmune[20] = true; this.buffImmune[24] = true; this.buffImmune[39] = true; this.knockBackResist = 0.7f; this.noGravity = true; } else if (this.type == 469) { this.width = 38; this.height = 26; this.aiStyle = 3; this.damage = 68; this.defense = 28; this.lifeMax = 600; this.HitSound = SoundID.NPCHit47; this.DeathSound = SoundID.NPCDeath49; this.knockBackResist = 0.35f; this.value = 1300f; } else if (this.type == 468) { this.width = 18; this.height = 40; this.aiStyle = 3; this.damage = 65; this.defense = 24; this.lifeMax = 500; this.HitSound = SoundID.NPCHit35; this.DeathSound = SoundID.NPCDeath38; this.knockBackResist = 0.6f; this.value = 1300f; } else if (this.type == 477) { this.noGravity = true; this.width = 80; this.height = 50; this.aiStyle = 88; this.damage = 80; this.defense = 30; this.lifeMax = 6000; this.HitSound = SoundID.NPCHit44; this.DeathSound = SoundID.NPCDeath46; this.value = 50000f; this.knockBackResist = 0.2f; this.buffImmune[20] = true; } else if (this.type == 478) { this.width = 34; this.height = 34; this.aiStyle = 89; this.damage = 0; this.defense = 30; this.lifeMax = 200; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath1; this.value = 0.0f; this.knockBackResist = 0.7f; flag = true; this.npcSlots = 0.0f; } else if (this.type == 479) { this.width = 46; this.height = 30; this.aiStyle = 90; this.damage = 50; this.defense = 14; this.lifeMax = 700; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath1; this.knockBackResist = 0.3f; this.value = 0.0f; this.npcSlots = 0.1f; } else if (this.type == 26) { this.scale = 0.9f; this.width = 18; this.height = 40; this.aiStyle = 3; this.damage = 12; this.defense = 4; this.lifeMax = 60; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath1; this.knockBackResist = 0.8f; this.value = 100f; this.buffImmune[31] = false; } else if (this.type == 27) { this.scale = 0.95f; this.width = 18; this.height = 40; this.aiStyle = 3; this.damage = 20; this.defense = 6; this.lifeMax = 80; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath1; this.knockBackResist = 0.7f; this.value = 200f; this.buffImmune[31] = false; } else if (this.type == 28) { this.scale = 1.1f; this.width = 18; this.height = 40; this.aiStyle = 3; this.damage = 25; this.defense = 8; this.lifeMax = 110; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath1; this.knockBackResist = 0.5f; this.value = 150f; this.buffImmune[31] = false; } else if (this.type == 29) { this.width = 18; this.height = 40; this.aiStyle = 8; this.damage = 20; this.defense = 2; this.lifeMax = 40; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath1; this.knockBackResist = 0.6f; this.value = 200f; } else if (this.type == 30) { this.width = 16; this.height = 16; this.aiStyle = 9; this.damage = 20; this.defense = 0; this.lifeMax = 1; this.HitSound = SoundID.NPCHit3; this.DeathSound = SoundID.NPCDeath3; this.noGravity = true; this.noTileCollide = true; this.alpha = 100; this.knockBackResist = 0.0f; } else if (this.type == 111) { this.scale = 0.95f; this.width = 18; this.height = 40; this.aiStyle = 3; this.damage = 20; this.defense = 6; this.lifeMax = 80; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath1; this.knockBackResist = 0.7f; this.value = 200f; this.buffImmune[31] = false; } else if (this.type == 471) { this.width = 18; this.height = 40; this.aiStyle = 3; this.damage = 80; this.defense = 26; this.lifeMax = 2000; this.HitSound = SoundID.NPCHit40; this.DeathSound = SoundID.NPCDeath42; this.knockBackResist = 0.15f; this.value = 5000f; flag = true; } else if (this.type == 472) { this.width = 40; this.height = 24; this.aiStyle = 86; this.damage = 50; this.defense = 18; this.lifeMax = 180; this.HitSound = SoundID.NPCHit52; this.DeathSound = SoundID.NPCDeath55; this.knockBackResist = 0.0f; this.value = 0.0f; flag = true; this.npcSlots = 0.1f; } else if (this.type == 520) { this.width = 34; this.height = 110; this.aiStyle = 3; this.damage = 60; this.defense = 40; this.lifeMax = 2000; this.HitSound = SoundID.NPCHit4; this.DeathSound = SoundID.NPCDeath14; this.knockBackResist = 0.0f; this.buffImmune[20] = true; this.buffImmune[24] = true; } else if (this.type == 521) { this.width = 60; this.height = 60; this.aiStyle = 86; this.damage = 90; this.defense = 30; this.lifeMax = 2000; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath6; this.knockBackResist = 0.0f; flag = true; } else if (this.type == 522) { this.width = 26; this.height = 26; this.aiStyle = 100; this.damage = 120; this.defense = 0; this.lifeMax = 1; this.HitSound = (LegacySoundStyle) null; this.DeathSound = (LegacySoundStyle) null; this.noGravity = true; this.noTileCollide = true; this.alpha = 0; this.knockBackResist = 0.0f; this.chaseable = false; } else if (this.type == 523) { this.width = 42; this.height = 42; this.aiStyle = 101; this.damage = 30; this.defense = 0; this.lifeMax = 500; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath6; this.noGravity = true; this.noTileCollide = true; this.alpha = 0; this.knockBackResist = 0.0f; this.chaseable = false; this.alpha = (int) byte.MaxValue; this.canGhostHeal = false; } else if (this.type == 534) { this.width = 18; this.height = 40; this.aiStyle = 3; this.damage = 14; this.defense = 20; this.lifeMax = 400; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath1; this.knockBackResist = 0.3f; this.value = 0.0f; this.buffImmune[31] = false; this.lavaImmune = true; this.netAlways = true; this.rarity = 1; } else if (this.type == 535) { this.width = 24; this.height = 18; this.aiStyle = 1; this.damage = 14; this.defense = 5; this.lifeMax = 50; this.scale = 1.1f; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath1; this.alpha = 0; this.value = 40f; this.buffImmune[20] = true; this.buffImmune[31] = false; } else if (this.type == 536) { this.width = 18; this.height = 40; this.aiStyle = 3; this.damage = 14; this.defense = 8; this.lifeMax = 200; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath2; this.knockBackResist = 0.5f; this.value = 1000f; this.buffImmune[31] = false; this.rarity = 2; } else if (this.type == 537) { this.npcSlots = 2f; this.width = 30; this.height = 24; this.aiStyle = 1; this.damage = 11; this.defense = 8; this.lifeMax = 60; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath1; this.alpha = 50; this.color = new Color((int) byte.MaxValue, 250, 0, 0) * 0.2f; this.value = 75f; this.knockBackResist = 0.8f; this.buffImmune[20] = true; this.buffImmune[31] = false; } else if (this.type == 538) { this.width = 18; this.height = 20; this.aiStyle = 7; this.damage = 0; this.defense = 0; this.lifeMax = 5; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath1; this.catchItem = (short) 3563; } else if (this.type == 539) { this.width = 18; this.height = 20; this.aiStyle = 7; this.damage = 0; this.defense = 0; this.lifeMax = 5; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath1; this.catchItem = (short) 3564; this.rarity = 3; } else if (this.type == 541) { this.width = 30; this.height = 76; this.aiStyle = 102; this.damage = 40; this.defense = 30; this.lifeMax = 5000; this.HitSound = SoundID.NPCHit23; this.DeathSound = SoundID.NPCDeath39; this.knockBackResist = 0.05f; this.value = (float) Item.buyPrice(gold: 1, silver: 50); this.buffImmune[20] = true; this.buffImmune[44] = true; this.rarity = 2; } else if (this.type == 542) { this.noGravity = true; this.width = 100; this.height = 24; this.aiStyle = 103; this.damage = 50; this.defense = 20; this.lifeMax = 360; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath1; this.value = 400f; this.knockBackResist = 0.9f; this.behindTiles = true; } else if (this.type == 543) { this.noGravity = true; this.width = 100; this.height = 24; this.aiStyle = 103; this.damage = 60; this.defense = 24; this.lifeMax = 380; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath1; this.value = 400f; this.knockBackResist = 0.8f; this.behindTiles = true; } else if (this.type == 544) { this.noGravity = true; this.width = 100; this.height = 24; this.aiStyle = 103; this.damage = 64; this.defense = 22; this.lifeMax = 400; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath1; this.value = 400f; this.knockBackResist = 0.8f; this.behindTiles = true; } else if (this.type == 545) { this.noGravity = true; this.width = 100; this.height = 24; this.aiStyle = 103; this.damage = 54; this.defense = 26; this.lifeMax = 450; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath1; this.value = 400f; this.knockBackResist = 0.7f; this.behindTiles = true; } else if (this.type == 546) { this.width = 30; this.height = 30; this.aiStyle = 26; this.damage = 30; this.defense = 10; this.lifeMax = 60; this.HitSound = SoundID.NPCHit11; this.DeathSound = SoundID.NPCDeath15; this.knockBackResist = 0.8f; this.value = 130f; this.behindTiles = true; } else if (this.type == 547) { this.width = 16; this.height = 16; this.aiStyle = 104; this.defense = 10; this.lifeMax = 10; this.HitSound = SoundID.NPCHit11; this.DeathSound = SoundID.NPCDeath15; this.knockBackResist = 1f; this.noGravity = true; this.noTileCollide = true; } else if (this.type == 548) { this.width = 40; this.height = 40; this.aiStyle = 105; this.defense = 14; this.lifeMax = 1000; this.HitSound = SoundID.DD2_CrystalCartImpact; this.DeathSound = SoundID.NPCDeath15; this.knockBackResist = 0.0f; this.friendly = true; this.npcSlots = 0.0f; this.hide = true; if (Main.hardMode && NPC.downedMechBossAny) { this.defense = 18; this.lifeMax = 3000; } if (NPC.downedGolemBoss && Main.hardMode) { this.defense = 20; this.lifeMax = 5000; } this.lavaImmune = true; this.LazySetLiquidMovementDD2(); this.netAlways = true; } else if (this.type == 549) { this.lifeMax = 5; this.defense = 20; this.damage = 0; this.width = 78; this.height = 130; this.aiStyle = 106; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath1; this.value = 0.0f; this.knockBackResist = 0.0f; this.noGravity = true; this.noTileCollide = true; flag = true; this.npcSlots = 0.0f; this.behindTiles = true; this.dontTakeDamage = true; this.lavaImmune = true; this.LazySetLiquidMovementDD2(); this.netAlways = true; } else if (this.type == 552) { this.lifeMax = 30; this.defense = 14; this.damage = 18; this.width = 18; this.height = 40; this.aiStyle = 107; this.HitSound = SoundID.DD2_GoblinHurt; this.DeathSound = SoundID.DD2_GoblinDeath; this.knockBackResist = 0.2f; this.value = 0.0f; this.npcSlots = 0.0f; this.lavaImmune = true; this.LazySetLiquidMovementDD2(); this.netAlways = true; } else if (this.type == 553) { this.lifeMax = 170; this.defense = 20; this.damage = 46; this.width = 18; this.height = 40; this.aiStyle = 107; this.HitSound = SoundID.DD2_GoblinHurt; this.DeathSound = SoundID.DD2_GoblinDeath; this.knockBackResist = 0.2f; this.value = 0.0f; this.npcSlots = 0.0f; this.lavaImmune = true; this.LazySetLiquidMovementDD2(); this.netAlways = true; } else if (this.type == 554) { this.lifeMax = 560; this.defense = 28; this.damage = 70; this.width = 18; this.height = 40; this.aiStyle = 107; this.HitSound = SoundID.DD2_GoblinHurt; this.DeathSound = SoundID.DD2_GoblinDeath; this.knockBackResist = 0.15f; this.value = 0.0f; this.npcSlots = 0.0f; this.lavaImmune = true; this.LazySetLiquidMovementDD2(); this.netAlways = true; } else if (this.type == 561) { this.lifeMax = 60; this.defense = 18; this.damage = 30; this.width = 26; this.height = 52; this.aiStyle = 107; this.HitSound = SoundID.DD2_JavelinThrowersHurt; this.DeathSound = SoundID.DD2_JavelinThrowersDeath; this.knockBackResist = 0.1f; this.value = 0.0f; this.npcSlots = 0.0f; this.lavaImmune = true; this.LazySetLiquidMovementDD2(); this.netAlways = true; } else if (this.type == 562) { this.lifeMax = 300; this.defense = 28; this.damage = 60; this.width = 26; this.height = 52; this.aiStyle = 107; this.HitSound = SoundID.DD2_JavelinThrowersHurt; this.DeathSound = SoundID.DD2_JavelinThrowersDeath; this.knockBackResist = 0.1f; this.value = 0.0f; this.npcSlots = 0.0f; this.lavaImmune = true; this.LazySetLiquidMovementDD2(); this.netAlways = true; } else if (this.type == 563) { this.lifeMax = 1000; this.defense = 38; this.damage = 80; this.width = 26; this.height = 52; this.aiStyle = 107; this.HitSound = SoundID.DD2_JavelinThrowersHurt; this.DeathSound = SoundID.DD2_JavelinThrowersDeath; this.knockBackResist = 0.05f; this.value = 0.0f; this.npcSlots = 0.0f; this.lavaImmune = true; this.LazySetLiquidMovementDD2(); this.netAlways = true; } else if (this.type == 555) { this.lifeMax = 50; this.defense = 16; this.damage = 26; this.width = 18; this.height = 40; this.aiStyle = 107; this.HitSound = SoundID.DD2_GoblinBomberHurt; this.DeathSound = SoundID.DD2_GoblinBomberDeath; this.knockBackResist = 0.2f; this.value = 0.0f; this.npcSlots = 0.0f; this.lavaImmune = true; this.LazySetLiquidMovementDD2(); this.netAlways = true; } else if (this.type == 556) { this.lifeMax = 200; this.defense = 26; this.damage = 55; this.width = 18; this.height = 40; this.aiStyle = 107; this.HitSound = SoundID.DD2_GoblinBomberHurt; this.DeathSound = SoundID.DD2_GoblinBomberDeath; this.knockBackResist = 0.2f; this.value = 0.0f; this.npcSlots = 0.0f; this.lavaImmune = true; this.LazySetLiquidMovementDD2(); this.netAlways = true; } else if (this.type == 557) { this.lifeMax = 700; this.defense = 34; this.damage = 75; this.width = 18; this.height = 40; this.aiStyle = 107; this.HitSound = SoundID.DD2_GoblinBomberHurt; this.DeathSound = SoundID.DD2_GoblinBomberDeath; this.knockBackResist = 0.15f; this.value = 0.0f; this.npcSlots = 0.0f; this.lavaImmune = true; this.LazySetLiquidMovementDD2(); this.netAlways = true; } else if (this.type == 558) { this.width = 38; this.height = 38; this.aiStyle = 108; this.damage = 30; this.defense = 4; this.lifeMax = 60; this.HitSound = SoundID.DD2_WyvernHurt; this.DeathSound = SoundID.DD2_WyvernDeath; this.noGravity = true; this.noTileCollide = true; this.knockBackResist = 0.2f; this.npcSlots = 0.0f; this.lavaImmune = true; this.LazySetLiquidMovementDD2(); this.netAlways = true; } else if (this.type == 559) { this.width = 38; this.height = 38; this.aiStyle = 108; this.damage = 75; this.defense = 16; this.lifeMax = 180; this.HitSound = SoundID.DD2_WyvernHurt; this.DeathSound = SoundID.DD2_WyvernDeath; this.noGravity = true; this.noTileCollide = true; this.knockBackResist = 0.2f; this.npcSlots = 0.0f; this.lavaImmune = true; this.LazySetLiquidMovementDD2(); this.netAlways = true; } else if (this.type == 560) { this.width = 38; this.height = 38; this.aiStyle = 108; this.damage = 100; this.defense = 30; this.lifeMax = 600; this.HitSound = SoundID.DD2_WyvernHurt; this.DeathSound = SoundID.DD2_WyvernDeath; this.noGravity = true; this.noTileCollide = true; this.knockBackResist = 0.05f; this.npcSlots = 0.0f; this.lavaImmune = true; this.LazySetLiquidMovementDD2(); this.netAlways = true; } else if (this.type == 550) { this.townNPC = true; this.friendly = true; this.width = 18; this.height = 40; this.aiStyle = 7; this.damage = 10; this.defense = 15; this.lifeMax = 250; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath1; this.knockBackResist = 0.5f; } else if (this.type == 576) { this.lifeMax = 5000; this.defense = 34; this.damage = 70; this.width = 96; this.height = 124; this.aiStyle = 107; this.HitSound = SoundID.DD2_OgreHurt; this.DeathSound = SoundID.DD2_OgreDeath; this.knockBackResist = 0.0f; this.value = 0.0f; this.npcSlots = 0.0f; this.lavaImmune = true; this.LazySetLiquidMovementDD2(); this.netAlways = true; } else if (this.type == 577) { this.lifeMax = 13000; this.defense = 40; this.damage = 90; this.width = 96; this.height = 124; this.aiStyle = 107; this.HitSound = SoundID.DD2_OgreHurt; this.DeathSound = SoundID.DD2_OgreDeath; this.knockBackResist = 0.0f; this.value = 0.0f; this.npcSlots = 0.0f; this.lavaImmune = true; this.LazySetLiquidMovementDD2(); this.netAlways = true; } else if (this.type == 568) { this.lifeMax = 500; this.defense = 30; this.damage = 50; this.width = 18; this.height = 40; this.aiStyle = 107; this.HitSound = SoundID.DD2_WitherBeastHurt; this.DeathSound = SoundID.DD2_WitherBeastDeath; this.knockBackResist = 0.15f; this.value = 0.0f; this.npcSlots = 0.0f; this.lavaImmune = true; this.LazySetLiquidMovementDD2(); this.netAlways = true; } else if (this.type == 569) { this.lifeMax = 1400; this.defense = 40; this.damage = 80; this.width = 18; this.height = 40; this.aiStyle = 107; this.HitSound = SoundID.DD2_WitherBeastHurt; this.DeathSound = SoundID.DD2_WitherBeastDeath; this.knockBackResist = 0.05f; this.value = 0.0f; this.npcSlots = 0.0f; this.lavaImmune = true; this.LazySetLiquidMovementDD2(); this.netAlways = true; } else if (this.type == 566) { this.lifeMax = 25; this.defense = 12; this.damage = 18; this.width = 18; this.height = 40; this.aiStyle = 107; this.HitSound = SoundID.DD2_SkeletonHurt; this.DeathSound = SoundID.DD2_SkeletonDeath; this.knockBackResist = 0.3f; this.value = 0.0f; this.npcSlots = 0.0f; this.lavaImmune = true; this.LazySetLiquidMovementDD2(); this.netAlways = true; } else if (this.type == 567) { this.lifeMax = 480; this.defense = 22; this.damage = 70; this.width = 18; this.height = 40; this.aiStyle = 107; this.HitSound = SoundID.DD2_SkeletonHurt; this.DeathSound = SoundID.DD2_SkeletonDeath; this.knockBackResist = 0.2f; this.value = 0.0f; this.npcSlots = 0.0f; this.lavaImmune = true; this.LazySetLiquidMovementDD2(); this.netAlways = true; } else if (this.type == 572) { this.lifeMax = 260; this.defense = 26; this.damage = 60; this.width = 18; this.height = 40; this.aiStyle = 107; this.HitSound = SoundID.DD2_KoboldHurt; this.DeathSound = SoundID.DD2_KoboldDeath; this.knockBackResist = 0.2f; this.value = 0.0f; this.npcSlots = 0.0f; this.lavaImmune = true; this.LazySetLiquidMovementDD2(); this.netAlways = true; } else if (this.type == 573) { this.lifeMax = 800; this.defense = 32; this.damage = 80; this.width = 18; this.height = 40; this.aiStyle = 107; this.HitSound = SoundID.DD2_KoboldHurt; this.DeathSound = SoundID.DD2_KoboldDeath; this.knockBackResist = 0.1f; this.value = 0.0f; this.npcSlots = 0.0f; this.lavaImmune = true; this.LazySetLiquidMovementDD2(); this.netAlways = true; } else if (this.type == 570) { this.lifeMax = 900; this.defense = 30; this.damage = 60; this.width = 42; this.height = 58; this.aiStyle = 107; this.HitSound = SoundID.DD2_DrakinHurt; this.DeathSound = SoundID.DD2_DrakinDeath; this.knockBackResist = 0.0f; this.value = 0.0f; this.npcSlots = 0.0f; this.lavaImmune = true; this.LazySetLiquidMovementDD2(); this.netAlways = true; } else if (this.type == 571) { this.lifeMax = 3000; this.defense = 40; this.damage = 90; this.width = 42; this.height = 58; this.aiStyle = 107; this.HitSound = SoundID.DD2_DrakinHurt; this.DeathSound = SoundID.DD2_DrakinDeath; this.knockBackResist = 0.0f; this.value = 0.0f; this.npcSlots = 0.0f; this.lavaImmune = true; this.LazySetLiquidMovementDD2(); this.netAlways = true; } else if (this.type == 564) { this.lifeMax = 800; this.defense = 18; this.damage = 40; this.width = 34; this.height = 62; this.aiStyle = 109; this.HitSound = SoundID.DD2_DarkMageHurt; this.DeathSound = SoundID.DD2_DarkMageDeath; this.knockBackResist = 0.0f; this.value = 0.0f; this.npcSlots = 0.0f; this.noGravity = true; this.lavaImmune = true; this.LazySetLiquidMovementDD2(); this.netAlways = true; } else if (this.type == 565) { this.lifeMax = 4000; this.defense = 38; this.damage = 90; this.width = 34; this.height = 62; this.aiStyle = 109; this.HitSound = SoundID.DD2_DarkMageHurt; this.DeathSound = SoundID.DD2_DarkMageDeath; this.knockBackResist = 0.0f; this.value = 0.0f; this.npcSlots = 0.0f; this.noGravity = true; this.lavaImmune = true; this.LazySetLiquidMovementDD2(); this.netAlways = true; } else if (this.type == 574) { this.width = 38; this.height = 38; this.aiStyle = 108; this.damage = 50; this.defense = 16; this.lifeMax = 170; this.HitSound = SoundID.DD2_KoboldFlyerHurt; this.DeathSound = SoundID.DD2_KoboldFlyerDeath; this.noGravity = true; this.noTileCollide = true; this.knockBackResist = 0.4f; this.npcSlots = 0.0f; this.lavaImmune = true; this.LazySetLiquidMovementDD2(); this.netAlways = true; } else if (this.type == 575) { this.width = 38; this.height = 38; this.aiStyle = 108; this.damage = 80; this.defense = 32; this.lifeMax = 580; this.HitSound = SoundID.DD2_KoboldFlyerHurt; this.DeathSound = SoundID.DD2_KoboldFlyerDeath; this.noGravity = true; this.noTileCollide = true; this.knockBackResist = 0.25f; this.npcSlots = 0.0f; this.lavaImmune = true; this.LazySetLiquidMovementDD2(); this.netAlways = true; } else if (this.type == 551) { this.damage = 80; this.defense = 38; this.lifeMax = 50000; this.width = 190; this.height = 90; this.aiStyle = 110; this.HitSound = SoundID.DD2_BetsyHurt; this.DeathSound = SoundID.DD2_BetsyDeath; this.knockBackResist = 0.0f; this.value = 0.0f; this.noGravity = true; this.noTileCollide = true; this.npcSlots = 0.0f; this.lavaImmune = true; this.LazySetLiquidMovementDD2(); this.netAlways = true; } else if (this.type == 578) { this.width = 30; this.height = 24; this.aiStyle = 111; this.damage = 80; this.defense = 36; this.lifeMax = 500; this.HitSound = SoundID.DD2_LightningBugHurt; this.DeathSound = SoundID.DD2_LightningBugDeath; this.noGravity = true; this.noTileCollide = true; this.knockBackResist = 0.8f; this.npcSlots = 0.0f; this.lavaImmune = true; this.LazySetLiquidMovementDD2(); this.netAlways = true; } else if (this.type == 579) { this.friendly = true; this.width = 34; this.height = 8; this.aiStyle = 0; this.damage = 10; this.defense = 15; this.lifeMax = 250; this.HitSound = SoundID.NPCHit1; this.DeathSound = SoundID.NPCDeath6; this.knockBackResist = 0.5f; this.scale = 1f; this.rarity = 1; } if (flag) { for (int index = 0; index < 206; ++index) this.buffImmune[index] = true; } if (Main.dedServ) this.frame = new Microsoft.Xna.Framework.Rectangle(); else if (Main.NPCLoaded[this.type]) this.frame = new Microsoft.Xna.Framework.Rectangle(0, 0, Main.npcTexture[this.type].Width, Main.npcTexture[this.type].Height / Main.npcFrameCount[this.type]); else this.setFrameSize = true; if ((double) scaleOverride > 0.0) { int num1 = (int) ((double) this.width * (double) this.scale); int num2 = (int) ((double) this.height * (double) this.scale); this.position.X += (float) (num1 / 2); this.position.Y += (float) num2; this.scale = scaleOverride; this.width = (int) ((double) this.width * (double) this.scale); this.height = (int) ((double) this.height * (double) this.scale); if (this.height == 16 || this.height == 32) ++this.height; this.position.X -= (float) (this.width / 2); this.position.Y -= (float) this.height; } else { this.width = (int) ((double) this.width * (double) this.scale); this.height = (int) ((double) this.height * (double) this.scale); } if (this.buffImmune[20]) this.buffImmune[70] = true; if (this.buffImmune[39]) this.buffImmune[153] = true; this.life = this.lifeMax; this.defDamage = this.damage; this.defDefense = this.defense; this.netID = this.type; if (!Main.expertMode) return; this.scaleStats(); } } private void LazySetLiquidMovementDD2() { this.waterMovementSpeed = 1f; this.lavaMovementSpeed = 1f; this.honeyMovementSpeed = 1f; } public static void setWorldMonsters() { UnifiedRandom unifiedRandom = new UnifiedRandom(Main.worldID); int num1 = unifiedRandom.Next(3); int num2 = unifiedRandom.Next(3); while (num1 == num2) num1 = unifiedRandom.Next(3); for (int index1 = 0; index1 < 2; ++index1) { int num3 = num1; if (index1 == 1) num3 = num2; for (int index2 = 0; index2 < 3; ++index2) { switch (num3) { case 0: NPC.cavernMonsterType[index1, index2] = unifiedRandom.Next(494, 496); break; case 1: NPC.cavernMonsterType[index1, index2] = unifiedRandom.Next(496, 498); break; default: NPC.cavernMonsterType[index1, index2] = unifiedRandom.Next(498, 507); break; } } } } public void scaleStats() { if (!Main.expertMode) return; if (this.friendly) { int life = this.life; } if ((this.type < 0 || !NPCID.Sets.NeedsExpertScaling[this.type]) && (this.life <= 5 || this.damage == 0 || this.friendly || this.townNPC)) return; bool flag = this.type >= 0 && NPCID.Sets.ProjectileNPC[this.type]; if (this.type != 5 && (this.type < 13 || this.type > 15) && this.type != 267 && (this.type < 113 || this.type > 119) && Main.hardMode && !this.boss && this.lifeMax < 1000) { int num1 = this.damage + this.defense + this.lifeMax / 4; if (num1 == 0) num1 = 1; int num2 = 80; if (NPC.downedPlantBoss) num2 += 20; if (num1 < num2) { float num3 = (float) (num2 / num1); this.damage = (int) ((double) this.damage * (double) num3 * 0.9); if (!flag) { this.defense = (int) ((double) this.defense * (double) num3); this.lifeMax = (int) ((double) this.lifeMax * (double) num3 * 1.1); this.value = (float) (int) ((double) this.value * (double) num3 * 0.8); } } } if (this.type == 210 || this.type == 211) { this.damage = (int) ((double) this.damage * 0.600000023841858); this.lifeMax = (int) ((double) this.lifeMax * 0.800000011920929); this.defense = (int) ((double) this.defense * 0.800000011920929); } if (!flag) { this.value = (float) (int) ((double) this.value * 2.5); this.lifeMax = (int) ((double) this.lifeMax * (double) Main.expertLife); } this.damage = (int) ((double) this.damage * (double) Main.expertDamage); this.knockBackResist *= Main.expertKnockBack; int num4 = 0; float num5 = 1f; float num6 = 0.35f; if (Main.netMode != 0) { for (int index = 0; index < (int) byte.MaxValue; ++index) { if (Main.player[index].active) ++num4; } for (int index = 1; index < num4; ++index) { num5 += num6; num6 += (float) ((1.0 - (double) num6) / 3.0); } } if ((double) num5 > 8.0) num5 = (float) (((double) num5 * 2.0 + 8.0) / 3.0); if ((double) num5 > 1000.0) num5 = 1000f; if (this.type == 5) this.lifeMax = (int) ((double) this.lifeMax * 0.75); if (this.type == 4) this.lifeMax = (int) ((double) this.lifeMax * 0.65 * (double) num5); if (this.type >= 13 && this.type <= 15) { this.lifeMax = (int) ((double) this.lifeMax * 0.7 * (double) num5); if (this.type == 13) this.damage = (int) ((double) this.damage * 1.1); if (this.type == 14) this.damage = (int) ((double) this.damage * 0.8); if (this.type == 15) this.damage = (int) ((double) this.damage * 0.8); this.scale *= 1.2f; this.defense += 2; } if (this.type == 266) { this.lifeMax = (int) ((double) this.lifeMax * 0.85 * (double) num5); this.damage = (int) ((double) this.damage * 0.9); this.scale *= 1.05f; } if (this.type == 50) { this.lifeMax = (int) ((double) this.lifeMax * 0.7 * (double) num5); this.damage = (int) ((double) this.damage * 0.8); } if (this.type == 471) this.lifeMax = (int) ((double) this.lifeMax * 0.85 * ((double) num5 * 2.0 + 1.0) / 3.0); if (this.type == 472) { this.lifeMax = (int) ((double) this.lifeMax * 0.85 * ((double) num5 + 1.0) / 2.0); this.damage = (int) ((double) this.damage * 0.8); } if (this.type == 222) { this.lifeMax = (int) ((double) this.lifeMax * 0.7 * (double) num5); this.damage = (int) ((double) this.damage * 0.9); } if (this.type == 210 || this.type == 211) this.lifeMax = (int) ((double) this.lifeMax * 0.75); if (this.type == 35) { this.lifeMax = (int) ((double) this.lifeMax * (double) num5); this.damage = (int) ((double) this.damage * 1.1); } else if (this.type == 36) { this.lifeMax = (int) ((double) this.lifeMax * 1.3 * (double) num5); this.damage = (int) ((double) this.damage * 1.1); } if (this.type == 113 || this.type == 114) { this.defense += 6; this.lifeMax = (int) ((double) this.lifeMax * 0.7 * (double) num5); this.damage = (int) ((double) this.damage * 1.5); } else if (this.type == 115) { this.lifeMax = (int) ((double) this.lifeMax * 0.7 * (double) num5); if (num4 > 1) this.knockBackResist *= 1f - num6; this.defense += 6; } else if (this.type == 116) { this.lifeMax = (int) ((double) this.lifeMax * 0.7 * (double) num5); if (num4 > 1) this.knockBackResist *= 1f - num6; } else if (this.type == 117 || this.type == 118 || this.type == 119) this.lifeMax = (int) ((double) this.lifeMax * 0.8); if (this.type >= 134 && this.type <= 136) { this.lifeMax = (int) ((double) this.lifeMax * 0.75 * (double) num5); if (this.type == 134) this.damage *= 2; if (this.type == 135) this.damage = (int) ((double) this.damage * 0.85); if (this.type == 136) this.damage = (int) ((double) this.damage * 0.85); this.scale *= 1.05f; } else if (this.type == 139) { this.lifeMax = (int) ((double) this.lifeMax * 0.75 * ((double) num5 * 2.0 + 1.0) / 3.0); this.damage = (int) ((double) this.damage * 0.8); this.scale *= 1.05f; } if (this.type >= (int) sbyte.MaxValue && this.type <= 131) { this.lifeMax = (int) ((double) this.lifeMax * 0.75 * (double) num5); this.damage = (int) ((double) this.damage * 0.85); } if (this.type >= 125 && this.type <= 126) { this.lifeMax = (int) ((double) this.lifeMax * 0.75 * (double) num5); this.damage = (int) ((double) this.damage * 0.85); } if (this.type >= 262 && this.type <= 262) { this.lifeMax = (int) ((double) this.lifeMax * 0.7 * (double) num5); this.damage = (int) ((double) this.damage * 1.15); } if (this.type >= 245 && this.type <= 249) { this.lifeMax = (int) ((double) this.lifeMax * 0.75 * (double) num5); this.damage = (int) ((double) this.damage * 0.8); } if (this.type == 370) { this.lifeMax = (int) ((double) this.lifeMax * 0.6 * (double) num5); this.damage = (int) ((double) this.damage * 0.7); } else if (this.type == 371 || this.type == 372 || this.type == 373) { if (this.type != 371) this.lifeMax = (int) ((double) this.lifeMax * 0.75); this.damage = (int) ((double) this.damage * 0.75); } if (this.type == 439 || this.type == 440 || this.type >= 454 && this.type <= 459 || this.type == 522 || this.type == 523) { if (this.type != 522) this.lifeMax = (int) ((double) this.lifeMax * 0.625 * (double) num5); this.damage = (int) ((double) this.damage * 0.75); } if (this.type == 397 || this.type == 396 || this.type == 398) { this.lifeMax = (int) ((double) this.lifeMax * 0.75 * (double) num5); this.damage = (int) ((double) this.damage * 0.75); } if (this.type == 551) { this.lifeMax = (int) ((double) this.lifeMax * 0.75 * (double) num5); this.damage = (int) ((double) this.damage * 0.65); } switch (this.type) { case 305: case 306: case 307: case 308: case 309: case 310: case 311: case 312: case 313: case 314: case 315: case 326: case 329: case 330: this.lifeMax = (int) ((double) this.lifeMax * 0.75); this.damage = (int) ((double) this.damage * 0.75); break; case 325: case 327: this.lifeMax = (int) ((double) this.lifeMax * 0.65); this.damage = (int) ((double) this.damage * 0.75); break; } switch (this.type) { case 338: case 339: case 340: case 341: case 342: case 343: case 347: case 348: case 349: case 350: this.lifeMax = (int) ((double) this.lifeMax * 0.75); this.damage = (int) ((double) this.damage * 0.75); break; case 344: case 345: case 346: this.lifeMax = (int) ((double) this.lifeMax * 0.65); this.damage = (int) ((double) this.damage * 0.75); break; } this.defDefense = this.defense; this.defDamage = this.damage; this.life = this.lifeMax; } public static bool GetNPCLocation( int i, bool seekHead, bool averageDirection, out int index, out Vector2 pos) { int type = Main.npc[i].type; int index1 = -1; int num1 = -1; switch (type) { case 7: num1 = 9; index1 = 0; break; case 8: case 9: num1 = 7; index1 = 1; break; case 10: num1 = 12; index1 = 0; break; case 11: case 12: num1 = 10; index1 = 1; break; case 13: num1 = 15; index1 = 0; break; case 14: case 15: num1 = 13; index1 = 1; break; case 39: num1 = 41; index1 = 0; break; case 40: case 41: num1 = 39; index1 = 1; break; case 87: num1 = 92; index1 = 0; break; case 88: case 89: case 90: case 91: case 92: num1 = 87; index1 = 1; break; case 95: num1 = 97; index1 = 0; break; case 96: case 97: num1 = 95; index1 = 1; break; case 98: num1 = 100; index1 = 0; break; case 99: case 100: num1 = 98; index1 = 1; break; case 117: num1 = 119; index1 = 0; break; case 118: case 119: num1 = 117; index1 = 1; break; case 134: num1 = 136; index1 = 0; break; case 135: case 136: num1 = 134; index1 = 1; break; case 454: num1 = 459; index1 = 0; break; case 455: case 456: case 457: case 458: case 459: num1 = 454; index1 = 1; break; case 510: num1 = 512; index1 = 0; break; case 511: case 512: num1 = 510; index1 = 1; break; case 513: num1 = 515; index1 = 0; break; case 514: case 515: num1 = 513; index1 = 1; break; } if (index1 != -1) { if (seekHead && index1 == 1) { index = -1; pos = Vector2.Zero; return false; } Vector2 center1 = Main.npc[i].Center; int index2 = -1; float num2 = -1f; int index3 = -1; Vector2 center2 = Main.player[Main.myPlayer].Center; int index4 = (int) Main.npc[i].ai[index1]; for (int index5 = 0; index4 >= 0 && index4 < 200 && ++index5 < 100 && Main.npc[index4].active; index4 = (int) Main.npc[index4].ai[index1]) { if (!averageDirection && (index3 == -1 || (double) Main.npc[index4].Distance(center2) < (double) num2)) { num2 = Main.npc[index4].Distance(center2); index3 = index4; } if (Main.npc[index4].type == num1) { index2 = index4; break; } } if (index2 >= 0) { if (!averageDirection) { pos = Main.npc[index3].Center; index = index3; } else { Vector2 vector2 = center1 + Main.npc[index2].Center; pos = vector2 / 2f; index = index2; } return true; } pos = Vector2.Zero; index = -1; return false; } pos = Main.npc[i].Center; index = i; return true; } public void AI() { // ISSUE: The method is too long to display (119166 instructions) } private void AI_069_DukeFishron() { bool expertMode = Main.expertMode; float num1 = expertMode ? 0.6f * Main.damageMultiplier : 1f; bool flag1 = (double) this.life <= (double) this.lifeMax * 0.5; bool flag2 = expertMode && (double) this.life <= (double) this.lifeMax * 0.15; bool flag3 = (double) this.ai[0] > 4.0; bool flag4 = (double) this.ai[0] > 9.0; bool flag5 = (double) this.ai[3] < 10.0; if (flag4) { this.damage = (int) ((double) this.defDamage * 1.10000002384186 * (double) num1); this.defense = 0; } else if (flag3) { this.damage = (int) ((double) this.defDamage * 1.20000004768372 * (double) num1); this.defense = (int) ((double) this.defDefense * 0.800000011920929); } else { this.damage = this.defDamage; this.defense = this.defDefense; } int num2 = expertMode ? 40 : 60; float moveSpeed = expertMode ? 0.55f : 0.45f; float num3 = expertMode ? 8.5f : 7.5f; if (flag4) { moveSpeed = 0.7f; num3 = 12f; num2 = 30; } else if (flag3 & flag5) { moveSpeed = expertMode ? 0.6f : 0.5f; num3 = expertMode ? 10f : 8f; num2 = expertMode ? 40 : 20; } else if (flag5 && !flag3 && !flag4) num2 = 30; int num4 = expertMode ? 28 : 30; float num5 = expertMode ? 17f : 16f; if (flag4) { num4 = 25; num5 = 27f; } else if (flag5 & flag3) { num4 = expertMode ? 27 : 30; if (expertMode) num5 = 21f; } int num6 = 80; int num7 = 4; float num8 = 0.3f; float num9 = 5f; int num10 = 90; int num11 = 180; int num12 = 180; int num13 = 30; int num14 = 120; int num15 = 4; float num16 = 6f; float num17 = 20f; float num18 = 6.283185f / (float) (num14 / 2); int num19 = 75; Vector2 center = this.Center; Player player = Main.player[this.target]; if (this.target < 0 || this.target == (int) byte.MaxValue || player.dead || !player.active) { this.TargetClosest(); player = Main.player[this.target]; this.netUpdate = true; } if (player.dead || (double) Vector2.Distance(player.Center, center) > 5600.0) { this.velocity.Y -= 0.4f; if (this.timeLeft > 10) this.timeLeft = 10; this.ai[0] = (double) this.ai[0] <= 4.0 ? 0.0f : 5f; this.ai[2] = 0.0f; } if (((double) player.position.Y < 800.0 || (double) player.position.Y > Main.worldSurface * 16.0 ? 1 : ((double) player.position.X <= 6400.0 ? 0 : ((double) player.position.X < (double) (Main.maxTilesX * 16 - 6400) ? 1 : 0))) != 0) { num2 = 20; this.damage = this.defDamage * 2; this.defense = this.defDefense * 2; this.ai[3] = 0.0f; num5 += 6f; } if ((double) this.localAI[0] == 0.0) { this.localAI[0] = 1f; this.alpha = (int) byte.MaxValue; this.rotation = 0.0f; if (Main.netMode != 1) { this.ai[0] = -1f; this.netUpdate = true; } } float num20 = (float) Math.Atan2((double) player.Center.Y - (double) center.Y, (double) player.Center.X - (double) center.X); if (this.spriteDirection == 1) num20 += 3.141593f; if ((double) num20 < 0.0) num20 += 6.283185f; if ((double) num20 > 6.28318548202515) num20 -= 6.283185f; if ((double) this.ai[0] == -1.0) num20 = 0.0f; if ((double) this.ai[0] == 3.0) num20 = 0.0f; if ((double) this.ai[0] == 4.0) num20 = 0.0f; if ((double) this.ai[0] == 8.0) num20 = 0.0f; float num21 = 0.04f; if ((double) this.ai[0] == 1.0 || (double) this.ai[0] == 6.0) num21 = 0.0f; if ((double) this.ai[0] == 7.0) num21 = 0.0f; if ((double) this.ai[0] == 3.0) num21 = 0.01f; if ((double) this.ai[0] == 4.0) num21 = 0.01f; if ((double) this.ai[0] == 8.0) num21 = 0.01f; if ((double) this.rotation < (double) num20) { if ((double) num20 - (double) this.rotation > Math.PI) this.rotation -= num21; else this.rotation += num21; } if ((double) this.rotation > (double) num20) { if ((double) this.rotation - (double) num20 > Math.PI) this.rotation += num21; else this.rotation -= num21; } if ((double) this.rotation > (double) num20 - (double) num21 && (double) this.rotation < (double) num20 + (double) num21) this.rotation = num20; if ((double) this.rotation < 0.0) this.rotation += 6.283185f; if ((double) this.rotation > 6.28318548202515) this.rotation -= 6.283185f; if ((double) this.rotation > (double) num20 - (double) num21 && (double) this.rotation < (double) num20 + (double) num21) this.rotation = num20; if ((double) this.ai[0] != -1.0 && (double) this.ai[0] < 9.0) { if (Collision.SolidCollision(this.position, this.width, this.height)) this.alpha += 15; else this.alpha -= 15; if (this.alpha < 0) this.alpha = 0; if (this.alpha > 150) this.alpha = 150; } if ((double) this.ai[0] == -1.0) { this.velocity = this.velocity * 0.98f; int num22 = Math.Sign(player.Center.X - center.X); if (num22 != 0) { this.direction = num22; this.spriteDirection = -this.direction; } if ((double) this.ai[2] > 20.0) { this.velocity.Y = -2f; this.alpha -= 5; if (Collision.SolidCollision(this.position, this.width, this.height)) this.alpha += 15; if (this.alpha < 0) this.alpha = 0; if (this.alpha > 150) this.alpha = 150; } if ((double) this.ai[2] == (double) (num10 - 30)) { int num23 = 36; for (int index1 = 0; index1 < num23; ++index1) { Vector2 vector2_1 = (Vector2.Normalize(this.velocity) * new Vector2((float) this.width / 2f, (float) this.height) * 0.75f * 0.5f).RotatedBy((double) (index1 - (num23 / 2 - 1)) * 6.28318548202515 / (double) num23) + this.Center; Vector2 vector2_2 = vector2_1 - this.Center; int index2 = Dust.NewDust(vector2_1 + vector2_2, 0, 0, 172, vector2_2.X * 2f, vector2_2.Y * 2f, 100, Scale: 1.4f); Main.dust[index2].noGravity = true; Main.dust[index2].noLight = true; Main.dust[index2].velocity = Vector2.Normalize(vector2_2) * 3f; } Main.PlaySound(29, (int) center.X, (int) center.Y, 20); } ++this.ai[2]; if ((double) this.ai[2] < (double) num19) return; this.ai[0] = 0.0f; this.ai[1] = 0.0f; this.ai[2] = 0.0f; this.netUpdate = true; } else if ((double) this.ai[0] == 0.0 && !player.dead) { if ((double) this.ai[1] == 0.0) this.ai[1] = (float) (300 * Math.Sign((center - player.Center).X)); Vector2 vector2 = Vector2.Normalize(player.Center + new Vector2(this.ai[1], -200f) - center - this.velocity) * num3; if ((double) this.velocity.X < (double) vector2.X) { this.velocity.X += moveSpeed; if ((double) this.velocity.X < 0.0 && (double) vector2.X > 0.0) this.velocity.X += moveSpeed; } else if ((double) this.velocity.X > (double) vector2.X) { this.velocity.X -= moveSpeed; if ((double) this.velocity.X > 0.0 && (double) vector2.X < 0.0) this.velocity.X -= moveSpeed; } if ((double) this.velocity.Y < (double) vector2.Y) { this.velocity.Y += moveSpeed; if ((double) this.velocity.Y < 0.0 && (double) vector2.Y > 0.0) this.velocity.Y += moveSpeed; } else if ((double) this.velocity.Y > (double) vector2.Y) { this.velocity.Y -= moveSpeed; if ((double) this.velocity.Y > 0.0 && (double) vector2.Y < 0.0) this.velocity.Y -= moveSpeed; } int num24 = Math.Sign(player.Center.X - center.X); if (num24 != 0) { if ((double) this.ai[2] == 0.0 && num24 != this.direction) this.rotation += 3.141593f; this.direction = num24; if (this.spriteDirection != -this.direction) this.rotation += 3.141593f; this.spriteDirection = -this.direction; } ++this.ai[2]; if ((double) this.ai[2] < (double) num2) return; int num25 = 0; switch ((int) this.ai[3]) { case 0: case 1: case 2: case 3: case 4: case 5: case 6: case 7: case 8: case 9: num25 = 1; break; case 10: this.ai[3] = 1f; num25 = 2; break; case 11: this.ai[3] = 0.0f; num25 = 3; break; } if (flag1) num25 = 4; switch (num25) { case 1: this.ai[0] = 1f; this.ai[1] = 0.0f; this.ai[2] = 0.0f; this.velocity = Vector2.Normalize(player.Center - center) * num5; this.rotation = (float) Math.Atan2((double) this.velocity.Y, (double) this.velocity.X); if (num24 != 0) { this.direction = num24; if (this.spriteDirection == 1) this.rotation += 3.141593f; this.spriteDirection = -this.direction; break; } break; case 2: this.ai[0] = 2f; this.ai[1] = 0.0f; this.ai[2] = 0.0f; break; case 3: this.ai[0] = 3f; this.ai[1] = 0.0f; this.ai[2] = 0.0f; break; case 4: this.ai[0] = 4f; this.ai[1] = 0.0f; this.ai[2] = 0.0f; break; } this.netUpdate = true; } else if ((double) this.ai[0] == 1.0) { int num26 = 7; for (int index3 = 0; index3 < num26; ++index3) { Vector2 vector2_3 = (Vector2.Normalize(this.velocity) * new Vector2((float) (this.width + 50) / 2f, (float) this.height) * 0.75f).RotatedBy((double) (index3 - (num26 / 2 - 1)) * Math.PI / (double) num26) + center; Vector2 vector2_4 = ((float) (Main.rand.NextDouble() * 3.14159274101257) - 1.570796f).ToRotationVector2() * (float) Main.rand.Next(3, 8); Vector2 vector2_5 = vector2_4; int index4 = Dust.NewDust(vector2_3 + vector2_5, 0, 0, 172, vector2_4.X * 2f, vector2_4.Y * 2f, 100, Scale: 1.4f); Main.dust[index4].noGravity = true; Main.dust[index4].noLight = true; Main.dust[index4].velocity /= 4f; Main.dust[index4].velocity -= this.velocity; } ++this.ai[2]; if ((double) this.ai[2] < (double) num4) return; this.ai[0] = 0.0f; this.ai[1] = 0.0f; this.ai[2] = 0.0f; this.ai[3] += 2f; this.netUpdate = true; } else if ((double) this.ai[0] == 2.0) { if ((double) this.ai[1] == 0.0) this.ai[1] = (float) (300 * Math.Sign((center - player.Center).X)); Vector2 vector2_6 = Vector2.Normalize(player.Center + new Vector2(this.ai[1], -200f) - center - this.velocity) * num9; if ((double) this.velocity.X < (double) vector2_6.X) { this.velocity.X += num8; if ((double) this.velocity.X < 0.0 && (double) vector2_6.X > 0.0) this.velocity.X += num8; } else if ((double) this.velocity.X > (double) vector2_6.X) { this.velocity.X -= num8; if ((double) this.velocity.X > 0.0 && (double) vector2_6.X < 0.0) this.velocity.X -= num8; } if ((double) this.velocity.Y < (double) vector2_6.Y) { this.velocity.Y += num8; if ((double) this.velocity.Y < 0.0 && (double) vector2_6.Y > 0.0) this.velocity.Y += num8; } else if ((double) this.velocity.Y > (double) vector2_6.Y) { this.velocity.Y -= num8; if ((double) this.velocity.Y > 0.0 && (double) vector2_6.Y < 0.0) this.velocity.Y -= num8; } if ((double) this.ai[2] == 0.0) Main.PlaySound(29, (int) center.X, (int) center.Y, 20); if ((double) this.ai[2] % (double) num7 == 0.0) { Main.PlaySound(4, (int) this.Center.X, (int) this.Center.Y, 19); if (Main.netMode != 1) { Vector2 vector2_7 = Vector2.Normalize(player.Center - center) * (float) (this.width + 20) / 2f + center; NPC.NewNPC((int) vector2_7.X, (int) vector2_7.Y + 45, 371); } } int num27 = Math.Sign(player.Center.X - center.X); if (num27 != 0) { this.direction = num27; if (this.spriteDirection != -this.direction) this.rotation += 3.141593f; this.spriteDirection = -this.direction; } ++this.ai[2]; if ((double) this.ai[2] < (double) num6) return; this.ai[0] = 0.0f; this.ai[1] = 0.0f; this.ai[2] = 0.0f; this.netUpdate = true; } else if ((double) this.ai[0] == 3.0) { this.velocity = this.velocity * 0.98f; this.velocity.Y = MathHelper.Lerp(this.velocity.Y, 0.0f, 0.02f); if ((double) this.ai[2] == (double) (num10 - 30)) Main.PlaySound(29, (int) center.X, (int) center.Y, 9); if (Main.netMode != 1 && (double) this.ai[2] == (double) (num10 - 30)) { Vector2 vector2 = this.rotation.ToRotationVector2() * (Vector2.UnitX * (float) this.direction) * (float) (this.width + 20) / 2f + center; Projectile.NewProjectile(vector2.X, vector2.Y, (float) (this.direction * 2), 8f, 385, 0, 0.0f, Main.myPlayer); Projectile.NewProjectile(vector2.X, vector2.Y, (float) (-this.direction * 2), 8f, 385, 0, 0.0f, Main.myPlayer); } ++this.ai[2]; if ((double) this.ai[2] < (double) num10) return; this.ai[0] = 0.0f; this.ai[1] = 0.0f; this.ai[2] = 0.0f; this.netUpdate = true; } else if ((double) this.ai[0] == 4.0) { this.velocity = this.velocity * 0.98f; this.velocity.Y = MathHelper.Lerp(this.velocity.Y, 0.0f, 0.02f); if ((double) this.ai[2] == (double) (num11 - 60)) Main.PlaySound(29, (int) center.X, (int) center.Y, 20); ++this.ai[2]; if ((double) this.ai[2] < (double) num11) return; this.ai[0] = 5f; this.ai[1] = 0.0f; this.ai[2] = 0.0f; this.ai[3] = 0.0f; this.netUpdate = true; } else if ((double) this.ai[0] == 5.0 && !player.dead) { if ((double) this.ai[1] == 0.0) this.ai[1] = (float) (300 * Math.Sign((center - player.Center).X)); Vector2 vector2 = Vector2.Normalize(player.Center + new Vector2(this.ai[1], -200f) - center - this.velocity) * num3; if ((double) this.velocity.X < (double) vector2.X) { this.velocity.X += moveSpeed; if ((double) this.velocity.X < 0.0 && (double) vector2.X > 0.0) this.velocity.X += moveSpeed; } else if ((double) this.velocity.X > (double) vector2.X) { this.velocity.X -= moveSpeed; if ((double) this.velocity.X > 0.0 && (double) vector2.X < 0.0) this.velocity.X -= moveSpeed; } if ((double) this.velocity.Y < (double) vector2.Y) { this.velocity.Y += moveSpeed; if ((double) this.velocity.Y < 0.0 && (double) vector2.Y > 0.0) this.velocity.Y += moveSpeed; } else if ((double) this.velocity.Y > (double) vector2.Y) { this.velocity.Y -= moveSpeed; if ((double) this.velocity.Y > 0.0 && (double) vector2.Y < 0.0) this.velocity.Y -= moveSpeed; } int num28 = Math.Sign(player.Center.X - center.X); if (num28 != 0) { if ((double) this.ai[2] == 0.0 && num28 != this.direction) this.rotation += 3.141593f; this.direction = num28; if (this.spriteDirection != -this.direction) this.rotation += 3.141593f; this.spriteDirection = -this.direction; } ++this.ai[2]; if ((double) this.ai[2] < (double) num2) return; int num29 = 0; switch ((int) this.ai[3]) { case 0: case 1: case 2: case 3: case 4: case 5: num29 = 1; break; case 6: this.ai[3] = 1f; num29 = 2; break; case 7: this.ai[3] = 0.0f; num29 = 3; break; } if (flag2) num29 = 4; switch (num29) { case 1: this.ai[0] = 6f; this.ai[1] = 0.0f; this.ai[2] = 0.0f; this.velocity = Vector2.Normalize(player.Center - center) * num5; this.rotation = (float) Math.Atan2((double) this.velocity.Y, (double) this.velocity.X); if (num28 != 0) { this.direction = num28; if (this.spriteDirection == 1) this.rotation += 3.141593f; this.spriteDirection = -this.direction; break; } break; case 2: this.velocity = Vector2.Normalize(player.Center - center) * num17; this.rotation = (float) Math.Atan2((double) this.velocity.Y, (double) this.velocity.X); if (num28 != 0) { this.direction = num28; if (this.spriteDirection == 1) this.rotation += 3.141593f; this.spriteDirection = -this.direction; } this.ai[0] = 7f; this.ai[1] = 0.0f; this.ai[2] = 0.0f; break; case 3: this.ai[0] = 8f; this.ai[1] = 0.0f; this.ai[2] = 0.0f; break; case 4: this.ai[0] = 9f; this.ai[1] = 0.0f; this.ai[2] = 0.0f; break; } this.netUpdate = true; } else if ((double) this.ai[0] == 6.0) { int num30 = 7; for (int index5 = 0; index5 < num30; ++index5) { Vector2 vector2_8 = (Vector2.Normalize(this.velocity) * new Vector2((float) (this.width + 50) / 2f, (float) this.height) * 0.75f).RotatedBy((double) (index5 - (num30 / 2 - 1)) * Math.PI / (double) num30) + center; Vector2 vector2_9 = ((float) (Main.rand.NextDouble() * 3.14159274101257) - 1.570796f).ToRotationVector2() * (float) Main.rand.Next(3, 8); Vector2 vector2_10 = vector2_9; int index6 = Dust.NewDust(vector2_8 + vector2_10, 0, 0, 172, vector2_9.X * 2f, vector2_9.Y * 2f, 100, Scale: 1.4f); Main.dust[index6].noGravity = true; Main.dust[index6].noLight = true; Main.dust[index6].velocity /= 4f; Main.dust[index6].velocity -= this.velocity; } ++this.ai[2]; if ((double) this.ai[2] < (double) num4) return; this.ai[0] = 5f; this.ai[1] = 0.0f; this.ai[2] = 0.0f; this.ai[3] += 2f; this.netUpdate = true; } else if ((double) this.ai[0] == 7.0) { if ((double) this.ai[2] == 0.0) Main.PlaySound(29, (int) center.X, (int) center.Y, 20); if ((double) this.ai[2] % (double) num15 == 0.0) { Main.PlaySound(4, (int) this.Center.X, (int) this.Center.Y, 19); if (Main.netMode != 1) { Vector2 vector2 = Vector2.Normalize(this.velocity) * (float) (this.width + 20) / 2f + center; int index = NPC.NewNPC((int) vector2.X, (int) vector2.Y + 45, 371); Main.npc[index].target = this.target; Main.npc[index].velocity = Vector2.Normalize(this.velocity).RotatedBy(1.57079637050629 * (double) this.direction) * num16; Main.npc[index].netUpdate = true; Main.npc[index].ai[3] = (float) Main.rand.Next(80, 121) / 100f; } } this.velocity = this.velocity.RotatedBy(-(double) num18 * (double) this.direction); this.rotation -= num18 * (float) this.direction; ++this.ai[2]; if ((double) this.ai[2] < (double) num14) return; this.ai[0] = 5f; this.ai[1] = 0.0f; this.ai[2] = 0.0f; this.netUpdate = true; } else if ((double) this.ai[0] == 8.0) { this.velocity = this.velocity * 0.98f; this.velocity.Y = MathHelper.Lerp(this.velocity.Y, 0.0f, 0.02f); if ((double) this.ai[2] == (double) (num10 - 30)) Main.PlaySound(29, (int) center.X, (int) center.Y, 20); if (Main.netMode != 1 && (double) this.ai[2] == (double) (num10 - 30)) Projectile.NewProjectile(center.X, center.Y, 0.0f, 0.0f, 385, 0, 0.0f, Main.myPlayer, 1f, (float) (this.target + 1)); ++this.ai[2]; if ((double) this.ai[2] < (double) num10) return; this.ai[0] = 5f; this.ai[1] = 0.0f; this.ai[2] = 0.0f; this.netUpdate = true; } else if ((double) this.ai[0] == 9.0) { if ((double) this.ai[2] < (double) (num12 - 90)) { if (Collision.SolidCollision(this.position, this.width, this.height)) this.alpha += 15; else this.alpha -= 15; if (this.alpha < 0) this.alpha = 0; if (this.alpha > 150) this.alpha = 150; } else if (this.alpha < (int) byte.MaxValue) { this.alpha += 4; if (this.alpha > (int) byte.MaxValue) this.alpha = (int) byte.MaxValue; } this.velocity = this.velocity * 0.98f; this.velocity.Y = MathHelper.Lerp(this.velocity.Y, 0.0f, 0.02f); if ((double) this.ai[2] == (double) (num12 - 60)) Main.PlaySound(29, (int) center.X, (int) center.Y, 20); ++this.ai[2]; if ((double) this.ai[2] < (double) num12) return; this.ai[0] = 10f; this.ai[1] = 0.0f; this.ai[2] = 0.0f; this.ai[3] = 0.0f; this.netUpdate = true; } else if ((double) this.ai[0] == 10.0 && !player.dead) { this.dontTakeDamage = false; this.chaseable = false; if (this.alpha < (int) byte.MaxValue) { this.alpha += 25; if (this.alpha > (int) byte.MaxValue) this.alpha = (int) byte.MaxValue; } if ((double) this.ai[1] == 0.0) this.ai[1] = (float) (360 * Math.Sign((center - player.Center).X)); this.SimpleFlyMovement(Vector2.Normalize(player.Center + new Vector2(this.ai[1], -200f) - center - this.velocity) * num3, moveSpeed); int num31 = Math.Sign(player.Center.X - center.X); if (num31 != 0) { if ((double) this.ai[2] == 0.0 && num31 != this.direction) { this.rotation += 3.141593f; for (int index = 0; index < this.oldPos.Length; ++index) this.oldPos[index] = Vector2.Zero; } this.direction = num31; if (this.spriteDirection != -this.direction) this.rotation += 3.141593f; this.spriteDirection = -this.direction; } ++this.ai[2]; if ((double) this.ai[2] < (double) num2) return; int num32 = 0; switch ((int) this.ai[3]) { case 0: case 2: case 3: case 5: case 6: case 7: num32 = 1; break; case 1: case 4: case 8: num32 = 2; break; } switch (num32) { case 1: this.ai[0] = 11f; this.ai[1] = 0.0f; this.ai[2] = 0.0f; this.velocity = Vector2.Normalize(player.Center - center) * num5; this.rotation = (float) Math.Atan2((double) this.velocity.Y, (double) this.velocity.X); if (num31 != 0) { this.direction = num31; if (this.spriteDirection == 1) this.rotation += 3.141593f; this.spriteDirection = -this.direction; break; } break; case 2: this.ai[0] = 12f; this.ai[1] = 0.0f; this.ai[2] = 0.0f; break; case 3: this.ai[0] = 13f; this.ai[1] = 0.0f; this.ai[2] = 0.0f; break; } this.netUpdate = true; } else if ((double) this.ai[0] == 11.0) { this.dontTakeDamage = false; this.chaseable = true; this.alpha -= 25; if (this.alpha < 0) this.alpha = 0; int num33 = 7; for (int index7 = 0; index7 < num33; ++index7) { Vector2 vector2_11 = (Vector2.Normalize(this.velocity) * new Vector2((float) (this.width + 50) / 2f, (float) this.height) * 0.75f).RotatedBy((double) (index7 - (num33 / 2 - 1)) * Math.PI / (double) num33) + center; Vector2 vector2_12 = ((float) (Main.rand.NextDouble() * 3.14159274101257) - 1.570796f).ToRotationVector2() * (float) Main.rand.Next(3, 8); Vector2 vector2_13 = vector2_12; int index8 = Dust.NewDust(vector2_11 + vector2_13, 0, 0, 172, vector2_12.X * 2f, vector2_12.Y * 2f, 100, Scale: 1.4f); Main.dust[index8].noGravity = true; Main.dust[index8].noLight = true; Main.dust[index8].velocity /= 4f; Main.dust[index8].velocity -= this.velocity; } ++this.ai[2]; if ((double) this.ai[2] < (double) num4) return; this.ai[0] = 10f; this.ai[1] = 0.0f; this.ai[2] = 0.0f; ++this.ai[3]; this.netUpdate = true; } else if ((double) this.ai[0] == 12.0) { this.dontTakeDamage = true; this.chaseable = false; if (this.alpha < (int) byte.MaxValue) { this.alpha += 17; if (this.alpha > (int) byte.MaxValue) this.alpha = (int) byte.MaxValue; } this.velocity = this.velocity * 0.98f; this.velocity.Y = MathHelper.Lerp(this.velocity.Y, 0.0f, 0.02f); if ((double) this.ai[2] == (double) (num13 / 2)) Main.PlaySound(29, (int) center.X, (int) center.Y, 20); if (Main.netMode != 1 && (double) this.ai[2] == (double) (num13 / 2)) { if ((double) this.ai[1] == 0.0) this.ai[1] = (float) (300 * Math.Sign((center - player.Center).X)); Vector2 vector2 = this.Center = player.Center + new Vector2(-this.ai[1], -200f); int num34 = Math.Sign(player.Center.X - vector2.X); if (num34 != 0) { if ((double) this.ai[2] == 0.0 && num34 != this.direction) { this.rotation += 3.141593f; for (int index = 0; index < this.oldPos.Length; ++index) this.oldPos[index] = Vector2.Zero; } this.direction = num34; if (this.spriteDirection != -this.direction) this.rotation += 3.141593f; this.spriteDirection = -this.direction; } } ++this.ai[2]; if ((double) this.ai[2] < (double) num13) return; this.ai[0] = 10f; this.ai[1] = 0.0f; this.ai[2] = 0.0f; ++this.ai[3]; if ((double) this.ai[3] >= 9.0) this.ai[3] = 0.0f; this.netUpdate = true; } else { if ((double) this.ai[0] != 13.0) return; if ((double) this.ai[2] == 0.0) Main.PlaySound(29, (int) center.X, (int) center.Y, 20); this.velocity = this.velocity.RotatedBy(-(double) num18 * (double) this.direction); this.rotation -= num18 * (float) this.direction; ++this.ai[2]; if ((double) this.ai[2] < (double) num14) return; this.ai[0] = 10f; this.ai[1] = 0.0f; this.ai[2] = 0.0f; ++this.ai[3]; this.netUpdate = true; } } private void AI_037_Destroyer() { if ((double) this.ai[3] > 0.0) this.realLife = (int) this.ai[3]; if (this.target < 0 || this.target == (int) byte.MaxValue || Main.player[this.target].dead) this.TargetClosest(); if (this.type >= 134 && this.type <= 136) { double num = (double) this.velocity.Length(); if (this.type == 134 || this.type != 134 && Main.npc[(int) this.ai[1]].alpha < 128) { if (this.alpha != 0) { for (int index1 = 0; index1 < 2; ++index1) { int index2 = Dust.NewDust(new Vector2(this.position.X, this.position.Y), this.width, this.height, 182, Alpha: 100, Scale: 2f); Main.dust[index2].noGravity = true; Main.dust[index2].noLight = true; } } this.alpha -= 42; if (this.alpha < 0) this.alpha = 0; } } if (this.type > 134) { bool flag = false; if ((double) this.ai[1] <= 0.0) flag = true; else if (Main.npc[(int) this.ai[1]].life <= 0) flag = true; if (flag) { this.life = 0; this.HitEffect(); this.checkDead(); } } if (Main.netMode != 1) { if ((double) this.ai[0] == 0.0 && this.type == 134) { this.ai[3] = (float) this.whoAmI; this.realLife = this.whoAmI; int index3 = this.whoAmI; int num = 80; for (int index4 = 0; index4 <= num; ++index4) { int Type = 135; if (index4 == num) Type = 136; int number = NPC.NewNPC((int) ((double) this.position.X + (double) (this.width / 2)), (int) ((double) this.position.Y + (double) this.height), Type, this.whoAmI); Main.npc[number].ai[3] = (float) this.whoAmI; Main.npc[number].realLife = this.whoAmI; Main.npc[number].ai[1] = (float) index3; Main.npc[index3].ai[0] = (float) number; NetMessage.SendData(23, number: number); index3 = number; } } if (this.type == 135) { this.localAI[0] += (float) Main.rand.Next(4); if ((double) this.localAI[0] >= (double) Main.rand.Next(1400, 26000)) { this.localAI[0] = 0.0f; this.TargetClosest(); if (Collision.CanHit(this.position, this.width, this.height, Main.player[this.target].position, Main.player[this.target].width, Main.player[this.target].height)) { Vector2 vector2 = new Vector2(this.position.X + (float) this.width * 0.5f, this.position.Y + (float) (this.height / 2)); float num1 = Main.player[this.target].position.X + (float) Main.player[this.target].width * 0.5f - vector2.X + (float) Main.rand.Next(-20, 21); float num2 = Main.player[this.target].position.Y + (float) Main.player[this.target].height * 0.5f - vector2.Y + (float) Main.rand.Next(-20, 21); float num3 = (float) (8.0 / Math.Sqrt((double) num1 * (double) num1 + (double) num2 * (double) num2)); float num4 = num1 * num3; float num5 = num2 * num3; float SpeedX = num4 + (float) Main.rand.Next(-20, 21) * 0.05f; float SpeedY = num5 + (float) Main.rand.Next(-20, 21) * 0.05f; int Damage = 22; if (Main.expertMode) Damage = 18; int Type = 100; vector2.X += SpeedX * 5f; vector2.Y += SpeedY * 5f; int index = Projectile.NewProjectile(vector2.X, vector2.Y, SpeedX, SpeedY, Type, Damage, 0.0f, Main.myPlayer); Main.projectile[index].timeLeft = 300; this.netUpdate = true; } } } } int num6 = (int) ((double) this.position.X / 16.0) - 1; int num7 = (int) (((double) this.position.X + (double) this.width) / 16.0) + 2; int num8 = (int) ((double) this.position.Y / 16.0) - 1; int num9 = (int) (((double) this.position.Y + (double) this.height) / 16.0) + 2; if (num6 < 0) num6 = 0; if (num7 > Main.maxTilesX) num7 = Main.maxTilesX; if (num8 < 0) num8 = 0; if (num9 > Main.maxTilesY) num9 = Main.maxTilesY; bool flag1 = false; if (!flag1) { for (int index5 = num6; index5 < num7; ++index5) { for (int index6 = num8; index6 < num9; ++index6) { if (Main.tile[index5, index6] != null && (Main.tile[index5, index6].nactive() && (Main.tileSolid[(int) Main.tile[index5, index6].type] || Main.tileSolidTop[(int) Main.tile[index5, index6].type] && Main.tile[index5, index6].frameY == (short) 0) || Main.tile[index5, index6].liquid > (byte) 64)) { Vector2 vector2; vector2.X = (float) (index5 * 16); vector2.Y = (float) (index6 * 16); if ((double) this.position.X + (double) this.width > (double) vector2.X && (double) this.position.X < (double) vector2.X + 16.0 && (double) this.position.Y + (double) this.height > (double) vector2.Y && (double) this.position.Y < (double) vector2.Y + 16.0) { flag1 = true; break; } } } } } if (!flag1) { if (this.type != 135 || (double) this.ai[2] != 1.0) Lighting.AddLight((int) (((double) this.position.X + (double) (this.width / 2)) / 16.0), (int) (((double) this.position.Y + (double) (this.height / 2)) / 16.0), 0.3f, 0.1f, 0.05f); this.localAI[1] = 1f; if (this.type == 134) { Microsoft.Xna.Framework.Rectangle rectangle1 = new Microsoft.Xna.Framework.Rectangle((int) this.position.X, (int) this.position.Y, this.width, this.height); int num10 = 1000; bool flag2 = true; if ((double) this.position.Y > (double) Main.player[this.target].position.Y) { for (int index = 0; index < (int) byte.MaxValue; ++index) { if (Main.player[index].active) { Microsoft.Xna.Framework.Rectangle rectangle2 = new Microsoft.Xna.Framework.Rectangle((int) Main.player[index].position.X - num10, (int) Main.player[index].position.Y - num10, num10 * 2, num10 * 2); if (rectangle1.Intersects(rectangle2)) { flag2 = false; break; } } } if (flag2) flag1 = true; } } } else this.localAI[1] = 0.0f; float num11 = 16f; if (Main.dayTime || Main.player[this.target].dead) { flag1 = false; ++this.velocity.Y; if ((double) this.position.Y > Main.worldSurface * 16.0) { ++this.velocity.Y; num11 = 32f; } if ((double) this.position.Y > Main.rockLayer * 16.0) { for (int index = 0; index < 200; ++index) { if (Main.npc[index].aiStyle == this.aiStyle) Main.npc[index].active = false; } } } float num12 = 0.1f; float num13 = 0.15f; Vector2 vector2_1 = new Vector2(this.position.X + (float) this.width * 0.5f, this.position.Y + (float) this.height * 0.5f); float num14 = Main.player[this.target].position.X + (float) (Main.player[this.target].width / 2); float num15 = Main.player[this.target].position.Y + (float) (Main.player[this.target].height / 2); float num16 = (float) ((int) ((double) num14 / 16.0) * 16); float num17 = (float) ((int) ((double) num15 / 16.0) * 16); vector2_1.X = (float) ((int) ((double) vector2_1.X / 16.0) * 16); vector2_1.Y = (float) ((int) ((double) vector2_1.Y / 16.0) * 16); float num18 = num16 - vector2_1.X; float num19 = num17 - vector2_1.Y; float num20 = (float) Math.Sqrt((double) num18 * (double) num18 + (double) num19 * (double) num19); if ((double) this.ai[1] > 0.0) { if ((double) this.ai[1] < (double) Main.npc.Length) { try { Vector2 vector2_2 = new Vector2(this.position.X + (float) this.width * 0.5f, this.position.Y + (float) this.height * 0.5f); num18 = Main.npc[(int) this.ai[1]].position.X + (float) (Main.npc[(int) this.ai[1]].width / 2) - vector2_2.X; num19 = Main.npc[(int) this.ai[1]].position.Y + (float) (Main.npc[(int) this.ai[1]].height / 2) - vector2_2.Y; } catch { } this.rotation = (float) Math.Atan2((double) num19, (double) num18) + 1.57f; float num21 = (float) Math.Sqrt((double) num18 * (double) num18 + (double) num19 * (double) num19); int num22 = (int) (44.0 * (double) this.scale); float num23 = (num21 - (float) num22) / num21; float num24 = num18 * num23; float num25 = num19 * num23; this.velocity = Vector2.Zero; this.position.X += num24; this.position.Y += num25; return; } } if (!flag1) { this.TargetClosest(); this.velocity.Y += 0.15f; if ((double) this.velocity.Y > (double) num11) this.velocity.Y = num11; if ((double) Math.Abs(this.velocity.X) + (double) Math.Abs(this.velocity.Y) < (double) num11 * 0.4) { if ((double) this.velocity.X < 0.0) this.velocity.X -= num12 * 1.1f; else this.velocity.X += num12 * 1.1f; } else if ((double) this.velocity.Y == (double) num11) { if ((double) this.velocity.X < (double) num18) this.velocity.X += num12; else if ((double) this.velocity.X > (double) num18) this.velocity.X -= num12; } else if ((double) this.velocity.Y > 4.0) { if ((double) this.velocity.X < 0.0) this.velocity.X += num12 * 0.9f; else this.velocity.X -= num12 * 0.9f; } } else { if (this.soundDelay == 0) { float num26 = num20 / 40f; if ((double) num26 < 10.0) num26 = 10f; if ((double) num26 > 20.0) num26 = 20f; this.soundDelay = (int) num26; Main.PlaySound(15, (int) this.position.X, (int) this.position.Y); } float num27 = (float) Math.Sqrt((double) num18 * (double) num18 + (double) num19 * (double) num19); float num28 = Math.Abs(num18); float num29 = Math.Abs(num19); float num30 = num11 / num27; float num31 = num18 * num30; float num32 = num19 * num30; if (((double) this.velocity.X > 0.0 && (double) num31 > 0.0 || (double) this.velocity.X < 0.0 && (double) num31 < 0.0) && ((double) this.velocity.Y > 0.0 && (double) num32 > 0.0 || (double) this.velocity.Y < 0.0 && (double) num32 < 0.0)) { if ((double) this.velocity.X < (double) num31) this.velocity.X += num13; else if ((double) this.velocity.X > (double) num31) this.velocity.X -= num13; if ((double) this.velocity.Y < (double) num32) this.velocity.Y += num13; else if ((double) this.velocity.Y > (double) num32) this.velocity.Y -= num13; } if ((double) this.velocity.X > 0.0 && (double) num31 > 0.0 || (double) this.velocity.X < 0.0 && (double) num31 < 0.0 || (double) this.velocity.Y > 0.0 && (double) num32 > 0.0 || (double) this.velocity.Y < 0.0 && (double) num32 < 0.0) { if ((double) this.velocity.X < (double) num31) this.velocity.X += num12; else if ((double) this.velocity.X > (double) num31) this.velocity.X -= num12; if ((double) this.velocity.Y < (double) num32) this.velocity.Y += num12; else if ((double) this.velocity.Y > (double) num32) this.velocity.Y -= num12; if ((double) Math.Abs(num32) < (double) num11 * 0.2 && ((double) this.velocity.X > 0.0 && (double) num31 < 0.0 || (double) this.velocity.X < 0.0 && (double) num31 > 0.0)) { if ((double) this.velocity.Y > 0.0) this.velocity.Y += num12 * 2f; else this.velocity.Y -= num12 * 2f; } if ((double) Math.Abs(num31) < (double) num11 * 0.2 && ((double) this.velocity.Y > 0.0 && (double) num32 < 0.0 || (double) this.velocity.Y < 0.0 && (double) num32 > 0.0)) { if ((double) this.velocity.X > 0.0) this.velocity.X += num12 * 2f; else this.velocity.X -= num12 * 2f; } } else if ((double) num28 > (double) num29) { if ((double) this.velocity.X < (double) num31) this.velocity.X += num12 * 1.1f; else if ((double) this.velocity.X > (double) num31) this.velocity.X -= num12 * 1.1f; if ((double) Math.Abs(this.velocity.X) + (double) Math.Abs(this.velocity.Y) < (double) num11 * 0.5) { if ((double) this.velocity.Y > 0.0) this.velocity.Y += num12; else this.velocity.Y -= num12; } } else { if ((double) this.velocity.Y < (double) num32) this.velocity.Y += num12 * 1.1f; else if ((double) this.velocity.Y > (double) num32) this.velocity.Y -= num12 * 1.1f; if ((double) Math.Abs(this.velocity.X) + (double) Math.Abs(this.velocity.Y) < (double) num11 * 0.5) { if ((double) this.velocity.X > 0.0) this.velocity.X += num12; else this.velocity.X -= num12; } } } this.rotation = (float) Math.Atan2((double) this.velocity.Y, (double) this.velocity.X) + 1.57f; if (this.type != 134) return; if (flag1) { if ((double) this.localAI[0] != 1.0) this.netUpdate = true; this.localAI[0] = 1f; } else { if ((double) this.localAI[0] != 0.0) this.netUpdate = true; this.localAI[0] = 0.0f; } if (((double) this.velocity.X <= 0.0 || (double) this.oldVelocity.X >= 0.0) && ((double) this.velocity.X >= 0.0 || (double) this.oldVelocity.X <= 0.0) && ((double) this.velocity.Y <= 0.0 || (double) this.oldVelocity.Y >= 0.0) && ((double) this.velocity.Y >= 0.0 || (double) this.oldVelocity.Y <= 0.0) || this.justHit) return; this.netUpdate = true; } private void AI_005_EaterOfSouls() { if (this.target < 0 || this.target == (int) byte.MaxValue || Main.player[this.target].dead) this.TargetClosest(); float num1 = 6f; float num2 = 0.05f; if (this.type == 6 || this.type == 173) { num1 = 4f; num2 = 0.02f; if (this.type == 6 && Main.expertMode) num2 = 0.035f; } else if (this.type == 94) { num1 = 4.2f; num2 = 0.022f; } else if (this.type == 252) { if (Collision.CanHit(this.position, this.width, this.height, Main.player[this.target].position, Main.player[this.target].width, Main.player[this.target].height)) { num1 = 6f; num2 = 0.1f; } else { num2 = 0.01f; num1 = 2f; } } else if (this.type == 42 || this.type >= 231 && this.type <= 235) { float num3 = 3.5f; float num4 = 0.021f; if (this.type == 231) { num3 = 3f; num4 = 0.017f; } num1 = num3 * (1f - this.scale); num2 = num4 * (1f - this.scale); } else if (this.type == 205) { num1 = 3.25f; num2 = 0.018f; } else if (this.type == 176) { num1 = 4f; num2 = 0.017f; } else if (this.type == 23) { num1 = 1f; num2 = 0.03f; } else if (this.type == 5) { num1 = 5f; num2 = 0.03f; } else if (this.type == 210 || this.type == 211) { ++this.localAI[0]; float num5 = (float) (((double) this.localAI[0] - 60.0) / 60.0); if ((double) num5 > 1.0) { num5 = 1f; } else { if ((double) this.velocity.X > 6.0) this.velocity.X = 6f; if ((double) this.velocity.X < -6.0) this.velocity.X = -6f; if ((double) this.velocity.Y > 6.0) this.velocity.Y = 6f; if ((double) this.velocity.Y < -6.0) this.velocity.Y = -6f; } num1 = 5f; num2 = 0.1f * num5; } Vector2 vector2_1 = new Vector2(this.position.X + (float) this.width * 0.5f, this.position.Y + (float) this.height * 0.5f); float num6 = Main.player[this.target].position.X + (float) (Main.player[this.target].width / 2); float num7 = Main.player[this.target].position.Y + (float) (Main.player[this.target].height / 2); float num8 = (float) ((int) ((double) num6 / 8.0) * 8); float num9 = (float) ((int) ((double) num7 / 8.0) * 8); vector2_1.X = (float) ((int) ((double) vector2_1.X / 8.0) * 8); vector2_1.Y = (float) ((int) ((double) vector2_1.Y / 8.0) * 8); float num10 = num8 - vector2_1.X; float num11 = num9 - vector2_1.Y; float num12 = (float) Math.Sqrt((double) num10 * (double) num10 + (double) num11 * (double) num11); float num13 = num12; bool flag = false; if ((double) num12 > 600.0) flag = true; float SpeedX1; float SpeedY1; if ((double) num12 == 0.0) { SpeedX1 = this.velocity.X; SpeedY1 = this.velocity.Y; } else { float num14 = num1 / num12; SpeedX1 = num10 * num14; SpeedY1 = num11 * num14; } if (this.type == 6 || this.type == 42 || this.type == 94 || this.type == 139 || this.type == 173 || this.type == 176 || this.type == 205 || this.type == 210 || this.type == 211 || this.type >= 231 && this.type <= 235) { if ((double) num13 > 100.0 || this.type == 42 || this.type == 94 || this.type == 176 || this.type == 210 || this.type == 211 || this.type >= 231 && this.type <= 235) { ++this.ai[0]; if ((double) this.ai[0] > 0.0) this.velocity.Y += 23f / 1000f; else this.velocity.Y -= 23f / 1000f; if ((double) this.ai[0] < -100.0 || (double) this.ai[0] > 100.0) this.velocity.X += 23f / 1000f; else this.velocity.X -= 23f / 1000f; if ((double) this.ai[0] > 200.0) this.ai[0] = -200f; } if ((double) num13 < 150.0 && (this.type == 6 || this.type == 94 || this.type == 173)) { this.velocity.X += SpeedX1 * 0.007f; this.velocity.Y += SpeedY1 * 0.007f; } } if (Main.player[this.target].dead) { SpeedX1 = (float) ((double) this.direction * (double) num1 / 2.0); SpeedY1 = (float) (-(double) num1 / 2.0); } if ((double) this.velocity.X < (double) SpeedX1) { this.velocity.X += num2; if (this.type != 173 && this.type != 6 && this.type != 42 && (this.type < 231 || this.type > 235) && this.type != 94 && this.type != 139 && (double) this.velocity.X < 0.0 && (double) SpeedX1 > 0.0) this.velocity.X += num2; } else if ((double) this.velocity.X > (double) SpeedX1) { this.velocity.X -= num2; if (this.type != 173 && this.type != 6 && this.type != 42 && (this.type < 231 || this.type > 235) && this.type != 94 && this.type != 139 && (double) this.velocity.X > 0.0 && (double) SpeedX1 < 0.0) this.velocity.X -= num2; } if ((double) this.velocity.Y < (double) SpeedY1) { this.velocity.Y += num2; if (this.type != 173 && this.type != 6 && this.type != 42 && (this.type < 231 || this.type > 235) && this.type != 94 && this.type != 139 && (double) this.velocity.Y < 0.0 && (double) SpeedY1 > 0.0) this.velocity.Y += num2; } else if ((double) this.velocity.Y > (double) SpeedY1) { this.velocity.Y -= num2; if (this.type != 173 && this.type != 6 && this.type != 42 && (this.type < 231 || this.type > 235) && this.type != 94 && this.type != 139 && (double) this.velocity.Y > 0.0 && (double) SpeedY1 < 0.0) this.velocity.Y -= num2; } if (this.type == 23) { if ((double) SpeedX1 > 0.0) { this.spriteDirection = 1; this.rotation = (float) Math.Atan2((double) SpeedY1, (double) SpeedX1); } else if ((double) SpeedX1 < 0.0) { this.spriteDirection = -1; this.rotation = (float) Math.Atan2((double) SpeedY1, (double) SpeedX1) + 3.14f; } } else if (this.type == 139) { ++this.localAI[0]; if (this.justHit) this.localAI[0] = 0.0f; if (Main.netMode != 1 && (double) this.localAI[0] >= 120.0) { this.localAI[0] = 0.0f; if (Collision.CanHit(this.position, this.width, this.height, Main.player[this.target].position, Main.player[this.target].width, Main.player[this.target].height)) { int Damage = 25; if (Main.expertMode) Damage = 22; int Type = 84; Projectile.NewProjectile(vector2_1.X, vector2_1.Y, SpeedX1, SpeedY1, Type, Damage, 0.0f, Main.myPlayer); } } if (!WorldGen.SolidTile(((int) this.position.X + this.width / 2) / 16, ((int) this.position.Y + this.height / 2) / 16)) Lighting.AddLight((int) (((double) this.position.X + (double) (this.width / 2)) / 16.0), (int) (((double) this.position.Y + (double) (this.height / 2)) / 16.0), 0.3f, 0.1f, 0.05f); if ((double) SpeedX1 > 0.0) { this.spriteDirection = 1; this.rotation = (float) Math.Atan2((double) SpeedY1, (double) SpeedX1); } if ((double) SpeedX1 < 0.0) { this.spriteDirection = -1; this.rotation = (float) Math.Atan2((double) SpeedY1, (double) SpeedX1) + 3.14f; } } else if (this.type == 6 || this.type == 94 || this.type == 173) this.rotation = (float) Math.Atan2((double) SpeedY1, (double) SpeedX1) - 1.57f; else if (this.type == 42 || this.type == 176 || this.type == 205 || this.type >= 231 && this.type <= 235) { if ((double) this.velocity.X > 0.0) this.spriteDirection = 1; if ((double) this.velocity.X < 0.0) this.spriteDirection = -1; this.rotation = this.velocity.X * 0.1f; } else this.rotation = (float) Math.Atan2((double) this.velocity.Y, (double) this.velocity.X) - 1.57f; if (this.type == 6 || this.type == 23 || this.type == 42 || this.type == 94 || this.type == 139 || this.type == 173 || this.type == 176 || this.type == 205 || this.type == 210 || this.type == 211 || this.type >= 231 && this.type <= 235) { float num15 = 0.7f; if (this.type == 6 || this.type == 173) num15 = 0.4f; if (this.collideX) { this.netUpdate = true; this.velocity.X = this.oldVelocity.X * -num15; if (this.direction == -1 && (double) this.velocity.X > 0.0 && (double) this.velocity.X < 2.0) this.velocity.X = 2f; if (this.direction == 1 && (double) this.velocity.X < 0.0 && (double) this.velocity.X > -2.0) this.velocity.X = -2f; } if (this.collideY) { this.netUpdate = true; this.velocity.Y = this.oldVelocity.Y * -num15; if ((double) this.velocity.Y > 0.0 && (double) this.velocity.Y < 1.5) this.velocity.Y = 2f; if ((double) this.velocity.Y < 0.0 && (double) this.velocity.Y > -1.5) this.velocity.Y = -2f; } if (this.type == 23) { int index = Dust.NewDust(new Vector2(this.position.X - this.velocity.X, this.position.Y - this.velocity.Y), this.width, this.height, 6, this.velocity.X * 0.2f, this.velocity.Y * 0.2f, 100, Scale: 2f); Main.dust[index].noGravity = true; Main.dust[index].velocity.X *= 0.3f; Main.dust[index].velocity.Y *= 0.3f; } else if (this.type != 42 && this.type != 139 && this.type != 176 && this.type != 205 && this.type != 210 && this.type != 211 && this.type != 252 && (this.type < 231 || this.type > 235) && Main.rand.Next(20) == 0) { int Type = 18; if (this.type == 173) Type = 5; int index = Dust.NewDust(new Vector2(this.position.X, this.position.Y + (float) this.height * 0.25f), this.width, (int) ((double) this.height * 0.5), Type, this.velocity.X, 2f, 75, this.color, this.scale); Main.dust[index].velocity.X *= 0.5f; Main.dust[index].velocity.Y *= 0.1f; } } else if (this.type != 252 && Main.rand.Next(40) == 0) { int index = Dust.NewDust(new Vector2(this.position.X, this.position.Y + (float) this.height * 0.25f), this.width, (int) ((double) this.height * 0.5), 5, this.velocity.X, 2f); Main.dust[index].velocity.X *= 0.5f; Main.dust[index].velocity.Y *= 0.1f; } if ((this.type == 6 || this.type == 94 || this.type == 173) && this.wet) { if ((double) this.velocity.Y > 0.0) this.velocity.Y *= 0.95f; this.velocity.Y -= 0.3f; if ((double) this.velocity.Y < -2.0) this.velocity.Y = -2f; } if (this.type == 205 && this.wet) { if ((double) this.velocity.Y > 0.0) this.velocity.Y *= 0.95f; this.velocity.Y -= 0.5f; if ((double) this.velocity.Y < -4.0) this.velocity.Y = -4f; this.TargetClosest(); } if (this.type == 42 || this.type == 176 || this.type >= 231 && this.type <= 235) { if (this.wet) { if ((double) this.velocity.Y > 0.0) this.velocity.Y *= 0.95f; this.velocity.Y -= 0.5f; if ((double) this.velocity.Y < -4.0) this.velocity.Y = -4f; this.TargetClosest(); } if ((double) this.ai[1] == 101.0) { Main.PlaySound(SoundID.Item17, this.position); this.ai[1] = 0.0f; } if (Main.netMode != 1) { this.ai[1] += (float) Main.rand.Next(5, 20) * 0.1f * this.scale; if (this.type == 176) this.ai[1] += (float) Main.rand.Next(5, 20) * 0.1f * this.scale; if ((double) Main.player[this.target].stealth == 0.0 && Main.player[this.target].itemAnimation == 0) this.ai[1] = 0.0f; if ((double) this.ai[1] >= 130.0) { if (Collision.CanHit(this.position, this.width, this.height, Main.player[this.target].position, Main.player[this.target].width, Main.player[this.target].height)) { float num16 = 8f; Vector2 vector2_2 = new Vector2(this.position.X + (float) this.width * 0.5f, this.position.Y + (float) (this.height / 2)); float num17 = Main.player[this.target].position.X + (float) Main.player[this.target].width * 0.5f - vector2_2.X + (float) Main.rand.Next(-20, 21); float num18 = Main.player[this.target].position.Y + (float) Main.player[this.target].height * 0.5f - vector2_2.Y + (float) Main.rand.Next(-20, 21); if ((double) num17 < 0.0 && (double) this.velocity.X < 0.0 || (double) num17 > 0.0 && (double) this.velocity.X > 0.0) { float num19 = (float) Math.Sqrt((double) num17 * (double) num17 + (double) num18 * (double) num18); float num20 = num16 / num19; float SpeedX2 = num17 * num20; float SpeedY2 = num18 * num20; int Damage = (int) (10.0 * (double) this.scale); if (this.type == 176) Damage = (int) (30.0 * (double) this.scale); int Type = 55; int index = Projectile.NewProjectile(vector2_2.X, vector2_2.Y, SpeedX2, SpeedY2, Type, Damage, 0.0f, Main.myPlayer); Main.projectile[index].timeLeft = 300; this.ai[1] = 101f; this.netUpdate = true; } else this.ai[1] = 0.0f; } else this.ai[1] = 0.0f; } } } if (this.type == 139 & flag) { if ((double) this.velocity.X > 0.0 && (double) SpeedX1 > 0.0 || (double) this.velocity.X < 0.0 && (double) SpeedX1 < 0.0) { if ((double) Math.Abs(this.velocity.X) < 12.0) this.velocity.X *= 1.05f; } else this.velocity.X *= 0.9f; } if (Main.netMode != 1 && this.type == 94 && !Main.player[this.target].dead) { if (this.justHit) this.localAI[0] = 0.0f; ++this.localAI[0]; if ((double) this.localAI[0] == 180.0) { if (Collision.CanHit(this.position, this.width, this.height, Main.player[this.target].position, Main.player[this.target].width, Main.player[this.target].height)) NPC.NewNPC((int) ((double) this.position.X + (double) (this.width / 2) + (double) this.velocity.X), (int) ((double) this.position.Y + (double) (this.height / 2) + (double) this.velocity.Y), 112); this.localAI[0] = 0.0f; } } if (Main.dayTime && this.type != 173 && this.type != 6 && this.type != 23 && this.type != 42 && this.type != 94 && this.type != 176 && this.type != 205 && this.type != 210 && this.type != 211 && this.type != 252 && (this.type < 231 || this.type > 235) || Main.player[this.target].dead) { this.velocity.Y -= num2 * 2f; if (this.timeLeft > 10) this.timeLeft = 10; } if (((double) this.velocity.X <= 0.0 || (double) this.oldVelocity.X >= 0.0) && ((double) this.velocity.X >= 0.0 || (double) this.oldVelocity.X <= 0.0) && ((double) this.velocity.Y <= 0.0 || (double) this.oldVelocity.Y >= 0.0) && ((double) this.velocity.Y >= 0.0 || (double) this.oldVelocity.Y <= 0.0) || this.justHit) return; this.netUpdate = true; } private void AI_006_Worms() { if (this.type == 117 && (double) this.localAI[1] == 0.0) { this.localAI[1] = 1f; Main.PlaySound(SoundID.NPCDeath13, this.position); int num = 1; if ((double) this.velocity.X < 0.0) num = -1; for (int index = 0; index < 20; ++index) Dust.NewDust(new Vector2(this.position.X - 20f, this.position.Y - 20f), this.width + 40, this.height + 40, 5, (float) (num * 8), -1f); } if (this.type == 454 && (double) this.localAI[3] == 0.0) { Main.PlaySound(SoundID.Item119, this.position); this.localAI[3] = 1f; } if (this.type >= 454 && this.type <= 459) { this.dontTakeDamage = this.alpha > 0; if (this.type == 454 || this.type != 454 && Main.npc[(int) this.ai[1]].alpha < 85) { if (this.dontTakeDamage) { for (int index1 = 0; index1 < 2; ++index1) { int index2 = Dust.NewDust(new Vector2(this.position.X, this.position.Y), this.width, this.height, 228, Alpha: 100, Scale: 2f); Main.dust[index2].noGravity = true; Main.dust[index2].noLight = true; } } this.alpha -= 42; if (this.alpha < 0) this.alpha = 0; } } else if (this.type == 402 && (double) this.ai[1] == 0.0) { this.ai[1] = (float) Main.rand.Next(-2, 0); this.netUpdate = true; } if (Main.netMode != 1 && Main.expertMode) { if (this.type == 14 && (double) this.position.Y / 16.0 < Main.worldSurface) { if (Main.rand.Next(900) == 0) { this.TargetClosest(); if (Collision.CanHitLine(this.Center, 1, 1, Main.player[this.target].Center, 1, 1)) NPC.NewNPC((int) ((double) this.position.X + (double) (this.width / 2) + (double) this.velocity.X), (int) ((double) this.position.Y + (double) (this.height / 2) + (double) this.velocity.Y), 112, ai1: 1f); } } else if (this.type == 13) { int maxValue = 90 + (int) ((double) this.life / (double) this.lifeMax * 60.0 * 5.0); if (Main.rand.Next(maxValue) == 0) { this.TargetClosest(); if (Collision.CanHitLine(this.Center, 1, 1, Main.player[this.target].Center, 1, 1)) NPC.NewNPC((int) ((double) this.position.X + (double) (this.width / 2) + (double) this.velocity.X), (int) ((double) this.position.Y + (double) (this.height / 2) + (double) this.velocity.Y), 112, ai1: 1f); } } } bool flag1 = false; float num1 = 0.2f; switch (this.type) { case 10: case 39: case 95: case 117: case 510: flag1 = true; break; case 513: flag1 = !Main.player[this.target].ZoneUndergroundDesert; num1 = 0.1f; break; } if (this.type >= 13 && this.type <= 15) this.realLife = -1; else if ((double) this.ai[3] > 0.0) this.realLife = (int) this.ai[3]; if (this.target < 0 || this.target == (int) byte.MaxValue || Main.player[this.target].dead || flag1 && (double) Main.player[this.target].position.Y < Main.worldSurface * 16.0) this.TargetClosest(); if (Main.player[this.target].dead || flag1 && (double) Main.player[this.target].position.Y < Main.worldSurface * 16.0) { if (this.timeLeft > 300) this.timeLeft = 300; if (flag1) this.velocity.Y += num1; } if (Main.netMode != 1) { if (this.type == 87 && (double) this.ai[0] == 0.0) { this.ai[3] = (float) this.whoAmI; this.realLife = this.whoAmI; int index3 = this.whoAmI; for (int index4 = 0; index4 < 14; ++index4) { int Type = 89; if (index4 == 1 || index4 == 8) { Type = 88; } else { switch (index4) { case 11: Type = 90; break; case 12: Type = 91; break; case 13: Type = 92; break; } } int number = NPC.NewNPC((int) ((double) this.position.X + (double) (this.width / 2)), (int) ((double) this.position.Y + (double) this.height), Type, this.whoAmI); Main.npc[number].ai[3] = (float) this.whoAmI; Main.npc[number].realLife = this.whoAmI; Main.npc[number].ai[1] = (float) index3; Main.npc[index3].ai[0] = (float) number; NetMessage.SendData(23, number: number); index3 = number; } } if (this.type == 454 && (double) this.ai[0] == 0.0) { this.ai[3] = (float) this.whoAmI; this.realLife = this.whoAmI; int index5 = this.whoAmI; for (int index6 = 0; index6 < 30; ++index6) { int Type = 456; if ((index6 - 2) % 4 == 0 && index6 < 26) { Type = 455; } else { switch (index6) { case 27: Type = 457; break; case 28: Type = 458; break; case 29: Type = 459; break; } } int number = NPC.NewNPC((int) ((double) this.position.X + (double) (this.width / 2)), (int) ((double) this.position.Y + (double) this.height), Type, this.whoAmI); Main.npc[number].ai[3] = (float) this.whoAmI; Main.npc[number].realLife = this.whoAmI; Main.npc[number].ai[1] = (float) index5; Main.npc[index5].ai[0] = (float) number; NetMessage.SendData(23, number: number); index5 = number; } } if (this.type == 513 && (double) this.ai[0] == 0.0) { this.ai[3] = (float) this.whoAmI; this.realLife = this.whoAmI; int index7 = this.whoAmI; int num2 = Main.rand.Next(6, 10); for (int index8 = 0; index8 < num2; ++index8) { int Type = 514; if (index8 == num2 - 1) Type = 515; int number = NPC.NewNPC((int) ((double) this.position.X + (double) (this.width / 2)), (int) ((double) this.position.Y + (double) this.height), Type, this.whoAmI); Main.npc[number].ai[3] = (float) this.whoAmI; Main.npc[number].realLife = this.whoAmI; Main.npc[number].ai[1] = (float) index7; Main.npc[index7].ai[0] = (float) number; NetMessage.SendData(23, number: number); index7 = number; } } if (this.type == 510 && (double) this.ai[0] == 0.0) { this.ai[3] = (float) this.whoAmI; this.realLife = this.whoAmI; int index9 = this.whoAmI; int num3 = Main.rand.Next(12, 21); for (int index10 = 0; index10 < num3; ++index10) { int Type = 511; if (index10 == num3 - 1) Type = 512; int number = NPC.NewNPC((int) ((double) this.position.X + (double) (this.width / 2)), (int) ((double) this.position.Y + (double) this.height), Type, this.whoAmI); Main.npc[number].ai[3] = (float) this.whoAmI; Main.npc[number].realLife = this.whoAmI; Main.npc[number].ai[1] = (float) index9; Main.npc[index9].ai[0] = (float) number; NetMessage.SendData(23, number: number); index9 = number; } } else if ((this.type == 7 || this.type == 8 || this.type == 10 || this.type == 11 || this.type == 13 || this.type == 14 || this.type == 39 || this.type == 40 || this.type == 95 || this.type == 96 || this.type == 98 || this.type == 99 || this.type == 117 || this.type == 118) && (double) this.ai[0] == 0.0) { if (this.type == 7 || this.type == 10 || this.type == 13 || this.type == 39 || this.type == 95 || this.type == 98 || this.type == 117) { if (this.type < 13 || this.type > 15) { this.ai[3] = (float) this.whoAmI; this.realLife = this.whoAmI; } this.ai[2] = (float) Main.rand.Next(8, 13); if (this.type == 10) this.ai[2] = (float) Main.rand.Next(4, 7); if (this.type == 13) { this.ai[2] = (float) Main.rand.Next(45, 56); if (Main.expertMode) this.ai[2] = (float) (int) ((double) this.ai[2] * 1.10000002384186); } if (this.type == 39) this.ai[2] = (float) Main.rand.Next(12, 19); if (this.type == 95) this.ai[2] = (float) Main.rand.Next(6, 12); if (this.type == 98) this.ai[2] = (float) Main.rand.Next(20, 26); if (this.type == 117) this.ai[2] = (float) Main.rand.Next(3, 6); this.ai[0] = (float) NPC.NewNPC((int) ((double) this.position.X + (double) (this.width / 2)), (int) ((double) this.position.Y + (double) this.height), this.type + 1, this.whoAmI); } else this.ai[0] = this.type != 8 && this.type != 11 && this.type != 14 && this.type != 40 && this.type != 96 && this.type != 99 && this.type != 118 || (double) this.ai[2] <= 0.0 ? (float) NPC.NewNPC((int) ((double) this.position.X + (double) (this.width / 2)), (int) ((double) this.position.Y + (double) this.height), this.type + 1, this.whoAmI) : (float) NPC.NewNPC((int) ((double) this.position.X + (double) (this.width / 2)), (int) ((double) this.position.Y + (double) this.height), this.type, this.whoAmI); if (this.type < 13 || this.type > 15) { Main.npc[(int) this.ai[0]].ai[3] = this.ai[3]; Main.npc[(int) this.ai[0]].realLife = this.realLife; } Main.npc[(int) this.ai[0]].ai[1] = (float) this.whoAmI; Main.npc[(int) this.ai[0]].ai[2] = this.ai[2] - 1f; this.netUpdate = true; } if (this.type == 412 && (double) this.ai[0] == 0.0) { this.ai[3] = (float) this.whoAmI; this.realLife = this.whoAmI; int index11 = this.whoAmI; int num4 = 30; for (int index12 = 0; index12 < num4; ++index12) { int Type = 413; if (index12 == num4 - 1) Type = 414; int number = NPC.NewNPC((int) ((double) this.position.X + (double) (this.width / 2)), (int) ((double) this.position.Y + (double) this.height), Type, this.whoAmI); Main.npc[number].ai[3] = (float) this.whoAmI; Main.npc[number].realLife = this.whoAmI; Main.npc[number].ai[1] = (float) index11; Main.npc[index11].ai[0] = (float) number; NetMessage.SendData(23, number: number); index11 = number; } } switch (this.type) { case 8: case 9: case 11: case 12: case 40: case 41: case 88: case 89: case 90: case 91: case 92: case 96: case 97: case 99: case 100: case 118: case 119: case 413: case 414: case 455: case 456: case 457: case 458: case 459: case 511: case 512: case 514: case 515: if (!Main.npc[(int) this.ai[1]].active || Main.npc[(int) this.ai[1]].aiStyle != this.aiStyle) { this.life = 0; this.HitEffect(); this.active = false; NetMessage.SendData(28, number: this.whoAmI, number2: -1f); break; } break; } switch (this.type) { case 7: case 8: case 10: case 11: case 39: case 40: case 87: case 88: case 89: case 90: case 91: case 95: case 96: case 98: case 99: case 117: case 118: case 412: case 413: case 454: case 455: case 456: case 457: case 458: case 510: case 511: case 513: case 514: if (!Main.npc[(int) this.ai[0]].active || Main.npc[(int) this.ai[0]].aiStyle != this.aiStyle) { this.life = 0; this.HitEffect(); this.active = false; NetMessage.SendData(28, number: this.whoAmI, number2: -1f); break; } break; } if (this.type == 13 || this.type == 14 || this.type == 15) { if (!Main.npc[(int) this.ai[1]].active && !Main.npc[(int) this.ai[0]].active) { this.life = 0; this.HitEffect(); this.checkDead(); this.active = false; NetMessage.SendData(28, number: this.whoAmI, number2: -1f); } if (this.type == 13 && !Main.npc[(int) this.ai[0]].active) { this.life = 0; this.HitEffect(); this.checkDead(); this.active = false; NetMessage.SendData(28, number: this.whoAmI, number2: -1f); } if (this.type == 15 && !Main.npc[(int) this.ai[1]].active) { this.life = 0; this.HitEffect(); this.checkDead(); this.active = false; NetMessage.SendData(28, number: this.whoAmI, number2: -1f); } if (this.type == 14 && (!Main.npc[(int) this.ai[1]].active || Main.npc[(int) this.ai[1]].aiStyle != this.aiStyle)) { this.type = 13; int whoAmI = this.whoAmI; float num5 = (float) this.life / (float) this.lifeMax; float num6 = this.ai[0]; this.SetDefaultsKeepPlayerInteraction(this.type); this.life = (int) ((double) this.lifeMax * (double) num5); this.ai[0] = num6; this.TargetClosest(); this.netUpdate = true; this.whoAmI = whoAmI; } if (this.type == 14 && (!Main.npc[(int) this.ai[0]].active || Main.npc[(int) this.ai[0]].aiStyle != this.aiStyle)) { int whoAmI = this.whoAmI; float num7 = (float) this.life / (float) this.lifeMax; float num8 = this.ai[1]; this.SetDefaultsKeepPlayerInteraction(this.type); this.life = (int) ((double) this.lifeMax * (double) num7); this.ai[1] = num8; this.TargetClosest(); this.netUpdate = true; this.whoAmI = whoAmI; } } if (!this.active && Main.netMode == 2) NetMessage.SendData(28, number: this.whoAmI, number2: -1f); } int num9 = (int) ((double) this.position.X / 16.0) - 1; int num10 = (int) (((double) this.position.X + (double) this.width) / 16.0) + 2; int num11 = (int) ((double) this.position.Y / 16.0) - 1; int num12 = (int) (((double) this.position.Y + (double) this.height) / 16.0) + 2; if (num9 < 0) num9 = 0; if (num10 > Main.maxTilesX) num10 = Main.maxTilesX; if (num11 < 0) num11 = 0; if (num12 > Main.maxTilesY) num12 = Main.maxTilesY; bool flag2 = false; if (this.type >= 87 && this.type <= 92) flag2 = true; if (this.type >= 454 && this.type <= 459) flag2 = true; if (this.type == 402 && (double) this.ai[1] == -1.0) flag2 = true; if (this.type >= 412 && this.type <= 414) flag2 = true; if (!flag2) { for (int i = num9; i < num10; ++i) { for (int j = num11; j < num12; ++j) { if (Main.tile[i, j] != null && (Main.tile[i, j].nactive() && (Main.tileSolid[(int) Main.tile[i, j].type] || Main.tileSolidTop[(int) Main.tile[i, j].type] && Main.tile[i, j].frameY == (short) 0) || Main.tile[i, j].liquid > (byte) 64)) { Vector2 vector2; vector2.X = (float) (i * 16); vector2.Y = (float) (j * 16); if ((double) this.position.X + (double) this.width > (double) vector2.X && (double) this.position.X < (double) vector2.X + 16.0 && (double) this.position.Y + (double) this.height > (double) vector2.Y && (double) this.position.Y < (double) vector2.Y + 16.0) { flag2 = true; if (Main.rand.Next(100) == 0 && this.type != 117 && Main.tile[i, j].nactive()) WorldGen.KillTile(i, j, true, true); } } } } } if (!flag2 && (this.type == 7 || this.type == 10 || this.type == 13 || this.type == 39 || this.type == 95 || this.type == 98 || this.type == 117 || this.type == 375 || this.type == 454 || this.type == 510 || this.type == 513)) { Microsoft.Xna.Framework.Rectangle rectangle1 = new Microsoft.Xna.Framework.Rectangle((int) this.position.X, (int) this.position.Y, this.width, this.height); int num13 = 1000; bool flag3 = true; for (int index = 0; index < (int) byte.MaxValue; ++index) { if (Main.player[index].active) { Microsoft.Xna.Framework.Rectangle rectangle2 = new Microsoft.Xna.Framework.Rectangle((int) Main.player[index].position.X - num13, (int) Main.player[index].position.Y - num13, num13 * 2, num13 * 2); if (rectangle1.Intersects(rectangle2)) { flag3 = false; break; } } } if (flag3) flag2 = true; } if (this.type >= 87 && this.type <= 92 || this.type >= 454 && this.type <= 459) { if ((double) this.velocity.X < 0.0) this.spriteDirection = 1; else if ((double) this.velocity.X > 0.0) this.spriteDirection = -1; } if (this.type == 414) { if (this.justHit) this.localAI[3] = 3f; if ((double) this.localAI[2] > 0.0) { this.localAI[2] -= 16f; if ((double) this.localAI[2] == 0.0) this.localAI[2] = (float) sbyte.MinValue; } else if ((double) this.localAI[2] < 0.0) this.localAI[2] += 16f; else if ((double) this.localAI[3] > 0.0) { this.localAI[2] = 128f; --this.localAI[3]; } } if (this.type == 412) { Vector2 vector2_1 = this.Center + (this.rotation - 1.570796f).ToRotationVector2() * 8f; Vector2 vector2_2 = this.rotation.ToRotationVector2() * 16f; Dust dust1 = Main.dust[Dust.NewDust(vector2_1 + vector2_2, 0, 0, 6, this.velocity.X, this.velocity.Y, 100, Color.Transparent, (float) (1.0 + (double) Main.rand.NextFloat() * 3.0))]; dust1.noGravity = true; dust1.noLight = true; dust1.position -= new Vector2(4f); dust1.fadeIn = 1f; dust1.velocity = Vector2.Zero; Dust dust2 = Main.dust[Dust.NewDust(vector2_1 - vector2_2, 0, 0, 6, this.velocity.X, this.velocity.Y, 100, Color.Transparent, (float) (1.0 + (double) Main.rand.NextFloat() * 3.0))]; dust2.noGravity = true; dust2.noLight = true; dust2.position -= new Vector2(4f); dust2.fadeIn = 1f; dust2.velocity = Vector2.Zero; } float num14 = 8f; float num15 = 0.07f; if (this.type == 95) { num14 = 5.5f; num15 = 0.045f; } if (this.type == 10) { num14 = 6f; num15 = 0.05f; } if (this.type == 513) { num14 = 7f; num15 = 0.1f; } if (this.type == 13) { num14 = 10f; num15 = 0.07f; if (Main.expertMode) { num14 = 12f; num15 = 0.15f; } } if (this.type == 510) { if (!Main.player[this.target].dead && Main.player[this.target].ZoneSandstorm) { num14 = 16f; num15 = 0.35f; } else { num14 = 10f; num15 = 0.25f; } } if (this.type == 87) { num14 = 11f; num15 = 0.25f; } if (this.type == 375) { num14 = 6f; num15 = 0.15f; } if (this.type == 454) { num14 = 20f; num15 = 0.55f; } if (this.type == 402) { num14 = 6f; num15 = 0.2f; } if (this.type == 117 && Main.wof >= 0) { double num16; if ((num16 = (double) ((float) Main.npc[Main.wof].life / (float) Main.npc[Main.wof].lifeMax)) < 0.5) { ++num14; num15 += 0.1f; } if (num16 < 0.25) { ++num14; num15 += 0.1f; } if (num16 < 0.1) { num14 += 2f; num15 += 0.1f; } } Vector2 vector2_3 = new Vector2(this.position.X + (float) this.width * 0.5f, this.position.Y + (float) this.height * 0.5f); float num17 = Main.player[this.target].position.X + (float) (Main.player[this.target].width / 2); float num18 = Main.player[this.target].position.Y + (float) (Main.player[this.target].height / 2); if (this.type == 412) { num14 = 10f; num15 = 0.3f; int num19 = -1; int num20 = (int) ((double) Main.player[this.target].Center.X / 16.0); int num21 = (int) ((double) Main.player[this.target].Center.Y / 16.0); for (int i = num20 - 2; i <= num20 + 2; ++i) { for (int j = num21; j <= num21 + 15; ++j) { if (WorldGen.SolidTile2(i, j)) { num19 = j; break; } } if (num19 > 0) break; } if (num19 > 0) { num19 *= 16; float num22 = (float) (num19 - 800); if ((double) Main.player[this.target].position.Y > (double) num22) { num18 = num22; if ((double) Math.Abs(this.Center.X - Main.player[this.target].Center.X) < 500.0) num17 = (double) this.velocity.X <= 0.0 ? Main.player[this.target].Center.X - 600f : Main.player[this.target].Center.X + 600f; } } else { num14 = 14f; num15 = 0.5f; } float num23 = num14 * 1.3f; float num24 = num14 * 0.7f; float num25 = this.velocity.Length(); if ((double) num25 > 0.0) { if ((double) num25 > (double) num23) { this.velocity.Normalize(); this.velocity = this.velocity * num23; } else if ((double) num25 < (double) num24) { this.velocity.Normalize(); this.velocity = this.velocity * num24; } } if (num19 > 0) { for (int index = 0; index < 200; ++index) { if (Main.npc[index].active && Main.npc[index].type == this.type && index != this.whoAmI) { Vector2 vector2_4 = Main.npc[index].Center - this.Center; if ((double) vector2_4.Length() < 400.0) { vector2_4.Normalize(); Vector2 vector2_5 = vector2_4 * 1000f; num17 -= vector2_5.X; num18 -= vector2_5.Y; } } } } else { for (int index = 0; index < 200; ++index) { if (Main.npc[index].active && Main.npc[index].type == this.type && index != this.whoAmI) { Vector2 vector2_6 = Main.npc[index].Center - this.Center; if ((double) vector2_6.Length() < 60.0) { vector2_6.Normalize(); Vector2 vector2_7 = vector2_6 * 200f; num17 -= vector2_7.X; num18 -= vector2_7.Y; } } } } } float num26 = (float) ((int) ((double) num17 / 16.0) * 16); float num27 = (float) ((int) ((double) num18 / 16.0) * 16); vector2_3.X = (float) ((int) ((double) vector2_3.X / 16.0) * 16); vector2_3.Y = (float) ((int) ((double) vector2_3.Y / 16.0) * 16); float num28 = num26 - vector2_3.X; float num29 = num27 - vector2_3.Y; if (this.type == 375) { num28 *= -1f; num29 *= -1f; } float num30 = (float) Math.Sqrt((double) num28 * (double) num28 + (double) num29 * (double) num29); if ((double) this.ai[1] > 0.0) { if ((double) this.ai[1] < (double) Main.npc.Length) { try { vector2_3 = new Vector2(this.position.X + (float) this.width * 0.5f, this.position.Y + (float) this.height * 0.5f); num28 = Main.npc[(int) this.ai[1]].position.X + (float) (Main.npc[(int) this.ai[1]].width / 2) - vector2_3.X; num29 = Main.npc[(int) this.ai[1]].position.Y + (float) (Main.npc[(int) this.ai[1]].height / 2) - vector2_3.Y; } catch { } this.rotation = (float) Math.Atan2((double) num29, (double) num28) + 1.57f; float num31 = (float) Math.Sqrt((double) num28 * (double) num28 + (double) num29 * (double) num29); int num32 = this.width; if (this.type >= 87 && this.type <= 92) num32 = 42; if (this.type >= 454 && this.type <= 459) num32 = 36; if (this.type >= 13 && this.type <= 15) num32 = (int) ((double) num32 * (double) this.scale); if (this.type >= 412 && this.type <= 414) num32 += 6; float num33 = (num31 - (float) num32) / num31; float num34 = num28 * num33; float num35 = num29 * num33; this.velocity = Vector2.Zero; this.position.X += num34; this.position.Y += num35; if (this.type >= 87 && this.type <= 92) { if ((double) num34 < 0.0) this.spriteDirection = 1; else if ((double) num34 > 0.0) this.spriteDirection = -1; } if (this.type < 454 || this.type > 459) return; if ((double) num34 < 0.0) { this.spriteDirection = 1; return; } if ((double) num34 <= 0.0) return; this.spriteDirection = -1; return; } } if (!flag2) { this.TargetClosest(); this.velocity.Y += 0.11f; if ((double) this.velocity.Y > (double) num14) this.velocity.Y = num14; if ((double) Math.Abs(this.velocity.X) + (double) Math.Abs(this.velocity.Y) < (double) num14 * 0.4) { if ((double) this.velocity.X < 0.0) this.velocity.X -= num15 * 1.1f; else this.velocity.X += num15 * 1.1f; } else if ((double) this.velocity.Y == (double) num14) { if ((double) this.velocity.X < (double) num28) this.velocity.X += num15; else if ((double) this.velocity.X > (double) num28) this.velocity.X -= num15; } else if ((double) this.velocity.Y > 4.0) { if ((double) this.velocity.X < 0.0) this.velocity.X += num15 * 0.9f; else this.velocity.X -= num15 * 0.9f; } } else { if (this.type != 87 && this.type != 117 && this.type != 454 && this.type != 412 && this.soundDelay == 0) { float num36 = num30 / 40f; if ((double) num36 < 10.0) num36 = 10f; if ((double) num36 > 20.0) num36 = 20f; this.soundDelay = (int) num36; Main.PlaySound(15, (int) this.position.X, (int) this.position.Y); } float num37 = (float) Math.Sqrt((double) num28 * (double) num28 + (double) num29 * (double) num29); float num38 = Math.Abs(num28); float num39 = Math.Abs(num29); float num40 = num14 / num37; float num41 = num28 * num40; float num42 = num29 * num40; bool flag4 = false; if ((this.type == 7 || this.type == 13) && (!Main.player[this.target].ZoneCorrupt && !Main.player[this.target].ZoneCrimson || Main.player[this.target].dead)) flag4 = true; if (this.type == 513 && (double) Main.player[this.target].position.Y < Main.worldSurface * 16.0 && !Main.player[this.target].ZoneSandstorm && !Main.player[this.target].ZoneUndergroundDesert || Main.player[this.target].dead) flag4 = true; if (this.type == 510 && (double) Main.player[this.target].position.Y < Main.worldSurface * 16.0 && !Main.player[this.target].ZoneSandstorm && !Main.player[this.target].ZoneUndergroundDesert || Main.player[this.target].dead) flag4 = true; if (flag4) { bool flag5 = true; for (int index = 0; index < (int) byte.MaxValue; ++index) { if (Main.player[index].active && !Main.player[index].dead && Main.player[index].ZoneCorrupt) flag5 = false; } if (flag5) { if (Main.netMode != 1 && (double) this.position.Y / 16.0 > (Main.rockLayer + (double) Main.maxTilesY) / 2.0) { this.active = false; int num43; for (int number = (int) this.ai[0]; number > 0 && number < 200 && Main.npc[number].active && Main.npc[number].aiStyle == this.aiStyle; number = num43) { num43 = (int) Main.npc[number].ai[0]; Main.npc[number].active = false; this.life = 0; if (Main.netMode == 2) NetMessage.SendData(23, number: number); } if (Main.netMode == 2) NetMessage.SendData(23, number: this.whoAmI); } num41 = 0.0f; num42 = num14; } } bool flag6 = false; if (this.type == 87) { if (((double) this.velocity.X > 0.0 && (double) num41 < 0.0 || (double) this.velocity.X < 0.0 && (double) num41 > 0.0 || (double) this.velocity.Y > 0.0 && (double) num42 < 0.0 || (double) this.velocity.Y < 0.0 && (double) num42 > 0.0) && (double) Math.Abs(this.velocity.X) + (double) Math.Abs(this.velocity.Y) > (double) num15 / 2.0 && (double) num37 < 300.0) { flag6 = true; if ((double) Math.Abs(this.velocity.X) + (double) Math.Abs(this.velocity.Y) < (double) num14) this.velocity = this.velocity * 1.1f; } if ((double) this.position.Y > (double) Main.player[this.target].position.Y || (double) Main.player[this.target].position.Y / 16.0 > Main.worldSurface || Main.player[this.target].dead) { flag6 = true; if ((double) Math.Abs(this.velocity.X) < (double) num14 / 2.0) { if ((double) this.velocity.X == 0.0) this.velocity.X -= (float) this.direction; this.velocity.X *= 1.1f; } else if ((double) this.velocity.Y > -(double) num14) this.velocity.Y -= num15; } } if (this.type == 454) { if (((double) this.velocity.X > 0.0 && (double) num41 < 0.0 || (double) this.velocity.X < 0.0 && (double) num41 > 0.0 || (double) this.velocity.Y > 0.0 && (double) num42 < 0.0 || (double) this.velocity.Y < 0.0 && (double) num42 > 0.0) && (double) Math.Abs(this.velocity.X) + (double) Math.Abs(this.velocity.Y) > (double) num15 / 2.0 && (double) num37 < 300.0) { flag6 = true; if ((double) Math.Abs(this.velocity.X) + (double) Math.Abs(this.velocity.Y) < (double) num14) this.velocity = this.velocity * 1.1f; } if ((double) this.position.Y > (double) Main.player[this.target].position.Y || Main.player[this.target].dead) { flag6 = true; if ((double) Math.Abs(this.velocity.X) < (double) num14 / 2.0) { if ((double) this.velocity.X == 0.0) this.velocity.X -= (float) this.direction; this.velocity.X *= 1.1f; } else if ((double) this.velocity.Y > -(double) num14) this.velocity.Y -= num15; } } if (!flag6) { if ((double) this.velocity.X > 0.0 && (double) num41 > 0.0 || (double) this.velocity.X < 0.0 && (double) num41 < 0.0 || (double) this.velocity.Y > 0.0 && (double) num42 > 0.0 || (double) this.velocity.Y < 0.0 && (double) num42 < 0.0) { if ((double) this.velocity.X < (double) num41) this.velocity.X += num15; else if ((double) this.velocity.X > (double) num41) this.velocity.X -= num15; if ((double) this.velocity.Y < (double) num42) this.velocity.Y += num15; else if ((double) this.velocity.Y > (double) num42) this.velocity.Y -= num15; if ((double) Math.Abs(num42) < (double) num14 * 0.2 && ((double) this.velocity.X > 0.0 && (double) num41 < 0.0 || (double) this.velocity.X < 0.0 && (double) num41 > 0.0)) { if ((double) this.velocity.Y > 0.0) this.velocity.Y += num15 * 2f; else this.velocity.Y -= num15 * 2f; } if ((double) Math.Abs(num41) < (double) num14 * 0.2 && ((double) this.velocity.Y > 0.0 && (double) num42 < 0.0 || (double) this.velocity.Y < 0.0 && (double) num42 > 0.0)) { if ((double) this.velocity.X > 0.0) this.velocity.X += num15 * 2f; else this.velocity.X -= num15 * 2f; } } else if ((double) num38 > (double) num39) { if ((double) this.velocity.X < (double) num41) this.velocity.X += num15 * 1.1f; else if ((double) this.velocity.X > (double) num41) this.velocity.X -= num15 * 1.1f; if ((double) Math.Abs(this.velocity.X) + (double) Math.Abs(this.velocity.Y) < (double) num14 * 0.5) { if ((double) this.velocity.Y > 0.0) this.velocity.Y += num15; else this.velocity.Y -= num15; } } else { if ((double) this.velocity.Y < (double) num42) this.velocity.Y += num15 * 1.1f; else if ((double) this.velocity.Y > (double) num42) this.velocity.Y -= num15 * 1.1f; if ((double) Math.Abs(this.velocity.X) + (double) Math.Abs(this.velocity.Y) < (double) num14 * 0.5) { if ((double) this.velocity.X > 0.0) this.velocity.X += num15; else this.velocity.X -= num15; } } } } this.rotation = (float) Math.Atan2((double) this.velocity.Y, (double) this.velocity.X) + 1.57f; if (this.type == 7 || this.type == 10 || this.type == 13 || this.type == 39 || this.type == 95 || this.type == 98 || this.type == 117 || this.type == 510 || this.type == 513) { if (flag2) { if ((double) this.localAI[0] != 1.0) this.netUpdate = true; this.localAI[0] = 1f; } else { if ((double) this.localAI[0] != 0.0) this.netUpdate = true; this.localAI[0] = 0.0f; } if (((double) this.velocity.X > 0.0 && (double) this.oldVelocity.X < 0.0 || (double) this.velocity.X < 0.0 && (double) this.oldVelocity.X > 0.0 || (double) this.velocity.Y > 0.0 && (double) this.oldVelocity.Y < 0.0 || (double) this.velocity.Y < 0.0 && (double) this.oldVelocity.Y > 0.0) && !this.justHit) this.netUpdate = true; } if (this.type != 454) return; float num44 = Vector2.Distance(Main.player[this.target].Center, this.Center); int num45 = 0; if ((double) Vector2.Normalize(Main.player[this.target].Center - this.Center).ToRotation().AngleTowards(this.velocity.ToRotation(), 1.570796f) == (double) this.velocity.ToRotation() && (double) num44 < 350.0) num45 = 4; if ((double) num45 > this.frameCounter) ++this.frameCounter; if ((double) num45 < this.frameCounter) --this.frameCounter; if (this.frameCounter < 0.0) this.frameCounter = 0.0; if (this.frameCounter <= 4.0) return; this.frameCounter = 4.0; } private void AI_002_FloatingEye() { if ((this.type == 170 || this.type == 171 || this.type == 180) && Main.rand.Next(1000) == 0) Main.PlaySound(29, (int) this.position.X, (int) this.position.Y, 9); this.noGravity = true; if (!this.noTileCollide) { if (this.collideX) { this.velocity.X = this.oldVelocity.X * -0.5f; if (this.direction == -1 && (double) this.velocity.X > 0.0 && (double) this.velocity.X < 2.0) this.velocity.X = 2f; if (this.direction == 1 && (double) this.velocity.X < 0.0 && (double) this.velocity.X > -2.0) this.velocity.X = -2f; } if (this.collideY) { this.velocity.Y = this.oldVelocity.Y * -0.5f; if ((double) this.velocity.Y > 0.0 && (double) this.velocity.Y < 1.0) this.velocity.Y = 1f; if ((double) this.velocity.Y < 0.0 && (double) this.velocity.Y > -1.0) this.velocity.Y = -1f; } } if (Main.dayTime && (double) this.position.Y <= Main.worldSurface * 16.0 && (this.type == 2 || this.type == 133 || this.type == 190 || this.type == 191 || this.type == 192 || this.type == 193 || this.type == 194 || this.type == 317 || this.type == 318)) { if (this.timeLeft > 10) this.timeLeft = 10; this.directionY = -1; if ((double) this.velocity.Y > 0.0) this.direction = 1; this.direction = -1; if ((double) this.velocity.X > 0.0) this.direction = 1; } else this.TargetClosest(); if (this.type == 170 || this.type == 171 || this.type == 180) { if (Collision.CanHit(this.position, this.width, this.height, Main.player[this.target].position, Main.player[this.target].width, Main.player[this.target].height)) { if ((double) this.ai[1] > 0.0 && !Collision.SolidCollision(this.position, this.width, this.height)) { this.ai[1] = 0.0f; this.ai[0] = 0.0f; this.netUpdate = true; } } else if ((double) this.ai[1] == 0.0) ++this.ai[0]; if ((double) this.ai[0] >= 300.0) { this.ai[1] = 1f; this.ai[0] = 0.0f; this.netUpdate = true; } if ((double) this.ai[1] == 0.0) { this.alpha = 0; this.noTileCollide = false; } else { this.wet = false; this.alpha = 200; this.noTileCollide = true; } this.rotation = this.velocity.Y * 0.1f * (float) this.direction; this.TargetClosest(); if (this.direction == -1 && (double) this.velocity.X > -4.0 && (double) this.position.X > (double) Main.player[this.target].position.X + (double) Main.player[this.target].width) { this.velocity.X -= 0.08f; if ((double) this.velocity.X > 4.0) this.velocity.X -= 0.04f; else if ((double) this.velocity.X > 0.0) this.velocity.X -= 0.2f; if ((double) this.velocity.X < -4.0) this.velocity.X = -4f; } else if (this.direction == 1 && (double) this.velocity.X < 4.0 && (double) this.position.X + (double) this.width < (double) Main.player[this.target].position.X) { this.velocity.X += 0.08f; if ((double) this.velocity.X < -4.0) this.velocity.X += 0.04f; else if ((double) this.velocity.X < 0.0) this.velocity.X += 0.2f; if ((double) this.velocity.X > 4.0) this.velocity.X = 4f; } if (this.directionY == -1 && (double) this.velocity.Y > -2.5 && (double) this.position.Y > (double) Main.player[this.target].position.Y + (double) Main.player[this.target].height) { this.velocity.Y -= 0.1f; if ((double) this.velocity.Y > 2.5) this.velocity.Y -= 0.05f; else if ((double) this.velocity.Y > 0.0) this.velocity.Y -= 0.15f; if ((double) this.velocity.Y < -2.5) this.velocity.Y = -2.5f; } else if (this.directionY == 1 && (double) this.velocity.Y < 2.5 && (double) this.position.Y + (double) this.height < (double) Main.player[this.target].position.Y) { this.velocity.Y += 0.1f; if ((double) this.velocity.Y < -2.5) this.velocity.Y += 0.05f; else if ((double) this.velocity.Y < 0.0) this.velocity.Y += 0.15f; if ((double) this.velocity.Y > 2.5) this.velocity.Y = 2.5f; } } else if (this.type == 116) { this.TargetClosest(); Lighting.AddLight((int) ((double) this.position.X + (double) (this.width / 2)) / 16, (int) ((double) this.position.Y + (double) (this.height / 2)) / 16, 0.3f, 0.2f, 0.1f); if (this.direction == -1 && (double) this.velocity.X > -6.0) { this.velocity.X -= 0.1f; if ((double) this.velocity.X > 6.0) this.velocity.X -= 0.1f; else if ((double) this.velocity.X > 0.0) this.velocity.X -= 0.2f; if ((double) this.velocity.X < -6.0) this.velocity.X = -6f; } else if (this.direction == 1 && (double) this.velocity.X < 6.0) { this.velocity.X += 0.1f; if ((double) this.velocity.X < -6.0) this.velocity.X += 0.1f; else if ((double) this.velocity.X < 0.0) this.velocity.X += 0.2f; if ((double) this.velocity.X > 6.0) this.velocity.X = 6f; } if (this.directionY == -1 && (double) this.velocity.Y > -2.5) { this.velocity.Y -= 0.04f; if ((double) this.velocity.Y > 2.5) this.velocity.Y -= 0.05f; else if ((double) this.velocity.Y > 0.0) this.velocity.Y -= 0.15f; if ((double) this.velocity.Y < -2.5) this.velocity.Y = -2.5f; } else if (this.directionY == 1 && (double) this.velocity.Y < 1.5) { this.velocity.Y += 0.04f; if ((double) this.velocity.Y < -2.5) this.velocity.Y += 0.05f; else if ((double) this.velocity.Y < 0.0) this.velocity.Y += 0.15f; if ((double) this.velocity.Y > 2.5) this.velocity.Y = 2.5f; } if (Main.rand.Next(40) == 0) { int index = Dust.NewDust(new Vector2(this.position.X, this.position.Y + (float) this.height * 0.25f), this.width, (int) ((double) this.height * 0.5), 5, this.velocity.X, 2f); Main.dust[index].velocity.X *= 0.5f; Main.dust[index].velocity.Y *= 0.1f; } } else if (this.type == 133) { if ((double) this.life < (double) this.lifeMax * 0.5) { if (this.direction == -1 && (double) this.velocity.X > -6.0) { this.velocity.X -= 0.1f; if ((double) this.velocity.X > 6.0) this.velocity.X -= 0.1f; else if ((double) this.velocity.X > 0.0) this.velocity.X += 0.05f; if ((double) this.velocity.X < -6.0) this.velocity.X = -6f; } else if (this.direction == 1 && (double) this.velocity.X < 6.0) { this.velocity.X += 0.1f; if ((double) this.velocity.X < -6.0) this.velocity.X += 0.1f; else if ((double) this.velocity.X < 0.0) this.velocity.X -= 0.05f; if ((double) this.velocity.X > 6.0) this.velocity.X = 6f; } if (this.directionY == -1 && (double) this.velocity.Y > -4.0) { this.velocity.Y -= 0.1f; if ((double) this.velocity.Y > 4.0) this.velocity.Y -= 0.1f; else if ((double) this.velocity.Y > 0.0) this.velocity.Y += 0.05f; if ((double) this.velocity.Y < -4.0) this.velocity.Y = -4f; } else if (this.directionY == 1 && (double) this.velocity.Y < 4.0) { this.velocity.Y += 0.1f; if ((double) this.velocity.Y < -4.0) this.velocity.Y += 0.1f; else if ((double) this.velocity.Y < 0.0) this.velocity.Y -= 0.05f; if ((double) this.velocity.Y > 4.0) this.velocity.Y = 4f; } } else { if (this.direction == -1 && (double) this.velocity.X > -4.0) { this.velocity.X -= 0.1f; if ((double) this.velocity.X > 4.0) this.velocity.X -= 0.1f; else if ((double) this.velocity.X > 0.0) this.velocity.X += 0.05f; if ((double) this.velocity.X < -4.0) this.velocity.X = -4f; } else if (this.direction == 1 && (double) this.velocity.X < 4.0) { this.velocity.X += 0.1f; if ((double) this.velocity.X < -4.0) this.velocity.X += 0.1f; else if ((double) this.velocity.X < 0.0) this.velocity.X -= 0.05f; if ((double) this.velocity.X > 4.0) this.velocity.X = 4f; } if (this.directionY == -1 && (double) this.velocity.Y > -1.5) { this.velocity.Y -= 0.04f; if ((double) this.velocity.Y > 1.5) this.velocity.Y -= 0.05f; else if ((double) this.velocity.Y > 0.0) this.velocity.Y += 0.03f; if ((double) this.velocity.Y < -1.5) this.velocity.Y = -1.5f; } else if (this.directionY == 1 && (double) this.velocity.Y < 1.5) { this.velocity.Y += 0.04f; if ((double) this.velocity.Y < -1.5) this.velocity.Y += 0.05f; else if ((double) this.velocity.Y < 0.0) this.velocity.Y -= 0.03f; if ((double) this.velocity.Y > 1.5) this.velocity.Y = 1.5f; } } } else { float num1 = 4f; float num2 = 1.5f; float num3 = num1 * (float) (1.0 + (1.0 - (double) this.scale)); float num4 = num2 * (float) (1.0 + (1.0 - (double) this.scale)); if (this.direction == -1 && (double) this.velocity.X > -(double) num3) { this.velocity.X -= 0.1f; if ((double) this.velocity.X > (double) num3) this.velocity.X -= 0.1f; else if ((double) this.velocity.X > 0.0) this.velocity.X += 0.05f; if ((double) this.velocity.X < -(double) num3) this.velocity.X = -num3; } else if (this.direction == 1 && (double) this.velocity.X < (double) num3) { this.velocity.X += 0.1f; if ((double) this.velocity.X < -(double) num3) this.velocity.X += 0.1f; else if ((double) this.velocity.X < 0.0) this.velocity.X -= 0.05f; if ((double) this.velocity.X > (double) num3) this.velocity.X = num3; } if (this.directionY == -1 && (double) this.velocity.Y > -(double) num4) { this.velocity.Y -= 0.04f; if ((double) this.velocity.Y > (double) num4) this.velocity.Y -= 0.05f; else if ((double) this.velocity.Y > 0.0) this.velocity.Y += 0.03f; if ((double) this.velocity.Y < -(double) num4) this.velocity.Y = -num4; } else if (this.directionY == 1 && (double) this.velocity.Y < (double) num4) { this.velocity.Y += 0.04f; if ((double) this.velocity.Y < -(double) num4) this.velocity.Y += 0.05f; else if ((double) this.velocity.Y < 0.0) this.velocity.Y -= 0.03f; if ((double) this.velocity.Y > (double) num4) this.velocity.Y = num4; } } if ((this.type == 2 || this.type == 133 || this.type == 190 || this.type == 191 || this.type == 192 || this.type == 193 || this.type == 194) && Main.rand.Next(40) == 0) { int index = Dust.NewDust(new Vector2(this.position.X, this.position.Y + (float) this.height * 0.25f), this.width, (int) ((double) this.height * 0.5), 5, this.velocity.X, 2f); Main.dust[index].velocity.X *= 0.5f; Main.dust[index].velocity.Y *= 0.1f; } if (!this.wet || this.type == 170 || this.type == 171 || this.type == 172) return; if ((double) this.velocity.Y > 0.0) this.velocity.Y *= 0.95f; this.velocity.Y -= 0.5f; if ((double) this.velocity.Y < -4.0) this.velocity.Y = -4f; this.TargetClosest(); } private void AI_007_TownEntities() { int maxValue1 = 300; bool flag1 = Main.raining; if (!Main.dayTime) flag1 = true; if (Main.eclipse) flag1 = true; if (Main.slimeRain) flag1 = true; float num1 = 1f; this.defense = !Main.expertMode ? (this.dryadWard ? this.defDefense + 6 : this.defDefense) : (this.dryadWard ? this.defDefense + 10 : this.defDefense); if (this.townNPC || this.type == 453) { if (NPC.downedBoss1) { num1 += 0.1f; this.defense += 3; } if (NPC.downedBoss2) { num1 += 0.1f; this.defense += 3; } if (NPC.downedBoss3) { num1 += 0.1f; this.defense += 3; } if (NPC.downedQueenBee) { num1 += 0.1f; this.defense += 3; } if (Main.hardMode) { num1 += 0.4f; this.defense += 12; } if (NPC.downedMechBoss1) { num1 += 0.15f; this.defense += 6; } if (NPC.downedMechBoss2) { num1 += 0.15f; this.defense += 6; } if (NPC.downedMechBoss3) { num1 += 0.15f; this.defense += 6; } if (NPC.downedPlantBoss) { num1 += 0.15f; this.defense += 8; } if (NPC.downedGolemBoss) { num1 += 0.15f; this.defense += 8; } if (NPC.downedAncientCultist) { num1 += 0.15f; this.defense += 8; } } if (this.type == 142 && Main.netMode != 1 && !Main.xMas) { this.StrikeNPCNoInteraction(9999, 0.0f, 0); if (Main.netMode == 2) NetMessage.SendData(28, number: this.whoAmI, number2: 9999f); } if ((this.type == 148 || this.type == 149) && (double) this.localAI[0] == 0.0) this.localAI[0] = (float) Main.rand.Next(1, 5); if (this.type == 124) { bool flag2 = false; for (int index = 0; index < 1000; ++index) { if (Main.projectile[index].active && Main.projectile[index].type == 582 && (double) Main.projectile[index].ai[1] == (double) this.whoAmI) { flag2 = true; break; } } this.localAI[0] = (float) flag2.ToInt(); } if ((this.type == 362 || this.type == 364) && Main.netMode != 1 && ((double) this.velocity.Y > 4.0 || (double) this.velocity.Y < -4.0 || this.wet)) { int direction = this.direction; this.Transform(this.type + 1); this.TargetClosest(); this.direction = direction; this.netUpdate = true; } else { switch (this.type) { case 107: NPC.savedGoblin = true; break; case 108: NPC.savedWizard = true; break; case 124: NPC.savedMech = true; break; case 353: NPC.savedStylist = true; break; case 369: NPC.savedAngler = true; break; case 441: NPC.savedTaxCollector = true; break; case 550: NPC.savedBartender = true; break; } if (this.type >= 0 && this.type < 580 && NPCID.Sets.TownCritter[this.type] && this.target == (int) byte.MaxValue) { this.TargetClosest(); if ((double) this.position.X < (double) Main.player[this.target].position.X) { this.direction = 1; this.spriteDirection = this.direction; } if ((double) this.position.X > (double) Main.player[this.target].position.X) { this.direction = -1; this.spriteDirection = this.direction; } if (this.homeTileX == -1) this.homeTileX = (int) (((double) this.position.X + (double) (this.width / 2)) / 16.0); } else if (this.homeTileX == -1 && this.homeTileY == -1 && (double) this.velocity.Y == 0.0) { this.homeTileX = (int) this.Center.X / 16; this.homeTileY = (int) ((double) this.position.Y + (double) this.height + 4.0) / 16; } bool flag3 = false; int homeTileY = this.homeTileY; if (this.type == 441) NPC.taxCollector = true; this.directionY = -1; if (this.direction == 0) this.direction = 1; for (int index = 0; index < (int) byte.MaxValue; ++index) { if (Main.player[index].active && Main.player[index].talkNPC == this.whoAmI) { flag3 = true; if ((double) this.ai[0] != 0.0) this.netUpdate = true; this.ai[0] = 0.0f; this.ai[1] = 300f; this.localAI[3] = 100f; if ((double) Main.player[index].position.X + (double) (Main.player[index].width / 2) < (double) this.position.X + (double) (this.width / 2)) this.direction = -1; else this.direction = 1; } } if ((double) this.ai[3] == 1.0) { this.life = -1; this.HitEffect(); this.active = false; this.netUpdate = true; if (this.type != 37) return; Main.PlaySound(15, (int) this.position.X, (int) this.position.Y, 0); } else { if (this.type == 37 && Main.netMode != 1) { this.homeless = false; this.homeTileX = Main.dungeonX; this.homeTileY = Main.dungeonY; if (NPC.downedBoss3) { this.ai[3] = 1f; this.netUpdate = true; } } if (Main.netMode != 1 && this.homeTileY > 0) { while (!WorldGen.SolidTile(this.homeTileX, homeTileY) && homeTileY < Main.maxTilesY - 20) ++homeTileY; } if (this.type == 368) { this.homeless = true; if (!Main.dayTime) { this.homeTileX = (int) ((double) this.Center.X / 16.0); this.homeTileY = (int) ((double) this.position.Y + (double) this.height + 2.0) / 16; if (!flag3 && (double) this.ai[0] == 0.0) { this.ai[0] = 1f; this.ai[1] = 200f; } flag1 = false; } } if (this.type == 369 && this.homeless && this.wet) { if ((double) this.Center.X / 16.0 < 380.0 || (double) this.Center.X / 16.0 > (double) (Main.maxTilesX - 380)) { this.homeTileX = Main.spawnTileX; this.homeTileY = Main.spawnTileY; this.ai[0] = 1f; this.ai[1] = 200f; } if ((double) this.position.X / 16.0 < 200.0) this.direction = 1; else if ((double) this.position.X / 16.0 > (double) (Main.maxTilesX - 200)) this.direction = -1; } int x = (int) ((double) this.position.X + (double) (this.width / 2)) / 16; int y = (int) ((double) this.position.Y + (double) this.height + 1.0) / 16; if (!WorldGen.InWorld(x, y) || Main.tile[x, y] == null) return; if (!this.homeless && Main.netMode != 1 && this.townNPC && (flag1 || Main.tileDungeon[(int) Main.tile[x, y].type]) && (x != this.homeTileX || y != homeTileY)) { bool flag4 = true; for (int index1 = 0; index1 < 2; ++index1) { Microsoft.Xna.Framework.Rectangle rectangle = new Microsoft.Xna.Framework.Rectangle((int) ((double) this.position.X + (double) (this.width / 2) - (double) (NPC.sWidth / 2) - (double) NPC.safeRangeX), (int) ((double) this.position.Y + (double) (this.height / 2) - (double) (NPC.sHeight / 2) - (double) NPC.safeRangeY), NPC.sWidth + NPC.safeRangeX * 2, NPC.sHeight + NPC.safeRangeY * 2); if (index1 == 1) rectangle = new Microsoft.Xna.Framework.Rectangle(this.homeTileX * 16 + 8 - NPC.sWidth / 2 - NPC.safeRangeX, homeTileY * 16 + 8 - NPC.sHeight / 2 - NPC.safeRangeY, NPC.sWidth + NPC.safeRangeX * 2, NPC.sHeight + NPC.safeRangeY * 2); for (int index2 = 0; index2 < (int) byte.MaxValue; ++index2) { if (Main.player[index2].active && new Microsoft.Xna.Framework.Rectangle((int) Main.player[index2].position.X, (int) Main.player[index2].position.Y, Main.player[index2].width, Main.player[index2].height).Intersects(rectangle)) { flag4 = false; break; } if (!flag4) break; } } if (flag4) { if (this.type == 37 || !Collision.SolidTiles(this.homeTileX - 1, this.homeTileX + 1, homeTileY - 3, homeTileY - 1)) { this.velocity.X = 0.0f; this.velocity.Y = 0.0f; this.position.X = (float) (this.homeTileX * 16 + 8 - this.width / 2); this.position.Y = (float) (homeTileY * 16 - this.height) - 0.1f; this.netUpdate = true; } else { this.homeless = true; WorldGen.QuickFindHome(this.whoAmI); } } } bool flag5 = this.type == 300 || this.type == 447; float num2 = 200f; if (NPCID.Sets.DangerDetectRange[this.type] != -1) num2 = (float) NPCID.Sets.DangerDetectRange[this.type]; bool flag6 = false; bool flag7 = false; float num3 = -1f; float num4 = -1f; int num5 = 0; int index3 = -1; int index4 = -1; if (Main.netMode != 1 && !flag3) { for (int index5 = 0; index5 < 200; ++index5) { if (Main.npc[index5].active && !Main.npc[index5].friendly && Main.npc[index5].damage > 0 && (double) Main.npc[index5].Distance(this.Center) < (double) num2 && (this.type != 453 || !NPCID.Sets.Skeletons.Contains(Main.npc[index5].netID))) { flag6 = true; float num6 = Main.npc[index5].Center.X - this.Center.X; if ((double) num6 < 0.0 && ((double) num3 == -1.0 || (double) num6 > (double) num3)) { num3 = num6; index3 = index5; } if ((double) num6 > 0.0 && ((double) num4 == -1.0 || (double) num6 < (double) num4)) { num4 = num6; index4 = index5; } } } if (flag6) { num5 = (double) num3 != -1.0 ? ((double) num4 != -1.0 ? ((double) num4 < -(double) num3).ToDirectionInt() : -1) : 1; float num7 = 0.0f; if ((double) num3 != -1.0) num7 = -num3; if ((double) num7 == 0.0 || (double) num4 < (double) num7 && (double) num4 > 0.0) num7 = num4; if ((double) this.ai[0] == 8.0) { if (this.direction == -num5) { this.ai[0] = 1f; this.ai[1] = (float) (300 + Main.rand.Next(300)); this.ai[2] = 0.0f; this.localAI[3] = 0.0f; this.netUpdate = true; } } else if ((double) this.ai[0] != 10.0 && (double) this.ai[0] != 12.0 && (double) this.ai[0] != 13.0 && (double) this.ai[0] != 14.0 && (double) this.ai[0] != 15.0) { if (NPCID.Sets.PrettySafe[this.type] != -1 && (double) NPCID.Sets.PrettySafe[this.type] < (double) num7) { flag6 = false; flag7 = true; } else if ((double) this.ai[0] != 1.0) { if (((double) this.ai[0] == 3.0 || (double) this.ai[0] == 4.0 || (double) this.ai[0] == 16.0 ? 1 : ((double) this.ai[0] == 17.0 ? 1 : 0)) != 0) { NPC npc = Main.npc[(int) this.ai[2]]; if (npc.active) { npc.ai[0] = 1f; npc.ai[1] = (float) (120 + Main.rand.Next(120)); npc.ai[2] = 0.0f; npc.localAI[3] = 0.0f; npc.direction = -num5; npc.netUpdate = true; } } this.ai[0] = 1f; this.ai[1] = (float) (120 + Main.rand.Next(120)); this.ai[2] = 0.0f; this.localAI[3] = 0.0f; this.direction = -num5; this.netUpdate = true; } else if ((double) this.ai[0] == 1.0 && this.direction != -num5) { this.direction = -num5; this.netUpdate = true; } } } } if ((double) this.ai[0] == 0.0) { if ((double) this.localAI[3] > 0.0) --this.localAI[3]; if (flag1 && !flag3 && !NPCID.Sets.TownCritter[this.type]) { if (Main.netMode != 1) { if (x == this.homeTileX && y == homeTileY) { if ((double) this.velocity.X != 0.0) this.netUpdate = true; if ((double) this.velocity.X > 0.100000001490116) this.velocity.X -= 0.1f; else if ((double) this.velocity.X < -0.100000001490116) this.velocity.X += 0.1f; else this.velocity.X = 0.0f; } else { if (x > this.homeTileX) this.direction = -1; else this.direction = 1; this.ai[0] = 1f; this.ai[1] = (float) (200 + Main.rand.Next(200)); this.ai[2] = 0.0f; this.localAI[3] = 0.0f; this.netUpdate = true; } } } else { if (flag5) this.velocity.X *= 0.5f; if ((double) this.velocity.X > 0.100000001490116) this.velocity.X -= 0.1f; else if ((double) this.velocity.X < -0.100000001490116) this.velocity.X += 0.1f; else this.velocity.X = 0.0f; if (Main.netMode != 1) { if ((double) this.ai[1] > 0.0) --this.ai[1]; if ((double) this.ai[1] <= 0.0) { this.ai[0] = 1f; this.ai[1] = (float) (200 + Main.rand.Next(300)); this.ai[2] = 0.0f; if (NPCID.Sets.TownCritter[this.type]) this.ai[1] += (float) Main.rand.Next(200, 400); this.localAI[3] = 0.0f; this.netUpdate = true; } } } if (Main.netMode != 1 && (!flag1 || x == this.homeTileX && y == homeTileY)) { if (x < this.homeTileX - 25 || x > this.homeTileX + 25) { if ((double) this.localAI[3] == 0.0) { if (x < this.homeTileX - 50 && this.direction == -1) { this.direction = 1; this.netUpdate = true; } else if (x > this.homeTileX + 50 && this.direction == 1) { this.direction = -1; this.netUpdate = true; } } } else if (Main.rand.Next(80) == 0 && (double) this.localAI[3] == 0.0) { this.localAI[3] = 200f; this.direction *= -1; this.netUpdate = true; } } } else if ((double) this.ai[0] == 1.0) { if (Main.netMode != 1 & flag1 && x == this.homeTileX && y == this.homeTileY && !NPCID.Sets.TownCritter[this.type]) { this.ai[0] = 0.0f; this.ai[1] = (float) (200 + Main.rand.Next(200)); this.localAI[3] = 60f; this.netUpdate = true; } else { bool flag8 = Collision.DrownCollision(this.position, this.width, this.height, 1f); if (!flag8) { if (Main.netMode != 1 && !this.homeless && !Main.tileDungeon[(int) Main.tile[x, y].type] && (x < this.homeTileX - 35 || x > this.homeTileX + 35)) { if ((double) this.position.X < (double) (this.homeTileX * 16) && this.direction == -1) this.ai[1] -= 5f; else if ((double) this.position.X > (double) (this.homeTileX * 16) && this.direction == 1) this.ai[1] -= 5f; } --this.ai[1]; } if ((double) this.ai[1] <= 0.0) { this.ai[0] = 0.0f; this.ai[1] = (float) (300 + Main.rand.Next(300)); this.ai[2] = 0.0f; if (NPCID.Sets.TownCritter[this.type]) this.ai[1] -= (float) Main.rand.Next(100); else this.ai[1] += (float) Main.rand.Next(900); this.localAI[3] = 60f; this.netUpdate = true; } if (this.closeDoor && (((double) this.position.X + (double) (this.width / 2)) / 16.0 > (double) (this.doorX + 2) || ((double) this.position.X + (double) (this.width / 2)) / 16.0 < (double) (this.doorX - 2))) { Tile tileSafely = Framing.GetTileSafely(this.doorX, this.doorY); if (tileSafely.type == (ushort) 11) { if (WorldGen.CloseDoor(this.doorX, this.doorY)) { this.closeDoor = false; NetMessage.SendData(19, number: 1, number2: ((float) this.doorX), number3: ((float) this.doorY), number4: ((float) this.direction)); } if (((double) this.position.X + (double) (this.width / 2)) / 16.0 > (double) (this.doorX + 4) || ((double) this.position.X + (double) (this.width / 2)) / 16.0 < (double) (this.doorX - 4) || ((double) this.position.Y + (double) (this.height / 2)) / 16.0 > (double) (this.doorY + 4) || ((double) this.position.Y + (double) (this.height / 2)) / 16.0 < (double) (this.doorY - 4)) this.closeDoor = false; } else if (tileSafely.type == (ushort) 389) { if (WorldGen.ShiftTallGate(this.doorX, this.doorY, true)) { this.closeDoor = false; NetMessage.SendData(19, number: 5, number2: ((float) this.doorX), number3: ((float) this.doorY)); } if (((double) this.position.X + (double) (this.width / 2)) / 16.0 > (double) (this.doorX + 4) || ((double) this.position.X + (double) (this.width / 2)) / 16.0 < (double) (this.doorX - 4) || ((double) this.position.Y + (double) (this.height / 2)) / 16.0 > (double) (this.doorY + 4) || ((double) this.position.Y + (double) (this.height / 2)) / 16.0 < (double) (this.doorY - 4)) this.closeDoor = false; } else this.closeDoor = false; } float num8 = 1f; float num9 = 0.07f; if (this.type == 299 || this.type == 539 || this.type == 538) num8 = 1.5f; if (flag5) { num8 = 2f; num9 = 1f; } if (this.friendly && flag6 | flag8) { num8 = 1.5f + (float) (1.0 - (double) this.life / (double) this.lifeMax) * 0.9f; num9 = 0.1f; } if ((double) this.velocity.X < -(double) num8 || (double) this.velocity.X > (double) num8) { if ((double) this.velocity.Y == 0.0) this.velocity = this.velocity * 0.8f; } else if ((double) this.velocity.X < (double) num8 && this.direction == 1) { this.velocity.X += num9; if ((double) this.velocity.X > (double) num8) this.velocity.X = num8; } else if ((double) this.velocity.X > -(double) num8 && this.direction == -1) { this.velocity.X -= num9; if ((double) this.velocity.X > (double) num8) this.velocity.X = num8; } bool holdsMatching = true; if ((double) (this.homeTileY * 16 - 32) > (double) this.position.Y) holdsMatching = false; if (this.direction == 1 && (double) this.position.Y + (double) (this.width / 2) > (double) (this.homeTileX * 16) || this.direction == -1 && (double) this.position.Y + (double) (this.width / 2) < (double) (this.homeTileX * 16)) holdsMatching = true; if ((double) this.velocity.Y == 0.0) Collision.StepDown(ref this.position, ref this.velocity, this.width, this.height, ref this.stepSpeed, ref this.gfxOffY); if ((double) this.velocity.Y >= 0.0) Collision.StepUp(ref this.position, ref this.velocity, this.width, this.height, ref this.stepSpeed, ref this.gfxOffY, holdsMatching: holdsMatching, specialChecksMode: 1); if ((double) this.velocity.Y == 0.0) { int num10 = (int) (((double) this.position.X + (double) (this.width / 2) + (double) (15 * this.direction)) / 16.0); int j = (int) (((double) this.position.Y + (double) this.height - 16.0) / 16.0); bool flag9 = false; bool flag10 = true; bool flag11 = x >= this.homeTileX - 35 && x <= this.homeTileX + 35; if (this.townNPC && (double) this.ai[1] < 30.0) { flag9 = !Utils.PlotTileLine(this.Top, this.Bottom, (float) this.width, new Utils.PerLinePoint(DelegateMethods.SearchAvoidedByNPCs)); if (!flag9) { Microsoft.Xna.Framework.Rectangle hitbox = this.Hitbox; hitbox.X -= 20; hitbox.Width += 40; for (int index6 = 0; index6 < 200; ++index6) { if (Main.npc[index6].active && Main.npc[index6].friendly && index6 != this.whoAmI && (double) Main.npc[index6].velocity.X == 0.0 && hitbox.Intersects(Main.npc[index6].Hitbox)) { flag9 = true; break; } } } } if (!flag9 & flag8) flag9 = true; if (flag10 && (NPCID.Sets.TownCritter[this.type] || !flag11 && this.direction == Math.Sign(this.homeTileX - x))) flag10 = false; if (flag10) { int num11 = 0; for (int index7 = -1; index7 <= 4; ++index7) { Tile tileSafely = Framing.GetTileSafely(num10 - this.direction * num11, j + index7); if (tileSafely.lava() && tileSafely.liquid > (byte) 0) { flag10 = true; break; } if (tileSafely.nactive() && Main.tileSolid[(int) tileSafely.type]) { flag10 = false; break; } } } if (!flag10 && this.wet) { bool flag12 = flag8; bool flag13 = false; if (!flag12) flag13 = Collision.DrownCollision(this.position + new Vector2((float) (this.width * this.direction), 0.0f), this.width, this.height, 1f); if ((flag13 || Collision.DrownCollision(this.position + new Vector2((float) (this.width * this.direction), (float) (this.height * 2 - 16 - (flag12 ? 16 : 0))), this.width, 16 + (flag12 ? 16 : 0), 1f)) && (double) this.localAI[3] <= 0.0) { flag10 = true; this.localAI[3] = 600f; } } if ((double) this.position.X == (double) this.localAI[3]) { this.direction *= -1; this.netUpdate = true; this.localAI[3] = 600f; } if (flag8) { if ((double) this.localAI[3] > 0.0) --this.localAI[3]; } else this.localAI[3] = -1f; Tile tileSafely1 = Framing.GetTileSafely(num10, j); Tile tileSafely2 = Framing.GetTileSafely(num10, j - 1); Tile tileSafely3 = Framing.GetTileSafely(num10, j - 2); if (this.townNPC && tileSafely3.nactive() && (tileSafely3.type == (ushort) 10 || tileSafely3.type == (ushort) 388) && Main.rand.Next(10) == 0 | flag1) { if (Main.netMode != 1) { if (WorldGen.OpenDoor(num10, j - 2, this.direction)) { this.closeDoor = true; this.doorX = num10; this.doorY = j - 2; NetMessage.SendData(19, number2: ((float) num10), number3: ((float) (j - 2)), number4: ((float) this.direction)); this.netUpdate = true; this.ai[1] += 80f; } else if (WorldGen.OpenDoor(num10, j - 2, -this.direction)) { this.closeDoor = true; this.doorX = num10; this.doorY = j - 2; NetMessage.SendData(19, number2: ((float) num10), number3: ((float) (j - 2)), number4: ((float) -this.direction)); this.netUpdate = true; this.ai[1] += 80f; } else if (WorldGen.ShiftTallGate(num10, j - 2, false)) { this.closeDoor = true; this.doorX = num10; this.doorY = j - 2; NetMessage.SendData(19, number: 4, number2: ((float) num10), number3: ((float) (j - 2))); this.netUpdate = true; this.ai[1] += 80f; } else { this.direction *= -1; this.netUpdate = true; } } } else { if ((double) this.velocity.X < 0.0 && this.spriteDirection == -1 || (double) this.velocity.X > 0.0 && this.spriteDirection == 1) { if (tileSafely3.nactive() && Main.tileSolid[(int) tileSafely3.type] && !Main.tileSolidTop[(int) tileSafely3.type]) { if (!Collision.SolidTilesVersatile(num10 - this.direction * 2, num10 - this.direction, j - 5, j - 1) && !Collision.SolidTiles(num10, num10, j - 5, j - 3)) { this.velocity.Y = -6f; this.netUpdate = true; } else if (flag5) { if (WorldGen.SolidTile((int) ((double) this.Center.X / 16.0) + this.direction, (int) ((double) this.Center.Y / 16.0))) { this.direction *= -1; this.velocity.X *= 0.0f; this.netUpdate = true; } } else if (flag6) { flag9 = false; this.velocity.X = 0.0f; this.direction *= -1; this.netUpdate = true; this.ai[0] = 8f; this.ai[1] = 240f; } else { this.direction *= -1; this.netUpdate = true; } } else if (tileSafely2.nactive() && Main.tileSolid[(int) tileSafely2.type] && !Main.tileSolidTop[(int) tileSafely2.type]) { if (!Collision.SolidTilesVersatile(num10 - this.direction * 2, num10 - this.direction, j - 4, j - 1) && !Collision.SolidTiles(num10, num10, j - 4, j - 2)) { this.velocity.Y = -5f; this.netUpdate = true; } else if (flag6) { flag9 = false; this.velocity.X = 0.0f; this.direction *= -1; this.netUpdate = true; this.ai[0] = 8f; this.ai[1] = 240f; } else { this.direction *= -1; this.netUpdate = true; } } else if ((double) this.position.Y + (double) this.height - (double) (j * 16) > 20.0 && tileSafely1.nactive() && Main.tileSolid[(int) tileSafely1.type] && !tileSafely1.topSlope()) { if (!Collision.SolidTilesVersatile(num10 - this.direction * 2, num10, j - 3, j - 1)) { this.velocity.Y = -4.4f; this.netUpdate = true; } else if (flag6) { flag9 = false; this.velocity.X = 0.0f; this.direction *= -1; this.netUpdate = true; this.ai[0] = 8f; this.ai[1] = 240f; } else { this.direction *= -1; this.netUpdate = true; } } else if (flag10) { this.direction *= -1; this.velocity.X *= -1f; this.netUpdate = true; if (flag6) { flag9 = false; this.velocity.X = 0.0f; this.ai[0] = 8f; this.ai[1] = 240f; } } if (flag9) { this.ai[1] = 90f; this.netUpdate = true; } if ((double) this.velocity.Y < 0.0) this.localAI[3] = this.position.X; } if ((double) this.velocity.Y < 0.0 && this.wet) this.velocity.Y *= 1.2f; if ((double) this.velocity.Y < 0.0 && NPCID.Sets.TownCritter[this.type] && !flag5) this.velocity.Y *= 1.2f; } } } } else if ((double) this.ai[0] == 2.0 || (double) this.ai[0] == 11.0) { if (Main.netMode != 1) { --this.localAI[3]; if (Main.rand.Next(60) == 0 && (double) this.localAI[3] == 0.0) { this.localAI[3] = 60f; this.direction *= -1; this.netUpdate = true; } } --this.ai[1]; this.velocity.X *= 0.8f; if ((double) this.ai[1] <= 0.0) { this.localAI[3] = 40f; this.ai[0] = 0.0f; this.ai[1] = (float) (60 + Main.rand.Next(60)); this.netUpdate = true; } } else if ((double) this.ai[0] == 3.0 || (double) this.ai[0] == 4.0 || (double) this.ai[0] == 5.0 || (double) this.ai[0] == 8.0 || (double) this.ai[0] == 9.0 || (double) this.ai[0] == 16.0 || (double) this.ai[0] == 17.0) { this.velocity.X *= 0.8f; --this.ai[1]; if ((double) this.ai[0] == 8.0 && (double) this.ai[1] < 60.0 & flag6) { this.ai[1] = 180f; this.netUpdate = true; } if ((double) this.ai[0] == 5.0) { Point tileCoordinates = this.Center.ToTileCoordinates(); if (Main.tile[tileCoordinates.X, tileCoordinates.Y].type != (ushort) 15) this.ai[1] = 0.0f; } if ((double) this.ai[1] <= 0.0) { this.ai[0] = 0.0f; this.ai[1] = (float) (60 + Main.rand.Next(60)); this.ai[2] = 0.0f; this.localAI[3] = (float) (30 + Main.rand.Next(60)); this.netUpdate = true; } } else if ((double) this.ai[0] == 6.0 || (double) this.ai[0] == 7.0 || (double) this.ai[0] == 18.0) { if ((double) this.ai[0] == 18.0 && ((double) this.localAI[3] < 1.0 || (double) this.localAI[3] > 2.0)) this.localAI[3] = 2f; this.velocity.X *= 0.8f; --this.ai[1]; int index8 = (int) this.ai[2]; if (index8 < 0 || index8 > (int) byte.MaxValue || !Main.player[index8].active || Main.player[index8].dead || (double) Main.player[index8].Distance(this.Center) > 200.0 || !Collision.CanHitLine(this.Top, 0, 0, Main.player[index8].Top, 0, 0)) this.ai[1] = 0.0f; if ((double) this.ai[1] > 0.0) { int num12 = (double) this.Center.X < (double) Main.player[index8].Center.X ? 1 : -1; if (num12 != this.direction) this.netUpdate = true; this.direction = num12; } else { this.ai[0] = 0.0f; this.ai[1] = (float) (60 + Main.rand.Next(60)); this.ai[2] = 0.0f; this.localAI[3] = (float) (30 + Main.rand.Next(60)); this.netUpdate = true; } } else if ((double) this.ai[0] == 10.0) { int Type = 0; int num13 = 0; float KnockBack = 0.0f; float num14 = 0.0f; int num15 = 0; int num16 = 0; int maxValue2 = 0; float num17 = 0.0f; float num18 = (float) NPCID.Sets.DangerDetectRange[this.type]; float max = 0.0f; if ((double) NPCID.Sets.AttackTime[this.type] == (double) this.ai[1]) { this.frameCounter = 0.0; this.localAI[3] = 0.0f; } if (this.type == 38) { Type = 30; num14 = 6f; num13 = 20; num15 = 10; num16 = 180; maxValue2 = 120; num17 = 16f; KnockBack = 7f; } else if (this.type == 550) { Type = 669; num14 = 6f; num13 = 24; num15 = 10; num16 = 120; maxValue2 = 60; num17 = 16f; KnockBack = 9f; } else if (this.type == 208) { Type = 588; num14 = 6f; num13 = 30; num15 = 10; num16 = 60; maxValue2 = 120; num17 = 16f; KnockBack = 6f; } else if (this.type == 17) { Type = 48; num14 = 9f; num13 = 12; num15 = 10; num16 = 60; maxValue2 = 60; num17 = 16f; KnockBack = 1.5f; } else if (this.type == 369) { Type = 520; num14 = 12f; num13 = 10; num15 = 10; num16 = 0; maxValue2 = 1; num17 = 16f; KnockBack = 3f; } else if (this.type == 453) { Type = 21; num14 = 14f; num13 = 14; num15 = 10; num16 = 0; maxValue2 = 1; num17 = 16f; KnockBack = 3f; } else if (this.type == 107) { Type = 24; num14 = 5f; num13 = 15; num15 = 10; num16 = 60; maxValue2 = 60; num17 = 16f; KnockBack = 1f; } else if (this.type == 124) { Type = 582; num14 = 10f; num13 = 11; num15 = 1; num16 = 30; maxValue2 = 30; KnockBack = 3.5f; } else if (this.type == 18) { Type = 583; num14 = 8f; num13 = 8; num15 = 1; num16 = 15; maxValue2 = 10; KnockBack = 2f; num17 = 10f; } else if (this.type == 142) { Type = 589; num14 = 7f; num13 = 22; num15 = 1; num16 = 10; maxValue2 = 1; KnockBack = 2f; num17 = 10f; } if (Main.expertMode) num13 = (int) ((double) num13 * (double) Main.expertNPCDamage); int Damage = (int) ((double) num13 * (double) num1); this.velocity.X *= 0.8f; --this.ai[1]; ++this.localAI[3]; if ((double) this.localAI[3] == (double) num15 && Main.netMode != 1) { Vector2 vec = -Vector2.UnitY; if (num5 == 1 && this.spriteDirection == 1 && index4 != -1) vec = this.DirectionTo(Main.npc[index4].Center + new Vector2(0.0f, -num17 * MathHelper.Clamp(this.Distance(Main.npc[index4].Center) / num18, 0.0f, 1f))); if (num5 == -1 && this.spriteDirection == -1 && index3 != -1) vec = this.DirectionTo(Main.npc[index3].Center + new Vector2(0.0f, -num17 * MathHelper.Clamp(this.Distance(Main.npc[index3].Center) / num18, 0.0f, 1f))); if (vec.HasNaNs() || Math.Sign(vec.X) != this.spriteDirection) vec = new Vector2((float) this.spriteDirection, -1f); Vector2 vector2 = vec * num14 + Utils.RandomVector2(Main.rand, -max, max); int index9 = this.type != 124 ? (this.type != 142 ? Projectile.NewProjectile(this.Center.X + (float) (this.spriteDirection * 16), this.Center.Y - 2f, vector2.X, vector2.Y, Type, Damage, KnockBack, Main.myPlayer) : Projectile.NewProjectile(this.Center.X + (float) (this.spriteDirection * 16), this.Center.Y - 2f, vector2.X, vector2.Y, Type, Damage, KnockBack, Main.myPlayer, ai1: ((float) Main.rand.Next(5)))) : Projectile.NewProjectile(this.Center.X + (float) (this.spriteDirection * 16), this.Center.Y - 2f, vector2.X, vector2.Y, Type, Damage, KnockBack, Main.myPlayer, ai1: ((float) this.whoAmI)); Main.projectile[index9].npcProj = true; Main.projectile[index9].noDropItem = true; } if ((double) this.ai[1] <= 0.0) { this.ai[0] = (double) this.localAI[2] == 8.0 & flag6 ? 8f : 0.0f; this.ai[1] = (float) (num16 + Main.rand.Next(maxValue2)); this.ai[2] = 0.0f; this.localAI[1] = this.localAI[3] = (float) (num16 / 2 + Main.rand.Next(maxValue2)); this.netUpdate = true; } } else if ((double) this.ai[0] == 12.0) { int Type = 0; int num19 = 0; float num20 = 0.0f; int num21 = 0; int num22 = 0; int maxValue3 = 0; float KnockBack = 0.0f; int num23 = 0; bool flag14 = false; float max = 0.0f; if ((double) NPCID.Sets.AttackTime[this.type] == (double) this.ai[1]) { this.frameCounter = 0.0; this.localAI[3] = 0.0f; } int index10 = -1; if (num5 == 1 && this.spriteDirection == 1) index10 = index4; if (num5 == -1 && this.spriteDirection == -1) index10 = index3; if (this.type == 19) { Type = 14; num20 = 13f; num19 = 24; num22 = 14; maxValue3 = 4; KnockBack = 3f; num21 = 1; max = 0.5f; if ((double) NPCID.Sets.AttackTime[this.type] == (double) this.ai[1]) { this.frameCounter = 0.0; this.localAI[3] = 0.0f; } if (Main.hardMode) { num19 = 15; if ((double) this.localAI[3] > (double) num21) { num21 = 10; flag14 = true; } if ((double) this.localAI[3] > (double) num21) { num21 = 20; flag14 = true; } if ((double) this.localAI[3] > (double) num21) { num21 = 30; flag14 = true; } } } else if (this.type == 227) { Type = 587; num20 = 10f; num19 = 8; num22 = 10; maxValue3 = 1; KnockBack = 1.75f; num21 = 1; max = 0.5f; if ((double) this.localAI[3] > (double) num21) { num21 = 12; flag14 = true; } if ((double) this.localAI[3] > (double) num21) { num21 = 24; flag14 = true; } if (Main.hardMode) num19 += 2; } else if (this.type == 368) { Type = 14; num20 = 13f; num19 = 24; num22 = 12; maxValue3 = 5; KnockBack = 2f; num21 = 1; max = 0.2f; if (Main.hardMode) { num19 = 30; Type = 357; } } else if (this.type == 22) { num20 = 10f; num19 = 8; num21 = 1; if (Main.hardMode) { Type = 2; num22 = 15; maxValue3 = 10; num19 += 6; } else { Type = 1; num22 = 30; maxValue3 = 20; } KnockBack = 2.75f; num23 = 4; max = 0.7f; } else if (this.type == 228) { Type = 267; num20 = 14f; num19 = 20; num21 = 1; num22 = 10; maxValue3 = 1; KnockBack = 3f; num23 = 6; max = 0.4f; } else if (this.type == 178) { Type = 242; num20 = 13f; num19 = 15; num22 = 10; maxValue3 = 1; KnockBack = 2f; num21 = 1; if ((double) this.localAI[3] > (double) num21) { num21 = 8; flag14 = true; } if ((double) this.localAI[3] > (double) num21) { num21 = 16; flag14 = true; } max = 0.3f; } else if (this.type == 229) { Type = 14; num20 = 14f; num19 = 24; num22 = 10; maxValue3 = 1; KnockBack = 2f; num21 = 1; max = 0.7f; if ((double) this.localAI[3] > (double) num21) { num21 = 16; flag14 = true; } if ((double) this.localAI[3] > (double) num21) { num21 = 24; flag14 = true; } if ((double) this.localAI[3] > (double) num21) { num21 = 32; flag14 = true; } if ((double) this.localAI[3] > (double) num21) { num21 = 40; flag14 = true; } if ((double) this.localAI[3] > (double) num21) { num21 = 48; flag14 = true; } if ((double) this.localAI[3] == 0.0 && index10 != -1 && (double) this.Distance(Main.npc[index10].Center) < (double) NPCID.Sets.PrettySafe[this.type]) { max = 0.1f; Type = 162; num19 = 50; KnockBack = 10f; num20 = 24f; } } else if (this.type == 209) { Type = Utils.SelectRandom(Main.rand, 134, 133, 135); num21 = 1; switch (Type) { case 133: num20 = 10f; num19 = 25; num22 = 10; maxValue3 = 1; KnockBack = 6f; max = 0.2f; break; case 134: num20 = 13f; num19 = 20; num22 = 20; maxValue3 = 10; KnockBack = 4f; max = 0.1f; break; case 135: num20 = 12f; num19 = 30; num22 = 30; maxValue3 = 10; KnockBack = 7f; max = 0.2f; break; } } if (Main.expertMode) num19 = (int) ((double) num19 * (double) Main.expertNPCDamage); int Damage = (int) ((double) num19 * (double) num1); this.velocity.X *= 0.8f; --this.ai[1]; ++this.localAI[3]; if ((double) this.localAI[3] == (double) num21 && Main.netMode != 1) { Vector2 vec = Vector2.Zero; if (index10 != -1) vec = this.DirectionTo(Main.npc[index10].Center + new Vector2(0.0f, (float) -num23)); if (vec.HasNaNs() || Math.Sign(vec.X) != this.spriteDirection) vec = new Vector2((float) this.spriteDirection, 0.0f); Vector2 vector2 = vec * num20 + Utils.RandomVector2(Main.rand, -max, max); int index11 = this.type != 227 ? Projectile.NewProjectile(this.Center.X + (float) (this.spriteDirection * 16), this.Center.Y - 2f, vector2.X, vector2.Y, Type, Damage, KnockBack, Main.myPlayer) : Projectile.NewProjectile(this.Center.X + (float) (this.spriteDirection * 16), this.Center.Y - 2f, vector2.X, vector2.Y, Type, Damage, KnockBack, Main.myPlayer, ai1: ((float) Main.rand.Next(12) / 6f)); Main.projectile[index11].npcProj = true; Main.projectile[index11].noDropItem = true; } if ((double) this.localAI[3] == (double) num21 & flag14 && index10 != -1) { Vector2 vector2 = this.DirectionTo(Main.npc[index10].Center); if ((double) vector2.Y <= 0.5 && (double) vector2.Y >= -0.5) this.ai[2] = vector2.Y; } if ((double) this.ai[1] <= 0.0) { this.ai[0] = (double) this.localAI[2] == 8.0 & flag6 ? 8f : 0.0f; this.ai[1] = (float) (num22 + Main.rand.Next(maxValue3)); this.ai[2] = 0.0f; this.localAI[1] = this.localAI[3] = (float) (num22 / 2 + Main.rand.Next(maxValue3)); this.netUpdate = true; } } else if ((double) this.ai[0] == 13.0) { this.velocity.X *= 0.8f; if ((double) NPCID.Sets.AttackTime[this.type] == (double) this.ai[1]) this.frameCounter = 0.0; --this.ai[1]; ++this.localAI[3]; if ((double) this.localAI[3] == 1.0 && Main.netMode != 1) { Vector2 vec = this.DirectionTo(Main.npc[(int) this.ai[2]].Center + new Vector2(0.0f, -20f)); if (vec.HasNaNs() || Math.Sign(vec.X) == -this.spriteDirection) vec = new Vector2((float) this.spriteDirection, -1f); Vector2 vector2 = vec * 8f; int index12 = Projectile.NewProjectile(this.Center.X + (float) (this.spriteDirection * 16), this.Center.Y - 2f, vector2.X, vector2.Y, 584, 0, 0.0f, Main.myPlayer, this.ai[2]); Main.projectile[index12].npcProj = true; Main.projectile[index12].noDropItem = true; } if ((double) this.ai[1] <= 0.0) { this.ai[0] = 0.0f; this.ai[1] = (float) (10 + Main.rand.Next(10)); this.ai[2] = 0.0f; this.localAI[3] = (float) (5 + Main.rand.Next(10)); this.netUpdate = true; } } else if ((double) this.ai[0] == 14.0) { int Type = 0; int num24 = 0; float num25 = 0.0f; int num26 = 0; int num27 = 0; int maxValue4 = 0; float KnockBack = 0.0f; float num28 = 0.0f; float num29 = (float) NPCID.Sets.DangerDetectRange[this.type]; float num30 = 1f; float max = 0.0f; if ((double) NPCID.Sets.AttackTime[this.type] == (double) this.ai[1]) { this.frameCounter = 0.0; this.localAI[3] = 0.0f; } int index13 = -1; if (num5 == 1 && this.spriteDirection == 1) index13 = index4; if (num5 == -1 && this.spriteDirection == -1) index13 = index3; if (this.type == 54) { Type = 585; num25 = 10f; num24 = 16; num26 = 30; num27 = 20; maxValue4 = 15; KnockBack = 2f; max = 1f; } else if (this.type == 108) { Type = 15; num25 = 6f; num24 = 18; num26 = 15; num27 = 15; maxValue4 = 5; KnockBack = 3f; num28 = 20f; } else if (this.type == 160) { Type = 590; num24 = 40; num26 = 15; num27 = 10; maxValue4 = 1; KnockBack = 3f; while ((double) this.localAI[3] > (double) num26) num26 += 15; } else if (this.type == 20) { Type = 586; num26 = 24; num27 = 10; maxValue4 = 1; KnockBack = 3f; } if (Main.expertMode) num24 = (int) ((double) num24 * (double) Main.expertNPCDamage); int Damage = (int) ((double) num24 * (double) num1); this.velocity.X *= 0.8f; --this.ai[1]; ++this.localAI[3]; if ((double) this.localAI[3] == (double) num26 && Main.netMode != 1) { Vector2 vec = Vector2.Zero; if (index13 != -1) vec = this.DirectionTo(Main.npc[index13].Center + new Vector2(0.0f, -num28 * MathHelper.Clamp(this.Distance(Main.npc[index13].Center) / num29, 0.0f, 1f))); if (vec.HasNaNs() || Math.Sign(vec.X) != this.spriteDirection) vec = new Vector2((float) this.spriteDirection, 0.0f); Vector2 vector2_1 = vec * num25 + Utils.RandomVector2(Main.rand, -max, max); if (this.type == 108) { int num31 = Utils.SelectRandom(Main.rand, 1, 1, 1, 1, 2, 2, 3); for (int index14 = 0; index14 < num31; ++index14) { Vector2 vector2_2 = Utils.RandomVector2(Main.rand, -3.4f, 3.4f); int index15 = Projectile.NewProjectile(this.Center.X + (float) (this.spriteDirection * 16), this.Center.Y - 2f, vector2_1.X + vector2_2.X, vector2_1.Y + vector2_2.Y, Type, Damage, KnockBack, Main.myPlayer); Main.projectile[index15].npcProj = true; Main.projectile[index15].noDropItem = true; } } else if (this.type == 160) { if (index13 != -1) { Vector2 vector2_3 = Main.npc[index13].position - Main.npc[index13].Size * 2f + Main.npc[index13].Size * Utils.RandomVector2(Main.rand, 0.0f, 1f) * 5f; for (int index16 = 10; index16 > 0 && WorldGen.SolidTile(Framing.GetTileSafely((int) vector2_3.X / 16, (int) vector2_3.Y / 16)); vector2_3 = Main.npc[index13].position - Main.npc[index13].Size * 2f + Main.npc[index13].Size * Utils.RandomVector2(Main.rand, 0.0f, 1f) * 5f) --index16; int index17 = Projectile.NewProjectile(vector2_3.X, vector2_3.Y, 0.0f, 0.0f, Type, Damage, KnockBack, Main.myPlayer); Main.projectile[index17].npcProj = true; Main.projectile[index17].noDropItem = true; } } else if (this.type == 20) { int index18 = Projectile.NewProjectile(this.Center.X + (float) (this.spriteDirection * 16), this.Center.Y - 2f, vector2_1.X, vector2_1.Y, Type, Damage, KnockBack, Main.myPlayer, ai1: ((float) this.whoAmI)); Main.projectile[index18].npcProj = true; Main.projectile[index18].noDropItem = true; } else { int index19 = Projectile.NewProjectile(this.Center.X + (float) (this.spriteDirection * 16), this.Center.Y - 2f, vector2_1.X, vector2_1.Y, Type, Damage, KnockBack, Main.myPlayer); Main.projectile[index19].npcProj = true; Main.projectile[index19].noDropItem = true; } } if ((double) num30 > 0.0) { Vector3 vector3 = NPCID.Sets.MagicAuraColor[this.type].ToVector3() * num30; Lighting.AddLight(this.Center, vector3.X, vector3.Y, vector3.Z); } if ((double) this.ai[1] <= 0.0) { this.ai[0] = (double) this.localAI[2] == 8.0 & flag6 ? 8f : 0.0f; this.ai[1] = (float) (num27 + Main.rand.Next(maxValue4)); this.ai[2] = 0.0f; this.localAI[1] = this.localAI[3] = (float) (num27 / 2 + Main.rand.Next(maxValue4)); this.netUpdate = true; } } else if ((double) this.ai[0] == 15.0) { int num32 = 0; int maxValue5 = 0; if ((double) NPCID.Sets.AttackTime[this.type] == (double) this.ai[1]) { this.frameCounter = 0.0; this.localAI[3] = 0.0f; } int num33 = 0; float num34 = 0.0f; int num35 = 0; int num36 = 0; if (num5 == 1) { int spriteDirection1 = this.spriteDirection; } if (num5 == -1) { int spriteDirection2 = this.spriteDirection; } if (this.type == 207) { num33 = 11; num35 = num36 = 32; num32 = 12; maxValue5 = 6; num34 = 4.25f; } else if (this.type == 441) { num33 = 9; num35 = num36 = 28; num32 = 9; maxValue5 = 3; num34 = 3.5f; } else if (this.type == 353) { num33 = 10; num35 = num36 = 32; num32 = 15; maxValue5 = 8; num34 = 5f; } if (Main.expertMode) num33 = (int) ((double) num33 * (double) Main.expertNPCDamage); int Damage = (int) ((double) num33 * (double) num1); this.velocity.X *= 0.8f; --this.ai[1]; if (Main.netMode != 1) { Tuple swingStats = this.GetSwingStats(NPCID.Sets.AttackTime[this.type] * 2, (int) this.ai[1], this.spriteDirection, num35, num36); Microsoft.Xna.Framework.Rectangle itemRectangle = new Microsoft.Xna.Framework.Rectangle((int) swingStats.Item1.X, (int) swingStats.Item1.Y, num35, num36); if (this.spriteDirection == -1) itemRectangle.X -= num35; itemRectangle.Y -= num36; this.TweakSwingStats(NPCID.Sets.AttackTime[this.type] * 2, (int) this.ai[1], this.spriteDirection, ref itemRectangle); int player = Main.myPlayer; for (int number = 0; number < 200; ++number) { NPC npc = Main.npc[number]; if (npc.active && npc.immune[player] == 0 && !npc.dontTakeDamage && !npc.friendly && npc.damage > 0 && itemRectangle.Intersects(npc.Hitbox) && (npc.noTileCollide || Collision.CanHit(this.position, this.width, this.height, npc.position, npc.width, npc.height))) { npc.StrikeNPCNoInteraction(Damage, num34, this.spriteDirection); if (Main.netMode != 0) NetMessage.SendData(28, number: number, number2: ((float) Damage), number3: num34, number4: ((float) this.spriteDirection)); npc.netUpdate = true; npc.immune[player] = (int) this.ai[1] + 2; } } } if ((double) this.ai[1] <= 0.0) { bool flag15 = false; if (flag6) { if (!Collision.CanHit(this.Center, 0, 0, this.Center + Vector2.UnitX * (float) -num5 * 32f, 0, 0) || (double) this.localAI[2] == 8.0) flag15 = true; if (flag15) { int num37 = NPCID.Sets.AttackTime[this.type]; int index20 = num5 == 1 ? index4 : index3; int index21 = num5 == 1 ? index3 : index4; if (index20 != -1 && !Collision.CanHit(this.Center, 0, 0, Main.npc[index20].Center, 0, 0)) index20 = index21 == -1 || !Collision.CanHit(this.Center, 0, 0, Main.npc[index21].Center, 0, 0) ? -1 : index21; if (index20 != -1) { this.ai[0] = 15f; this.ai[1] = (float) num37; this.ai[2] = 0.0f; this.localAI[3] = 0.0f; this.direction = (double) this.position.X < (double) Main.npc[index20].position.X ? 1 : -1; this.netUpdate = true; } else flag15 = false; } } if (!flag15) { this.ai[0] = (double) this.localAI[2] == 8.0 & flag6 ? 8f : 0.0f; this.ai[1] = (float) (num32 + Main.rand.Next(maxValue5)); this.ai[2] = 0.0f; this.localAI[1] = this.localAI[3] = (float) (num32 / 2 + Main.rand.Next(maxValue5)); this.netUpdate = true; } } } if (Main.netMode == 1 || !this.townNPC && this.type != 453 || flag3) return; bool flag16 = (double) this.ai[0] < 2.0 && !flag6; bool flag17 = ((double) this.ai[0] < 2.0 || (double) this.ai[0] == 8.0) && flag6 | flag7; if ((double) this.localAI[1] > 0.0) --this.localAI[1]; if ((double) this.localAI[1] > 0.0) flag17 = false; if (flag17 && this.type == 124 && (double) this.localAI[0] == 1.0) flag17 = false; if (flag17 && this.type == 20) { flag17 = false; for (int index22 = 0; index22 < 200; ++index22) { NPC npc = Main.npc[index22]; if (npc.active && npc.townNPC && (double) this.Distance(npc.Center) <= 1200.0 && npc.FindBuffIndex(165) == -1) { flag17 = true; break; } } } if (flag16 && (double) this.ai[0] == 0.0 && (double) this.velocity.Y == 0.0 && Main.rand.Next(300) == 0) { int num38 = 420; int num39 = Main.rand.Next(2) != 0 ? num38 * Main.rand.Next(1, 3) : num38 * Main.rand.Next(1, 4); int num40 = 100; int num41 = 20; for (int index23 = 0; index23 < 200; ++index23) { NPC npc = Main.npc[index23]; bool flag18 = (double) npc.ai[0] == 1.0 && npc.closeDoor || (double) npc.ai[0] == 1.0 && (double) npc.ai[1] > 200.0 || (double) npc.ai[0] > 1.0; if (npc != this && npc.active && npc.CanTalk && !flag18 && (double) npc.Distance(this.Center) < (double) num40 && (double) npc.Distance(this.Center) > (double) num41 && Collision.CanHit(this.Center, 0, 0, npc.Center, 0, 0)) { int directionInt = ((double) this.position.X < (double) npc.position.X).ToDirectionInt(); this.ai[0] = 3f; this.ai[1] = (float) num39; this.ai[2] = (float) index23; this.direction = directionInt; this.netUpdate = true; npc.ai[0] = 4f; npc.ai[1] = (float) num39; npc.ai[2] = (float) this.whoAmI; npc.direction = -directionInt; npc.netUpdate = true; break; } } } else if (flag16 && (double) this.ai[0] == 0.0 && (double) this.velocity.Y == 0.0 && Main.rand.Next(1800) == 0) { int num42 = 420; int num43 = Main.rand.Next(2) != 0 ? num42 * Main.rand.Next(1, 3) : num42 * Main.rand.Next(1, 4); int num44 = 100; int num45 = 20; for (int index24 = 0; index24 < 200; ++index24) { NPC npc = Main.npc[index24]; bool flag19 = (double) npc.ai[0] == 1.0 && npc.closeDoor || (double) npc.ai[0] == 1.0 && (double) npc.ai[1] > 200.0 || (double) npc.ai[0] > 1.0; if (npc != this && npc.active && npc.CanTalk && !flag19 && (double) npc.Distance(this.Center) < (double) num44 && (double) npc.Distance(this.Center) > (double) num45 && Collision.CanHit(this.Center, 0, 0, npc.Center, 0, 0)) { int directionInt = ((double) this.position.X < (double) npc.position.X).ToDirectionInt(); this.ai[0] = 16f; this.ai[1] = (float) num43; this.ai[2] = (float) index24; this.localAI[2] = (float) Main.rand.Next(4); this.localAI[3] = (float) Main.rand.Next(3 - (int) this.localAI[2]); this.direction = directionInt; this.netUpdate = true; npc.ai[0] = 17f; npc.ai[1] = (float) num43; npc.ai[2] = (float) this.whoAmI; npc.localAI[2] = 0.0f; npc.localAI[3] = 0.0f; npc.direction = -directionInt; npc.netUpdate = true; break; } } } else if (flag16 && (double) this.ai[0] == 0.0 && (double) this.velocity.Y == 0.0 && Main.rand.Next(1200) == 0 && (this.type == 208 || BirthdayParty.PartyIsUp && NPCID.Sets.AttackType[this.type] == NPCID.Sets.AttackType[208])) { int num46 = 300; int num47 = 150; for (int index25 = 0; index25 < (int) byte.MaxValue; ++index25) { Player player = Main.player[index25]; if (player.active && !player.dead && (double) player.Distance(this.Center) < (double) num47 && Collision.CanHitLine(this.Top, 0, 0, player.Top, 0, 0)) { int directionInt = ((double) this.position.X < (double) player.position.X).ToDirectionInt(); this.ai[0] = 6f; this.ai[1] = (float) num46; this.ai[2] = (float) index25; this.direction = directionInt; this.netUpdate = true; break; } } } else if (flag16 && (double) this.ai[0] == 0.0 && (double) this.velocity.Y == 0.0 && Main.rand.Next(600) == 0 && this.type == 550) { int num48 = 300; int num49 = 150; for (int index26 = 0; index26 < (int) byte.MaxValue; ++index26) { Player player = Main.player[index26]; if (player.active && !player.dead && (double) player.Distance(this.Center) < (double) num49 && Collision.CanHitLine(this.Top, 0, 0, player.Top, 0, 0)) { int directionInt = ((double) this.position.X < (double) player.position.X).ToDirectionInt(); this.ai[0] = 18f; this.ai[1] = (float) num48; this.ai[2] = (float) index26; this.direction = directionInt; this.netUpdate = true; break; } } } else if (flag16 && (double) this.ai[0] == 0.0 && (double) this.velocity.Y == 0.0 && Main.rand.Next(1800) == 0) { this.ai[0] = 2f; this.ai[1] = (float) (45 * Main.rand.Next(1, 2)); this.netUpdate = true; } else if (flag16 && (double) this.ai[0] == 0.0 && (double) this.velocity.Y == 0.0 && Main.rand.Next(600) == 0 && this.type == 229 && !flag7) { this.ai[0] = 11f; this.ai[1] = (float) (30 * Main.rand.Next(1, 4)); this.netUpdate = true; } else if (flag16 && (double) this.ai[0] == 0.0 && (double) this.velocity.Y == 0.0 && Main.rand.Next(1200) == 0) { int num50 = 220; int num51 = 150; for (int index27 = 0; index27 < (int) byte.MaxValue; ++index27) { Player player = Main.player[index27]; if (player.active && !player.dead && (double) player.Distance(this.Center) < (double) num51 && Collision.CanHitLine(this.Top, 0, 0, player.Top, 0, 0)) { int directionInt = ((double) this.position.X < (double) player.position.X).ToDirectionInt(); this.ai[0] = 7f; this.ai[1] = (float) num50; this.ai[2] = (float) index27; this.direction = directionInt; this.netUpdate = true; break; } } } else if (flag16 && (double) this.ai[0] == 1.0 && (double) this.velocity.Y == 0.0 && Main.rand.Next(maxValue1) == 0) { Point tileCoordinates = this.Center.ToTileCoordinates(); bool flag20 = WorldGen.InWorld(tileCoordinates.X, tileCoordinates.Y, 1); if (flag20) { for (int index28 = 0; index28 < 200; ++index28) { if (Main.npc[index28].active && Main.npc[index28].aiStyle == 7 && Main.npc[index28].townNPC && (double) Main.npc[index28].ai[0] == 5.0 && Main.npc[index28].Center.ToTileCoordinates() == tileCoordinates) { flag20 = false; break; } } } if (flag20) { Tile tile = Main.tile[tileCoordinates.X, tileCoordinates.Y]; bool flag21 = tile.type == (ushort) 15; if (flag21 && tile.frameY == (short) 1080) flag21 = false; if (flag21) { this.ai[0] = 5f; this.ai[1] = (float) (900 + Main.rand.Next(10800)); this.direction = tile.frameX == (short) 0 ? -1 : 1; this.Bottom = new Vector2((float) (tileCoordinates.X * 16 + 8 + 2 * this.direction), (float) (tileCoordinates.Y * 16 + 32)); this.velocity = Vector2.Zero; this.localAI[3] = 0.0f; this.netUpdate = true; } } } else if (flag16 && (double) this.ai[0] == 1.0 && (double) this.velocity.Y == 0.0 && Main.rand.Next(600) == 0 && Utils.PlotTileLine(this.Top, this.Bottom, (float) this.width, new Utils.PerLinePoint(DelegateMethods.SearchAvoidedByNPCs))) { Point tileCoordinates = (this.Center + new Vector2((float) (this.direction * 10), 0.0f)).ToTileCoordinates(); bool flag22 = WorldGen.InWorld(tileCoordinates.X, tileCoordinates.Y, 1); if (flag22) { Tile tileSafely = Framing.GetTileSafely(tileCoordinates.X, tileCoordinates.Y); if (!tileSafely.nactive() || !TileID.Sets.InteractibleByNPCs[(int) tileSafely.type]) flag22 = false; } if (flag22) { this.ai[0] = 9f; this.ai[1] = (float) (40 + Main.rand.Next(90)); this.velocity = Vector2.Zero; this.localAI[3] = 0.0f; this.netUpdate = true; } } if ((double) this.ai[0] < 2.0 && (double) this.velocity.Y == 0.0 && this.type == 18) { int index29 = -1; for (int index30 = 0; index30 < 200; ++index30) { NPC npc = Main.npc[index30]; if (npc.active && npc.townNPC && npc.life != npc.lifeMax && (index29 == -1 || npc.lifeMax - npc.life > Main.npc[index29].lifeMax - Main.npc[index29].life) && Collision.CanHitLine(this.position, this.width, this.height, npc.position, npc.width, npc.height) && (double) this.Distance(npc.Center) < 500.0) index29 = index30; } if (index29 != -1) { this.ai[0] = 13f; this.ai[1] = 34f; this.ai[2] = (float) index29; this.localAI[3] = 0.0f; this.direction = (double) this.position.X < (double) Main.npc[index29].position.X ? 1 : -1; this.netUpdate = true; } } if (flag17 && (double) this.velocity.Y == 0.0 && NPCID.Sets.AttackType[this.type] == 0 && NPCID.Sets.AttackAverageChance[this.type] > 0 && Main.rand.Next(NPCID.Sets.AttackAverageChance[this.type] * 2) == 0) { int num52 = NPCID.Sets.AttackTime[this.type]; int index31 = num5 == 1 ? index4 : index3; int index32 = num5 == 1 ? index3 : index4; if (index31 != -1 && !Collision.CanHit(this.Center, 0, 0, Main.npc[index31].Center, 0, 0)) index31 = index32 == -1 || !Collision.CanHit(this.Center, 0, 0, Main.npc[index32].Center, 0, 0) ? -1 : index32; if (index31 != -1) { this.localAI[2] = this.ai[0]; this.ai[0] = 10f; this.ai[1] = (float) num52; this.ai[2] = 0.0f; this.localAI[3] = 0.0f; this.direction = (double) this.position.X < (double) Main.npc[index31].position.X ? 1 : -1; this.netUpdate = true; } } else if (flag17 && (double) this.velocity.Y == 0.0 && NPCID.Sets.AttackType[this.type] == 1 && NPCID.Sets.AttackAverageChance[this.type] > 0 && Main.rand.Next(NPCID.Sets.AttackAverageChance[this.type] * 2) == 0) { int num53 = NPCID.Sets.AttackTime[this.type]; int index33 = num5 == 1 ? index4 : index3; int index34 = num5 == 1 ? index3 : index4; if (index33 != -1 && !Collision.CanHitLine(this.Center, 0, 0, Main.npc[index33].Center, 0, 0)) index33 = index34 == -1 || !Collision.CanHitLine(this.Center, 0, 0, Main.npc[index34].Center, 0, 0) ? -1 : index34; if (index33 != -1) { Vector2 vector2 = this.DirectionTo(Main.npc[index33].Center); if ((double) vector2.Y <= 0.5 && (double) vector2.Y >= -0.5) { this.localAI[2] = this.ai[0]; this.ai[0] = 12f; this.ai[1] = (float) num53; this.ai[2] = vector2.Y; this.localAI[3] = 0.0f; this.direction = (double) this.position.X < (double) Main.npc[index33].position.X ? 1 : -1; this.netUpdate = true; } } } if (flag17 && (double) this.velocity.Y == 0.0 && NPCID.Sets.AttackType[this.type] == 2 && NPCID.Sets.AttackAverageChance[this.type] > 0 && Main.rand.Next(NPCID.Sets.AttackAverageChance[this.type] * 2) == 0) { int num54 = NPCID.Sets.AttackTime[this.type]; int index35 = num5 == 1 ? index4 : index3; int index36 = num5 == 1 ? index3 : index4; if (index35 != -1 && !Collision.CanHitLine(this.Center, 0, 0, Main.npc[index35].Center, 0, 0)) index35 = index36 == -1 || !Collision.CanHitLine(this.Center, 0, 0, Main.npc[index36].Center, 0, 0) ? -1 : index36; if (index35 != -1) { this.localAI[2] = this.ai[0]; this.ai[0] = 14f; this.ai[1] = (float) num54; this.ai[2] = 0.0f; this.localAI[3] = 0.0f; this.direction = (double) this.position.X < (double) Main.npc[index35].position.X ? 1 : -1; this.netUpdate = true; } else if (this.type == 20) { this.localAI[2] = this.ai[0]; this.ai[0] = 14f; this.ai[1] = (float) num54; this.ai[2] = 0.0f; this.localAI[3] = 0.0f; this.netUpdate = true; } } if (!flag17 || (double) this.velocity.Y != 0.0 || NPCID.Sets.AttackType[this.type] != 3 || NPCID.Sets.AttackAverageChance[this.type] <= 0 || Main.rand.Next(NPCID.Sets.AttackAverageChance[this.type] * 2) != 0) return; int num55 = NPCID.Sets.AttackTime[this.type]; int index37 = num5 == 1 ? index4 : index3; int index38 = num5 == 1 ? index3 : index4; if (index37 != -1 && !Collision.CanHit(this.Center, 0, 0, Main.npc[index37].Center, 0, 0)) index37 = index38 == -1 || !Collision.CanHit(this.Center, 0, 0, Main.npc[index38].Center, 0, 0) ? -1 : index38; if (index37 == -1) return; this.localAI[2] = this.ai[0]; this.ai[0] = 15f; this.ai[1] = (float) num55; this.ai[2] = 0.0f; this.localAI[3] = 0.0f; this.direction = (double) this.position.X < (double) Main.npc[index37].position.X ? 1 : -1; this.netUpdate = true; } } } private void AI_003_Fighters() { if (this.type == 466) { int num = 200; if ((double) this.ai[2] == 0.0) { this.alpha = num; this.TargetClosest(); if (!Main.player[this.target].dead && (double) (Main.player[this.target].Center - this.Center).Length() < 170.0) this.ai[2] = -16f; if ((double) this.velocity.X == 0.0 && (double) this.velocity.Y >= 0.0 && (double) this.velocity.Y <= 2.0 && !this.justHit) return; this.ai[2] = -16f; return; } if ((double) this.ai[2] < 0.0) { if (this.alpha > 0) { this.alpha -= num / 16; if (this.alpha < 0) this.alpha = 0; } ++this.ai[2]; if ((double) this.ai[2] != 0.0) return; this.ai[2] = 1f; this.velocity.X = (float) (this.direction * 2); return; } this.alpha = 0; } if (this.type == 166) { if (Main.netMode != 1 && Main.rand.Next(240) == 0) { this.ai[2] = (float) Main.rand.Next(-480, -60); this.netUpdate = true; } if ((double) this.ai[2] < 0.0) { this.TargetClosest(); if (this.justHit) this.ai[2] = 0.0f; if (Collision.CanHit(this.Center, 1, 1, Main.player[this.target].Center, 1, 1)) this.ai[2] = 0.0f; } if ((double) this.ai[2] < 0.0) { this.velocity.X *= 0.9f; if ((double) this.velocity.X > -0.1 && (double) this.velocity.X < 0.1) this.velocity.X = 0.0f; ++this.ai[2]; if ((double) this.ai[2] != 0.0) return; this.velocity.X = (float) this.direction * 0.1f; return; } } if (this.type == 461) { if (this.wet) { this.knockBackResist = 0.0f; this.ai[3] = -0.10101f; this.noGravity = true; Vector2 center = this.Center; this.width = 34; this.height = 24; this.position.X = center.X - (float) (this.width / 2); this.position.Y = center.Y - (float) (this.height / 2); this.TargetClosest(); if (this.collideX) this.velocity.X = -this.oldVelocity.X; if ((double) this.velocity.X < 0.0) this.direction = -1; if ((double) this.velocity.X > 0.0) this.direction = 1; if (Collision.CanHit(this.position, this.width, this.height, Main.player[this.target].Center, 1, 1)) { Vector2 vector2 = Main.player[this.target].Center - this.Center; vector2.Normalize(); this.velocity = (this.velocity * 19f + vector2 * 5f) / 20f; return; } float num = 5f; if ((double) this.velocity.Y > 0.0) num = 3f; if ((double) this.velocity.Y < 0.0) num = 8f; Vector2 vector2_1 = new Vector2((float) this.direction, -1f); vector2_1.Normalize(); vector2_1 *= num; if ((double) num < 5.0) { this.velocity = (this.velocity * 24f + vector2_1) / 25f; return; } this.velocity = (this.velocity * 9f + vector2_1) / 10f; return; } this.knockBackResist = 0.4f * Main.knockBackMultiplier; this.noGravity = false; Vector2 center1 = this.Center; this.width = 18; this.height = 40; this.position.X = center1.X - (float) (this.width / 2); this.position.Y = center1.Y - (float) (this.height / 2); if ((double) this.ai[3] == -0.101010002195835) { this.ai[3] = 0.0f; float num = this.velocity.Length() * 2f; if ((double) num > 10.0) num = 10f; this.velocity.Normalize(); this.velocity = this.velocity * num; if ((double) this.velocity.X < 0.0) this.direction = -1; if ((double) this.velocity.X > 0.0) this.direction = 1; this.spriteDirection = this.direction; } } if (this.type == 379 || this.type == 380) { if ((double) this.ai[3] < 0.0) { this.damage = 0; this.velocity.X *= 0.93f; if ((double) this.velocity.X > -0.1 && (double) this.velocity.X < 0.1) this.velocity.X = 0.0f; int index = (int) (-(double) this.ai[3] - 1.0); int num = Math.Sign(Main.npc[index].Center.X - this.Center.X); if (num != this.direction) { this.velocity.X = 0.0f; this.direction = num; this.netUpdate = true; } if (this.justHit && Main.netMode != 1 && (double) Main.npc[index].localAI[0] == 0.0) Main.npc[index].localAI[0] = 1f; if ((double) this.ai[0] < 1000.0) this.ai[0] = 1000f; if ((double) ++this.ai[0] < 1300.0) return; this.ai[0] = 1000f; this.netUpdate = true; return; } if ((double) this.ai[0] >= 1000.0) this.ai[0] = 0.0f; this.damage = this.defDamage; } if (this.type == 383 && (double) this.ai[2] == 0.0 && (double) this.localAI[0] == 0.0 && Main.netMode != 1) { int index = NPC.NewNPC((int) this.Center.X, (int) this.Center.Y, 384, this.whoAmI); this.ai[2] = (float) (index + 1); this.localAI[0] = -1f; this.netUpdate = true; Main.npc[index].ai[0] = (float) this.whoAmI; Main.npc[index].netUpdate = true; } if (this.type == 383) { int index = (int) this.ai[2] - 1; if (index != -1 && Main.npc[index].active && Main.npc[index].type == 384) { this.dontTakeDamage = true; } else { this.dontTakeDamage = false; this.ai[2] = 0.0f; if ((double) this.localAI[0] == -1.0) this.localAI[0] = 180f; if ((double) this.localAI[0] > 0.0) --this.localAI[0]; } } if (this.type == 482) { int num1 = 300; int num2 = 120; this.dontTakeDamage = false; if ((double) this.ai[2] < 0.0) { this.dontTakeDamage = true; ++this.ai[2]; this.velocity.X *= 0.9f; if ((double) Math.Abs(this.velocity.X) < 0.001) this.velocity.X = 1f / 1000f * (float) this.direction; if ((double) Math.Abs(this.velocity.Y) > 1.0) this.ai[2] += 10f; if ((double) this.ai[2] < 0.0) return; this.netUpdate = true; this.velocity.X += (float) this.direction * 0.3f; return; } if ((double) this.ai[2] < (double) num1) { if (this.justHit) this.ai[2] += 15f; ++this.ai[2]; } else if ((double) this.velocity.Y == 0.0) { this.ai[2] = (float) -num2; this.netUpdate = true; } } if (this.type == 480) { int num3 = 180; int num4 = 300; int num5 = 180; int num6 = 60; int num7 = 20; if (this.life < this.lifeMax / 3) { num3 = 120; num4 = 240; num5 = 240; num6 = 90; } if ((double) this.ai[2] > 0.0) --this.ai[2]; else if ((double) this.ai[2] == 0.0) { if (((double) Main.player[this.target].Center.X < (double) this.Center.X && this.direction < 0 || (double) Main.player[this.target].Center.X > (double) this.Center.X && this.direction > 0) && (double) this.velocity.Y == 0.0 && (double) this.Distance(Main.player[this.target].Center) < 900.0 && Collision.CanHit(this.Center, 1, 1, Main.player[this.target].Center, 1, 1)) { this.ai[2] = (float) (-num5 - num7); this.netUpdate = true; } } else { if ((double) this.ai[2] < 0.0 && (double) this.ai[2] < (double) -num5) { this.velocity.X *= 0.9f; if ((double) this.velocity.Y < -2.0 || (double) this.velocity.Y > 4.0 || this.justHit) { this.ai[2] = (float) num3; } else { ++this.ai[2]; if ((double) this.ai[2] == 0.0) this.ai[2] = (float) num4; } float num8 = this.ai[2] + (float) num5 + (float) num7; if ((double) num8 == 1.0) Main.PlaySound(4, (int) this.position.X, (int) this.position.Y, 17); if ((double) num8 < (double) num7) { Vector2 Position = this.Top + new Vector2((float) (this.spriteDirection * 6), 6f); float num9 = MathHelper.Lerp(20f, 30f, (float) (((double) num8 * 3.0 + 50.0) / 182.0)); double num10 = (double) Main.rand.NextFloat(); for (float num11 = 0.0f; (double) num11 < 2.0; ++num11) { Vector2 vector2 = Vector2.UnitY.RotatedByRandom(6.28318548202515) * (float) ((double) Main.rand.NextFloat() * 0.5 + 0.5); Dust dust = Main.dust[Dust.NewDust(Position, 0, 0, 228)]; dust.position = Position + vector2 * num9; dust.noGravity = true; dust.velocity = vector2 * 2f; dust.scale = (float) (0.5 + (double) Main.rand.NextFloat() * 0.5); } } Lighting.AddLight(this.Center, 0.9f, 0.75f, 0.1f); return; } if ((double) this.ai[2] < 0.0 && (double) this.ai[2] >= (double) -num5) { Lighting.AddLight(this.Center, 0.9f, 0.75f, 0.1f); this.velocity.X *= 0.9f; if ((double) this.velocity.Y < -2.0 || (double) this.velocity.Y > 4.0 || this.justHit) { this.ai[2] = (float) num3; } else { ++this.ai[2]; if ((double) this.ai[2] == 0.0) this.ai[2] = (float) num4; } float num12 = this.ai[2] + (float) num5; if ((double) num12 < 180.0 && (Main.rand.Next(3) == 0 || (double) this.ai[2] % 3.0 == 0.0)) { Vector2 Position = this.Top + new Vector2((float) (this.spriteDirection * 10), 10f); float num13 = MathHelper.Lerp(20f, 30f, (float) (((double) num12 * 3.0 + 50.0) / 182.0)); double num14 = (double) Main.rand.NextFloat(); for (float num15 = 0.0f; (double) num15 < 1.0; ++num15) { Vector2 vector2 = Vector2.UnitY.RotatedByRandom(6.28318548202515) * (float) ((double) Main.rand.NextFloat() * 0.5 + 0.5); Dust dust = Main.dust[Dust.NewDust(Position, 0, 0, 228)]; dust.position = Position + vector2 * num13; dust.noGravity = true; dust.velocity = vector2 * 4f; dust.scale = 0.5f + Main.rand.NextFloat(); } } if (Main.netMode == 2) return; Player player1 = Main.player[Main.myPlayer]; int player2 = Main.myPlayer; if (player1.dead || !player1.active || player1.FindBuffIndex(156) != -1) return; Vector2 vector2_2 = player1.Center - this.Center; if ((double) vector2_2.Length() >= 700.0) return; bool flag = (double) vector2_2.Length() < 30.0; if (!flag) { float x = 0.7853982f.ToRotationVector2().X; Vector2 vector2_3 = Vector2.Normalize(vector2_2); if ((double) vector2_3.X > (double) x || (double) vector2_3.X < -(double) x) flag = true; } if (((double) player1.Center.X >= (double) this.Center.X || this.direction >= 0 || player1.direction <= 0) && ((double) player1.Center.X <= (double) this.Center.X || this.direction <= 0 || player1.direction >= 0) || !flag || (Collision.CanHitLine(this.Center, 1, 1, player1.Center, 1, 1) || Collision.CanHitLine(this.Center - Vector2.UnitY * 16f, 1, 1, player1.Center, 1, 1) ? 1 : (Collision.CanHitLine(this.Center + Vector2.UnitY * 8f, 1, 1, player1.Center, 1, 1) ? 1 : 0)) == 0) return; player1.AddBuff(156, num6 + (int) this.ai[2] * -1); return; } } } if (this.type == 471) { if ((double) this.ai[3] < 0.0) { this.knockBackResist = 0.0f; this.defense = (int) ((double) this.defDefense * 1.1); this.noGravity = true; this.noTileCollide = true; if ((double) this.velocity.X < 0.0) this.direction = -1; else if ((double) this.velocity.X > 0.0) this.direction = 1; this.rotation = this.velocity.X * 0.1f; if (Main.netMode != 1) { ++this.localAI[3]; if ((double) this.localAI[3] > (double) Main.rand.Next(20, 180)) { this.localAI[3] = 0.0f; Vector2 vector2 = this.Center + this.velocity; NPC.NewNPC((int) vector2.X, (int) vector2.Y, 30); } } } else { this.localAI[3] = 0.0f; this.knockBackResist = 0.35f * Main.knockBackMultiplier; this.rotation *= 0.9f; this.defense = this.defDefense; this.noGravity = false; this.noTileCollide = false; } if ((double) this.ai[3] == 1.0) { this.knockBackResist = 0.0f; this.defense += 10; } if ((double) this.ai[3] == -1.0) { this.TargetClosest(); float num16 = 8f; float num17 = 40f; Vector2 vector2_4 = Main.player[this.target].Center - this.Center; float num18 = vector2_4.Length(); float num19 = num16 + num18 / 200f; vector2_4.Normalize(); Vector2 vector2_5 = vector2_4 * num19; this.velocity = (this.velocity * (num17 - 1f) + vector2_5) / num17; if ((double) num18 >= 500.0 || Collision.SolidCollision(this.position, this.width, this.height)) return; this.ai[3] = 0.0f; this.ai[2] = 0.0f; return; } if ((double) this.ai[3] == -2.0) { this.velocity.Y -= 0.2f; if ((double) this.velocity.Y < -10.0) this.velocity.Y = -10f; if ((double) Main.player[this.target].Center.Y - (double) this.Center.Y > 200.0) { this.TargetClosest(); this.ai[3] = -3f; this.ai[2] = (double) Main.player[this.target].Center.X <= (double) this.Center.X ? -1f : 1f; } this.velocity.X *= 0.99f; return; } if ((double) this.ai[3] == -3.0) { if (this.direction == 0) this.TargetClosest(); if ((double) this.ai[2] == 0.0) this.ai[2] = (float) this.direction; this.velocity.Y *= 0.9f; this.velocity.X += this.ai[2] * 0.3f; if ((double) this.velocity.X > 10.0) this.velocity.X = 10f; if ((double) this.velocity.X < -10.0) this.velocity.X = -10f; float num = Main.player[this.target].Center.X - this.Center.X; if ((double) this.ai[2] < 0.0 && (double) num > 300.0 || (double) this.ai[2] > 0.0 && (double) num < -300.0) { this.ai[3] = -4f; this.ai[2] = 0.0f; return; } if ((double) Math.Abs(num) <= 800.0) return; this.ai[3] = -1f; this.ai[2] = 0.0f; return; } if ((double) this.ai[3] == -4.0) { ++this.ai[2]; this.velocity.Y += 0.1f; if ((double) this.velocity.Length() > 4.0) this.velocity = this.velocity * 0.9f; int index1 = (int) this.Center.X / 16; int index2 = (int) ((double) this.position.Y + (double) this.height + 12.0) / 16; bool flag = false; for (int index3 = index1 - 1; index3 <= index1 + 1; ++index3) { if (Main.tile[index3, index2] == null) Main.tile[index1, index2] = new Tile(); if (Main.tile[index3, index2].active() && Main.tileSolid[(int) Main.tile[index3, index2].type]) flag = true; } if (flag && !Collision.SolidCollision(this.position, this.width, this.height)) { this.ai[3] = 0.0f; this.ai[2] = 0.0f; } else if ((double) this.ai[2] > 300.0 || (double) this.Center.Y > (double) Main.player[this.target].Center.Y + 200.0) { this.ai[3] = -1f; this.ai[2] = 0.0f; } } else { if ((double) this.ai[3] == 1.0) { Vector2 center = this.Center; center.Y -= 70f; this.velocity.X *= 0.8f; ++this.ai[2]; if ((double) this.ai[2] == 60.0) { if (Main.netMode != 1) NPC.NewNPC((int) center.X, (int) center.Y + 18, 472); } else if ((double) this.ai[2] >= 90.0) { this.ai[3] = -2f; this.ai[2] = 0.0f; } for (int index4 = 0; index4 < 2; ++index4) { Vector2 vector2_6 = center; Vector2 vector2_7 = new Vector2((float) Main.rand.Next(-100, 101), (float) Main.rand.Next(-100, 101)); vector2_7.Normalize(); Vector2 vector2_8 = vector2_7 * ((float) Main.rand.Next(0, 100) * 0.1f); Vector2 vector2_9 = vector2_8; Vector2 Position = vector2_6 + vector2_9; vector2_8.Normalize(); vector2_7 = vector2_8 * ((float) Main.rand.Next(50, 90) * 0.1f); Color newColor = new Color(); int index5 = Dust.NewDust(Position, 1, 1, 27, newColor: newColor); Main.dust[index5].velocity = -vector2_7 * 0.3f; Main.dust[index5].alpha = 100; if (Main.rand.Next(2) == 0) { Main.dust[index5].noGravity = true; Main.dust[index5].scale += 0.3f; } } return; } ++this.ai[2]; int num = 10; if ((double) this.velocity.Y == 0.0 && NPC.CountNPCS(472) < num) { if ((double) this.ai[2] >= 180.0) { this.ai[2] = 0.0f; this.ai[3] = 1f; } } else { if (NPC.CountNPCS(472) >= num) ++this.ai[2]; if ((double) this.ai[2] >= 360.0) { this.ai[2] = 0.0f; this.ai[3] = -2f; this.velocity.Y -= 3f; } } if (this.target >= 0 && !Main.player[this.target].dead && (double) (Main.player[this.target].Center - this.Center).Length() > 800.0) { this.ai[3] = -1f; this.ai[2] = 0.0f; } } if (Main.player[this.target].dead) { this.TargetClosest(); if (Main.player[this.target].dead && this.timeLeft > 1) this.timeLeft = 1; } } if (this.type == 419) { this.reflectingProjectiles = false; this.takenDamageMultiplier = 1f; int num20 = 6; int num21 = 10; float num22 = 16f; if ((double) this.ai[2] > 0.0) --this.ai[2]; if ((double) this.ai[2] == 0.0) { if (((double) Main.player[this.target].Center.X < (double) this.Center.X && this.direction < 0 || (double) Main.player[this.target].Center.X > (double) this.Center.X && this.direction > 0) && Collision.CanHit(this.Center, 1, 1, Main.player[this.target].Center, 1, 1)) { this.ai[2] = -1f; this.netUpdate = true; this.TargetClosest(); } } else { if ((double) this.ai[2] < 0.0 && (double) this.ai[2] > (double) -num20) { --this.ai[2]; this.velocity.X *= 0.9f; return; } if ((double) this.ai[2] == (double) -num20) { --this.ai[2]; this.TargetClosest(); Vector2 vec = this.DirectionTo(Main.player[this.target].Top + new Vector2(0.0f, -30f)); if (vec.HasNaNs()) vec = Vector2.Normalize(new Vector2((float) this.spriteDirection, -1f)); this.velocity = vec * num22; this.netUpdate = true; return; } if ((double) this.ai[2] < (double) -num20) { --this.ai[2]; if ((double) this.velocity.Y == 0.0) this.ai[2] = 60f; else if ((double) this.ai[2] < (double) (-num20 - num21)) { this.velocity.Y += 0.15f; if ((double) this.velocity.Y > 24.0) this.velocity.Y = 24f; } this.reflectingProjectiles = true; this.takenDamageMultiplier = 3f; if (!this.justHit) return; this.ai[2] = 60f; this.netUpdate = true; return; } } } if (this.type == 415) { int num23 = 42; int num24 = 18; if (this.justHit) { this.ai[2] = 120f; this.netUpdate = true; } if ((double) this.ai[2] > 0.0) --this.ai[2]; if ((double) this.ai[2] == 0.0) { int num25 = 0; for (int index = 0; index < 200; ++index) { if (Main.npc[index].active && Main.npc[index].type == 516) ++num25; } if (num25 > 6) this.ai[2] = 90f; else if (((double) Main.player[this.target].Center.X < (double) this.Center.X && this.direction < 0 || (double) Main.player[this.target].Center.X > (double) this.Center.X && this.direction > 0) && Collision.CanHit(this.Center, 1, 1, Main.player[this.target].Center, 1, 1)) { this.ai[2] = -1f; this.netUpdate = true; this.TargetClosest(); } } else if ((double) this.ai[2] < 0.0 && (double) this.ai[2] > (double) -num23) { --this.ai[2]; if ((double) this.ai[2] == (double) -num23) this.ai[2] = (float) (180 + 30 * Main.rand.Next(10)); this.velocity.X *= 0.8f; if ((double) this.ai[2] != (double) -num24 && (double) this.ai[2] != (double) (-num24 - 8) && (double) this.ai[2] != (double) (-num24 - 16)) return; for (int index = 0; index < 20; ++index) { Vector2 Position = this.Center + Vector2.UnitX * (float) this.spriteDirection * 40f; Dust dust = Main.dust[Dust.NewDust(Position, 0, 0, 259)]; Vector2 vector2 = Vector2.UnitY.RotatedByRandom(6.28318548202515); dust.position = Position + vector2 * 4f; dust.velocity = vector2 * 2f + Vector2.UnitX * Main.rand.NextFloat() * (float) this.spriteDirection * 3f; dust.scale = (float) (0.300000011920929 + (double) vector2.X * (double) -this.spriteDirection); dust.fadeIn = 0.7f; dust.noGravity = true; } if ((double) this.velocity.X > -0.5 && (double) this.velocity.X < 0.5) this.velocity.X = 0.0f; if (Main.netMode == 1) return; NPC.NewNPC((int) this.Center.X + this.spriteDirection * 45, (int) this.Center.Y + 8, 516, Target: this.target); return; } } if (this.type == 428) { ++this.localAI[0]; if ((double) this.localAI[0] >= 300.0) { int startX = (int) this.Center.X / 16 - 1; int startY = (int) this.Center.Y / 16 - 1; if (!Collision.SolidTiles(startX, startX + 2, startY, startY + 1) && Main.netMode != 1) { this.Transform(427); this.life = this.lifeMax; this.localAI[0] = 0.0f; return; } } int maxValue = (double) this.localAI[0] >= 60.0 ? ((double) this.localAI[0] >= 120.0 ? ((double) this.localAI[0] >= 180.0 ? ((double) this.localAI[0] >= 240.0 ? ((double) this.localAI[0] >= 300.0 ? 1 : 1) : 2) : 4) : 8) : 16; if (Main.rand.Next(maxValue) == 0) { Dust dust = Main.dust[Dust.NewDust(this.position, this.width, this.height, 229)]; dust.noGravity = true; dust.scale = 1f; dust.noLight = true; dust.velocity = this.DirectionFrom(dust.position) * dust.velocity.Length(); dust.position -= dust.velocity * 5f; dust.position.X += (float) (this.direction * 6); dust.position.Y += 4f; } } if (this.type == 427) { ++this.localAI[0]; this.localAI[0] += Math.Abs(this.velocity.X) / 2f; if ((double) this.localAI[0] >= 1200.0 && Main.netMode != 1) { int startX = (int) this.Center.X / 16 - 2; int startY = (int) this.Center.Y / 16 - 3; if (!Collision.SolidTiles(startX, startX + 4, startY, startY + 4)) { this.Transform(426); this.life = this.lifeMax; this.localAI[0] = 0.0f; return; } } int maxValue = (double) this.localAI[0] >= 360.0 ? ((double) this.localAI[0] >= 720.0 ? ((double) this.localAI[0] >= 1080.0 ? ((double) this.localAI[0] >= 1440.0 ? ((double) this.localAI[0] >= 1800.0 ? 1 : 1) : 2) : 6) : 16) : 32; if (Main.rand.Next(maxValue) == 0) { Dust dust = Main.dust[Dust.NewDust(this.position, this.width, this.height, 229)]; dust.noGravity = true; dust.scale = 1f; dust.noLight = true; } } bool flag1 = false; if ((double) this.velocity.X == 0.0) flag1 = true; if (this.justHit) flag1 = false; if (Main.netMode != 1 && this.type == 198 && (double) this.life <= (double) this.lifeMax * 0.55) this.Transform(199); if (Main.netMode != 1 && this.type == 348 && (double) this.life <= (double) this.lifeMax * 0.55) this.Transform(349); int num26 = 60; if (this.type == 120) { num26 = 180; if ((double) this.ai[3] == -120.0) { this.velocity = this.velocity * 0.0f; this.ai[3] = 0.0f; Main.PlaySound(SoundID.Item8, this.position); Vector2 vector2 = new Vector2(this.position.X + (float) this.width * 0.5f, this.position.Y + (float) this.height * 0.5f); float num27 = this.oldPos[2].X + (float) this.width * 0.5f - vector2.X; float num28 = this.oldPos[2].Y + (float) this.height * 0.5f - vector2.Y; float num29 = 2f / (float) Math.Sqrt((double) num27 * (double) num27 + (double) num28 * (double) num28); float SpeedX = num27 * num29; float SpeedY = num28 * num29; for (int index6 = 0; index6 < 20; ++index6) { int index7 = Dust.NewDust(this.position, this.width, this.height, 71, SpeedX, SpeedY, 200, Scale: 2f); Main.dust[index7].noGravity = true; Main.dust[index7].velocity.X *= 2f; } for (int index8 = 0; index8 < 20; ++index8) { int index9 = Dust.NewDust(this.oldPos[2], this.width, this.height, 71, -SpeedX, -SpeedY, 200, Scale: 2f); Main.dust[index9].noGravity = true; Main.dust[index9].velocity.X *= 2f; } } } bool flag2 = false; bool flag3 = true; if (this.type == 343 || this.type == 47 || this.type == 67 || this.type == 109 || this.type == 110 || this.type == 111 || this.type == 120 || this.type == 163 || this.type == 164 || this.type == 239 || this.type == 168 || this.type == 199 || this.type == 206 || this.type == 214 || this.type == 215 || this.type == 216 || this.type == 217 || this.type == 218 || this.type == 219 || this.type == 220 || this.type == 226 || this.type == 243 || this.type == 251 || this.type == 257 || this.type == 258 || this.type == 290 || this.type == 291 || this.type == 292 || this.type == 293 || this.type == 305 || this.type == 306 || this.type == 307 || this.type == 308 || this.type == 309 || this.type == 348 || this.type == 349 || this.type == 350 || this.type == 351 || this.type == 379 || this.type >= 430 && this.type <= 436 || this.type == 380 || this.type == 381 || this.type == 382 || this.type == 383 || this.type == 386 || this.type == 391 || this.type >= 449 && this.type <= 452 || this.type == 466 || this.type == 464 || this.type == 166 || this.type == 469 || this.type == 468 || this.type == 471 || this.type == 470 || this.type == 480 || this.type == 481 || this.type == 482 || this.type == 411 || this.type == 424 || this.type == 409 || this.type >= 494 && this.type <= 506 || this.type == 425 || this.type == 427 || this.type == 426 || this.type == 428 || this.type == 508 || this.type == 415 || this.type == 419 || this.type == 520 || this.type >= 524 && this.type <= 527 || this.type == 528 || this.type == 529 || this.type == 530 || this.type == 532) flag3 = false; bool flag4 = false; switch (this.type) { case 425: case 471: flag4 = true; break; } bool flag5 = true; switch (this.type) { case 110: case 111: case 206: case 214: case 215: case 216: case 291: case 292: case 293: case 350: case 379: case 380: case 381: case 382: case 409: case 411: case 424: case 426: case 466: case 498: case 499: case 500: case 501: case 502: case 503: case 504: case 505: case 506: case 520: if ((double) this.ai[2] > 0.0) { flag5 = false; break; } break; } if (!flag4 & flag5) { if ((double) this.velocity.Y == 0.0 && ((double) this.velocity.X > 0.0 && this.direction < 0 || (double) this.velocity.X < 0.0 && this.direction > 0)) flag2 = true; if ((((double) this.position.X == (double) this.oldPosition.X ? 1 : ((double) this.ai[3] >= (double) num26 ? 1 : 0)) | (flag2 ? 1 : 0)) != 0) ++this.ai[3]; else if ((double) Math.Abs(this.velocity.X) > 0.9 && (double) this.ai[3] > 0.0) --this.ai[3]; if ((double) this.ai[3] > (double) (num26 * 10)) this.ai[3] = 0.0f; if (this.justHit) this.ai[3] = 0.0f; if ((double) this.ai[3] == (double) num26) this.netUpdate = true; } if (this.type == 463 && Main.netMode != 1) { if ((double) this.localAI[3] > 0.0) --this.localAI[3]; if (this.justHit && (double) this.localAI[3] <= 0.0 && Main.rand.Next(3) == 0) { this.localAI[3] = 30f; int length = Main.rand.Next(3, 6); int[] numArray = new int[length]; int maxValue = 0; for (int index = 0; index < (int) byte.MaxValue; ++index) { if (Main.player[index].active && !Main.player[index].dead && Collision.CanHitLine(this.position, this.width, this.height, Main.player[index].position, Main.player[index].width, Main.player[index].height)) { numArray[maxValue] = index; ++maxValue; if (maxValue == length) break; } } if (maxValue > 1) { for (int index10 = 0; index10 < 100; ++index10) { int index11 = Main.rand.Next(maxValue); int index12 = index11; while (index12 == index11) index12 = Main.rand.Next(maxValue); int num30 = numArray[index11]; numArray[index11] = numArray[index12]; numArray[index12] = num30; } } Vector2 vector2_10 = new Vector2(-1f, -1f); for (int index = 0; index < maxValue; ++index) { Vector2 vector2_11 = Main.npc[numArray[index]].Center - this.Center; vector2_11.Normalize(); vector2_10 += vector2_11; } vector2_10.Normalize(); for (int index = 0; index < length; ++index) { float num31 = (float) Main.rand.Next(8, 13); Vector2 vector2_12 = new Vector2((float) Main.rand.Next(-100, 101), (float) Main.rand.Next(-100, 101)); vector2_12.Normalize(); if (maxValue > 0) { vector2_12 += vector2_10; vector2_12.Normalize(); } vector2_12 *= num31; if (maxValue > 0) { --maxValue; vector2_12 = Main.player[numArray[maxValue]].Center - this.Center; vector2_12.Normalize(); vector2_12 *= num31; } Projectile.NewProjectile(this.Center.X, this.position.Y + (float) (this.width / 4), vector2_12.X, vector2_12.Y, 498, (int) ((double) this.damage * 0.15), 1f); } } } if (this.type == 460) this.knockBackResist = (double) this.velocity.Y < -(double) NPC.gravity || (double) this.velocity.Y > (double) NPC.gravity ? 0.0f : 0.25f * Main.knockBackMultiplier; if (this.type == 469) { this.knockBackResist = 0.45f * Main.knockBackMultiplier; if ((double) this.ai[2] == 1.0) this.knockBackResist = 0.0f; bool flag6 = false; int num32 = (int) this.Center.X / 16; int num33 = (int) this.Center.Y / 16; for (int index13 = num32 - 1; index13 <= num32 + 1; ++index13) { for (int index14 = num33 - 1; index14 <= num33 + 1; ++index14) { if (Main.tile[index13, index14] != null && Main.tile[index13, index14].wall > (byte) 0) { flag6 = true; break; } } if (flag6) break; } if ((double) this.ai[2] == 0.0 & flag6) { if ((double) this.velocity.Y == 0.0) { this.velocity.Y = -4.6f; this.velocity.X *= 1.3f; } else if ((double) this.velocity.Y > 0.0) this.ai[2] = 1f; } if (flag6 && (double) this.ai[2] == 1.0 && Collision.CanHit(this.Center, 1, 1, Main.player[this.target].Center, 1, 1)) { Vector2 vector2 = Main.player[this.target].Center - this.Center; float num34 = vector2.Length(); vector2.Normalize(); this.velocity = (this.velocity * 29f + vector2 * (float) (4.5 + (double) num34 / 300.0)) / 30f; this.noGravity = true; this.ai[2] = 1f; return; } this.noGravity = false; this.ai[2] = 0.0f; } if (this.type == 462 && (double) this.velocity.Y == 0.0 && (double) (Main.player[this.target].Center - this.Center).Length() < 150.0 && (double) Math.Abs(this.velocity.X) > 3.0 && ((double) this.velocity.X < 0.0 && (double) this.Center.X > (double) Main.player[this.target].Center.X || (double) this.velocity.X > 0.0 && (double) this.Center.X < (double) Main.player[this.target].Center.X)) { this.velocity.X *= 1.75f; this.velocity.Y -= 4.5f; if ((double) this.Center.Y - (double) Main.player[this.target].Center.Y > 20.0) this.velocity.Y -= 0.5f; if ((double) this.Center.Y - (double) Main.player[this.target].Center.Y > 40.0) --this.velocity.Y; if ((double) this.Center.Y - (double) Main.player[this.target].Center.Y > 80.0) this.velocity.Y -= 1.5f; if ((double) this.Center.Y - (double) Main.player[this.target].Center.Y > 100.0) this.velocity.Y -= 1.5f; if ((double) Math.Abs(this.velocity.X) > 7.0) { if ((double) this.velocity.X < 0.0) this.velocity.X = -7f; else this.velocity.X = 7f; } } if ((double) this.ai[3] < (double) num26 && (Main.eclipse || !Main.dayTime || (double) this.position.Y > Main.worldSurface * 16.0 || Main.invasionType == 1 && (this.type == 343 || this.type == 350) || Main.invasionType == 1 && (this.type == 26 || this.type == 27 || this.type == 28 || this.type == 111 || this.type == 471) || this.type == 73 || Main.invasionType == 3 && this.type >= 212 && this.type <= 216 || Main.invasionType == 4 && (this.type == 381 || this.type == 382 || this.type == 383 || this.type == 385 || this.type == 386 || this.type == 389 || this.type == 391 || this.type == 520) || this.type == 31 || this.type == 294 || this.type == 295 || this.type == 296 || this.type == 47 || this.type == 67 || this.type == 77 || this.type == 78 || this.type == 79 || this.type == 80 || this.type == 110 || this.type == 120 || this.type == 168 || this.type == 181 || this.type == 185 || this.type == 198 || this.type == 199 || this.type == 206 || this.type == 217 || this.type == 218 || this.type == 219 || this.type == 220 || this.type == 239 || this.type == 243 || this.type == 254 || this.type == (int) byte.MaxValue || this.type == 257 || this.type == 258 || this.type == 291 || this.type == 292 || this.type == 293 || this.type == 379 || this.type == 380 || this.type == 464 || this.type == 470 || this.type == 424 || this.type == 411 && ((double) this.ai[1] >= 180.0 || (double) this.ai[1] < 90.0) || this.type == 409 || this.type == 425 || this.type == 429 || this.type == 427 || this.type == 428 || this.type == 508 || this.type == 415 || this.type == 419 || this.type >= 524 && this.type <= 527 || this.type == 528 || this.type == 529 || this.type == 530 || this.type == 532)) { if ((this.type == 3 || this.type == 331 || this.type == 332 || this.type == 21 || this.type >= 449 && this.type <= 452 || this.type == 31 || this.type == 294 || this.type == 295 || this.type == 296 || this.type == 77 || this.type == 110 || this.type == 132 || this.type == 167 || this.type == 161 || this.type == 162 || this.type == 186 || this.type == 187 || this.type == 188 || this.type == 189 || this.type == 197 || this.type == 200 || this.type == 201 || this.type == 202 || this.type == 203 || this.type == 223 || this.type == 291 || this.type == 292 || this.type == 293 || this.type == 320 || this.type == 321 || this.type == 319 || this.type == 481) && Main.rand.Next(1000) == 0) Main.PlaySound(14, (int) this.position.X, (int) this.position.Y); if (this.type == 489 && Main.rand.Next(800) == 0) Main.PlaySound(14, (int) this.position.X, (int) this.position.Y, this.type); if ((this.type == 78 || this.type == 79 || this.type == 80) && Main.rand.Next(500) == 0) Main.PlaySound(26, (int) this.position.X, (int) this.position.Y); if (this.type == 159 && Main.rand.Next(500) == 0) Main.PlaySound(29, (int) this.position.X, (int) this.position.Y, 7); if (this.type == 162 && Main.rand.Next(500) == 0) Main.PlaySound(29, (int) this.position.X, (int) this.position.Y, 6); if (this.type == 181 && Main.rand.Next(500) == 0) Main.PlaySound(29, (int) this.position.X, (int) this.position.Y, 8); if (this.type >= 269 && this.type <= 280 && Main.rand.Next(1000) == 0) Main.PlaySound(14, (int) this.position.X, (int) this.position.Y); this.TargetClosest(); } else if ((double) this.ai[2] <= 0.0 || this.type != 110 && this.type != 111 && this.type != 206 && this.type != 216 && this.type != 214 && this.type != 215 && this.type != 291 && this.type != 292 && this.type != 293 && this.type != 350 && this.type != 381 && this.type != 382 && this.type != 383 && this.type != 385 && this.type != 386 && this.type != 389 && this.type != 391 && this.type != 469 && this.type != 166 && this.type != 466 && this.type != 471 && this.type != 411 && this.type != 409 && this.type != 424 && this.type != 425 && this.type != 426 && this.type != 415 && this.type != 419 && this.type != 520) { if (Main.dayTime && (double) this.position.Y / 16.0 < Main.worldSurface && this.timeLeft > 10) this.timeLeft = 10; if ((double) this.velocity.X == 0.0) { if ((double) this.velocity.Y == 0.0) { ++this.ai[0]; if ((double) this.ai[0] >= 2.0) { this.direction *= -1; this.spriteDirection = this.direction; this.ai[0] = 0.0f; } } } else this.ai[0] = 0.0f; if (this.direction == 0) this.direction = 1; } if (this.type == 159 || this.type == 349) { if (this.type == 159 && ((double) this.velocity.X > 0.0 && this.direction < 0 || (double) this.velocity.X < 0.0 && this.direction > 0)) this.velocity.X *= 0.95f; if ((double) this.velocity.X < -6.0 || (double) this.velocity.X > 6.0) { if ((double) this.velocity.Y == 0.0) this.velocity = this.velocity * 0.8f; } else if ((double) this.velocity.X < 6.0 && this.direction == 1) { if ((double) this.velocity.Y == 0.0 && (double) this.velocity.X < 0.0) this.velocity.X *= 0.99f; this.velocity.X += 0.07f; if ((double) this.velocity.X > 6.0) this.velocity.X = 6f; } else if ((double) this.velocity.X > -6.0 && this.direction == -1) { if ((double) this.velocity.Y == 0.0 && (double) this.velocity.X > 0.0) this.velocity.X *= 0.99f; this.velocity.X -= 0.07f; if ((double) this.velocity.X < -6.0) this.velocity.X = -6f; } } else if (this.type == 199) { if ((double) this.velocity.X < -4.0 || (double) this.velocity.X > 4.0) { if ((double) this.velocity.Y == 0.0) this.velocity = this.velocity * 0.8f; } else if ((double) this.velocity.X < 4.0 && this.direction == 1) { if ((double) this.velocity.Y == 0.0 && (double) this.velocity.X < 0.0) this.velocity.X *= 0.8f; this.velocity.X += 0.1f; if ((double) this.velocity.X > 4.0) this.velocity.X = 4f; } else if ((double) this.velocity.X > -4.0 && this.direction == -1) { if ((double) this.velocity.Y == 0.0 && (double) this.velocity.X > 0.0) this.velocity.X *= 0.8f; this.velocity.X -= 0.1f; if ((double) this.velocity.X < -4.0) this.velocity.X = -4f; } } else if (this.type == 120 || this.type == 166 || this.type == 213 || this.type == 258 || this.type == 528 || this.type == 529) { if ((double) this.velocity.X < -3.0 || (double) this.velocity.X > 3.0) { if ((double) this.velocity.Y == 0.0) this.velocity = this.velocity * 0.8f; } else if ((double) this.velocity.X < 3.0 && this.direction == 1) { if ((double) this.velocity.Y == 0.0 && (double) this.velocity.X < 0.0) this.velocity.X *= 0.99f; this.velocity.X += 0.07f; if ((double) this.velocity.X > 3.0) this.velocity.X = 3f; } else if ((double) this.velocity.X > -3.0 && this.direction == -1) { if ((double) this.velocity.Y == 0.0 && (double) this.velocity.X > 0.0) this.velocity.X *= 0.99f; this.velocity.X -= 0.07f; if ((double) this.velocity.X < -3.0) this.velocity.X = -3f; } } else if (this.type == 461 || this.type == 27 || this.type == 77 || this.type == 104 || this.type == 163 || this.type == 162 || this.type == 196 || this.type == 197 || this.type == 212 || this.type == 257 || this.type == 326 || this.type == 343 || this.type == 348 || this.type == 351 || this.type >= 524 && this.type <= 527 || this.type == 530) { if ((double) this.velocity.X < -2.0 || (double) this.velocity.X > 2.0) { if ((double) this.velocity.Y == 0.0) this.velocity = this.velocity * 0.8f; } else if ((double) this.velocity.X < 2.0 && this.direction == 1) { this.velocity.X += 0.07f; if ((double) this.velocity.X > 2.0) this.velocity.X = 2f; } else if ((double) this.velocity.X > -2.0 && this.direction == -1) { this.velocity.X -= 0.07f; if ((double) this.velocity.X < -2.0) this.velocity.X = -2f; } } else if (this.type == 109) { if ((double) this.velocity.X < -2.0 || (double) this.velocity.X > 2.0) { if ((double) this.velocity.Y == 0.0) this.velocity = this.velocity * 0.8f; } else if ((double) this.velocity.X < 2.0 && this.direction == 1) { this.velocity.X += 0.04f; if ((double) this.velocity.X > 2.0) this.velocity.X = 2f; } else if ((double) this.velocity.X > -2.0 && this.direction == -1) { this.velocity.X -= 0.04f; if ((double) this.velocity.X < -2.0) this.velocity.X = -2f; } } else if (this.type == 21 || this.type == 26 || this.type == 31 || this.type == 294 || this.type == 295 || this.type == 296 || this.type == 47 || this.type == 73 || this.type == 140 || this.type == 164 || this.type == 239 || this.type == 167 || this.type == 168 || this.type == 185 || this.type == 198 || this.type == 201 || this.type == 202 || this.type == 203 || this.type == 217 || this.type == 218 || this.type == 219 || this.type == 226 || this.type == 181 || this.type == 254 || this.type == 338 || this.type == 339 || this.type == 340 || this.type == 342 || this.type == 385 || this.type == 389 || this.type == 462 || this.type == 463 || this.type == 466 || this.type == 464 || this.type == 469 || this.type == 470 || this.type == 480 || this.type == 482 || this.type == 425 || this.type == 429) { float num35 = 1.5f; if (this.type == 294) num35 = 2f; else if (this.type == 295) num35 = 1.75f; else if (this.type == 296) num35 = 1.25f; else if (this.type == 201) num35 = 1.1f; else if (this.type == 202) num35 = 0.9f; else if (this.type == 203) num35 = 1.2f; else if (this.type == 338) num35 = 1.75f; else if (this.type == 339) num35 = 1.25f; else if (this.type == 340) num35 = 2f; else if (this.type == 385) num35 = 1.8f; else if (this.type == 389) num35 = 2.25f; else if (this.type == 462) num35 = 4f; else if (this.type == 463) num35 = 0.75f; else if (this.type == 466) num35 = 3.75f; else if (this.type == 469) num35 = 3.25f; else if (this.type == 480) num35 = (float) (1.5 + (1.0 - (double) this.life / (double) this.lifeMax) * 2.0); else if (this.type == 425) num35 = 6f; else if (this.type == 429) num35 = 4f; if (this.type == 21 || this.type == 201 || this.type == 202 || this.type == 203 || this.type == 342) num35 *= (float) (1.0 + (1.0 - (double) this.scale)); if ((double) this.velocity.X < -(double) num35 || (double) this.velocity.X > (double) num35) { if ((double) this.velocity.Y == 0.0) this.velocity = this.velocity * 0.8f; } else if ((double) this.velocity.X < (double) num35 && this.direction == 1) { if (this.type == 466 && (double) this.velocity.X < -2.0) this.velocity.X *= 0.9f; this.velocity.X += 0.07f; if ((double) this.velocity.X > (double) num35) this.velocity.X = num35; } else if ((double) this.velocity.X > -(double) num35 && this.direction == -1) { if (this.type == 466 && (double) this.velocity.X > 2.0) this.velocity.X *= 0.9f; this.velocity.X -= 0.07f; if ((double) this.velocity.X < -(double) num35) this.velocity.X = -num35; } if ((double) this.velocity.Y == 0.0 && this.type == 462 && (this.direction > 0 && (double) this.velocity.X < 0.0 || this.direction < 0 && (double) this.velocity.X > 0.0)) this.velocity.X *= 0.9f; } else if (this.type >= 269 && this.type <= 280) { float num36 = 1.5f; if (this.type == 269) num36 = 2f; if (this.type == 270) num36 = 1f; if (this.type == 271) num36 = 1.5f; if (this.type == 272) num36 = 3f; if (this.type == 273) num36 = 1.25f; if (this.type == 274) num36 = 3f; if (this.type == 275) num36 = 3.25f; if (this.type == 276) num36 = 2f; if (this.type == 277) num36 = 2.75f; if (this.type == 278) num36 = 1.8f; if (this.type == 279) num36 = 1.3f; if (this.type == 280) num36 = 2.5f; float num37 = num36 * (float) (1.0 + (1.0 - (double) this.scale)); if ((double) this.velocity.X < -(double) num37 || (double) this.velocity.X > (double) num37) { if ((double) this.velocity.Y == 0.0) this.velocity = this.velocity * 0.8f; } else if ((double) this.velocity.X < (double) num37 && this.direction == 1) { this.velocity.X += 0.07f; if ((double) this.velocity.X > (double) num37) this.velocity.X = num37; } else if ((double) this.velocity.X > -(double) num37 && this.direction == -1) { this.velocity.X -= 0.07f; if ((double) this.velocity.X < -(double) num37) this.velocity.X = -num37; } } else if (this.type >= 305 && this.type <= 314) { float num38 = 1.5f; if (this.type == 305 || this.type == 310) num38 = 2f; if (this.type == 306 || this.type == 311) num38 = 1.25f; if (this.type == 307 || this.type == 312) num38 = 2.25f; if (this.type == 308 || this.type == 313) num38 = 1.5f; if (this.type == 309 || this.type == 314) num38 = 1f; if (this.type < 310) { if ((double) this.velocity.Y == 0.0) { this.velocity.X *= 0.85f; if ((double) this.velocity.X > -0.3 && (double) this.velocity.X < 0.3) { this.velocity.Y = -7f; this.velocity.X = num38 * (float) this.direction; } } else if (this.spriteDirection == this.direction) this.velocity.X = (float) (((double) this.velocity.X * 10.0 + (double) num38 * (double) this.direction) / 11.0); } else if ((double) this.velocity.X < -(double) num38 || (double) this.velocity.X > (double) num38) { if ((double) this.velocity.Y == 0.0) this.velocity = this.velocity * 0.8f; } else if ((double) this.velocity.X < (double) num38 && this.direction == 1) { this.velocity.X += 0.07f; if ((double) this.velocity.X > (double) num38) this.velocity.X = num38; } else if ((double) this.velocity.X > -(double) num38 && this.direction == -1) { this.velocity.X -= 0.07f; if ((double) this.velocity.X < -(double) num38) this.velocity.X = -num38; } } else if (this.type == 67 || this.type == 220 || this.type == 428) { if ((double) this.velocity.X < -0.5 || (double) this.velocity.X > 0.5) { if ((double) this.velocity.Y == 0.0) this.velocity = this.velocity * 0.7f; } else if ((double) this.velocity.X < 0.5 && this.direction == 1) { this.velocity.X += 0.03f; if ((double) this.velocity.X > 0.5) this.velocity.X = 0.5f; } else if ((double) this.velocity.X > -0.5 && this.direction == -1) { this.velocity.X -= 0.03f; if ((double) this.velocity.X < -0.5) this.velocity.X = -0.5f; } } else if (this.type == 78 || this.type == 79 || this.type == 80) { float num39 = 1f; float num40 = 0.05f; if (this.life < this.lifeMax / 2) { num39 = 2f; num40 = 0.1f; } if (this.type == 79) num39 *= 1.5f; if ((double) this.velocity.X < -(double) num39 || (double) this.velocity.X > (double) num39) { if ((double) this.velocity.Y == 0.0) this.velocity = this.velocity * 0.7f; } else if ((double) this.velocity.X < (double) num39 && this.direction == 1) { this.velocity.X += num40; if ((double) this.velocity.X > (double) num39) this.velocity.X = num39; } else if ((double) this.velocity.X > -(double) num39 && this.direction == -1) { this.velocity.X -= num40; if ((double) this.velocity.X < -(double) num39) this.velocity.X = -num39; } } else if (this.type == 287) { float num41 = 5f; float num42 = 0.2f; if ((double) this.velocity.X < -(double) num41 || (double) this.velocity.X > (double) num41) { if ((double) this.velocity.Y == 0.0) this.velocity = this.velocity * 0.7f; } else if ((double) this.velocity.X < (double) num41 && this.direction == 1) { this.velocity.X += num42; if ((double) this.velocity.X > (double) num41) this.velocity.X = num41; } else if ((double) this.velocity.X > -(double) num41 && this.direction == -1) { this.velocity.X -= num42; if ((double) this.velocity.X < -(double) num41) this.velocity.X = -num41; } } else if (this.type == 243) { float num43 = 1f; float num44 = 0.07f; float num45 = num43 + (float) ((1.0 - (double) this.life / (double) this.lifeMax) * 1.5); float num46 = num44 + (float) ((1.0 - (double) this.life / (double) this.lifeMax) * 0.150000005960464); if ((double) this.velocity.X < -(double) num45 || (double) this.velocity.X > (double) num45) { if ((double) this.velocity.Y == 0.0) this.velocity = this.velocity * 0.7f; } else if ((double) this.velocity.X < (double) num45 && this.direction == 1) { this.velocity.X += num46; if ((double) this.velocity.X > (double) num45) this.velocity.X = num45; } else if ((double) this.velocity.X > -(double) num45 && this.direction == -1) { this.velocity.X -= num46; if ((double) this.velocity.X < -(double) num45) this.velocity.X = -num45; } } else if (this.type == 251) { float num47 = 1f; float num48 = 0.08f; float num49 = num47 + (float) ((1.0 - (double) this.life / (double) this.lifeMax) * 2.0); float num50 = num48 + (float) ((1.0 - (double) this.life / (double) this.lifeMax) * 0.200000002980232); if ((double) this.velocity.X < -(double) num49 || (double) this.velocity.X > (double) num49) { if ((double) this.velocity.Y == 0.0) this.velocity = this.velocity * 0.7f; } else if ((double) this.velocity.X < (double) num49 && this.direction == 1) { this.velocity.X += num50; if ((double) this.velocity.X > (double) num49) this.velocity.X = num49; } else if ((double) this.velocity.X > -(double) num49 && this.direction == -1) { this.velocity.X -= num50; if ((double) this.velocity.X < -(double) num49) this.velocity.X = -num49; } } else if (this.type == 386) { if ((double) this.ai[2] > 0.0) { if ((double) this.velocity.Y == 0.0) this.velocity.X *= 0.8f; } else { float num51 = 0.15f; float num52 = 1.5f; if ((double) this.velocity.X < -(double) num52 || (double) this.velocity.X > (double) num52) { if ((double) this.velocity.Y == 0.0) this.velocity = this.velocity * 0.7f; } else if ((double) this.velocity.X < (double) num52 && this.direction == 1) { this.velocity.X += num51; if ((double) this.velocity.X > (double) num52) this.velocity.X = num52; } else if ((double) this.velocity.X > -(double) num52 && this.direction == -1) { this.velocity.X -= num51; if ((double) this.velocity.X < -(double) num52) this.velocity.X = -num52; } } } else if (this.type == 460) { float num53 = 3f; float num54 = 0.1f; if ((double) Math.Abs(this.velocity.X) > 2.0) num54 *= 0.8f; if ((double) Math.Abs(this.velocity.X) > 2.5) num54 *= 0.8f; if ((double) Math.Abs(this.velocity.X) > 3.0) num54 *= 0.8f; if ((double) Math.Abs(this.velocity.X) > 3.5) num54 *= 0.8f; if ((double) Math.Abs(this.velocity.X) > 4.0) num54 *= 0.8f; if ((double) Math.Abs(this.velocity.X) > 4.5) num54 *= 0.8f; if ((double) Math.Abs(this.velocity.X) > 5.0) num54 *= 0.8f; if ((double) Math.Abs(this.velocity.X) > 5.5) num54 *= 0.8f; float num55 = num53 + (float) ((1.0 - (double) this.life / (double) this.lifeMax) * 3.0); if ((double) this.velocity.X < -(double) num55 || (double) this.velocity.X > (double) num55) { if ((double) this.velocity.Y == 0.0) this.velocity = this.velocity * 0.7f; } else if ((double) this.velocity.X < (double) num55 && this.direction == 1) { if ((double) this.velocity.X < 0.0) this.velocity.X *= 0.93f; this.velocity.X += num54; if ((double) this.velocity.X > (double) num55) this.velocity.X = num55; } else if ((double) this.velocity.X > -(double) num55 && this.direction == -1) { if ((double) this.velocity.X > 0.0) this.velocity.X *= 0.93f; this.velocity.X -= num54; if ((double) this.velocity.X < -(double) num55) this.velocity.X = -num55; } } else if (this.type == 508) { float num56 = 2.5f; float num57 = 40f; float num58 = Math.Abs(this.velocity.X); if ((double) num58 > 2.75) { num56 = 3.5f; num57 += 80f; } else if ((double) num58 > 2.25) { num56 = 3f; num57 += 60f; } if ((double) Math.Abs(this.velocity.Y) < 0.5) { if ((double) this.velocity.X > 0.0 && this.direction < 0) this.velocity = this.velocity * 0.9f; if ((double) this.velocity.X < 0.0 && this.direction > 0) this.velocity = this.velocity * 0.9f; } if ((double) Math.Abs(this.velocity.Y) > (double) NPC.gravity) num57 *= 3f; if ((double) this.velocity.X <= 0.0 && this.direction < 0) this.velocity.X = (float) (((double) this.velocity.X * (double) num57 - (double) num56) / ((double) num57 + 1.0)); else if ((double) this.velocity.X >= 0.0 && this.direction > 0) this.velocity.X = (float) (((double) this.velocity.X * (double) num57 + (double) num56) / ((double) num57 + 1.0)); else if ((double) Math.Abs(this.Center.X - Main.player[this.target].Center.X) > 20.0 && (double) Math.Abs(this.velocity.Y) <= (double) NPC.gravity) { this.velocity.X *= 0.99f; this.velocity.X += (float) this.direction * 0.025f; } } else if (this.type == 391 || this.type == 427 || this.type == 415 || this.type == 419 || this.type == 518 || this.type == 532) { float num59 = 5f; float num60 = 0.25f; float num61 = 0.7f; if (this.type == 427) { num59 = 6f; num60 = 0.2f; num61 = 0.8f; } else if (this.type == 415) { num59 = 4f; num60 = 0.1f; num61 = 0.95f; } else if (this.type == 419) { num59 = 6f; num60 = 0.15f; num61 = 0.85f; } else if (this.type == 518) { num59 = 5f; num60 = 0.1f; num61 = 0.95f; } else if (this.type == 532) { num59 = 5f; num60 = 0.15f; num61 = 0.98f; } if ((double) this.velocity.X < -(double) num59 || (double) this.velocity.X > (double) num59) { if ((double) this.velocity.Y == 0.0) this.velocity = this.velocity * num61; } else if ((double) this.velocity.X < (double) num59 && this.direction == 1) { this.velocity.X += num60; if ((double) this.velocity.X > (double) num59) this.velocity.X = num59; } else if ((double) this.velocity.X > -(double) num59 && this.direction == -1) { this.velocity.X -= num60; if ((double) this.velocity.X < -(double) num59) this.velocity.X = -num59; } } else if (this.type >= 430 && this.type <= 436 || this.type == 494 || this.type == 495) { if ((double) this.ai[2] == 0.0) { this.damage = this.defDamage; float num62 = 1f * (float) (1.0 + (1.0 - (double) this.scale)); if ((double) this.velocity.X < -(double) num62 || (double) this.velocity.X > (double) num62) { if ((double) this.velocity.Y == 0.0) this.velocity = this.velocity * 0.8f; } else if ((double) this.velocity.X < (double) num62 && this.direction == 1) { this.velocity.X += 0.07f; if ((double) this.velocity.X > (double) num62) this.velocity.X = num62; } else if ((double) this.velocity.X > -(double) num62 && this.direction == -1) { this.velocity.X -= 0.07f; if ((double) this.velocity.X < -(double) num62) this.velocity.X = -num62; } if ((double) this.velocity.Y == 0.0 && (!Main.dayTime || (double) this.position.Y > Main.worldSurface * 16.0) && !Main.player[this.target].dead) { Vector2 vector2 = this.Center - Main.player[this.target].Center; int num63 = 50; if (this.type >= 494 && this.type <= 495) num63 = 42; if ((double) vector2.Length() < (double) num63 && Collision.CanHit(this.Center, 1, 1, Main.player[this.target].Center, 1, 1)) { this.velocity.X *= 0.7f; this.ai[2] = 1f; } } } else { this.damage = (int) ((double) this.defDamage * 1.5); this.ai[3] = 1f; this.velocity.X *= 0.9f; if ((double) Math.Abs(this.velocity.X) < 0.1) this.velocity.X = 0.0f; ++this.ai[2]; if ((double) this.ai[2] >= 20.0 || (double) this.velocity.Y != 0.0 || Main.dayTime && (double) this.position.Y < Main.worldSurface * 16.0) this.ai[2] = 0.0f; } } else if (this.type != 110 && this.type != 111 && this.type != 206 && this.type != 214 && this.type != 215 && this.type != 216 && this.type != 290 && this.type != 291 && this.type != 292 && this.type != 293 && this.type != 350 && this.type != 379 && this.type != 380 && this.type != 381 && this.type != 382 && (this.type < 449 || this.type > 452) && this.type != 468 && this.type != 481 && this.type != 411 && this.type != 409 && (this.type < 498 || this.type > 506) && this.type != 424 && this.type != 426 && this.type != 520) { float num64 = 1f; if (this.type == 186) num64 = 1.1f; if (this.type == 187) num64 = 0.9f; if (this.type == 188) num64 = 1.2f; if (this.type == 189) num64 = 0.8f; if (this.type == 132) num64 = 0.95f; if (this.type == 200) num64 = 0.87f; if (this.type == 223) num64 = 1.05f; if (this.type == 489) { float num65 = (Main.player[this.target].Center - this.Center).Length() * (1f / 400f); if ((double) num65 > 1.5) num65 = 1.5f; num64 = (!Main.expertMode ? 2.5f - num65 : 3f - num65) * 0.8f; } if (this.type == 489 || this.type == 3 || this.type == 132 || this.type == 186 || this.type == 187 || this.type == 188 || this.type == 189 || this.type == 200 || this.type == 223 || this.type == 331 || this.type == 332) num64 *= (float) (1.0 + (1.0 - (double) this.scale)); if ((double) this.velocity.X < -(double) num64 || (double) this.velocity.X > (double) num64) { if ((double) this.velocity.Y == 0.0) this.velocity = this.velocity * 0.8f; } else if ((double) this.velocity.X < (double) num64 && this.direction == 1) { this.velocity.X += 0.07f; if ((double) this.velocity.X > (double) num64) this.velocity.X = num64; } else if ((double) this.velocity.X > -(double) num64 && this.direction == -1) { this.velocity.X -= 0.07f; if ((double) this.velocity.X < -(double) num64) this.velocity.X = -num64; } } if (this.type >= 277 && this.type <= 280) Lighting.AddLight((int) this.Center.X / 16, (int) this.Center.Y / 16, 0.2f, 0.1f, 0.0f); else if (this.type == 520) Lighting.AddLight(this.Top + new Vector2(0.0f, 20f), 0.3f, 0.3f, 0.7f); else if (this.type == 525) Lighting.AddLight(this.Top + new Vector2(0.0f, 15f), new Vector3(0.7f, 1f, 0.2f) * 0.5f); else if (this.type == 526) Lighting.AddLight(this.Top + new Vector2(0.0f, 15f), new Vector3(1f, 1f, 0.5f) * 0.4f); else if (this.type == 527) Lighting.AddLight(this.Top + new Vector2(0.0f, 15f), new Vector3(0.6f, 0.3f, 1f) * 0.4f); else if (this.type == 415) { this.hide = false; for (int index = 0; index < 200; ++index) { if (Main.npc[index].active && Main.npc[index].type == 416 && (double) Main.npc[index].ai[0] == (double) this.whoAmI) { this.hide = true; break; } } } else if (this.type == 258) { if ((double) this.velocity.Y != 0.0) { this.TargetClosest(); this.spriteDirection = this.direction; if ((double) Main.player[this.target].Center.X < (double) this.position.X && (double) this.velocity.X > 0.0) this.velocity.X *= 0.95f; else if ((double) Main.player[this.target].Center.X > (double) this.position.X + (double) this.width && (double) this.velocity.X < 0.0) this.velocity.X *= 0.95f; if ((double) Main.player[this.target].Center.X < (double) this.position.X && (double) this.velocity.X > -5.0) this.velocity.X -= 0.1f; else if ((double) Main.player[this.target].Center.X > (double) this.position.X + (double) this.width && (double) this.velocity.X < 5.0) this.velocity.X += 0.1f; } else if ((double) Main.player[this.target].Center.Y + 50.0 < (double) this.position.Y && Collision.CanHit(this.position, this.width, this.height, Main.player[this.target].position, Main.player[this.target].width, Main.player[this.target].height)) this.velocity.Y = -7f; } else if (this.type == 425) { if ((double) this.velocity.Y == 0.0) this.ai[2] = 0.0f; if ((double) this.velocity.Y != 0.0 && (double) this.ai[2] == 1.0) { this.TargetClosest(); this.spriteDirection = -this.direction; if (Collision.CanHit(this.Center, 0, 0, Main.player[this.target].Center, 0, 0)) { float num66 = Main.player[this.target].Center.X - (float) (this.direction * 400) - this.Center.X; float num67 = Main.player[this.target].Bottom.Y - this.Bottom.Y; if ((double) num66 < 0.0 && (double) this.velocity.X > 0.0) this.velocity.X *= 0.9f; else if ((double) num66 > 0.0 && (double) this.velocity.X < 0.0) this.velocity.X *= 0.9f; if ((double) num66 < 0.0 && (double) this.velocity.X > -5.0) this.velocity.X -= 0.1f; else if ((double) num66 > 0.0 && (double) this.velocity.X < 5.0) this.velocity.X += 0.1f; if ((double) this.velocity.X > 6.0) this.velocity.X = 6f; if ((double) this.velocity.X < -6.0) this.velocity.X = -6f; if ((double) num67 < -20.0 && (double) this.velocity.Y > 0.0) this.velocity.Y *= 0.8f; else if ((double) num67 > 20.0 && (double) this.velocity.Y < 0.0) this.velocity.Y *= 0.8f; if ((double) num67 < -20.0 && (double) this.velocity.Y > -5.0) this.velocity.Y -= 0.3f; else if ((double) num67 > 20.0 && (double) this.velocity.Y < 5.0) this.velocity.Y += 0.3f; } if (Main.rand.Next(3) == 0) { Vector2 Position = this.Center + new Vector2((float) (this.direction * -14), -8f) - Vector2.One * 4f; Vector2 vector2 = new Vector2((float) (this.direction * -6), 12f) * 0.2f + Utils.RandomVector2(Main.rand, -1f, 1f) * 0.1f; Dust dust = Main.dust[Dust.NewDust(Position, 8, 8, 229, vector2.X, vector2.Y, 100, Color.Transparent, (float) (1.0 + (double) Main.rand.NextFloat() * 0.5))]; dust.noGravity = true; dust.velocity = vector2; dust.customData = (object) this; } for (int index = 0; index < 200; ++index) { if (index != this.whoAmI && Main.npc[index].active && Main.npc[index].type == this.type && (double) Math.Abs(this.position.X - Main.npc[index].position.X) + (double) Math.Abs(this.position.Y - Main.npc[index].position.Y) < (double) this.width) { if ((double) this.position.X < (double) Main.npc[index].position.X) this.velocity.X -= 0.05f; else this.velocity.X += 0.05f; if ((double) this.position.Y < (double) Main.npc[index].position.Y) this.velocity.Y -= 0.05f; else this.velocity.Y += 0.05f; } } } else if ((double) Main.player[this.target].Center.Y + 100.0 < (double) this.position.Y && Collision.CanHit(this.position, this.width, this.height, Main.player[this.target].position, Main.player[this.target].width, Main.player[this.target].height)) { this.velocity.Y = -5f; this.ai[2] = 1f; } if (Main.netMode != 1) { ++this.localAI[2]; if ((double) this.localAI[2] >= (double) (360 + Main.rand.Next(360)) && (double) this.Distance(Main.player[this.target].Center) < 400.0 && (double) Math.Abs(this.DirectionTo(Main.player[this.target].Center).Y) < 0.5 && Collision.CanHitLine(this.Center, 0, 0, Main.player[this.target].Center, 0, 0)) { this.localAI[2] = 0.0f; Vector2 vector2_13 = this.Center + new Vector2((float) (this.direction * 30), 2f); Vector2 vec = this.DirectionTo(Main.player[this.target].Center) * 7f; if (vec.HasNaNs()) vec = new Vector2((float) (this.direction * 8), 0.0f); int Damage = Main.expertMode ? 50 : 75; for (int index = 0; index < 4; ++index) { Vector2 vector2_14 = vec + Utils.RandomVector2(Main.rand, -0.8f, 0.8f); Projectile.NewProjectile(vector2_13.X, vector2_13.Y, vector2_14.X, vector2_14.Y, 577, Damage, 1f, Main.myPlayer); } } } } else if (this.type == 427) { if ((double) this.velocity.Y == 0.0) { this.ai[2] = 0.0f; this.rotation = 0.0f; } else this.rotation = this.velocity.X * 0.1f; if ((double) this.velocity.Y != 0.0 && (double) this.ai[2] == 1.0) { this.TargetClosest(); this.spriteDirection = -this.direction; if (Collision.CanHit(this.Center, 0, 0, Main.player[this.target].Center, 0, 0)) { float num68 = Main.player[this.target].Center.X - this.Center.X; float num69 = Main.player[this.target].Center.Y - this.Center.Y; if ((double) num68 < 0.0 && (double) this.velocity.X > 0.0) this.velocity.X *= 0.98f; else if ((double) num68 > 0.0 && (double) this.velocity.X < 0.0) this.velocity.X *= 0.98f; if ((double) num68 < -20.0 && (double) this.velocity.X > -6.0) this.velocity.X -= 0.015f; else if ((double) num68 > 20.0 && (double) this.velocity.X < 6.0) this.velocity.X += 0.015f; if ((double) this.velocity.X > 6.0) this.velocity.X = 6f; if ((double) this.velocity.X < -6.0) this.velocity.X = -6f; if ((double) num69 < -20.0 && (double) this.velocity.Y > 0.0) this.velocity.Y *= 0.98f; else if ((double) num69 > 20.0 && (double) this.velocity.Y < 0.0) this.velocity.Y *= 0.98f; if ((double) num69 < -20.0 && (double) this.velocity.Y > -6.0) this.velocity.Y -= 0.15f; else if ((double) num69 > 20.0 && (double) this.velocity.Y < 6.0) this.velocity.Y += 0.15f; } for (int index = 0; index < 200; ++index) { if (index != this.whoAmI && Main.npc[index].active && Main.npc[index].type == this.type && (double) Math.Abs(this.position.X - Main.npc[index].position.X) + (double) Math.Abs(this.position.Y - Main.npc[index].position.Y) < (double) this.width) { if ((double) this.position.X < (double) Main.npc[index].position.X) this.velocity.X -= 0.05f; else this.velocity.X += 0.05f; if ((double) this.position.Y < (double) Main.npc[index].position.Y) this.velocity.Y -= 0.05f; else this.velocity.Y += 0.05f; } } } else if ((double) Main.player[this.target].Center.Y + 100.0 < (double) this.position.Y && Collision.CanHit(this.position, this.width, this.height, Main.player[this.target].position, Main.player[this.target].width, Main.player[this.target].height)) { this.velocity.Y = -5f; this.ai[2] = 1f; } } else if (this.type == 426) { if ((double) this.ai[1] > 0.0 && (double) this.velocity.Y > 0.0) { this.velocity.Y *= 0.85f; if ((double) this.velocity.Y == 0.0) this.velocity.Y = -0.4f; } if ((double) this.velocity.Y != 0.0) { this.TargetClosest(); this.spriteDirection = this.direction; if (Collision.CanHit(this.Center, 0, 0, Main.player[this.target].Center, 0, 0)) { float num70 = Main.player[this.target].Center.X - (float) (this.direction * 300) - this.Center.X; if ((double) num70 < 40.0 && (double) this.velocity.X > 0.0) this.velocity.X *= 0.98f; else if ((double) num70 > 40.0 && (double) this.velocity.X < 0.0) this.velocity.X *= 0.98f; if ((double) num70 < 40.0 && (double) this.velocity.X > -5.0) this.velocity.X -= 0.2f; else if ((double) num70 > 40.0 && (double) this.velocity.X < 5.0) this.velocity.X += 0.2f; if ((double) this.velocity.X > 6.0) this.velocity.X = 6f; if ((double) this.velocity.X < -6.0) this.velocity.X = -6f; } } else if ((double) Main.player[this.target].Center.Y + 100.0 < (double) this.position.Y && Collision.CanHit(this.position, this.width, this.height, Main.player[this.target].position, Main.player[this.target].width, Main.player[this.target].height)) this.velocity.Y = -6f; for (int index = 0; index < 200; ++index) { if (index != this.whoAmI && Main.npc[index].active && Main.npc[index].type == this.type && (double) Math.Abs(this.position.X - Main.npc[index].position.X) + (double) Math.Abs(this.position.Y - Main.npc[index].position.Y) < (double) this.width) { if ((double) this.position.X < (double) Main.npc[index].position.X) this.velocity.X -= 0.1f; else this.velocity.X += 0.1f; if ((double) this.position.Y < (double) Main.npc[index].position.Y) this.velocity.Y -= 0.1f; else this.velocity.Y += 0.1f; } } if (Main.rand.Next(6) == 0 && (double) this.ai[1] <= 20.0) { Dust dust = Main.dust[Dust.NewDust(this.Center + new Vector2(this.spriteDirection == 1 ? 8f : -20f, -20f), 8, 8, 229, this.velocity.X, this.velocity.Y, 100)]; dust.velocity = dust.velocity / 4f + this.velocity / 2f; dust.scale = 0.6f; dust.noLight = true; } if ((double) this.ai[1] >= 57.0) { int Type = Utils.SelectRandom(Main.rand, 161, 229); Dust dust = Main.dust[Dust.NewDust(this.Center + new Vector2(this.spriteDirection == 1 ? 8f : -20f, -20f), 8, 8, Type, this.velocity.X, this.velocity.Y, 100)]; dust.velocity = dust.velocity / 4f + this.DirectionTo(Main.player[this.target].Top); dust.scale = 1.2f; dust.noLight = true; } if (Main.rand.Next(6) == 0) { Dust dust = Main.dust[Dust.NewDust(this.Center, 2, 2, 229)]; dust.position = this.Center + new Vector2(this.spriteDirection == 1 ? 26f : -26f, 24f); dust.velocity.X = 0.0f; if ((double) dust.velocity.Y < 0.0) dust.velocity.Y = 0.0f; dust.noGravity = true; dust.scale = 1f; dust.noLight = true; } } else if (this.type == 185) { if ((double) this.velocity.Y == 0.0) { this.rotation = 0.0f; this.localAI[0] = 0.0f; } else if ((double) this.localAI[0] == 1.0) this.rotation += this.velocity.X * 0.05f; } else if (this.type == 428) { if ((double) this.velocity.Y == 0.0) this.rotation = 0.0f; else this.rotation += this.velocity.X * 0.08f; } if (this.type == 159 && Main.netMode != 1) { Vector2 vector2 = new Vector2(this.position.X + (float) this.width * 0.5f, this.position.Y + (float) this.height * 0.5f); double num71 = (double) Main.player[this.target].position.X + (double) Main.player[this.target].width * 0.5 - (double) vector2.X; float num72 = Main.player[this.target].position.Y + (float) Main.player[this.target].height * 0.5f - vector2.Y; if (Math.Sqrt(num71 * num71 + (double) num72 * (double) num72) > 300.0) this.Transform(158); } if (this.type == 164 && Main.netMode != 1 && (double) this.velocity.Y == 0.0) { int num73 = (int) this.Center.X / 16; int num74 = (int) this.Center.Y / 16; bool flag7 = false; for (int index15 = num73 - 1; index15 <= num73 + 1; ++index15) { for (int index16 = num74 - 1; index16 <= num74 + 1; ++index16) { if (Main.tile[index15, index16].wall > (byte) 0) flag7 = true; } } if (flag7) this.Transform(165); } if (this.type == 239 && Main.netMode != 1 && (double) this.velocity.Y == 0.0) { int num75 = (int) this.Center.X / 16; int num76 = (int) this.Center.Y / 16; bool flag8 = false; for (int index17 = num75 - 1; index17 <= num75 + 1; ++index17) { for (int index18 = num76 - 1; index18 <= num76 + 1; ++index18) { if (Main.tile[index17, index18].wall > (byte) 0) flag8 = true; } } if (flag8) this.Transform(240); } if (this.type == 530 && Main.netMode != 1 && (double) this.velocity.Y == 0.0) { int num77 = (int) this.Center.X / 16; int num78 = (int) this.Center.Y / 16; bool flag9 = false; for (int index19 = num77 - 1; index19 <= num77 + 1; ++index19) { for (int index20 = num78 - 1; index20 <= num78 + 1; ++index20) { if (Main.tile[index19, index20].wall > (byte) 0) flag9 = true; } } if (flag9) this.Transform(531); } if (Main.netMode != 1 && Main.expertMode && this.target >= 0 && (this.type == 163 || this.type == 238) && Collision.CanHit(this.Center, 1, 1, Main.player[this.target].Center, 1, 1)) { ++this.localAI[0]; if (this.justHit) { this.localAI[0] -= (float) Main.rand.Next(20, 60); if ((double) this.localAI[0] < 0.0) this.localAI[0] = 0.0f; } if ((double) this.localAI[0] > (double) Main.rand.Next(180, 900)) { this.localAI[0] = 0.0f; Vector2 vector2 = Main.player[this.target].Center - this.Center; vector2.Normalize(); vector2 *= 8f; Projectile.NewProjectile(this.Center.X, this.Center.Y, vector2.X, vector2.Y, 472, 18, 0.0f, Main.myPlayer); } } if (this.type == 163 && Main.netMode != 1 && (double) this.velocity.Y == 0.0) { int num79 = (int) this.Center.X / 16; int num80 = (int) this.Center.Y / 16; bool flag10 = false; for (int index21 = num79 - 1; index21 <= num79 + 1; ++index21) { for (int index22 = num80 - 1; index22 <= num80 + 1; ++index22) { if (Main.tile[index21, index22].wall > (byte) 0) flag10 = true; } } if (flag10) this.Transform(238); } if (this.type == 236 && Main.netMode != 1 && (double) this.velocity.Y == 0.0) { int num81 = (int) this.Center.X / 16; int num82 = (int) this.Center.Y / 16; bool flag11 = false; for (int index23 = num81 - 1; index23 <= num81 + 1; ++index23) { for (int index24 = num82 - 1; index24 <= num82 + 1; ++index24) { if (Main.tile[index23, index24].wall > (byte) 0) flag11 = true; } } if (flag11) this.Transform(237); } if (this.type == 243) { if (this.justHit && Main.rand.Next(3) == 0) this.ai[2] -= (float) Main.rand.Next(30); if ((double) this.ai[2] < 0.0) this.ai[2] = 0.0f; if (this.confused) this.ai[2] = 0.0f; ++this.ai[2]; float num83 = (float) Main.rand.Next(30, 900) * ((float) this.life / (float) this.lifeMax) + 30f; if (Main.netMode != 1 && (double) this.ai[2] >= (double) num83 && (double) this.velocity.Y == 0.0 && !Main.player[this.target].dead && !Main.player[this.target].frozen && (this.direction > 0 && (double) this.Center.X < (double) Main.player[this.target].Center.X || this.direction < 0 && (double) this.Center.X > (double) Main.player[this.target].Center.X) && Collision.CanHit(this.position, this.width, this.height, Main.player[this.target].position, Main.player[this.target].width, Main.player[this.target].height)) { Vector2 vector2 = new Vector2(this.position.X + (float) this.width * 0.5f, this.position.Y + 20f); vector2.X += (float) (10 * this.direction); float num84 = Main.player[this.target].position.X + (float) Main.player[this.target].width * 0.5f - vector2.X; float num85 = Main.player[this.target].position.Y + (float) Main.player[this.target].height * 0.5f - vector2.Y; float num86 = num84 + (float) Main.rand.Next(-40, 41); float num87 = num85 + (float) Main.rand.Next(-40, 41); float num88 = (float) Math.Sqrt((double) num86 * (double) num86 + (double) num87 * (double) num87); this.netUpdate = true; float num89 = (float) (15.0 / (double) num88); float SpeedX = num86 * num89; float SpeedY = num87 * num89; int Damage = 32; int Type = 257; vector2.X += SpeedX * 3f; vector2.Y += SpeedY * 3f; Projectile.NewProjectile(vector2.X, vector2.Y, SpeedX, SpeedY, Type, Damage, 0.0f, Main.myPlayer); this.ai[2] = 0.0f; } } if (this.type == 251) { if (this.justHit) this.ai[2] -= (float) Main.rand.Next(30); if ((double) this.ai[2] < 0.0) this.ai[2] = 0.0f; if (this.confused) this.ai[2] = 0.0f; ++this.ai[2]; float num90 = (float) Main.rand.Next(60, 1800) * ((float) this.life / (float) this.lifeMax) + 15f; if (Main.netMode != 1 && (double) this.ai[2] >= (double) num90 && (double) this.velocity.Y == 0.0 && !Main.player[this.target].dead && !Main.player[this.target].frozen && (this.direction > 0 && (double) this.Center.X < (double) Main.player[this.target].Center.X || this.direction < 0 && (double) this.Center.X > (double) Main.player[this.target].Center.X) && Collision.CanHit(this.position, this.width, this.height, Main.player[this.target].position, Main.player[this.target].width, Main.player[this.target].height)) { Vector2 vector2 = new Vector2(this.position.X + (float) this.width * 0.5f, this.position.Y + 12f); vector2.X += (float) (6 * this.direction); float num91 = Main.player[this.target].position.X + (float) Main.player[this.target].width * 0.5f - vector2.X; float num92 = Main.player[this.target].position.Y + (float) Main.player[this.target].height * 0.5f - vector2.Y; float num93 = num91 + (float) Main.rand.Next(-40, 41); float num94 = num92 + (float) Main.rand.Next(-30, 0); float num95 = (float) Math.Sqrt((double) num93 * (double) num93 + (double) num94 * (double) num94); this.netUpdate = true; float num96 = (float) (15.0 / (double) num95); float SpeedX = num93 * num96; float SpeedY = num94 * num96; int Damage = 30; int Type = 83; vector2.X += SpeedX * 3f; vector2.Y += SpeedY * 3f; Projectile.NewProjectile(vector2.X, vector2.Y, SpeedX, SpeedY, Type, Damage, 0.0f, Main.myPlayer); this.ai[2] = 0.0f; } } if (this.type == 386) { if (this.confused) { this.ai[2] = -60f; } else { if ((double) this.ai[2] < 60.0) ++this.ai[2]; if ((double) this.ai[2] > 0.0 && NPC.CountNPCS(387) >= 4 * NPC.CountNPCS(386)) this.ai[2] = 0.0f; if (this.justHit) this.ai[2] = -30f; if ((double) this.ai[2] == 30.0) { int num97 = (int) this.position.X / 16; int num98 = (int) this.position.Y / 16; int num99 = (int) this.position.X / 16; int num100 = (int) this.position.Y / 16; int num101 = 5; int num102 = 0; bool flag12 = false; int num103 = 2; int num104 = 0; while (!flag12 && num102 < 100) { ++num102; int index25 = Main.rand.Next(num97 - num101, num97 + num101); for (int index26 = Main.rand.Next(num98 - num101, num98 + num101); index26 < num98 + num101; ++index26) { if ((index26 < num98 - num103 || index26 > num98 + num103 || index25 < num97 - num103 || index25 > num97 + num103) && (index26 < num100 - num104 || index26 > num100 + num104 || index25 < num99 - num104 || index25 > num99 + num104) && Main.tile[index25, index26].nactive()) { bool flag13 = true; if (Main.tile[index25, index26 - 1].lava()) flag13 = false; if (flag13 && Main.tileSolid[(int) Main.tile[index25, index26].type] && !Collision.SolidTiles(index25 - 1, index25 + 1, index26 - 4, index26 - 1)) { int index27 = NPC.NewNPC(index25 * 16 - this.width / 2, index26 * 16, 387); Main.npc[index27].position.Y = (float) (index26 * 16 - Main.npc[index27].height); flag12 = true; this.netUpdate = true; break; } } } } } if ((double) this.ai[2] == 60.0) this.ai[2] = -120f; } } if (this.type == 389) { if (this.confused) { this.ai[2] = -60f; } else { if ((double) this.ai[2] < 20.0) ++this.ai[2]; if (this.justHit) this.ai[2] = -30f; if ((double) this.ai[2] == 20.0 && Main.netMode != 1) { this.ai[2] = (float) (Main.rand.Next(3) * -10 - 10); Projectile.NewProjectile(this.Center.X, this.Center.Y + 8f, (float) (this.direction * 6), 0.0f, 437, 25, 1f, Main.myPlayer); } } } if (this.type == 110 || this.type == 111 || this.type == 206 || this.type == 214 || this.type == 215 || this.type == 216 || this.type == 290 || this.type == 291 || this.type == 292 || this.type == 293 || this.type == 350 || this.type == 379 || this.type == 380 || this.type == 381 || this.type == 382 || this.type >= 449 && this.type <= 452 || this.type == 468 || this.type == 481 || this.type == 411 || this.type == 409 || this.type >= 498 && this.type <= 506 || this.type == 424 || this.type == 426 || this.type == 520) { bool flag14 = this.type == 381 || this.type == 382 || this.type == 520; bool flag15 = this.type == 426; bool flag16 = true; int num105 = -1; int num106 = -1; if (this.type == 411) { flag14 = true; num105 = 90; num106 = 90; if ((double) this.ai[1] <= 150.0) flag16 = false; } if (this.confused) { this.ai[2] = 0.0f; } else { if ((double) this.ai[1] > 0.0) --this.ai[1]; if (this.justHit) { this.ai[1] = 30f; this.ai[2] = 0.0f; } int num107 = 70; if (this.type == 379 || this.type == 380) num107 = 80; if (this.type == 381 || this.type == 382) num107 = 80; if (this.type == 520) num107 = 15; if (this.type == 350) num107 = 110; if (this.type == 291) num107 = 200; if (this.type == 292) num107 = 120; if (this.type == 293) num107 = 90; if (this.type == 111) num107 = 180; if (this.type == 206) num107 = 50; if (this.type == 481) num107 = 100; if (this.type == 214) num107 = 40; if (this.type == 215) num107 = 80; if (this.type == 290) num107 = 30; if (this.type == 411) num107 = 300; if (this.type == 409) num107 = 60; if (this.type == 424) num107 = 180; if (this.type == 426) num107 = 60; bool flag17 = false; if (this.type == 216) { if ((double) this.localAI[2] >= 20.0) flag17 = true; num107 = !flag17 ? 8 : 60; } int num108 = num107 / 2; if (this.type == 424) num108 = num107 - 1; if (this.type == 426) num108 = num107 - 1; if ((double) this.ai[2] > 0.0) { if (flag16) this.TargetClosest(); if ((double) this.ai[1] == (double) num108) { if (this.type == 216) ++this.localAI[2]; float num109 = 11f; if (this.type == 111) num109 = 9f; if (this.type == 206) num109 = 7f; if (this.type == 290) num109 = 9f; if (this.type == 293) num109 = 4f; if (this.type == 214) num109 = 14f; if (this.type == 215) num109 = 16f; if (this.type == 382) num109 = 7f; if (this.type == 520) num109 = 8f; if (this.type == 409) num109 = 4f; if (this.type >= 449 && this.type <= 452) num109 = 7f; if (this.type == 481) num109 = 8f; if (this.type == 468) num109 = 7.5f; if (this.type == 411) num109 = 1f; if (this.type >= 498 && this.type <= 506) num109 = 7f; Vector2 vector2 = new Vector2(this.position.X + (float) this.width * 0.5f, this.position.Y + (float) this.height * 0.5f); if (this.type == 481) vector2.Y -= 14f; if (this.type == 206) vector2.Y -= 10f; if (this.type == 290) vector2.Y -= 10f; if (this.type == 381 || this.type == 382) vector2.Y += 6f; if (this.type == 520) vector2.Y = this.position.Y + 20f; if (this.type >= 498 && this.type <= 506) vector2.Y -= 8f; if (this.type == 426) vector2 += new Vector2((float) (this.spriteDirection * 2), -12f); float num110 = Main.player[this.target].position.X + (float) Main.player[this.target].width * 0.5f - vector2.X; float num111 = Math.Abs(num110) * 0.1f; if (this.type == 291 || this.type == 292) num111 = 0.0f; if (this.type == 215) num111 = Math.Abs(num110) * 0.08f; if (this.type == 214 || this.type == 216 && !flag17) num111 = 0.0f; if (this.type == 381 || this.type == 382 || this.type == 520) num111 = 0.0f; if (this.type >= 449 && this.type <= 452) num111 = (float) ((double) Math.Abs(num110) * (double) Main.rand.Next(10, 50) * 0.00999999977648258); if (this.type == 468) num111 = (float) ((double) Math.Abs(num110) * (double) Main.rand.Next(10, 50) * 0.00999999977648258); if (this.type == 481) num111 = (float) ((double) Math.Abs(num110) * (double) Main.rand.Next(-10, 11) * 0.00350000010803342); if (this.type >= 498 && this.type <= 506) num111 = (float) ((double) Math.Abs(num110) * (double) Main.rand.Next(1, 11) * (1.0 / 400.0)); float num112 = Main.player[this.target].position.Y + (float) Main.player[this.target].height * 0.5f - vector2.Y - num111; if (this.type == 291) { num110 += (float) Main.rand.Next(-40, 41) * 0.2f; num112 += (float) Main.rand.Next(-40, 41) * 0.2f; } else if (this.type == 381 || this.type == 382 || this.type == 520) { float num113 = num110 + (float) Main.rand.Next(-100, 101) * 0.4f; float num114 = num112 + (float) Main.rand.Next(-100, 101) * 0.4f; num110 = num113 * ((float) Main.rand.Next(85, 116) * 0.01f); num112 = num114 * ((float) Main.rand.Next(85, 116) * 0.01f); if (this.type == 520) { float num115 = num110 + (float) Main.rand.Next(-100, 101) * 0.6f; float num116 = num112 + (float) Main.rand.Next(-100, 101) * 0.6f; num110 = num115 * ((float) Main.rand.Next(85, 116) * 0.015f); num112 = num116 * ((float) Main.rand.Next(85, 116) * 0.015f); } } else if (this.type == 481) { num110 += (float) Main.rand.Next(-40, 41) * 0.4f; num112 += (float) Main.rand.Next(-40, 41) * 0.4f; } else if (this.type >= 498 && this.type <= 506) { num110 += (float) Main.rand.Next(-40, 41) * 0.3f; num112 += (float) Main.rand.Next(-40, 41) * 0.3f; } else if (this.type != 292) { num110 += (float) Main.rand.Next(-40, 41); num112 += (float) Main.rand.Next(-40, 41); } float num117 = (float) Math.Sqrt((double) num110 * (double) num110 + (double) num112 * (double) num112); this.netUpdate = true; float num118 = num109 / num117; float num119 = num110 * num118; float SpeedY = num112 * num118; int Damage = 35; int Type = 82; if (this.type == 111) Damage = 11; if (this.type == 206) Damage = 37; if (this.type == 379 || this.type == 380) Damage = 40; if (this.type == 350) Damage = 45; if (this.type == 468) Damage = 50; if (this.type == 111) Type = 81; if (this.type == 379 || this.type == 380) Type = 81; if (this.type == 381) { Type = 436; Damage = 24; } if (this.type == 382) { Type = 438; Damage = 30; } if (this.type == 520) { Type = 592; Damage = 35; } if (this.type >= 449 && this.type <= 452) { Type = 471; Damage = 20; } if (this.type >= 498 && this.type <= 506) { Type = 572; Damage = 14; } if (this.type == 481) { Type = 508; Damage = 18; } if (this.type == 206) Type = 177; if (this.type == 468) Type = 501; if (this.type == 411) { Type = 537; Damage = Main.expertMode ? 45 : 60; } if (this.type == 424) { Type = 573; Damage = Main.expertMode ? 45 : 60; } if (this.type == 426) { Type = 581; Damage = Main.expertMode ? 45 : 60; } if (this.type == 291) { Type = 302; Damage = 100; } if (this.type == 290) { Type = 300; Damage = 60; } if (this.type == 293) { Type = 303; Damage = 60; } if (this.type == 214) { Type = 180; Damage = 25; } if (this.type == 215) { Type = 82; Damage = 40; } if (this.type == 292) { Damage = 50; Type = 180; } if (this.type == 216) { Type = 180; Damage = 30; if (flag17) { Damage = 100; Type = 240; this.localAI[2] = 0.0f; } } vector2.X += num119; vector2.Y += SpeedY; if (Main.expertMode && this.type == 290) Damage = (int) ((double) Damage * 0.75); if (Main.expertMode && this.type >= 381 && this.type <= 392) Damage = (int) ((double) Damage * 0.8); if (Main.netMode != 1) { if (this.type == 292) { for (int index = 0; index < 4; ++index) { float num120 = Main.player[this.target].position.X + (float) Main.player[this.target].width * 0.5f - vector2.X; float num121 = Main.player[this.target].position.Y + (float) Main.player[this.target].height * 0.5f - vector2.Y; float num122 = 12f / (float) Math.Sqrt((double) num120 * (double) num120 + (double) num121 * (double) num121); float num123; float num124 = num123 = num120 + (float) Main.rand.Next(-40, 41); float num125; float num126 = num125 = num121 + (float) Main.rand.Next(-40, 41); num119 = num124 * num122; SpeedY = num126 * num122; Projectile.NewProjectile(vector2.X, vector2.Y, num119, SpeedY, Type, Damage, 0.0f, Main.myPlayer); } } else if (this.type == 411) Projectile.NewProjectile(vector2.X, vector2.Y, num119, SpeedY, Type, Damage, 0.0f, Main.myPlayer, ai1: ((float) this.whoAmI)); else if (this.type == 424) { for (int index = 0; index < 4; ++index) Projectile.NewProjectile(this.Center.X - (float) (this.spriteDirection * 4), this.Center.Y + 6f, (float) (2 * index - 3) * 0.15f, (float) ((double) -Main.rand.Next(0, 3) * 0.200000002980232 - 0.100000001490116), Type, Damage, 0.0f, Main.myPlayer, ai1: ((float) this.whoAmI)); } else if (this.type == 409) { int index = NPC.NewNPC((int) this.Center.X, (int) this.Center.Y, 410, this.whoAmI); Main.npc[index].velocity = new Vector2(num119, SpeedY - 6f); } else Projectile.NewProjectile(vector2.X, vector2.Y, num119, SpeedY, Type, Damage, 0.0f, Main.myPlayer); } this.ai[2] = (double) Math.Abs(SpeedY) <= (double) Math.Abs(num119) * 2.0 ? ((double) Math.Abs(num119) <= (double) Math.Abs(SpeedY) * 2.0 ? ((double) SpeedY <= 0.0 ? 4f : 2f) : 3f) : ((double) SpeedY <= 0.0 ? 5f : 1f); } if ((double) this.velocity.Y != 0.0 && !flag15 || (double) this.ai[1] <= 0.0) { this.ai[2] = 0.0f; this.ai[1] = 0.0f; } else if (!flag14 || num105 != -1 && (double) this.ai[1] >= (double) num105 && (double) this.ai[1] < (double) (num105 + num106) && (!flag15 || (double) this.velocity.Y == 0.0)) { this.velocity.X *= 0.9f; this.spriteDirection = this.direction; } } if (this.type == 468 && !Main.eclipse) flag14 = true; else if ((double) this.ai[2] <= 0.0 | flag14 && (double) this.velocity.Y == 0.0 | flag15 && (double) this.ai[1] <= 0.0 && !Main.player[this.target].dead) { bool flag18 = Collision.CanHit(this.position, this.width, this.height, Main.player[this.target].position, Main.player[this.target].width, Main.player[this.target].height); if (this.type == 520) flag18 = Collision.CanHitLine(this.Top + new Vector2(0.0f, 20f), 0, 0, Main.player[this.target].position, Main.player[this.target].width, Main.player[this.target].height); if ((double) Main.player[this.target].stealth == 0.0 && Main.player[this.target].itemAnimation == 0) flag18 = false; if (flag18) { float num127 = 10f; Vector2 vector2 = new Vector2(this.position.X + (float) this.width * 0.5f, this.position.Y + (float) this.height * 0.5f); float num128 = Main.player[this.target].position.X + (float) Main.player[this.target].width * 0.5f - vector2.X; float num129 = Math.Abs(num128) * 0.1f; float num130 = Main.player[this.target].position.Y + (float) Main.player[this.target].height * 0.5f - vector2.Y - num129; float num131 = num128 + (float) Main.rand.Next(-40, 41); float num132 = num130 + (float) Main.rand.Next(-40, 41); float num133 = (float) Math.Sqrt((double) num131 * (double) num131 + (double) num132 * (double) num132); float num134 = 700f; if (this.type == 214) num134 = 550f; if (this.type == 215) num134 = 800f; if (this.type >= 498 && this.type <= 506) num134 = 190f; if (this.type >= 449 && this.type <= 452) num134 = 200f; if (this.type == 481) num134 = 400f; if (this.type == 468) num134 = 400f; if ((double) num133 < (double) num134) { this.netUpdate = true; this.velocity.X *= 0.5f; float num135 = num127 / num133; float num136 = num131 * num135; float num137 = num132 * num135; this.ai[2] = 3f; this.ai[1] = (float) num107; this.ai[2] = (double) Math.Abs(num137) <= (double) Math.Abs(num136) * 2.0 ? ((double) Math.Abs(num136) <= (double) Math.Abs(num137) * 2.0 ? ((double) num137 <= 0.0 ? 4f : 2f) : 3f) : ((double) num137 <= 0.0 ? 5f : 1f); } } } if ((double) this.ai[2] <= 0.0 || flag14 && (num105 == -1 || (double) this.ai[1] < (double) num105 || (double) this.ai[1] >= (double) (num105 + num106))) { float num138 = 1f; float num139 = 0.07f; float num140 = 0.8f; if (this.type == 214) { num138 = 2f; num139 = 0.09f; } else if (this.type == 215) { num138 = 1.5f; num139 = 0.08f; } else if (this.type == 381 || this.type == 382) { num138 = 2f; num139 = 0.5f; } else if (this.type == 520) { num138 = 4f; num139 = 1f; num140 = 0.7f; } else if (this.type == 411) { num138 = 2f; num139 = 0.5f; } else if (this.type == 409) { num138 = 2f; num139 = 0.5f; } bool flag19 = false; if ((this.type == 381 || this.type == 382) && (double) Vector2.Distance(this.Center, Main.player[this.target].Center) < 300.0 && Collision.CanHitLine(this.Center, 0, 0, Main.player[this.target].Center, 0, 0)) { flag19 = true; this.ai[3] = 0.0f; } if (this.type == 520 && (double) Vector2.Distance(this.Center, Main.player[this.target].Center) < 400.0 && Collision.CanHitLine(this.Center, 0, 0, Main.player[this.target].Center, 0, 0)) { flag19 = true; this.ai[3] = 0.0f; } if ((((double) this.velocity.X < -(double) num138 ? 1 : ((double) this.velocity.X > (double) num138 ? 1 : 0)) | (flag19 ? 1 : 0)) != 0) { if ((double) this.velocity.Y == 0.0) this.velocity = this.velocity * num140; } else if ((double) this.velocity.X < (double) num138 && this.direction == 1) { this.velocity.X += num139; if ((double) this.velocity.X > (double) num138) this.velocity.X = num138; } else if ((double) this.velocity.X > -(double) num138 && this.direction == -1) { this.velocity.X -= num139; if ((double) this.velocity.X < -(double) num138) this.velocity.X = -num138; } } if (this.type == 520) { ++this.localAI[2]; if ((double) this.localAI[2] >= 6.0) { this.localAI[2] = 0.0f; this.localAI[3] = Main.player[this.target].DirectionFrom(this.Top + new Vector2(0.0f, 20f)).ToRotation(); } } } } if (this.type == 109 && Main.netMode != 1 && !Main.player[this.target].dead) { if (this.justHit) this.ai[2] = 0.0f; ++this.ai[2]; if ((double) this.ai[2] > 450.0) { Vector2 vector2 = new Vector2(this.position.X + (float) this.width * 0.5f - (float) (this.direction * 24), this.position.Y + 4f); int num141 = 3 * this.direction; int num142 = -5; int index = Projectile.NewProjectile(vector2.X, vector2.Y, (float) num141, (float) num142, 75, 0, 0.0f, Main.myPlayer); Main.projectile[index].timeLeft = 300; this.ai[2] = 0.0f; } } bool flag20 = false; if ((double) this.velocity.Y == 0.0) { int index28 = (int) ((double) this.position.Y + (double) this.height + 7.0) / 16; int num143 = (int) this.position.X / 16; int num144 = (int) ((double) this.position.X + (double) this.width) / 16; for (int index29 = num143; index29 <= num144; ++index29) { if (Main.tile[index29, index28] == null) return; if (Main.tile[index29, index28].nactive() && Main.tileSolid[(int) Main.tile[index29, index28].type]) { flag20 = true; break; } } } if (this.type == 428) flag20 = false; if ((double) this.velocity.Y >= 0.0) { int num145 = 0; if ((double) this.velocity.X < 0.0) num145 = -1; if ((double) this.velocity.X > 0.0) num145 = 1; Vector2 position = this.position; position.X += this.velocity.X; int index30 = (int) (((double) position.X + (double) (this.width / 2) + (double) ((this.width / 2 + 1) * num145)) / 16.0); int index31 = (int) (((double) position.Y + (double) this.height - 1.0) / 16.0); if (Main.tile[index30, index31] == null) Main.tile[index30, index31] = new Tile(); if (Main.tile[index30, index31 - 1] == null) Main.tile[index30, index31 - 1] = new Tile(); if (Main.tile[index30, index31 - 2] == null) Main.tile[index30, index31 - 2] = new Tile(); if (Main.tile[index30, index31 - 3] == null) Main.tile[index30, index31 - 3] = new Tile(); if (Main.tile[index30, index31 + 1] == null) Main.tile[index30, index31 + 1] = new Tile(); if (Main.tile[index30 - num145, index31 - 3] == null) Main.tile[index30 - num145, index31 - 3] = new Tile(); if ((double) (index30 * 16) < (double) position.X + (double) this.width && (double) (index30 * 16 + 16) > (double) position.X && (Main.tile[index30, index31].nactive() && !Main.tile[index30, index31].topSlope() && !Main.tile[index30, index31 - 1].topSlope() && Main.tileSolid[(int) Main.tile[index30, index31].type] && !Main.tileSolidTop[(int) Main.tile[index30, index31].type] || Main.tile[index30, index31 - 1].halfBrick() && Main.tile[index30, index31 - 1].nactive()) && (!Main.tile[index30, index31 - 1].nactive() || !Main.tileSolid[(int) Main.tile[index30, index31 - 1].type] || Main.tileSolidTop[(int) Main.tile[index30, index31 - 1].type] || Main.tile[index30, index31 - 1].halfBrick() && (!Main.tile[index30, index31 - 4].nactive() || !Main.tileSolid[(int) Main.tile[index30, index31 - 4].type] || Main.tileSolidTop[(int) Main.tile[index30, index31 - 4].type])) && (!Main.tile[index30, index31 - 2].nactive() || !Main.tileSolid[(int) Main.tile[index30, index31 - 2].type] || Main.tileSolidTop[(int) Main.tile[index30, index31 - 2].type]) && (!Main.tile[index30, index31 - 3].nactive() || !Main.tileSolid[(int) Main.tile[index30, index31 - 3].type] || Main.tileSolidTop[(int) Main.tile[index30, index31 - 3].type]) && (!Main.tile[index30 - num145, index31 - 3].nactive() || !Main.tileSolid[(int) Main.tile[index30 - num145, index31 - 3].type])) { float num146 = (float) (index31 * 16); if (Main.tile[index30, index31].halfBrick()) num146 += 8f; if (Main.tile[index30, index31 - 1].halfBrick()) num146 -= 8f; if ((double) num146 < (double) position.Y + (double) this.height) { float num147 = position.Y + (float) this.height - num146; float num148 = 16.1f; if (this.type == 163 || this.type == 164 || this.type == 236 || this.type == 239 || this.type == 530) num148 += 8f; if ((double) num147 <= (double) num148) { this.gfxOffY += this.position.Y + (float) this.height - num146; this.position.Y = num146 - (float) this.height; this.stepSpeed = (double) num147 >= 9.0 ? 2f : 1f; } } } } if (flag20) { int index32 = (int) (((double) this.position.X + (double) (this.width / 2) + (double) (15 * this.direction)) / 16.0); int index33 = (int) (((double) this.position.Y + (double) this.height - 15.0) / 16.0); if (this.type == 109 || this.type == 163 || this.type == 164 || this.type == 199 || this.type == 236 || this.type == 239 || this.type == 257 || this.type == 258 || this.type == 290 || this.type == 391 || this.type == 425 || this.type == 427 || this.type == 426 || this.type == 508 || this.type == 415 || this.type == 530 || this.type == 532) index32 = (int) (((double) this.position.X + (double) (this.width / 2) + (double) ((this.width / 2 + 16) * this.direction)) / 16.0); if (Main.tile[index32, index33] == null) Main.tile[index32, index33] = new Tile(); if (Main.tile[index32, index33 - 1] == null) Main.tile[index32, index33 - 1] = new Tile(); if (Main.tile[index32, index33 - 2] == null) Main.tile[index32, index33 - 2] = new Tile(); if (Main.tile[index32, index33 - 3] == null) Main.tile[index32, index33 - 3] = new Tile(); if (Main.tile[index32, index33 + 1] == null) Main.tile[index32, index33 + 1] = new Tile(); if (Main.tile[index32 + this.direction, index33 - 1] == null) Main.tile[index32 + this.direction, index33 - 1] = new Tile(); if (Main.tile[index32 + this.direction, index33 + 1] == null) Main.tile[index32 + this.direction, index33 + 1] = new Tile(); if (Main.tile[index32 - this.direction, index33 + 1] == null) Main.tile[index32 - this.direction, index33 + 1] = new Tile(); Main.tile[index32, index33 + 1].halfBrick(); if (((!Main.tile[index32, index33 - 1].nactive() ? 0 : (Main.tile[index32, index33 - 1].type == (ushort) 10 ? 1 : (Main.tile[index32, index33 - 1].type == (ushort) 388 ? 1 : 0))) & (flag3 ? 1 : 0)) != 0) { ++this.ai[2]; this.ai[3] = 0.0f; if ((double) this.ai[2] >= 60.0) { if (!Main.bloodMoon && (this.type == 3 || this.type == 331 || this.type == 332 || this.type == 132 || this.type == 161 || this.type == 186 || this.type == 187 || this.type == 188 || this.type == 189 || this.type == 200 || this.type == 223 || this.type == 320 || this.type == 321 || this.type == 319)) this.ai[1] = 0.0f; this.velocity.X = 0.5f * (float) -this.direction; int num149 = 5; if (Main.tile[index32, index33 - 1].type == (ushort) 388) num149 = 2; this.ai[1] += (float) num149; if (this.type == 27) ++this.ai[1]; if (this.type == 31 || this.type == 294 || this.type == 295 || this.type == 296) this.ai[1] += 6f; this.ai[2] = 0.0f; bool flag21 = false; if ((double) this.ai[1] >= 10.0) { flag21 = true; this.ai[1] = 10f; } if (this.type == 460) flag21 = true; WorldGen.KillTile(index32, index33 - 1, true); if ((Main.netMode != 1 || !flag21) && flag21 && Main.netMode != 1) { if (this.type == 26) { WorldGen.KillTile(index32, index33 - 1); if (Main.netMode == 2) NetMessage.SendData(17, number2: ((float) index32), number3: ((float) (index33 - 1))); } else { if (Main.tile[index32, index33 - 1].type == (ushort) 10) { bool flag22 = WorldGen.OpenDoor(index32, index33 - 1, this.direction); if (!flag22) { this.ai[3] = (float) num26; this.netUpdate = true; } if (Main.netMode == 2 & flag22) NetMessage.SendData(19, number2: ((float) index32), number3: ((float) (index33 - 1)), number4: ((float) this.direction)); } if (Main.tile[index32, index33 - 1].type == (ushort) 388) { bool flag23 = WorldGen.ShiftTallGate(index32, index33 - 1, false); if (!flag23) { this.ai[3] = (float) num26; this.netUpdate = true; } if (Main.netMode == 2 & flag23) NetMessage.SendData(19, number: 4, number2: ((float) index32), number3: ((float) (index33 - 1))); } } } } } else { int spriteDirection = this.spriteDirection; if (this.type == 425) spriteDirection *= -1; if ((double) this.velocity.X < 0.0 && spriteDirection == -1 || (double) this.velocity.X > 0.0 && spriteDirection == 1) { if (this.height >= 32 && Main.tile[index32, index33 - 2].nactive() && Main.tileSolid[(int) Main.tile[index32, index33 - 2].type]) { if (Main.tile[index32, index33 - 3].nactive() && Main.tileSolid[(int) Main.tile[index32, index33 - 3].type]) { this.velocity.Y = -8f; this.netUpdate = true; } else { this.velocity.Y = -7f; this.netUpdate = true; } } else if (Main.tile[index32, index33 - 1].nactive() && Main.tileSolid[(int) Main.tile[index32, index33 - 1].type]) { this.velocity.Y = -6f; this.netUpdate = true; } else if ((double) this.position.Y + (double) this.height - (double) (index33 * 16) > 20.0 && Main.tile[index32, index33].nactive() && !Main.tile[index32, index33].topSlope() && Main.tileSolid[(int) Main.tile[index32, index33].type]) { this.velocity.Y = -5f; this.netUpdate = true; } else if (this.directionY < 0 && this.type != 67 && (!Main.tile[index32, index33 + 1].nactive() || !Main.tileSolid[(int) Main.tile[index32, index33 + 1].type]) && (!Main.tile[index32 + this.direction, index33 + 1].nactive() || !Main.tileSolid[(int) Main.tile[index32 + this.direction, index33 + 1].type])) { this.velocity.Y = -8f; this.velocity.X *= 1.5f; this.netUpdate = true; } else if (flag3) { this.ai[1] = 0.0f; this.ai[2] = 0.0f; } if ((double) this.velocity.Y == 0.0 & flag1 && (double) this.ai[3] == 1.0) this.velocity.Y = -5f; } if ((this.type == 31 || this.type == 294 || this.type == 295 || this.type == 296 || this.type == 47 || this.type == 77 || this.type == 104 || this.type == 168 || this.type == 196 || this.type == 385 || this.type == 389 || this.type == 464 || this.type == 470 || this.type >= 524 && this.type <= 527) && (double) this.velocity.Y == 0.0 && (double) Math.Abs((float) ((double) this.position.X + (double) (this.width / 2) - ((double) Main.player[this.target].position.X + (double) (Main.player[this.target].width / 2)))) < 100.0 && (double) Math.Abs((float) ((double) this.position.Y + (double) (this.height / 2) - ((double) Main.player[this.target].position.Y + (double) (Main.player[this.target].height / 2)))) < 50.0 && (this.direction > 0 && (double) this.velocity.X >= 1.0 || this.direction < 0 && (double) this.velocity.X <= -1.0)) { this.velocity.X *= 2f; if ((double) this.velocity.X > 3.0) this.velocity.X = 3f; if ((double) this.velocity.X < -3.0) this.velocity.X = -3f; this.velocity.Y = -4f; this.netUpdate = true; } if (this.type == 120 && (double) this.velocity.Y < 0.0) this.velocity.Y *= 1.1f; if (this.type == 287 && (double) this.velocity.Y == 0.0 && (double) Math.Abs((float) ((double) this.position.X + (double) (this.width / 2) - ((double) Main.player[this.target].position.X + (double) (Main.player[this.target].width / 2)))) < 150.0 && (double) Math.Abs((float) ((double) this.position.Y + (double) (this.height / 2) - ((double) Main.player[this.target].position.Y + (double) (Main.player[this.target].height / 2)))) < 50.0 && (this.direction > 0 && (double) this.velocity.X >= 1.0 || this.direction < 0 && (double) this.velocity.X <= -1.0)) { this.velocity.X = (float) (8 * this.direction); this.velocity.Y = -4f; this.netUpdate = true; } if (this.type == 287 && (double) this.velocity.Y < 0.0) { this.velocity.X *= 1.2f; this.velocity.Y *= 1.1f; } if (this.type == 460 && (double) this.velocity.Y < 0.0) { this.velocity.X *= 1.3f; this.velocity.Y *= 1.1f; } } } else if (flag3) { this.ai[1] = 0.0f; this.ai[2] = 0.0f; } if (Main.netMode == 1 || this.type != 120 || (double) this.ai[3] < (double) num26) return; int num150 = (int) Main.player[this.target].position.X / 16; int num151 = (int) Main.player[this.target].position.Y / 16; int num152 = (int) this.position.X / 16; int num153 = (int) this.position.Y / 16; int num154 = 20; int num155 = 0; bool flag24 = false; if ((double) Math.Abs(this.position.X - Main.player[this.target].position.X) + (double) Math.Abs(this.position.Y - Main.player[this.target].position.Y) > 2000.0) { num155 = 100; flag24 = true; } while (!flag24 && num155 < 100) { ++num155; int index34 = Main.rand.Next(num150 - num154, num150 + num154); for (int index35 = Main.rand.Next(num151 - num154, num151 + num154); index35 < num151 + num154; ++index35) { if ((index35 < num151 - 4 || index35 > num151 + 4 || index34 < num150 - 4 || index34 > num150 + 4) && (index35 < num153 - 1 || index35 > num153 + 1 || index34 < num152 - 1 || index34 > num152 + 1) && Main.tile[index34, index35].nactive()) { bool flag25 = true; if (this.type == 32 && Main.tile[index34, index35 - 1].wall == (byte) 0) flag25 = false; else if (Main.tile[index34, index35 - 1].lava()) flag25 = false; if (flag25 && Main.tileSolid[(int) Main.tile[index34, index35].type] && !Collision.SolidTiles(index34 - 1, index34 + 1, index35 - 4, index35 - 1)) { this.position.X = (float) (index34 * 16 - this.width / 2); this.position.Y = (float) (index35 * 16 - this.height); this.netUpdate = true; this.ai[3] = -120f; } } } } } private void AI_001_Slimes() { if (this.type == 1 && ((double) this.ai[1] == 1.0 || (double) this.ai[1] == 2.0 || (double) this.ai[1] == 3.0)) this.ai[1] = -1f; if (this.type == 1 && (double) this.ai[1] == 0.0 && Main.netMode != 1 && (double) this.value > 0.0) { this.ai[1] = -1f; if (Main.rand.Next(20) == 0) { int num; switch (Main.rand.Next(4)) { case 0: switch (Main.rand.Next(7)) { case 0: num = 290; break; case 1: num = 292; break; case 2: num = 296; break; case 3: num = 2322; break; default: num = Main.netMode == 0 || Main.rand.Next(2) != 0 ? 2350 : 2997; break; } break; case 1: switch (Main.rand.Next(4)) { case 0: num = 8; break; case 1: num = 166; break; case 2: num = 965; break; default: num = 58; break; } break; case 2: num = Main.rand.Next(2) != 0 ? Main.rand.Next(699, 703) : Main.rand.Next(11, 15); break; default: switch (Main.rand.Next(3)) { case 0: num = 71; break; case 1: num = 72; break; default: num = 73; break; } break; } this.ai[1] = (float) num; this.netUpdate = true; } } if (this.type == 244) { Lighting.AddLight((int) (((double) this.position.X + (double) (this.width / 2)) / 16.0), (int) (((double) this.position.Y + (double) (this.height / 2)) / 16.0), (float) Main.DiscoR / (float) byte.MaxValue * 1f, (float) Main.DiscoG / (float) byte.MaxValue * 1f, (float) Main.DiscoB / (float) byte.MaxValue * 1f); this.color.R = (byte) Main.DiscoR; this.color.G = (byte) Main.DiscoG; this.color.B = (byte) Main.DiscoB; this.color.A = (byte) 100; this.alpha = 175; } bool flag = false; if (!Main.dayTime || this.life != this.lifeMax || (double) this.position.Y > Main.worldSurface * 16.0 || Main.slimeRain) flag = true; if (this.type == 81) { flag = true; if (Main.rand.Next(30) == 0) { int index = Dust.NewDust(this.position, this.width, this.height, 14, Alpha: this.alpha, newColor: this.color); Main.dust[index].velocity *= 0.3f; } } if ((this.type == 377 || this.type == 446) && this.target != (int) byte.MaxValue && !Main.player[this.target].dead && (double) Vector2.Distance(this.Center, Main.player[this.target].Center) <= 200.0) flag = true; if (this.type == 183) flag = true; if (this.type == 304) flag = true; if (this.type == 244) { flag = true; this.ai[0] += 2f; } if (this.type == 147 && Main.rand.Next(10) == 0) { int index = Dust.NewDust(this.position, this.width, this.height, 76); Main.dust[index].noGravity = true; Main.dust[index].velocity *= 0.1f; } if (this.type == 184) { if (Main.rand.Next(8) == 0) { int index = Dust.NewDust(this.position - this.velocity, this.width, this.height, 76); Main.dust[index].noGravity = true; Main.dust[index].velocity *= 0.15f; } flag = true; if ((double) this.localAI[0] > 0.0) --this.localAI[0]; if (!this.wet && !Main.player[this.target].npcTypeNoAggro[this.type]) { Vector2 vector2_1 = new Vector2(this.position.X + (float) this.width * 0.5f, this.position.Y + (float) this.height * 0.5f); float num1 = Main.player[this.target].position.X + (float) Main.player[this.target].width * 0.5f - vector2_1.X; float num2 = Main.player[this.target].position.Y - vector2_1.Y; float num3 = (float) Math.Sqrt((double) num1 * (double) num1 + (double) num2 * (double) num2); if (Main.expertMode && (double) num3 < 120.0 && Collision.CanHit(this.position, this.width, this.height, Main.player[this.target].position, Main.player[this.target].width, Main.player[this.target].height) && (double) this.velocity.Y == 0.0) { this.ai[0] = -40f; if ((double) this.velocity.Y == 0.0) this.velocity.X *= 0.9f; if (Main.netMode != 1 && (double) this.localAI[0] == 0.0) { for (int index = 0; index < 5; ++index) { Vector2 vector2_2 = new Vector2((float) (index - 2), -4f); vector2_2.X *= (float) (1.0 + (double) Main.rand.Next(-50, 51) * 0.00499999988824129); vector2_2.Y *= (float) (1.0 + (double) Main.rand.Next(-50, 51) * 0.00499999988824129); vector2_2.Normalize(); vector2_2 *= (float) (4.0 + (double) Main.rand.Next(-50, 51) * 0.00999999977648258); Projectile.NewProjectile(vector2_1.X, vector2_1.Y, vector2_2.X, vector2_2.Y, 174, 9, 0.0f, Main.myPlayer); this.localAI[0] = 30f; } } } else if ((double) num3 < 200.0 && Collision.CanHit(this.position, this.width, this.height, Main.player[this.target].position, Main.player[this.target].width, Main.player[this.target].height) && (double) this.velocity.Y == 0.0) { this.ai[0] = -40f; if ((double) this.velocity.Y == 0.0) this.velocity.X *= 0.9f; if (Main.netMode != 1 && (double) this.localAI[0] == 0.0) { float num4 = Main.player[this.target].position.Y - vector2_1.Y - (float) Main.rand.Next(0, 200); float num5 = 4.5f / (float) Math.Sqrt((double) num1 * (double) num1 + (double) num4 * (double) num4); float SpeedX = num1 * num5; float SpeedY = num4 * num5; this.localAI[0] = 50f; Projectile.NewProjectile(vector2_1.X, vector2_1.Y, SpeedX, SpeedY, 174, 9, 0.0f, Main.myPlayer); } } } } if (this.type == 535) { flag = true; if ((double) this.localAI[0] > 0.0) --this.localAI[0]; if (!this.wet && !Main.player[this.target].npcTypeNoAggro[this.type]) { Vector2 vector2_3 = new Vector2(this.position.X + (float) this.width * 0.5f, this.position.Y + (float) this.height * 0.5f); float num6 = Main.player[this.target].position.X + (float) Main.player[this.target].width * 0.5f - vector2_3.X; float num7 = Main.player[this.target].position.Y - vector2_3.Y; float num8 = (float) Math.Sqrt((double) num6 * (double) num6 + (double) num7 * (double) num7); if (Main.expertMode && (double) num8 < 120.0 && Collision.CanHit(this.position, this.width, this.height, Main.player[this.target].position, Main.player[this.target].width, Main.player[this.target].height) && (double) this.velocity.Y == 0.0) { this.ai[0] = -40f; if ((double) this.velocity.Y == 0.0) this.velocity.X *= 0.9f; if (Main.netMode != 1 && (double) this.localAI[0] == 0.0) { for (int index = 0; index < 5; ++index) { Vector2 vector2_4 = new Vector2((float) (index - 2), -4f); vector2_4.X *= (float) (1.0 + (double) Main.rand.Next(-50, 51) * 0.00499999988824129); vector2_4.Y *= (float) (1.0 + (double) Main.rand.Next(-50, 51) * 0.00499999988824129); vector2_4.Normalize(); vector2_4 *= (float) (4.0 + (double) Main.rand.Next(-50, 51) * 0.00999999977648258); Projectile.NewProjectile(vector2_3.X, vector2_3.Y, vector2_4.X, vector2_4.Y, 605, 9, 0.0f, Main.myPlayer); this.localAI[0] = 30f; } } } else if ((double) num8 < 200.0 && Collision.CanHit(this.position, this.width, this.height, Main.player[this.target].position, Main.player[this.target].width, Main.player[this.target].height) && (double) this.velocity.Y == 0.0) { this.ai[0] = -40f; if ((double) this.velocity.Y == 0.0) this.velocity.X *= 0.9f; if (Main.netMode != 1 && (double) this.localAI[0] == 0.0) { float num9 = Main.player[this.target].position.Y - vector2_3.Y - (float) Main.rand.Next(0, 200); float num10 = 4.5f / (float) Math.Sqrt((double) num6 * (double) num6 + (double) num9 * (double) num9); float SpeedX = num6 * num10; float SpeedY = num9 * num10; this.localAI[0] = 50f; Projectile.NewProjectile(vector2_3.X, vector2_3.Y, SpeedX, SpeedY, 605, 9, 0.0f, Main.myPlayer); } } } } if (this.type == 204) { flag = true; if ((double) this.localAI[0] > 0.0) --this.localAI[0]; if (!this.wet && !Main.player[this.target].npcTypeNoAggro[this.type]) { Vector2 vector2_5 = new Vector2(this.position.X + (float) this.width * 0.5f, this.position.Y + (float) this.height * 0.5f); float num11 = Main.player[this.target].position.X + (float) Main.player[this.target].width * 0.5f - vector2_5.X; float num12 = Main.player[this.target].position.Y - vector2_5.Y; float num13 = (float) Math.Sqrt((double) num11 * (double) num11 + (double) num12 * (double) num12); if (Main.expertMode && (double) num13 < 200.0 && Collision.CanHit(new Vector2(this.position.X, this.position.Y - 20f), this.width, this.height + 20, Main.player[this.target].position, Main.player[this.target].width, Main.player[this.target].height) && (double) this.velocity.Y == 0.0) { this.ai[0] = -40f; if ((double) this.velocity.Y == 0.0) this.velocity.X *= 0.9f; if (Main.netMode != 1 && (double) this.localAI[0] == 0.0) { for (int index = 0; index < 5; ++index) { Vector2 vector2_6 = new Vector2((float) (index - 2), -2f); vector2_6.X *= (float) (1.0 + (double) Main.rand.Next(-50, 51) * 0.0199999995529652); vector2_6.Y *= (float) (1.0 + (double) Main.rand.Next(-50, 51) * 0.0199999995529652); vector2_6.Normalize(); vector2_6 *= (float) (3.0 + (double) Main.rand.Next(-50, 51) * 0.00999999977648258); Projectile.NewProjectile(vector2_5.X, vector2_5.Y, vector2_6.X, vector2_6.Y, 176, 13, 0.0f, Main.myPlayer); this.localAI[0] = 80f; } } } if ((double) num13 < 400.0 && Collision.CanHit(new Vector2(this.position.X, this.position.Y - 20f), this.width, this.height + 20, Main.player[this.target].position, Main.player[this.target].width, Main.player[this.target].height) && (double) this.velocity.Y == 0.0) { this.ai[0] = -80f; if ((double) this.velocity.Y == 0.0) this.velocity.X *= 0.9f; if (Main.netMode != 1 && (double) this.localAI[0] == 0.0) { float num14 = Main.player[this.target].position.Y - vector2_5.Y - (float) Main.rand.Next(-30, 20) - num13 * 0.05f; float num15 = Main.player[this.target].position.X - vector2_5.X - (float) Main.rand.Next(-20, 20); float num16 = 7f / (float) Math.Sqrt((double) num15 * (double) num15 + (double) num14 * (double) num14); float SpeedX = num15 * num16; float SpeedY = num14 * num16; this.localAI[0] = 65f; Projectile.NewProjectile(vector2_5.X, vector2_5.Y, SpeedX, SpeedY, 176, 13, 0.0f, Main.myPlayer); } } } } if (this.type == 377 || this.type == 446) { if ((double) this.localAI[2] < 90.0) ++this.localAI[2]; else this.friendly = false; } if (this.type == 59) { Lighting.AddLight((int) (((double) this.position.X + (double) (this.width / 2)) / 16.0), (int) (((double) this.position.Y + (double) (this.height / 2)) / 16.0), 1f, 0.3f, 0.1f); int index = Dust.NewDust(new Vector2(this.position.X, this.position.Y), this.width, this.height, 6, this.velocity.X * 0.2f, this.velocity.Y * 0.2f, 100, Scale: 1.7f); Main.dust[index].noGravity = true; } if ((double) this.ai[2] > 1.0) --this.ai[2]; if (this.wet) { if (this.collideY) this.velocity.Y = -2f; if ((double) this.velocity.Y < 0.0 && (double) this.ai[3] == (double) this.position.X) { this.direction *= -1; this.ai[2] = 200f; } if ((double) this.velocity.Y > 0.0) this.ai[3] = this.position.X; if (this.type == 59) { if ((double) this.velocity.Y > 2.0) this.velocity.Y *= 0.9f; else if (this.directionY < 0) this.velocity.Y -= 0.8f; this.velocity.Y -= 0.5f; if ((double) this.velocity.Y < -10.0) this.velocity.Y = -10f; } else { if ((double) this.velocity.Y > 2.0) this.velocity.Y *= 0.9f; this.velocity.Y -= 0.5f; if ((double) this.velocity.Y < -4.0) this.velocity.Y = -4f; } if ((double) this.ai[2] == 1.0 & flag) this.TargetClosest(); } this.aiAction = 0; if ((double) this.ai[2] == 0.0) { this.ai[0] = -100f; this.ai[2] = 1f; this.TargetClosest(); } if ((double) this.velocity.Y == 0.0) { if (this.collideY && (double) this.oldVelocity.Y != 0.0 && Collision.SolidCollision(this.position, this.width, this.height)) this.position.X -= this.velocity.X + (float) this.direction; if ((double) this.ai[3] == (double) this.position.X) { this.direction *= -1; this.ai[2] = 200f; } this.ai[3] = 0.0f; this.velocity.X *= 0.8f; if ((double) this.velocity.X > -0.1 && (double) this.velocity.X < 0.1) this.velocity.X = 0.0f; if (flag) ++this.ai[0]; ++this.ai[0]; if (this.type == 59) this.ai[0] += 2f; if (this.type == 71) this.ai[0] += 3f; if (this.type == 138) this.ai[0] += 2f; if (this.type == 183) ++this.ai[0]; if (this.type == 304) this.ai[0] += (float) ((1 - this.life / this.lifeMax) * 10); if (this.type == 377 || this.type == 446) this.ai[0] += 3f; if (this.type == 81) { if ((double) this.scale >= 0.0) this.ai[0] += 4f; else ++this.ai[0]; } int num = 0; if ((double) this.ai[0] >= 0.0) num = 1; if ((double) this.ai[0] >= -1000.0 && (double) this.ai[0] <= -500.0) num = 2; if ((double) this.ai[0] >= -2000.0 && (double) this.ai[0] <= -1500.0) num = 3; if (num > 0) { this.netUpdate = true; if (flag && (double) this.ai[2] == 1.0) this.TargetClosest(); if (num == 3) { this.velocity.Y = -8f; if (this.type == 59) this.velocity.Y -= 2f; this.velocity.X += (float) (3 * this.direction); if (this.type == 59) this.velocity.X += 0.5f * (float) this.direction; this.ai[0] = -200f; this.ai[3] = this.position.X; } else { this.velocity.Y = -6f; this.velocity.X += (float) (2 * this.direction); if (this.type == 59) this.velocity.X += (float) (2 * this.direction); this.ai[0] = -120f; if (num == 1) this.ai[0] -= 1000f; else this.ai[0] -= 2000f; } if (this.type == 141) { this.velocity.Y *= 1.3f; this.velocity.X *= 1.2f; } if (this.type != 377 && this.type != 446) return; this.velocity.Y *= 0.9f; this.velocity.X *= 0.6f; if (!flag) return; this.direction = -this.direction; this.velocity.X *= -1f; } else { if ((double) this.ai[0] < -30.0) return; this.aiAction = 1; } } else { if (this.target >= (int) byte.MaxValue || (this.direction != 1 || (double) this.velocity.X >= 3.0) && (this.direction != -1 || (double) this.velocity.X <= -3.0)) return; if (this.collideX && (double) Math.Abs(this.velocity.X) == 0.200000002980232) this.position.X -= 1.4f * (float) this.direction; if (this.collideY && (double) this.oldVelocity.Y != 0.0 && Collision.SolidCollision(this.position, this.width, this.height)) this.position.X -= this.velocity.X + (float) this.direction; if (this.direction == -1 && (double) this.velocity.X < 0.01 || this.direction == 1 && (double) this.velocity.X > -0.01) this.velocity.X += 0.2f * (float) this.direction; else this.velocity.X *= 0.93f; } } private void AI_110_Betsy() { NPCUtils.TargetClosestBetsy(this, false); NPCAimedTarget targetData = this.GetTargetData(); int num1 = -1; float num2 = 1f; int Damage1 = 35; int Damage2 = 35; float num3 = 10f; float moveSpeed = 0.45f; float num4 = 7.5f; float num5 = 30f; float num6 = 30f; float num7 = 23f; float num8 = 600f; float num9 = 12f; float num10 = 40f; float num11 = 80f; float num12 = num10 + num11; float num13 = 1500f; float num14 = 60f; float num15 = 13f; float amount = 0.03333334f; float num16 = 12f; int num17 = 10; int num18 = 6 * num17; float num19 = 60f; float num20 = num14 + (float) num18 + num19; float num21 = 60f; float num22 = (float) (6.28318548202515 * (1.0 / (double) num21)); float num23 = 0.1f; float num24 = 32f; float num25 = 90f; float num26 = 20f; double num27 = (double) this.ai[0]; if ((double) this.ai[0] == 0.0) { if ((double) ++this.ai[1] >= (double) num3) { this.ai[1] = 0.0f; this.ai[0] = 1f; this.ai[2] = 0.0f; this.netUpdate = true; } } else if ((double) this.ai[0] == 1.0) { if ((double) this.ai[2] == 0.0) this.ai[2] = (double) this.Center.X < (double) targetData.Center.X ? 1f : -1f; this.SimpleFlyMovement(this.DirectionTo(targetData.Center + new Vector2((float) (-(double) this.ai[2] * 300.0), -200f)) * num4, moveSpeed); this.direction = this.spriteDirection = (double) this.Center.X < (double) targetData.Center.X ? 1 : -1; if ((double) ++this.ai[1] >= (double) num5) { int num28 = 1; if ((double) this.ai[3] == 5.0 && Main.rand.Next(3) == 0) ++this.ai[3]; switch ((int) this.ai[3]) { case 0: case 1: case 3: num28 = 2; break; case 2: num28 = 3; break; case 4: num28 = 4; break; case 5: num28 = 5; break; case 6: num28 = 3; break; case 7: num28 = 6; break; } this.ai[0] = (float) num28; this.ai[1] = 0.0f; this.ai[2] = 0.0f; ++this.ai[3]; this.netUpdate = true; if ((double) this.ai[3] >= 8.0) this.ai[3] = 0.0f; switch (num28) { case 2: Vector2 v1 = this.DirectionTo(targetData.Center); this.spriteDirection = (double) v1.X > 0.0 ? 1 : -1; this.rotation = v1.ToRotation(); if (this.spriteDirection == -1) this.rotation += 3.141593f; this.velocity = v1 * num7; break; case 3: Vector2 vector2 = new Vector2((double) targetData.Center.X > (double) this.Center.X ? 1f : -1f, 0.0f); this.spriteDirection = (double) vector2.X > 0.0 ? 1 : -1; this.velocity = vector2 * -2f; break; case 5: Vector2 v2 = this.DirectionTo(targetData.Center); this.spriteDirection = (double) v2.X > 0.0 ? 1 : -1; this.rotation = v2.ToRotation(); if (this.spriteDirection == -1) this.rotation += 3.141593f; this.velocity = v2 * num24; break; } } } else if ((double) this.ai[0] == 2.0) { if ((double) this.ai[1] == 0.0) Main.PlayTrackedSound((SoundStyle) SoundID.DD2_BetsyWindAttack, this.Center); if ((double) ++this.ai[1] >= (double) num6) { this.ai[0] = 1f; this.ai[1] = 0.0f; this.ai[2] = 0.0f; } } else if ((double) this.ai[0] == 3.0) { ActiveSound activeSound = Main.GetActiveSound(SlotId.FromFloat(this.localAI[2])); if (activeSound != null) activeSound.Position = this.Center; ++this.ai[1]; int num29 = (double) this.Center.X < (double) targetData.Center.X ? 1 : -1; this.ai[2] = (float) num29; if ((double) this.ai[1] < (double) num10) { Vector2 vector2_1 = targetData.Center + new Vector2((float) num29 * -num8, -250f); Vector2 vector2_2 = this.DirectionTo(vector2_1) * num9; if ((double) this.Distance(vector2_1) < (double) num9) this.Center = vector2_1; else this.position = this.position + vector2_2; if ((double) Vector2.Distance(vector2_1, this.Center) < 16.0) this.ai[1] = num10 - 1f; num2 = 1.5f; } if ((double) this.ai[1] == (double) num10) { int num30 = (double) targetData.Center.X > (double) this.Center.X ? 1 : -1; this.velocity = new Vector2((float) num30, 0.0f) * 10f; this.direction = this.spriteDirection = num30; if (Main.netMode != 1) Projectile.NewProjectile(this.Center, this.velocity, 687, Damage1, 0.0f, Main.myPlayer, ai1: ((float) this.whoAmI)); float[] localAi = this.localAI; SlotId slotId = Main.PlayTrackedSound((SoundStyle) SoundID.DD2_BetsyFlameBreath, this.Center); double num31 = (double) ((SlotId) ref slotId).ToFloat(); localAi[2] = (float) num31; } if ((double) this.ai[1] >= (double) num10) { num2 = 1.5f; if ((double) Math.Abs(targetData.Center.X - this.Center.X) > 550.0 && (double) Math.Abs(this.velocity.X) < 20.0) this.velocity.X += (float) Math.Sign(this.velocity.X) * 0.5f; } if ((double) this.ai[1] >= (double) num12) { this.ai[0] = 1f; this.ai[1] = 0.0f; this.ai[2] = 0.0f; } } else if ((double) this.ai[0] == 4.0) { int num32 = (double) this.Center.X < (double) targetData.Center.X ? 1 : -1; this.ai[2] = (float) num32; if ((double) this.ai[1] < (double) num14) { Vector2 Destination = targetData.Center + new Vector2((float) num32 * -num13, -350f); this.velocity = Vector2.Lerp(this.velocity, this.DirectionTo(Destination) * num15, amount); this.direction = this.spriteDirection = (double) this.Center.X < (double) targetData.Center.X ? 1 : -1; if ((double) Vector2.Distance(Destination, this.Center) < 16.0) this.ai[1] = num14 - 1f; num2 = 1.5f; } else if ((double) this.ai[1] == (double) num14) { Vector2 v = this.DirectionTo(targetData.Center); v.Y *= 0.25f; v = v.SafeNormalize(Vector2.UnitX * (float) this.direction); this.spriteDirection = (double) v.X > 0.0 ? 1 : -1; this.rotation = v.ToRotation(); if (this.spriteDirection == -1) this.rotation += 3.141593f; this.velocity = v * num16; } else { this.position.X += this.DirectionTo(targetData.Center).X * 7f; this.position.Y += this.DirectionTo(targetData.Center + new Vector2(0.0f, -400f)).Y * 6f; if ((double) this.ai[1] <= (double) num20 - (double) num19) num2 = 1.5f; Vector2 position = this.Center + new Vector2((110f + 30f) * (float) this.direction, 20f).RotatedBy((double) this.rotation); int num33 = (int) ((double) this.ai[1] - (double) num14 + 1.0); if (num33 <= num18 && num33 % num17 == 0 && Main.netMode != 1) Projectile.NewProjectile(position, this.velocity, 686, Damage2, 0.0f, Main.myPlayer); } if ((double) this.ai[1] > (double) num20 - (double) num19) this.velocity.Y -= 0.1f; ++this.ai[1]; if ((double) this.ai[1] >= (double) num20) { this.ai[0] = 1f; this.ai[1] = 0.0f; this.ai[2] = 0.0f; } } else if ((double) this.ai[0] == 5.0) { this.velocity = this.velocity.RotatedBy(-(double) num22 * (double) this.direction); this.position.Y -= num23; this.position = this.position + this.DirectionTo(targetData.Center) * 10f; this.rotation -= num22 * (float) this.direction; num2 *= 0.7f; if ((double) this.ai[1] == 1.0) Main.PlayTrackedSound((SoundStyle) SoundID.DD2_BetsyFlyingCircleAttack, this.Center); if ((double) ++this.ai[1] >= (double) num21) { this.ai[0] = 1f; this.ai[1] = 0.0f; this.ai[2] = 0.0f; this.velocity = this.velocity / 2f; } } else if ((double) this.ai[0] == 6.0) { if ((double) this.ai[1] == 0.0) { this.SimpleFlyMovement(this.DirectionTo(targetData.Center + new Vector2(0.0f, -200f)) * num4 * 2f, moveSpeed * 2f); this.direction = this.spriteDirection = (double) this.Center.X < (double) targetData.Center.X ? 1 : -1; ++this.ai[2]; if ((double) this.Distance(targetData.Center) < 350.0 || (double) this.ai[2] >= 180.0) { this.ai[1] = 1f; this.netUpdate = true; } } else { if ((double) this.ai[1] == 1.0) Main.PlayTrackedSound((SoundStyle) SoundID.DD2_BetsyScream); if ((double) this.ai[1] < (double) num26) this.velocity = this.velocity * 0.95f; else this.velocity = this.velocity * 0.98f; if ((double) this.ai[1] == (double) num26) { if ((double) this.velocity.Y > 0.0) this.velocity.Y /= 3f; this.velocity.Y -= 3f; } num2 *= 0.85f; if (((double) this.ai[1] == 20.0 || (double) this.ai[1] == 25.0 ? 1 : ((double) this.ai[1] == 30.0 ? 1 : 0)) != 0) { Point tileCoordinates = this.Center.ToTileCoordinates(); int num34 = 30; int num35 = 35; int num36 = 4; for (int i = tileCoordinates.X - num34; i <= tileCoordinates.X + num34; ++i) { bool flag1 = false; for (int j = tileCoordinates.Y - num35 / 3; j < tileCoordinates.Y + num35; ++j) { Tile tileSafely = Framing.GetTileSafely(i, j); bool flag2 = tileSafely.active() && Main.tileSolid[(int) tileSafely.type] && !Main.tileFrameImportant[(int) tileSafely.type]; if (flag1 & flag2) { int tileDustAmount = WorldGen.KillTile_GetTileDustAmount(true, tileSafely); for (int index = 0; index < tileDustAmount; ++index) { Dust dust = Main.dust[WorldGen.KillTile_MakeTileDust(i, j, tileSafely)]; dust.velocity.Y -= (float) (3.0 + (double) num36 * 1.5); dust.velocity.Y *= Main.rand.NextFloat(); dust.scale += (float) num36 * 0.03f; } for (int index = 0; index < tileDustAmount - 1; ++index) { Dust dust = Main.dust[WorldGen.KillTile_MakeTileDust(i, j, tileSafely)]; dust.velocity.Y -= 1f + (float) num36; dust.velocity.Y *= Main.rand.NextFloat(); } if (tileDustAmount > 0 && Main.rand.Next(3) != 0) { float num37 = (float) (Math.Abs(tileCoordinates.X - i) / (num34 / 2)); Gore gore = Gore.NewGoreDirect(this.position, Vector2.Zero, 61 + Main.rand.Next(3), (float) (1.0 - (double) num36 * 0.150000005960464 + (double) num37 * 0.5)); gore.velocity.Y -= (float) (0.100000001490116 + (double) num36 * 0.5 + (double) num37 * (double) num36 * 1.0); gore.velocity.Y *= Main.rand.NextFloat(); gore.position = new Vector2((float) (i * 16 + 20), (float) (j * 16 + 20)); } } flag1 = !flag2; } } } bool flag = (double) this.ai[1] == 20.0 || (double) this.ai[1] == 45.0 || (double) this.ai[1] == 70.0; if (NPC.CountNPCS(560) > 4) flag = false; if (flag && Main.netMode != 1) { for (int index = 0; index < 1; ++index) { Vector2 vector2 = this.Center + (6.283185f * Main.rand.NextFloat()).ToRotationVector2() * new Vector2(2f, 1f) * 300f * (float) (0.600000023841858 + (double) Main.rand.NextFloat() * 0.400000005960464); if ((double) Vector2.Distance(vector2, targetData.Center) > 100.0) { Point point = vector2.ToPoint(); NPC.NewNPC(point.X, point.Y, 560, this.whoAmI); Main.PlayTrackedSound((SoundStyle) SoundID.DD2_BetsySummon, vector2); } } List npcList = new List(); for (int index = 0; index < 200; ++index) { NPC npc = Main.npc[index]; if (npc.active && npc.type == 549) npcList.Add(npc); } if (npcList.Count > 0) { for (int index = 0; index < 3; ++index) { NPC npc = npcList[Main.rand.Next(npcList.Count)]; Point point = npc.Center.ToPoint(); NPC.NewNPC(point.X, point.Y, 560); Main.PlayTrackedSound((SoundStyle) SoundID.DD2_BetsySummon, npc.Center); } } } ++this.ai[1]; } if ((double) this.ai[1] >= (double) num25) { this.ai[0] = 1f; this.ai[1] = 0.0f; this.ai[2] = 0.0f; } } this.localAI[0] += num2; if ((double) this.localAI[0] >= 36.0) this.localAI[0] = 0.0f; if (num1 != -1) this.localAI[0] = (float) (num1 * 4); if ((double) ++this.localAI[1] >= 60.0) this.localAI[1] = 0.0f; float targetAngle = this.DirectionTo(targetData.Center).ToRotation(); float maxChange = 0.04f; switch (this.ai[0]) { case 2f: case 5f: maxChange = 0.0f; break; case 3f: maxChange = 0.01f; targetAngle = 0.0f; if (this.spriteDirection == -1) targetAngle -= 3.141593f; if ((double) this.ai[1] >= (double) num10) { targetAngle += (float) ((double) this.spriteDirection * 3.14159274101257 / 12.0); maxChange = 0.05f; break; } break; case 4f: maxChange = 0.01f; targetAngle = 3.141593f; if (this.spriteDirection == 1) { targetAngle += 3.141593f; break; } break; case 6f: maxChange = 0.02f; targetAngle = 0.0f; if (this.spriteDirection == -1) { targetAngle -= 3.141593f; break; } break; } if (this.spriteDirection == -1) targetAngle += 3.141593f; if ((double) maxChange != 0.0) this.rotation = this.rotation.AngleTowards(targetAngle, maxChange); if (Main.GetActiveSound(SlotId.FromFloat(this.localAI[2])) != null) return; float[] localAi1 = this.localAI; SlotId invalid = (SlotId) SlotId.Invalid; double num38 = (double) ((SlotId) ref invalid).ToFloat(); localAi1[2] = (float) num38; } private void AI_026_Unicorns() { int num1 = 30; int num2 = 10; bool flag1 = false; bool flag2 = false; bool flag3 = false; if ((double) this.velocity.Y == 0.0 && ((double) this.velocity.X > 0.0 && this.direction < 0 || (double) this.velocity.X < 0.0 && this.direction > 0)) { flag2 = true; ++this.ai[3]; } if (this.type == 546) { num2 = 4; bool flag4 = (double) this.velocity.Y == 0.0; for (int index = 0; index < 200; ++index) { if (index != this.whoAmI && Main.npc[index].active && Main.npc[index].type == this.type && (double) Math.Abs(this.position.X - Main.npc[index].position.X) + (double) Math.Abs(this.position.Y - Main.npc[index].position.Y) < (double) this.width) { if ((double) this.position.X < (double) Main.npc[index].position.X) this.velocity.X -= 0.05f; else this.velocity.X += 0.05f; if ((double) this.position.Y < (double) Main.npc[index].position.Y) this.velocity.Y -= 0.05f; else this.velocity.Y += 0.05f; } } if (flag4) this.velocity.Y = 0.0f; } if ((((double) this.position.X == (double) this.oldPosition.X ? 1 : ((double) this.ai[3] >= (double) num1 ? 1 : 0)) | (flag2 ? 1 : 0)) != 0) { ++this.ai[3]; flag3 = true; } else if ((double) this.ai[3] > 0.0) --this.ai[3]; if ((double) this.ai[3] > (double) (num1 * num2)) this.ai[3] = 0.0f; if (this.justHit) this.ai[3] = 0.0f; if ((double) this.ai[3] == (double) num1) this.netUpdate = true; Vector2 vector2_1 = new Vector2(this.position.X + (float) this.width * 0.5f, this.position.Y + (float) this.height * 0.5f); double num3 = (double) Main.player[this.target].position.X + (double) Main.player[this.target].width * 0.5 - (double) vector2_1.X; float num4 = Main.player[this.target].position.Y - vector2_1.Y; float num5 = (float) Math.Sqrt(num3 * num3 + (double) num4 * (double) num4); if ((double) num5 < 200.0 && !flag3) this.ai[3] = 0.0f; if (this.type == 410) { ++this.ai[1]; bool flag5 = (double) this.ai[1] >= 240.0; if (!flag5 && (double) this.velocity.Y == 0.0) { for (int index = 0; index < (int) byte.MaxValue; ++index) { if (Main.player[index].active && !Main.player[index].dead && (double) Main.player[index].Distance(this.Center) < 800.0 && (double) Main.player[index].Center.Y < (double) this.Center.Y && (double) Math.Abs(Main.player[index].Center.X - this.Center.X) < 20.0) { flag5 = true; break; } } } if (flag5 && Main.netMode != 1) { for (int index = 0; index < 3; ++index) Projectile.NewProjectile(this.Center.X, this.Center.Y, (float) (((double) Main.rand.NextFloat() - 0.5) * 2.0), (float) (-4.0 - 10.0 * (double) Main.rand.NextFloat()), 538, 50, 0.0f, Main.myPlayer); this.HitEffect(9999); this.active = false; return; } } else if (this.type == 423) { if ((double) this.ai[2] == 1.0) { ++this.ai[1]; this.velocity.X *= 0.7f; if ((double) this.ai[1] < 30.0) { Vector2 Position = this.Center + Vector2.UnitX * (float) this.spriteDirection * -20f; Dust dust = Main.dust[Dust.NewDust(Position, 0, 0, 242)]; Vector2 vector2_2 = Vector2.UnitY.RotatedByRandom(6.28318548202515); dust.position = Position + vector2_2 * 20f; dust.velocity = -vector2_2 * 2f; dust.scale = (float) (0.5 + (double) vector2_2.X * (double) -this.spriteDirection); dust.fadeIn = 1f; dust.noGravity = true; } else if ((double) this.ai[1] == 30.0) { for (int index = 0; index < 20; ++index) { Vector2 Position = this.Center + Vector2.UnitX * (float) this.spriteDirection * -20f; Dust dust = Main.dust[Dust.NewDust(Position, 0, 0, 242)]; Vector2 vector2_3 = Vector2.UnitY.RotatedByRandom(6.28318548202515); dust.position = Position + vector2_3 * 4f; dust.velocity = vector2_3 * 4f + Vector2.UnitX * Main.rand.NextFloat() * (float) this.spriteDirection * -5f; dust.scale = (float) (0.5 + (double) vector2_3.X * (double) -this.spriteDirection); dust.fadeIn = 1f; dust.noGravity = true; } } if ((double) this.velocity.X > -0.5 && (double) this.velocity.X < 0.5) this.velocity.X = 0.0f; if ((double) this.ai[1] == 30.0 && Main.netMode != 1) Projectile.NewProjectile(this.Center.X + (float) (this.spriteDirection * -20), this.Center.Y, (float) (this.spriteDirection * -7), 0.0f, 575, Main.expertMode ? 35 : 50, 0.0f, Main.myPlayer, (float) this.target); if ((double) this.ai[1] >= 60.0) { this.ai[1] = (float) -Main.rand.Next(320, 601); this.ai[2] = 0.0f; } } else { ++this.ai[1]; if ((double) this.ai[1] >= 180.0 && (double) num5 < 500.0 && (double) this.velocity.Y == 0.0) { flag1 = true; this.ai[1] = 0.0f; this.ai[2] = 1f; this.netUpdate = true; } else if ((double) this.velocity.Y == 0.0 && (double) num5 < 100.0 && (double) Math.Abs(this.velocity.X) > 3.0 && ((double) this.Center.X < (double) Main.player[this.target].Center.X && (double) this.velocity.X > 0.0 || (double) this.Center.X > (double) Main.player[this.target].Center.X && (double) this.velocity.X < 0.0)) this.velocity.Y -= 4f; } } else if (this.type == 155 || this.type == 329) { if ((double) this.velocity.Y == 0.0 && (double) num5 < 100.0 && (double) Math.Abs(this.velocity.X) > 3.0 && ((double) this.position.X + (double) (this.width / 2) < (double) Main.player[this.target].position.X + (double) (Main.player[this.target].width / 2) && (double) this.velocity.X > 0.0 || (double) this.position.X + (double) (this.width / 2) > (double) Main.player[this.target].position.X + (double) (Main.player[this.target].width / 2) && (double) this.velocity.X < 0.0)) this.velocity.Y -= 4f; } else if (this.type == 546 && (double) this.velocity.Y == 0.0 && (double) Math.Abs(this.velocity.X) > 3.0 && ((double) this.Center.X < (double) Main.player[this.target].Center.X && (double) this.velocity.X > 0.0 || (double) this.Center.X > (double) Main.player[this.target].Center.X && (double) this.velocity.X < 0.0)) { this.velocity.Y -= 4f; Main.PlaySound(3, this.Center, 11); } if ((double) this.ai[3] < (double) num1) { if ((this.type == 329 || this.type == 315) && !Main.pumpkinMoon) { if (this.timeLeft > 10) this.timeLeft = 10; } else this.TargetClosest(); } else { if ((double) this.velocity.X == 0.0) { if ((double) this.velocity.Y == 0.0) { ++this.ai[0]; if ((double) this.ai[0] >= 2.0) { this.direction *= -1; this.spriteDirection = this.direction; this.ai[0] = 0.0f; } } } else this.ai[0] = 0.0f; this.directionY = -1; if (this.direction == 0) this.direction = 1; } float num6 = 6f; float num7 = 0.07f; if (!flag1 && ((double) this.velocity.Y == 0.0 || this.wet || (double) this.velocity.X <= 0.0 && this.direction < 0 || (double) this.velocity.X >= 0.0 && this.direction > 0)) { if (this.type == 155) { if ((double) this.velocity.X > 0.0 && this.direction < 0) this.velocity.X *= 0.95f; if ((double) this.velocity.X < 0.0 && this.direction > 0) this.velocity.X *= 0.95f; } else if (this.type == 329) { if ((double) this.velocity.X > 0.0 && this.direction < 0) this.velocity.X *= 0.9f; if ((double) this.velocity.X < 0.0 && this.direction > 0) this.velocity.X *= 0.9f; if (this.direction > 0 && (double) this.velocity.X < 3.0) this.velocity.X += 0.1f; if (this.direction < 0 && (double) this.velocity.X > -3.0) this.velocity.X -= 0.1f; } else if (this.type == 315) { if ((double) this.velocity.X > 0.0 && this.direction < 0) this.velocity.X *= 0.95f; if ((double) this.velocity.X < 0.0 && this.direction > 0) this.velocity.X *= 0.95f; if ((double) this.velocity.X < -(double) num6 || (double) this.velocity.X > (double) num6) { if ((double) this.velocity.Y == 0.0) this.velocity = this.velocity * 0.8f; } else if ((double) this.velocity.X < (double) num6 && this.direction == 1) { this.velocity.X += 0.07f; if ((double) this.velocity.X > (double) num6) this.velocity.X = num6; } else if ((double) this.velocity.X > -(double) num6 && this.direction == -1) { this.velocity.X -= 0.07f; if ((double) this.velocity.X < -(double) num6) this.velocity.X = -num6; } } else if (this.type == 410) { if (Math.Sign(this.velocity.X) != this.direction) this.velocity.X *= 0.9f; num6 = 6f; num7 = 0.2f; } else if (this.type == 423) { if (Math.Sign(this.velocity.X) != this.direction) this.velocity.X *= 0.85f; num6 = 10f; num7 = 0.2f; } else if (this.type == 546) { if (Math.Sign(this.velocity.X) != this.direction) this.velocity.X *= 0.92f; float num8 = MathHelper.Lerp(0.6f, 1f, Math.Abs(Main.windSpeedSet)) * (float) Math.Sign(Main.windSpeedSet); if (!Main.player[this.target].ZoneSandstorm) num8 = 0.0f; num6 = (float) (5.0 + (double) num8 * (double) this.direction * 4.0); num7 = 0.2f; } if ((double) this.velocity.X < -(double) num6 || (double) this.velocity.X > (double) num6) { if ((double) this.velocity.Y == 0.0) this.velocity = this.velocity * 0.8f; } else if ((double) this.velocity.X < (double) num6 && this.direction == 1) { this.velocity.X += num7; if ((double) this.velocity.X > (double) num6) this.velocity.X = num6; } else if ((double) this.velocity.X > -(double) num6 && this.direction == -1) { this.velocity.X -= num7; if ((double) this.velocity.X < -(double) num6) this.velocity.X = -num6; } } if ((double) this.velocity.Y >= 0.0) { int num9 = 0; if ((double) this.velocity.X < 0.0) num9 = -1; if ((double) this.velocity.X > 0.0) num9 = 1; Vector2 position = this.position; position.X += this.velocity.X; int index1 = (int) (((double) position.X + (double) (this.width / 2) + (double) ((this.width / 2 + 1) * num9)) / 16.0); int index2 = (int) (((double) position.Y + (double) this.height - 1.0) / 16.0); if (Main.tile[index1, index2] == null) Main.tile[index1, index2] = new Tile(); if (Main.tile[index1, index2 - 1] == null) Main.tile[index1, index2 - 1] = new Tile(); if (Main.tile[index1, index2 - 2] == null) Main.tile[index1, index2 - 2] = new Tile(); if (Main.tile[index1, index2 - 3] == null) Main.tile[index1, index2 - 3] = new Tile(); if (Main.tile[index1, index2 + 1] == null) Main.tile[index1, index2 + 1] = new Tile(); if ((double) (index1 * 16) < (double) position.X + (double) this.width && (double) (index1 * 16 + 16) > (double) position.X && (Main.tile[index1, index2].nactive() && !Main.tile[index1, index2].topSlope() && !Main.tile[index1, index2 - 1].topSlope() && Main.tileSolid[(int) Main.tile[index1, index2].type] && !Main.tileSolidTop[(int) Main.tile[index1, index2].type] || Main.tile[index1, index2 - 1].halfBrick() && Main.tile[index1, index2 - 1].nactive()) && (!Main.tile[index1, index2 - 1].nactive() || !Main.tileSolid[(int) Main.tile[index1, index2 - 1].type] || Main.tileSolidTop[(int) Main.tile[index1, index2 - 1].type] || Main.tile[index1, index2 - 1].halfBrick() && (!Main.tile[index1, index2 - 4].nactive() || !Main.tileSolid[(int) Main.tile[index1, index2 - 4].type] || Main.tileSolidTop[(int) Main.tile[index1, index2 - 4].type])) && (!Main.tile[index1, index2 - 2].nactive() || !Main.tileSolid[(int) Main.tile[index1, index2 - 2].type] || Main.tileSolidTop[(int) Main.tile[index1, index2 - 2].type]) && (!Main.tile[index1, index2 - 3].nactive() || !Main.tileSolid[(int) Main.tile[index1, index2 - 3].type] || Main.tileSolidTop[(int) Main.tile[index1, index2 - 3].type]) && (!Main.tile[index1 - num9, index2 - 3].nactive() || !Main.tileSolid[(int) Main.tile[index1 - num9, index2 - 3].type])) { float num10 = (float) (index2 * 16); if (Main.tile[index1, index2].halfBrick()) num10 += 8f; if (Main.tile[index1, index2 - 1].halfBrick()) num10 -= 8f; if ((double) num10 < (double) position.Y + (double) this.height) { float num11 = position.Y + (float) this.height - num10; if ((double) num11 <= 16.1) { this.gfxOffY += this.position.Y + (float) this.height - num10; this.position.Y = num10 - (float) this.height; this.stepSpeed = (double) num11 >= 9.0 ? 2f : 1f; } } } } if ((double) this.velocity.Y == 0.0) { int index3 = (int) (((double) this.position.X + (double) (this.width / 2) + (double) ((this.width / 2 + 2) * this.direction) + (double) this.velocity.X * 5.0) / 16.0); int index4 = (int) (((double) this.position.Y + (double) this.height - 15.0) / 16.0); if (Main.tile[index3, index4] == null) Main.tile[index3, index4] = new Tile(); if (Main.tile[index3, index4 - 1] == null) Main.tile[index3, index4 - 1] = new Tile(); if (Main.tile[index3, index4 - 2] == null) Main.tile[index3, index4 - 2] = new Tile(); if (Main.tile[index3, index4 - 3] == null) Main.tile[index3, index4 - 3] = new Tile(); if (Main.tile[index3, index4 + 1] == null) Main.tile[index3, index4 + 1] = new Tile(); if (Main.tile[index3 + this.direction, index4 - 1] == null) Main.tile[index3 + this.direction, index4 - 1] = new Tile(); if (Main.tile[index3 + this.direction, index4 + 1] == null) Main.tile[index3 + this.direction, index4 + 1] = new Tile(); if (Main.tile[index3 - this.direction, index4 + 1] == null) Main.tile[index3 - this.direction, index4 + 1] = new Tile(); int spriteDirection = this.spriteDirection; if (this.type == 423 || this.type == 410 || this.type == 546) spriteDirection *= -1; if ((double) this.velocity.X < 0.0 && spriteDirection == -1 || (double) this.velocity.X > 0.0 && spriteDirection == 1) { bool flag6 = this.type == 410 || this.type == 423; float num12 = 3f; if (Main.tile[index3, index4 - 2].nactive() && Main.tileSolid[(int) Main.tile[index3, index4 - 2].type]) { if (Main.tile[index3, index4 - 3].nactive() && Main.tileSolid[(int) Main.tile[index3, index4 - 3].type]) { this.velocity.Y = -8.5f; this.netUpdate = true; } else { this.velocity.Y = -7.5f; this.netUpdate = true; } } else if (Main.tile[index3, index4 - 1].nactive() && !Main.tile[index3, index4 - 1].topSlope() && Main.tileSolid[(int) Main.tile[index3, index4 - 1].type]) { this.velocity.Y = -7f; this.netUpdate = true; } else if ((double) this.position.Y + (double) this.height - (double) (index4 * 16) > 20.0 && Main.tile[index3, index4].nactive() && !Main.tile[index3, index4].topSlope() && Main.tileSolid[(int) Main.tile[index3, index4].type]) { this.velocity.Y = -6f; this.netUpdate = true; } else if ((this.directionY < 0 || (double) Math.Abs(this.velocity.X) > (double) num12) && (!flag6 || !Main.tile[index3, index4 + 1].nactive() || !Main.tileSolid[(int) Main.tile[index3, index4 + 1].type]) && (!Main.tile[index3, index4 + 2].nactive() || !Main.tileSolid[(int) Main.tile[index3, index4 + 2].type]) && (!Main.tile[index3 + this.direction, index4 + 3].nactive() || !Main.tileSolid[(int) Main.tile[index3 + this.direction, index4 + 3].type])) { this.velocity.Y = -8f; this.netUpdate = true; } } } if (this.type == 423 && (double) Math.Abs(this.velocity.X) >= (double) num6 * 0.949999988079071) { Microsoft.Xna.Framework.Rectangle hitbox = this.Hitbox; for (int index = 0; index < 2; ++index) { if (Main.rand.Next(3) == 0) { Dust dust = Main.dust[Dust.NewDust(hitbox.TopLeft(), hitbox.Width, hitbox.Height, 242)]; dust.velocity = Vector2.Zero; dust.noGravity = true; dust.fadeIn = 1f; dust.scale = 0.5f + Main.rand.NextFloat(); } } } if (this.type != 546) return; this.rotation += this.velocity.X * 0.05f; this.spriteDirection = -this.direction; } private void AI_107_ImprovedWalkers() { bool flag1 = (double) this.velocity.X == 0.0 && (double) this.velocity.Y == 0.0 && !this.justHit; bool flag2 = false; bool flag3 = false; bool flag4 = false; int num1 = 32; int num2 = 15; float num3 = 9f; bool flag5 = false; float num4 = 40f; int num5 = 30; int num6 = 0; bool flag6 = false; bool flag7 = true; float num7 = 0.9f; bool flag8 = false; bool flag9 = false; bool flag10 = false; bool flag11 = false; bool flag12 = false; bool flag13 = false; bool flag14 = false; bool flag15 = true; int num8 = 70; int num9 = num8 / 2; float num10 = 11f; Vector2 vector2_1 = Vector2.Zero; int Damage = 1; int Type = 81; float num11 = 700f; float num12 = 0.0f; float num13 = 0.1f; Vector2? nullable = new Vector2?(); float max1 = 0.5f; int num14 = 1; float num15 = 1f; bool flag16 = false; bool flag17 = true; bool flag18 = false; int num16 = 30; bool flag19 = false; bool flag20 = false; bool flag21 = false; bool flag22 = false; LegacySoundStyle legacySoundStyle = (LegacySoundStyle) null; int maxValue1 = 0; bool flag23 = false; float max2 = 1f; float num17 = 0.07f; float num18 = 0.8f; float num19 = (float) (this.width / 2 + 6); bool flag24 = this.directionY < 0; bool flag25 = false; int num20 = 1; bool flag26 = false; float num21 = 0.025f; NPCAimedTarget targetData = this.GetTargetData(); if (targetData.Type == NPCTargetType.NPC && Main.npc[this.TranslatedTargetIndex].type == 548 && Main.npc[this.TranslatedTargetIndex].dontTakeDamageFromHostiles) { NPCUtils.TargetClosestOldOnesInvasion(this); targetData = this.GetTargetData(); } if (!targetData.Invalid) flag2 = !Collision.CanHit(this.Center, 0, 0, targetData.Center, 0, 0) && (this.direction == Math.Sign(targetData.Center.X - this.Center.X) || this.noGravity && (double) this.Distance(targetData.Center) > 50.0 && (double) this.Center.Y > (double) targetData.Center.Y); bool flag27 = flag2 & (double) this.ai[0] <= 0.0; if (flag27) { if ((double) this.velocity.Y == 0.0 || (double) Math.Abs(targetData.Center.Y - this.Center.Y) > 800.0) { this.noGravity = true; this.noTileCollide = true; } } else { this.noGravity = false; this.noTileCollide = false; } bool flag28 = NPCID.Sets.FighterUsesDD2PortalAppearEffect[this.type]; bool flag29 = true; Vector2 size; switch (this.type) { case 552: case 553: case 554: legacySoundStyle = SoundID.DD2_GoblinScream; maxValue1 = 1000; flag5 = true; flag20 = DD2Event.EnemiesShouldChasePlayers; if (this.type == 553) { num17 += 0.01f; max2 += 0.2f; } if (this.type == 554) { num17 += 0.02f; max2 += 0.4f; } if ((double) this.localAI[3] < 60.0) { num17 = (float) (0.00999999977648258 + (double) this.localAI[3] / 60.0 * 0.0500000007450581); break; } break; case 555: case 556: case 557: maxValue1 = 800; legacySoundStyle = SoundID.DD2_GoblinBomberScream; int num22 = (double) this.localAI[3] >= 60.0 ? 1 : 0; flag20 = DD2Event.EnemiesShouldChasePlayers; flag23 = true; flag12 = true; flag15 = (double) this.ai[1] > 18.0; num8 = 42; num9 = 18; Type = 681; Damage = 10; vector2_1.Y -= 14f; num13 = 0.4f; max1 = 0.5f; num11 = 280f; num10 = 6f; if (num22 == 0) { num11 = 1f; num17 = (float) (0.00999999977648258 + (double) this.localAI[3] / 60.0 * 0.0500000007450581); } if (this.type == 555) { max2 = 0.88f; max1 = 0.6f; Damage = Main.expertMode ? 15 : 20; } if (this.type == 555) { max2 = 0.88f; max1 = 0.6f; Damage = Main.expertMode ? 25 : 30; } if (this.type == 557) { max2 = 1.12f; max1 = 0.4f; Damage = Main.expertMode ? 35 : 40; } if ((double) this.ai[1] == (double) num9) { Main.PlayTrackedSound((SoundStyle) SoundID.DD2_GoblinBomberThrow, this.Center); break; } break; case 561: case 562: case 563: int num23 = (double) this.localAI[3] >= 60.0 ? 1 : 0; if ((double) this.ai[1] == 82.0) { Main.PlayTrackedSound((SoundStyle) SoundID.DD2_JavelinThrowersAttack, this.Center); maxValue1 = 7; legacySoundStyle = SoundID.DD2_JavelinThrowersTaunt; } flag20 = DD2Event.EnemiesShouldChasePlayers; flag23 = true; flag12 = true; flag15 = (double) this.ai[1] > 82.0; num8 = 90; num9 = 82; Type = 662; if (this.type == 563) Type = 685; vector2_1.Y -= 14f; num13 = 0.0f; max1 = 0.5f; num11 = 600f; num10 = 13f; if (num23 == 0) { num11 = 1f; num17 = (float) (0.00999999977648258 + (double) this.localAI[3] / 60.0 * 0.0500000007450581); } if (this.type == 561) { max2 = 0.88f; max1 = 0.6f; Damage = Main.expertMode ? 10 : 15; num10 = 11.5f; num11 -= 100f; } if (this.type == 562) { max2 = 0.94f; max1 = 0.5f; Damage = Main.expertMode ? 20 : 30; num10 = 12.2f; num11 -= 50f; } if (this.type == 563) { max2 = 1f; max1 = 0.4f; Damage = Main.expertMode ? 30 : 45; break; } break; case 566: case 567: DelegateMethods.v3_1 = new Vector3(0.3f, 0.05f, 0.45f) * 1.5f; Utils.PlotTileLine(this.Top, this.Bottom, (float) this.width, new Utils.PerLinePoint(DelegateMethods.CastLightOpen)); flag20 = DD2Event.EnemiesShouldChasePlayers; int num24 = (double) this.localAI[3] >= 120.0 ? 1 : 0; if (num24 == 0) num17 = 0.0f; if (num24 != 0) { this.dontTakeDamage = false; break; } this.dontTakeDamage = true; this.velocity.X = 0.0f; flag23 = true; flag19 = true; this.ai[3] = 0.0f; if ((double) this.localAI[3] == 0.0) this.alpha = (int) byte.MaxValue; ++this.localAI[3]; float num25 = this.localAI[3]; if ((double) num25 >= 110.0) { this.alpha -= 26; if (this.alpha < 0) this.alpha = 0; } if ((double) num25 >= 100.0) { int num26 = (int) this.localAI[3] / 20; size = this.Size; float num27 = size.Length() / 2f / 20f; int maxValue2 = 5; for (int index = 0; index < num26 * 2; ++index) { if (Main.rand.Next(maxValue2) == 0) { Dust dust = Dust.NewDustDirect(this.position, this.width, this.height, 236, this.velocity.X * 1f); dust.scale = 1f; dust.fadeIn = 0.3f; dust.velocity = new Vector2(Main.rand.NextFloatDirection() * 1f, -dust.velocity.Length()) * 1.25f * num27; } } } else { int num28 = (int) this.localAI[3] / 10; size = this.Size; float num29 = size.Length() / 2f / 20f; int maxValue3 = 5; for (int index = 0; (double) index < (double) num28 * 1.29999995231628; ++index) { if (Main.rand.Next(maxValue3) == 0) { Dust dust = Dust.NewDustDirect(this.position + new Vector2((float) (-this.width / 2), 8f), this.width + this.width, this.height, 27, this.velocity.X * 1f, Alpha: 100); dust.scale = 1.1f; dust.fadeIn = 0.1f; dust.velocity = new Vector2(Main.rand.NextFloatDirection() * 0.1f, -dust.velocity.Length()) * 1.05f * num29 * Main.rand.NextFloat(); dust.velocity.Y *= Utils.InverseLerp((float) this.width * 0.75f, 0.0f, Math.Abs(dust.position.X - this.Center.X), true); } } } if ((double) num25 > 100.0 && (int) num25 % 4 == 0) { Gore.NewGoreDirect(this.Left, new Vector2(0.0f, -3f), Utils.SelectRandom(Main.rand, 971, 972), 0.85f).velocity.X *= 0.8f; break; } break; case 568: case 569: num5 = 110; num17 = 0.16f; num18 = 0.7f; max2 = 1.4f; flag5 = true; num4 = 600f; flag20 = DD2Event.EnemiesShouldChasePlayers; if ((double) this.localAI[3] < 60.0) num17 = (float) (0.00999999977648258 + (double) this.localAI[3] / 60.0 * 0.0500000007450581); SlotId slotId1; if ((double) this.ai[0] == 0.0) { float[] localAi = this.localAI; slotId1 = (SlotId) SlotId.Invalid; double num30 = (double) ((SlotId) ref slotId1).ToFloat(); localAi[1] = (float) num30; } if ((double) this.ai[0] == 1.0) { this.HitSound = SoundID.DD2_WitherBeastCrystalImpact; ++this.ai[0]; if (Main.rand.Next(10) == 0) { Dust dust = Dust.NewDustDirect(this.TopLeft, this.width, this.height, 271, SpeedY: -3f, newColor: Color.Transparent, Scale: 0.6f); dust.velocity.X /= 2f; dust.noGravity = true; dust.fadeIn = 1.5f; dust.position.Y += 4f; } ActiveSound activeSound = Main.GetActiveSound(SlotId.FromFloat(this.localAI[1])); if (activeSound == null) { float[] localAi = this.localAI; slotId1 = Main.PlayTrackedSound((SoundStyle) SoundID.DD2_WitherBeastAuraPulse, this.Center); double num31 = (double) ((SlotId) ref slotId1).ToFloat(); localAi[1] = (float) num31; } else activeSound.Position = this.Center; ++this.localAI[0]; if ((double) this.localAI[0] > 60.0 && Main.rand.Next(10) == 0) { Vector2 vector2_2 = this.Center + (Main.rand.NextFloat() * 6.283185f).ToRotationVector2() * 400f * (float) (0.300000011920929 + 0.699999988079071 * (double) Main.rand.NextFloat()); Point tileCoordinates = vector2_2.ToTileCoordinates(); if (!WorldGen.SolidTile(tileCoordinates.X, tileCoordinates.Y)) { Dust dust = Dust.NewDustPerfect(vector2_2, 27, new Vector2?(new Vector2(0.0f, -3f)), newColor: new Color((int) byte.MaxValue, (int) byte.MaxValue, (int) byte.MaxValue, (int) sbyte.MaxValue), Scale: 1.5f); dust.velocity = this.DirectionTo(dust.position) * dust.velocity.Length(); dust.fadeIn = 1.5f; } } if (Main.netMode != 2) { Player player = Main.player[Main.myPlayer]; if (!player.dead && player.active && (double) (player.Center - this.Center).Length() < 400.0) player.AddBuff(195, 3, false); } if ((double) this.ai[1] > 0.0) --this.ai[1]; if ((double) this.ai[1] <= 0.0) { this.ai[1] = 60f; if (Main.netMode != 1) { int healAmount = this.lifeMax / 20; if (healAmount > this.lifeMax - this.life) healAmount = this.lifeMax - this.life; if (healAmount > 0) { this.life += healAmount; this.HealEffect(healAmount); this.netUpdate = true; break; } break; } break; } break; } break; case 570: case 571: flag20 = DD2Event.EnemiesShouldChasePlayers; flag23 = true; flag12 = true; flag15 = (double) this.ai[1] > 40.0; num8 = 60; num9 = 40; if (this.type == 571 && (double) this.ai[1] > 10.0 && (double) this.ai[1] <= 40.0 && (int) this.ai[1] % 6 == 0) num9 = (int) this.ai[1] - 1; if (this.type == 570 && (double) this.ai[1] > 10.0 && (double) this.ai[1] <= 40.0 && (int) this.ai[1] % 9 == 0) num9 = (int) this.ai[1] - 1; Type = 671; vector2_1.X += (float) (22 * this.direction); num13 = 0.15f; max1 = 1.5f; num11 = 600f; num10 = 13f; num14 = 1; num15 = 0.0f; if (this.type == 570) max1 = 2.5f; Damage = Main.expertMode ? 25 : 35; if (this.type == 571) Damage = Main.expertMode ? 45 : 60; max2 = 0.77f; if ((double) this.ai[0] > 0.0) { if ((double) this.ai[1] == 40.0) Main.PlayTrackedSound((SoundStyle) SoundID.DD2_DrakinShot, this.Center); else if ((double) this.ai[1] == 60.0) Main.PlayTrackedSound((SoundStyle) SoundID.DD2_DrakinBreathIn, this.Center); } if ((double) this.localAI[3] < 60.0) { num11 = 1f; num17 = (float) (0.00999999977648258 + (double) this.localAI[3] / 60.0 * 0.0500000007450581); break; } break; case 572: case 573: SlotId slotId2; if ((double) this.localAI[3] == 0.0) { float[] localAi1 = this.localAI; SlotId invalid = (SlotId) SlotId.Invalid; double num32 = (double) ((SlotId) ref invalid).ToFloat(); localAi1[0] = (float) num32; float[] localAi2 = this.localAI; slotId2 = (SlotId) SlotId.Invalid; double num33 = (double) ((SlotId) ref slotId2).ToFloat(); localAi2[1] = (float) num33; } flag20 = DD2Event.EnemiesShouldChasePlayers; if ((double) this.ai[1] == 2.0) { Main.GetActiveSound(SlotId.FromFloat(this.localAI[0]))?.Stop(); Main.GetActiveSound(SlotId.FromFloat(this.localAI[1]))?.Stop(); this.position = this.Center; this.width = this.height = 192; this.Center = this.position; this.velocity = Vector2.Zero; this.damage = (int) (80.0 * (double) Main.damageMultiplier); this.alpha = (int) byte.MaxValue; for (int index1 = 0; index1 < 4; ++index1) { int index2 = Dust.NewDust(new Vector2(this.position.X, this.position.Y), this.width, this.height, 31, Alpha: 100, Scale: 1.5f); Main.dust[index2].position = this.Center + Vector2.UnitY.RotatedByRandom(3.14159274101257) * (float) Main.rand.NextDouble() * (float) this.width / 2f; } for (int index3 = 0; index3 < 20; ++index3) { int index4 = Dust.NewDust(new Vector2(this.position.X, this.position.Y), this.width, this.height, 6, Alpha: 200, Scale: 3.7f); Main.dust[index4].position = this.Center + Vector2.UnitY.RotatedByRandom(3.14159274101257) * (float) Main.rand.NextDouble() * (float) this.width / 2f; Main.dust[index4].noGravity = true; Main.dust[index4].velocity *= 3f; int index5 = Dust.NewDust(new Vector2(this.position.X, this.position.Y), this.width, this.height, 6, Alpha: 100, Scale: 1.5f); Main.dust[index5].position = this.Center + Vector2.UnitY.RotatedByRandom(3.14159274101257) * (float) Main.rand.NextDouble() * (float) this.width / 4f; Main.dust[index5].velocity *= 2f; Main.dust[index5].noGravity = true; Main.dust[index5].fadeIn = 2.5f; } for (int index6 = 0; index6 < 6; ++index6) { int index7 = Dust.NewDust(new Vector2(this.position.X, this.position.Y), this.width, this.height, 6, Scale: 2.7f); Main.dust[index7].position = this.Center + Vector2.UnitX.RotatedByRandom(3.14159274101257).RotatedBy((double) this.velocity.ToRotation()) * (float) this.width / 2f; Main.dust[index7].noGravity = true; Main.dust[index7].velocity *= 3f; } for (int index8 = 0; index8 < 12; ++index8) { int index9 = Dust.NewDust(new Vector2(this.position.X, this.position.Y), this.width, this.height, 31, Scale: 1.5f); Main.dust[index9].position = this.Center + Vector2.UnitX.RotatedByRandom(3.14159274101257).RotatedBy((double) this.velocity.ToRotation()) * (float) this.width / 2f; Main.dust[index9].noGravity = true; Main.dust[index9].velocity *= 3f; } for (int index10 = 0; index10 < 5; ++index10) { int index11 = Gore.NewGore(this.position + new Vector2((float) (this.width * Main.rand.Next(100)) / 100f, (float) (this.height * Main.rand.Next(100)) / 100f) - Vector2.One * 10f, new Vector2(), Main.rand.Next(61, 64)); Main.gore[index11].position = this.Center + Vector2.UnitY.RotatedByRandom(3.14159274101257) * (float) Main.rand.NextDouble() * (float) this.width / 2f; Main.gore[index11].velocity *= 0.3f; Main.gore[index11].velocity.X += (float) Main.rand.Next(-10, 11) * 0.05f; Main.gore[index11].velocity.Y += (float) Main.rand.Next(-10, 11) * 0.05f; } ++this.ai[0]; if ((double) this.ai[0] < 3.0) return; Main.PlayTrackedSound((SoundStyle) SoundID.DD2_KoboldExplosion, this.Center); this.life = 0; this.HitEffect(); this.active = false; return; } if ((double) this.ai[0] > 0.0 && (double) this.ai[1] == 0.0 && this.life > 0) { SlotId slotId3 = SlotId.FromFloat(this.localAI[0]); if (!((SlotId) ref slotId3).IsValid) { float[] localAi = this.localAI; slotId2 = Main.PlayTrackedSound((SoundStyle) SoundID.DD2_KoboldIgnite, this.Center); double num34 = (double) ((SlotId) ref slotId2).ToFloat(); localAi[0] = (float) num34; } ++this.localAI[2]; if ((double) this.localAI[2] == 30.0) { float[] localAi3 = this.localAI; slotId2 = Main.PlayTrackedSound((SoundStyle) SoundID.DD2_KoboldIgniteLoop, this.Center); double num35 = (double) ((SlotId) ref slotId2).ToFloat(); localAi3[0] = (float) num35; float[] localAi4 = this.localAI; slotId2 = Main.PlayTrackedSound((SoundStyle) SoundID.DD2_KoboldScreamChargeLoop, this.Center); double num36 = (double) ((SlotId) ref slotId2).ToFloat(); localAi4[1] = (float) num36; } } if ((double) this.ai[0] > 0.0 && (double) this.ai[1] == 1.0) { this.ai[0] = 0.0f; this.ai[1] = 2f; this.netUpdate = true; return; } max2 = 0.88f; if ((double) this.ai[0] == 1.0) this.ai[1] = 1f; if ((double) this.ai[0] == 0.0 && (double) this.ai[1] == 1.0) { ActiveSound activeSound1 = Main.GetActiveSound(SlotId.FromFloat(this.localAI[0])); if (activeSound1 == null) { float[] localAi = this.localAI; slotId2 = Main.PlayTrackedSound((SoundStyle) SoundID.DD2_KoboldIgniteLoop, this.Center); double num37 = (double) ((SlotId) ref slotId2).ToFloat(); localAi[0] = (float) num37; } else activeSound1.Position = this.Center; ActiveSound activeSound2 = Main.GetActiveSound(SlotId.FromFloat(this.localAI[1])); if (activeSound2 == null) { float[] localAi = this.localAI; slotId2 = Main.PlayTrackedSound((SoundStyle) SoundID.DD2_KoboldScreamChargeLoop, this.Center); double num38 = (double) ((SlotId) ref slotId2).ToFloat(); localAi[1] = (float) num38; } else activeSound2.Position = this.Center; } if ((double) this.ai[1] > 0.0 && (double) this.ai[0] == 0.0) { flag5 = true; num5 = 40; num4 = 64f; num17 = 0.3f; max2 = 4f; Vector2 Position = this.Center + new Vector2((float) (this.spriteDirection * 12), 0.0f); if (Main.rand.Next(6) == 0) { Dust dust = Dust.NewDustDirect(Position, 1, 1, 213, (float) Main.rand.Next(-2, 3), (float) Main.rand.Next(-2, 3), 100, new Color((int) byte.MaxValue, (int) byte.MaxValue, (int) byte.MaxValue, 0)); dust.noGravity = true; dust.fadeIn = (float) ((double) dust.scale + 1.0 + 0.00999999977648258 * (double) Main.rand.Next(0, 51)); dust.velocity *= 0.3f; dust.velocity.X += (float) -this.spriteDirection * 1.2f; dust.velocity.Y += -3.5f; dust.velocity.X += this.velocity.X; } if (Main.rand.Next(12) == 0) { Dust dust = Dust.NewDustPerfect(Position, 6, new Vector2?(this.velocity), 100); dust.noGravity = true; dust.velocity.Y -= 1f + Main.rand.NextFloat(); dust.scale = 1.1f; dust.fadeIn = 0.5f; dust.customData = (object) this; } } else { flag5 = true; num5 = 40; num4 = 700f; } if ((double) this.localAI[3] < 60.0) { num17 = (float) (0.00999999977648258 + (double) this.localAI[3] / 60.0 * 0.0500000007450581); break; } break; case 576: case 577: maxValue1 = 700; legacySoundStyle = SoundID.DD2_OgreRoar; num19 -= 32f; flag5 = true; num6 = 60; num4 = 130f; num5 = 44; flag20 = DD2Event.EnemiesShouldChasePlayers; num7 = 0.7f; if ((double) this.localAI[0] > 0.0) --this.localAI[0]; if ((double) this.ai[0] <= 0.0) { float num39 = this.ai[1]; float num40 = this.Distance(targetData.Center); if ((double) this.localAI[3] >= 60.0) { if ((double) num40 <= (double) num4 + 300.0 && (double) this.localAI[0] <= 0.0) this.ai[1] = 2f; else if ((double) num40 > (double) num4 + 30.0) this.ai[1] = 1f; else if ((double) num40 <= (double) num4) { this.ai[1] = 0.0f; if ((double) num39 == 1.0) this.ai[0] = 0.0f; } } if ((double) num39 != (double) this.ai[1]) this.netUpdate = true; } else if ((double) this.ai[1] == 2.0) this.localAI[0] = 300f; switch ((int) this.ai[1]) { case 0: num5 = 44; if ((double) this.ai[0] == 40.0) { Main.PlayTrackedSound((SoundStyle) SoundID.DD2_OgreAttack, this.Center); break; } break; case 1: flag3 = true; num5 = 90; num4 = 1000f; num6 = 240; Damage = this.type != 576 ? (Main.expertMode ? 30 : 40) : (Main.expertMode ? 30 : 40); flag15 = false; vector2_1 = new Vector2((float) (this.direction * 30), -70f); Type = 676; if ((double) this.ai[0] == 80.0) { Main.PlayTrackedSound((SoundStyle) SoundID.DD2_OgreSpit, this.Center); break; } break; case 2: num5 = 90; num4 = 250f; flag4 = true; Damage = this.type != 576 ? (Main.expertMode ? 40 : 60) : (Main.expertMode ? 40 : 60); num9 = 36; num1 = 56; num2 = 41; num3 = 13f; flag3 = true; Type = 683; flag15 = false; vector2_1 = new Vector2((float) (-this.direction * 20), (float) (this.height / 2 - 1)); if ((double) this.ai[0] == 40.0) { Main.PlayTrackedSound((SoundStyle) SoundID.DD2_OgreGroundPound, this.Center); break; } break; } if ((double) this.ai[0] < (double) -num6) { this.ai[0] = (float) -num6; break; } break; } if (flag26) { bool flag30 = (double) this.velocity.Y == 0.0; for (int index = 0; index < 200; ++index) { if (index != this.whoAmI && Main.npc[index].active && Main.npc[index].type == this.type && (double) Math.Abs(this.position.X - Main.npc[index].position.X) + (double) Math.Abs(this.position.Y - Main.npc[index].position.Y) < (double) this.width) { if ((double) this.position.X < (double) Main.npc[index].position.X) this.velocity.X -= num21; else this.velocity.X += num21; if ((double) this.position.Y < (double) Main.npc[index].position.Y) this.velocity.Y -= num21; else this.velocity.Y += num21; } } if (flag30) this.velocity.Y = 0.0f; } if (flag28) { if ((double) this.localAI[3] == 0.0) this.alpha = (int) byte.MaxValue; if ((double) this.localAI[3] == 30.0) Main.PlayTrackedSound((SoundStyle) SoundID.DD2_EtherianPortalSpawnEnemy, this.Center); if ((double) this.localAI[3] < 60.0) { ++this.localAI[3]; this.alpha -= 5; if (this.alpha < 0) this.alpha = 0; int num41 = (int) this.localAI[3] / 10; size = this.Size; float num42 = size.Length() / 2f / 20f; int maxValue4 = 5; if (this.type == 576 || this.type == 577) maxValue4 = 1; for (int index = 0; index < num41; ++index) { if (Main.rand.Next(maxValue4) == 0) { Dust dust = Dust.NewDustDirect(this.position, this.width, this.height, 27, this.velocity.X * 1f, Alpha: 100); dust.scale = 0.55f; dust.fadeIn = 0.7f; dust.velocity *= 0.1f * num42; dust.velocity += this.velocity; } } } } bool flag31 = false; if (flag12 | flag5 && (double) this.ai[0] > 0.0) flag17 = false; if (flag12 && (double) this.ai[1] > 0.0) flag21 = true; if (flag5 && (double) this.ai[0] > 0.0) flag21 = true; if (flag5) { if ((double) this.ai[0] < 0.0) { ++this.ai[0]; flag1 = false; } if ((double) this.ai[0] == 0.0 && (double) this.velocity.Y == 0.0 | flag6 && targetData.Type != NPCTargetType.None && (Collision.CanHit(this.position, this.width, this.height, targetData.Position, targetData.Width, targetData.Height) ? 1 : (Collision.CanHitLine(this.position, this.width, this.height, targetData.Position, targetData.Width, targetData.Height) ? 1 : 0)) != 0 && (double) (targetData.Center - this.Center).Length() < (double) num4) { this.ai[0] = (float) num5; this.netUpdate = true; } if ((double) this.ai[0] > 0.0) { this.spriteDirection = this.direction * num20; if (flag7) { this.velocity.X *= num7; flag23 = true; flag19 = true; this.ai[3] = 0.0f; } --this.ai[0]; if ((double) this.ai[0] == 0.0) this.ai[0] = (float) -num6; } } if (flag3 && (double) this.ai[0] > 0.0) { if (flag15) { NPCUtils.TargetClosestOldOnesInvasion(this); targetData = this.GetTargetData(); } if ((double) this.ai[0] == (double) num9) { Vector2 vector2_3 = this.Center + vector2_1; Vector2 v = targetData.Center - vector2_3; v.Y -= Math.Abs(v.X) * num13; Vector2 vector2_4 = v.SafeNormalize(-Vector2.UnitY) * num10; for (int index = 0; index < num14; ++index) { Vector2 vector2_5 = vector2_4; Vector2 vector2_6 = vector2_3; Vector2 velocity = !nullable.HasValue ? vector2_5 + Utils.RandomVector2(Main.rand, -max1, max1) : vector2_5 + nullable.Value; Vector2 position = vector2_6 + vector2_4 * num15; if (Main.netMode != 1) Projectile.NewProjectile(position, velocity, Type, Damage, 0.0f, Main.myPlayer); } } } if (flag4 && (double) this.ai[0] > 0.0) { if ((double) this.velocity.Y != 0.0 && (double) this.ai[0] < (double) num2) this.ai[0] = (float) num2; if ((double) this.ai[0] == (double) num1) this.velocity.Y = -num3; } if (!flag16 & flag17) { if ((double) this.velocity.Y == 0.0 && (double) this.velocity.X * (double) this.direction < 0.0) flag18 = true; if ((((double) this.position.X == (double) this.oldPosition.X ? 1 : ((double) this.ai[3] >= (double) num16 ? 1 : 0)) | (flag18 ? 1 : 0)) != 0) ++this.ai[3]; else if ((double) Math.Abs(this.velocity.X) > 0.899999976158142 && (double) this.ai[3] > 0.0) --this.ai[3]; if ((double) this.ai[3] > (double) (num16 * 10)) this.ai[3] = 0.0f; if (this.justHit && !flag29) this.ai[3] = 0.0f; if ((double) this.ai[3] == (double) num16) { this.netUpdate = true; if (flag29) { this.noGravity = true; this.noTileCollide = true; this.position.X += (float) (this.direction * this.width * 2); int num43 = 20; size = this.Size; float num44 = size.Length() / 2f / 20f; int maxValue5 = 5; if (this.type == 576 || this.type == 577) maxValue5 = 1; for (int index = 0; index < num43; ++index) { if (Main.rand.Next(maxValue5) == 0) { Dust dust = Dust.NewDustDirect(this.position, this.width, this.height, 27, this.velocity.X * 1f, Alpha: 100); dust.scale = 0.55f; dust.fadeIn = 0.7f; dust.velocity *= 3f * num44; dust.noGravity = true; dust.fadeIn = 1.5f; dust.velocity *= 3f; } } return; } } } if (!flag19) { if ((double) this.ai[3] < (double) num16 & flag20) { if (maxValue1 > 0 && Main.rand.Next(maxValue1) == 0) Main.PlayTrackedSound((SoundStyle) legacySoundStyle, this.Center); NPCUtils.TargetClosestOldOnesInvasion(this); targetData = this.GetTargetData(); } else if (!flag21) { if (flag22 && this.timeLeft > 10) this.timeLeft = 10; if ((double) this.velocity.X == 0.0) { if ((double) this.velocity.Y == 0.0) { ++this.ai[2]; if ((double) this.ai[2] >= 2.0) { this.direction *= -1; this.spriteDirection = this.direction * num20; this.ai[2] = 0.0f; } } } else this.ai[2] = 0.0f; if (this.direction == 0) this.direction = 1; } } if (!flag23) { if ((double) this.velocity.X < -(double) max2 || (double) this.velocity.X > (double) max2) { if ((double) this.velocity.Y == 0.0) this.velocity = this.velocity * num18; } else if ((double) this.velocity.X < (double) max2 && this.direction == 1 || (double) this.velocity.X > -(double) max2 && this.direction == -1) this.velocity.X = MathHelper.Clamp(this.velocity.X + num17 * (float) this.direction, -max2, max2); } if (flag12) { if (this.confused) { this.ai[0] = 0.0f; } else { if ((double) this.ai[1] > 0.0) --this.ai[1]; if (this.justHit) { this.ai[1] = 30f; this.ai[0] = 0.0f; } if ((double) this.ai[0] > 0.0) { if (flag15) { NPCUtils.TargetClosestOldOnesInvasion(this); targetData = this.GetTargetData(); } if ((double) this.ai[1] == (double) num9) { Vector2 vector2_7 = this.Center + vector2_1; Vector2 v = targetData.Center - vector2_7; v.Y -= Math.Abs(v.X) * num13; Vector2 vector2_8 = v.SafeNormalize(-Vector2.UnitY) * num10; for (int index = 0; index < num14; ++index) { Vector2 vector2_9 = vector2_7; Vector2 vector2_10 = vector2_8; Vector2 velocity = !nullable.HasValue ? vector2_10 + Utils.RandomVector2(Main.rand, -max1, max1) : vector2_10 + nullable.Value; Vector2 position = vector2_9 + velocity * num15; if (Main.netMode != 1) Projectile.NewProjectile(position, velocity, Type, Damage, 0.0f, Main.myPlayer); } this.ai[0] = (double) Math.Abs(vector2_8.Y) <= (double) Math.Abs(vector2_8.X) * 2.0 ? ((double) Math.Abs(vector2_8.X) <= (double) Math.Abs(vector2_8.Y) * 2.0 ? ((double) vector2_8.Y > 0.0 ? 2f : 4f) : 3f) : ((double) vector2_8.Y > 0.0 ? 1f : 5f); } if ((double) this.velocity.Y != 0.0 && !flag14 || (double) this.ai[1] <= 0.0) { this.ai[0] = 0.0f; this.ai[1] = 0.0f; } else if (!flag13) { this.velocity.X *= 0.9f; this.spriteDirection = this.direction * num20; } } if ((double) this.ai[0] <= 0.0 | flag13 && (double) this.velocity.Y == 0.0 | flag14 && (double) this.ai[1] <= 0.0 && targetData.Type != NPCTargetType.None && Collision.CanHit(this.position, this.width, this.height, targetData.Position, targetData.Width, targetData.Height)) { Vector2 vector2_11 = targetData.Center - this.Center; if ((double) vector2_11.Length() < (double) num11) { this.netUpdate = true; this.velocity.X *= 0.5f; this.ai[0] = 3f; this.ai[1] = (float) num8; this.ai[0] = (double) Math.Abs(vector2_11.Y) <= (double) Math.Abs(vector2_11.X) * 2.0 ? ((double) Math.Abs(vector2_11.X) <= (double) Math.Abs(vector2_11.Y) * 2.0 ? ((double) vector2_11.Y > 0.0 ? 2f : 4f) : 3f) : ((double) vector2_11.Y > 0.0 ? 1f : 5f); } } if ((double) this.ai[0] <= 0.0 | flag13) { bool flag32 = (double) this.Distance(targetData.Center) < (double) num12; if (flag32 && Collision.CanHitLine(this.position, this.width, this.height, targetData.Position, targetData.Width, targetData.Height)) this.ai[3] = 0.0f; if ((((double) this.velocity.X < -(double) max2 ? 1 : ((double) this.velocity.X > (double) max2 ? 1 : 0)) | (flag32 ? 1 : 0)) != 0) { if ((double) this.velocity.Y == 0.0) this.velocity.X *= num18; } else if ((double) this.velocity.X < (double) max2 && this.direction == 1 || (double) this.velocity.X > -(double) max2 && this.direction == -1) this.velocity.X = MathHelper.Clamp(this.velocity.X + num17 * (float) this.direction, -max2, max2); } } } if ((double) this.velocity.Y == 0.0) { int index12 = (int) ((double) this.Bottom.Y + 7.0) / 16; int num45 = (int) this.Left.X / 16; int num46 = (int) this.Right.X / 16; int index13; for (int index14 = num45; index14 <= num46; index14 = index13 + 1) { index13 = Utils.Clamp(index14, 0, Main.maxTilesX); index12 = Utils.Clamp(index12, 0, Main.maxTilesY); Tile tile = Main.tile[index13, index12]; if (tile == null) return; if (tile.nactive() && Main.tileSolid[(int) tile.type]) { flag31 = true; break; } } } Point tileCoordinates1 = this.Center.ToTileCoordinates(); if (WorldGen.InWorld(tileCoordinates1.X, tileCoordinates1.Y, 5) && !this.noGravity) { Vector2 cPosition; int cWidth; int cHeight; this.GetTileCollisionParameters(out cPosition, out cWidth, out cHeight); Vector2 vector2_12 = this.position - cPosition; Collision.StepUp(ref cPosition, ref this.velocity, cWidth, cHeight, ref this.stepSpeed, ref this.gfxOffY); this.position = cPosition + vector2_12; } if (flag31) { int index = (int) ((double) this.Center.X + (double) num19 * (double) this.direction) / 16; int j = ((int) this.Bottom.Y - 15) / 16; bool flag33 = (double) this.position.Y + (double) this.height - (double) (j * 16) > 20.0; Tile tileSafely1 = Framing.GetTileSafely(index + this.direction, j + 1); Tile tileSafely2 = Framing.GetTileSafely(index, j + 1); Tile tileSafely3 = Framing.GetTileSafely(index, j); Tile tileSafely4 = Framing.GetTileSafely(index, j - 1); Tile tileSafely5 = Framing.GetTileSafely(index, j - 2); Tile tileSafely6 = Framing.GetTileSafely(index, j - 3); if (flag8 && tileSafely4.nactive() && (tileSafely4.type == (ushort) 10 || tileSafely4.type == (ushort) 388)) { ++this.ai[0]; this.ai[3] = 0.0f; if ((double) this.ai[0] >= 60.0) { if (flag9) this.ai[1] = 0.0f; int num47 = 5; if (Main.tile[index, j - 1].type == (ushort) 388) num47 = 2; this.velocity.X = 0.5f * (float) -this.direction; this.ai[1] += (float) num47; bool flag34 = false; if ((double) this.ai[1] >= 10.0) { flag34 = true; this.ai[1] = 10f; } if (flag10) flag34 = true; WorldGen.KillTile(index, j - 1, true); if (Main.netMode != 1 & flag34) { if (flag11) { WorldGen.KillTile(index, j - 1); if (Main.netMode == 2) NetMessage.SendData(17, number2: ((float) index), number3: ((float) (j - 1))); } else { if (tileSafely4.type == (ushort) 10) { bool flag35 = WorldGen.OpenDoor(index, j - 1, this.direction); if (!flag35) { this.ai[3] = (float) num16; this.netUpdate = true; } if (Main.netMode == 2 & flag35) NetMessage.SendData(19, number2: ((float) index), number3: ((float) (j - 1)), number4: ((float) this.direction)); } if (tileSafely4.type == (ushort) 388) { bool flag36 = WorldGen.ShiftTallGate(index, j - 1, false); if (!flag36) { this.ai[3] = (float) num16; this.netUpdate = true; } if (Main.netMode == 2 & flag36) NetMessage.SendData(19, number: 4, number2: ((float) index), number3: ((float) (j - 1)), number4: ((float) this.direction)); } } } } } else { if ((double) this.velocity.X * (double) (this.spriteDirection * num20) > 0.0) { if (this.height >= 32 && tileSafely5.nactive() && Main.tileSolid[(int) tileSafely5.type]) { this.netUpdate = true; this.velocity.Y = -7f; if (tileSafely6.nactive() && Main.tileSolid[(int) tileSafely6.type]) this.velocity.Y = -8f; } else if (tileSafely4.nactive() && Main.tileSolid[(int) tileSafely4.type]) { this.velocity.Y = -6f; this.netUpdate = true; } else if (flag33 && tileSafely3.nactive() && !tileSafely3.topSlope() && Main.tileSolid[(int) tileSafely3.type]) { this.velocity.Y = -5f; this.netUpdate = true; } else if (flag24 && (!tileSafely2.nactive() || !Main.tileSolid[(int) tileSafely2.type]) && (!tileSafely1.nactive() || !Main.tileSolid[(int) tileSafely1.type])) { this.velocity.X *= 1.5f; this.velocity.Y = -8f; this.netUpdate = true; } else if (flag8) { this.ai[0] = 0.0f; this.ai[1] = 0.0f; } if ((double) this.velocity.Y == 0.0 & flag1 && (double) this.ai[3] == 1.0) { this.velocity.Y = -5f; this.netUpdate = true; } } if (flag25 && (double) this.velocity.Y == 0.0 && (double) Math.Abs(targetData.Center.X - this.Center.X) < 100.0 && (double) Math.Abs(targetData.Center.Y - this.Center.Y) < 50.0 && (double) Math.Abs(this.velocity.X) >= 1.0 && (double) this.velocity.X * (double) this.direction > 0.0) { this.velocity.X = MathHelper.Clamp(this.velocity.X * 2f, -3f, 3f); this.velocity.Y = -4f; this.netAlways = true; } } } else if (flag8) { this.ai[0] = 0.0f; this.ai[1] = 0.0f; } if (!flag27 || !this.noTileCollide) return; if (flag28) { if (this.alpha < 60) this.alpha += 20; this.localAI[3] = 40f; } int num48 = (double) this.velocity.Y == 0.0 ? 1 : 0; if ((double) Math.Abs(this.Center.X - targetData.Center.X) > 200.0) { this.spriteDirection = this.direction = (double) targetData.Center.X > (double) this.Center.X ? 1 : -1; this.velocity.X = MathHelper.Lerp(this.velocity.X, (float) this.direction, 0.05f); } int Width = 80; int height = this.height; Vector2 Position1 = new Vector2(this.Center.X - (float) (Width / 2), this.position.Y + (float) this.height - (float) height); bool flag37 = false; if ((double) this.position.Y + (double) this.height < (double) targetData.Position.Y + (double) targetData.Height - 16.0) flag37 = true; if (flag37) this.velocity.Y += 0.5f; else if (Collision.SolidCollision(Position1, Width, height) || (double) targetData.Center.Y - (double) this.Center.Y < -100.0) { if ((double) this.velocity.Y > 0.0) this.velocity.Y = 0.0f; if ((double) this.velocity.Y > -0.2) this.velocity.Y -= 0.025f; else this.velocity.Y -= 0.2f; if ((double) this.velocity.Y < -4.0) this.velocity.Y = -4f; } else { if ((double) this.velocity.Y < 0.0) this.velocity.Y = 0.0f; if ((double) this.velocity.Y < 0.1) this.velocity.Y += 0.025f; else this.velocity.Y += 0.5f; } if ((double) this.velocity.Y > 10.0) this.velocity.Y = 10f; if (num48 == 0) return; this.velocity.Y = 0.0f; } private void AI_084_LunaticCultist() { if ((double) this.ai[0] != -1.0 && Main.rand.Next(1000) == 0) Main.PlaySound(29, (int) this.position.X, (int) this.position.Y, Main.rand.Next(88, 92)); bool expertMode = Main.expertMode; bool flag1 = this.life <= this.lifeMax / 2; int num1 = 120; int Damage1 = 35; if (expertMode) { num1 = 90; Damage1 = 25; } int num2 = 18; int num3 = 3; int Damage2 = 30; if (expertMode) { num2 = 12; num3 = 4; Damage2 = 20; } int num4 = 80; int Damage3 = 45; if (expertMode) { num4 = 40; Damage3 = 30; } int num5 = 20; int num6 = 2; if (expertMode) { num5 = 30; num6 = 2; } int num7 = 20; int num8 = 3; bool flag2 = this.type == 439; bool flag3 = false; bool flag4 = false; if (flag1) this.defense = (int) ((double) this.defDefense * 0.649999976158142); if (!flag2) { if (((double) this.ai[3] < 0.0 || !Main.npc[(int) this.ai[3]].active ? 1 : (Main.npc[(int) this.ai[3]].type != 439 ? 1 : 0)) != 0) { this.life = 0; this.HitEffect(); this.active = false; return; } this.ai[0] = Main.npc[(int) this.ai[3]].ai[0]; this.ai[1] = Main.npc[(int) this.ai[3]].ai[1]; if ((double) this.ai[0] == 5.0) { if (this.justHit) { this.life = 0; this.HitEffect(); this.active = false; if (Main.netMode != 1) NetMessage.SendData(23, number: this.whoAmI); NPC npc = Main.npc[(int) this.ai[3]]; npc.ai[0] = 6f; npc.ai[1] = 0.0f; npc.netUpdate = true; } } else { flag3 = true; flag4 = true; } } else if ((double) this.ai[0] == 5.0 && (double) this.ai[1] >= 120.0 && (double) this.ai[1] < 420.0 && this.justHit) { this.ai[0] = 0.0f; this.ai[1] = 0.0f; ++this.ai[3]; this.velocity = Vector2.Zero; this.netUpdate = true; List intList = new List(); for (int index = 0; index < 200; ++index) { if (Main.npc[index].active && Main.npc[index].type == 440 && (double) Main.npc[index].ai[3] == (double) this.whoAmI) intList.Add(index); } int num9 = 10; if (Main.expertMode) num9 = 3; foreach (int number in intList) { NPC npc = Main.npc[number]; if ((double) npc.localAI[1] == (double) this.localAI[1] && num9 > 0) { --num9; npc.life = 0; npc.HitEffect(); npc.active = false; if (Main.netMode != 1) NetMessage.SendData(23, number: number); } else if (num9 > 0) { --num9; npc.life = 0; npc.HitEffect(); npc.active = false; } } Main.projectile[(int) this.ai[2]].ai[1] = -1f; Main.projectile[(int) this.ai[2]].netUpdate = true; } Vector2 center1 = this.Center; Player player = Main.player[this.target]; if (this.target < 0 || this.target == (int) byte.MaxValue || player.dead || !player.active) { this.TargetClosest(false); player = Main.player[this.target]; this.netUpdate = true; } if (player.dead || (double) Vector2.Distance(player.Center, center1) > 5600.0) { this.life = 0; this.HitEffect(); this.active = false; if (Main.netMode != 1) NetMessage.SendData(28, number: this.whoAmI, number2: -1f); new List() { this.whoAmI }; for (int index = 0; index < 200; ++index) { if (Main.npc[index].active && Main.npc[index].type == 440 && (double) Main.npc[index].ai[3] == (double) this.whoAmI) { Main.npc[index].life = 0; Main.npc[index].HitEffect(); Main.npc[index].active = false; if (Main.netMode != 1) NetMessage.SendData(28, number: this.whoAmI, number2: -1f); } } } float num10 = this.ai[3]; if ((double) this.localAI[0] == 0.0) { Main.PlaySound(29, (int) this.position.X, (int) this.position.Y, 89); this.localAI[0] = 1f; this.alpha = (int) byte.MaxValue; this.rotation = 0.0f; if (Main.netMode != 1) { this.ai[0] = -1f; this.netUpdate = true; } } if ((double) this.ai[0] == -1.0) { this.alpha -= 5; if (this.alpha < 0) this.alpha = 0; ++this.ai[1]; if ((double) this.ai[1] >= 420.0) { this.ai[0] = 0.0f; this.ai[1] = 0.0f; this.netUpdate = true; } else if ((double) this.ai[1] > 360.0) { this.velocity = this.velocity * 0.95f; if ((double) this.localAI[2] != 13.0) Main.PlaySound(29, (int) this.position.X, (int) this.position.Y, 105); this.localAI[2] = 13f; } else if ((double) this.ai[1] > 300.0) { this.velocity = -Vector2.UnitY; this.localAI[2] = 10f; } else this.localAI[2] = (double) this.ai[1] <= 120.0 ? 0.0f : 1f; flag3 = true; flag4 = true; } if ((double) this.ai[0] == 0.0) { if ((double) this.ai[1] == 0.0) this.TargetClosest(false); this.localAI[2] = 10f; int num11 = Math.Sign(player.Center.X - center1.X); if (num11 != 0) this.direction = this.spriteDirection = num11; ++this.ai[1]; if ((double) this.ai[1] >= 40.0 & flag2) { int num12 = 0; if (flag1) { switch ((int) this.ai[3]) { case 0: num12 = 0; break; case 1: num12 = 1; break; case 2: num12 = 0; break; case 3: num12 = 5; break; case 4: num12 = 0; break; case 5: num12 = 3; break; case 6: num12 = 0; break; case 7: num12 = 5; break; case 8: num12 = 0; break; case 9: num12 = 2; break; case 10: num12 = 0; break; case 11: num12 = 3; break; case 12: num12 = 0; break; case 13: num12 = 4; this.ai[3] = -1f; break; default: this.ai[3] = -1f; break; } } else { switch ((int) this.ai[3]) { case 0: num12 = 0; break; case 1: num12 = 1; break; case 2: num12 = 0; break; case 3: num12 = 2; break; case 4: num12 = 0; break; case 5: num12 = 3; break; case 6: num12 = 0; break; case 7: num12 = 1; break; case 8: num12 = 0; break; case 9: num12 = 2; break; case 10: num12 = 0; break; case 11: num12 = 4; this.ai[3] = -1f; break; default: this.ai[3] = -1f; break; } } int maxValue = 6; if (this.life < this.lifeMax / 3) maxValue = 4; if (this.life < this.lifeMax / 4) maxValue = 3; if (expertMode & flag1 && Main.rand.Next(maxValue) == 0 && num12 != 0 && num12 != 4 && num12 != 5 && NPC.CountNPCS(523) < 10) num12 = 6; if (num12 == 0) { float num13 = (float) Math.Ceiling((double) (player.Center + new Vector2(0.0f, -100f) - center1).Length() / 50.0); if ((double) num13 == 0.0) num13 = 1f; List intList = new List(); int num14 = 0; intList.Add(this.whoAmI); for (int index = 0; index < 200; ++index) { if (Main.npc[index].active && Main.npc[index].type == 440 && (double) Main.npc[index].ai[3] == (double) this.whoAmI) intList.Add(index); } bool flag5 = intList.Count % 2 == 0; foreach (int index in intList) { NPC npc1 = Main.npc[index]; Vector2 center2 = npc1.Center; float num15 = (float) ((double) ((num14 + flag5.ToInt() + 1) / 2) * 6.28318548202515 * 0.400000005960464) / (float) intList.Count; if (num14 % 2 == 1) num15 *= -1f; if (intList.Count == 1) num15 = 0.0f; Vector2 vector2_1 = new Vector2(0.0f, -1f).RotatedBy((double) num15) * new Vector2(300f, 200f); Vector2 vector2_2 = player.Center + vector2_1 - center2; npc1.ai[0] = 1f; npc1.ai[1] = num13 * 2f; npc1.velocity = vector2_2 / num13; if (this.whoAmI >= npc1.whoAmI) { NPC npc2 = npc1; npc2.position = npc2.position - npc1.velocity; } npc1.netUpdate = true; ++num14; } } if (num12 == 1) { this.ai[0] = 3f; this.ai[1] = 0.0f; } else if (num12 == 2) { this.ai[0] = 2f; this.ai[1] = 0.0f; } else if (num12 == 3) { this.ai[0] = 4f; this.ai[1] = 0.0f; } else if (num12 == 4) { this.ai[0] = 5f; this.ai[1] = 0.0f; } if (num12 == 5) { this.ai[0] = 7f; this.ai[1] = 0.0f; } if (num12 == 6) { this.ai[0] = 8f; this.ai[1] = 0.0f; } this.netUpdate = true; } } else if ((double) this.ai[0] == 1.0) { flag3 = true; this.localAI[2] = 10f; if ((double) (int) this.ai[1] % 2.0 != 0.0 && (double) this.ai[1] != 1.0) this.position = this.position - this.velocity; --this.ai[1]; if ((double) this.ai[1] <= 0.0) { this.ai[0] = 0.0f; this.ai[1] = 0.0f; ++this.ai[3]; this.velocity = Vector2.Zero; this.netUpdate = true; } } else if ((double) this.ai[0] == 2.0) { this.localAI[2] = 11f; Vector2 vec1 = Vector2.Normalize(player.Center - center1); if (vec1.HasNaNs()) vec1 = new Vector2((float) this.direction, 0.0f); if ((double) this.ai[1] >= 4.0 & flag2 && (int) ((double) this.ai[1] - 4.0) % num1 == 0) { if (Main.netMode != 1) { List intList = new List(); for (int index = 0; index < 200; ++index) { if (Main.npc[index].active && Main.npc[index].type == 440 && (double) Main.npc[index].ai[3] == (double) this.whoAmI) intList.Add(index); } foreach (int index1 in intList) { NPC npc = Main.npc[index1]; Vector2 center3 = npc.Center; int num16 = Math.Sign(player.Center.X - center3.X); if (num16 != 0) npc.direction = npc.spriteDirection = num16; if (Main.netMode != 1) { Vector2 vec2 = Vector2.Normalize(player.Center - center3 + player.velocity * 20f); if (vec2.HasNaNs()) vec2 = new Vector2((float) this.direction, 0.0f); Vector2 vector2_3 = center3 + new Vector2((float) (this.direction * 30), 12f); for (int index2 = 0; index2 < 1; ++index2) { Vector2 vector2_4 = (vec2 * (float) (6.0 + Main.rand.NextDouble() * 4.0)).RotatedByRandom(0.523598790168762); Projectile.NewProjectile(vector2_3.X, vector2_3.Y, vector2_4.X, vector2_4.Y, 468, 18, 0.0f, Main.myPlayer); } } } } if (Main.netMode != 1) { Vector2 vec3 = Vector2.Normalize(player.Center - center1 + player.velocity * 20f); if (vec3.HasNaNs()) vec3 = new Vector2((float) this.direction, 0.0f); Vector2 vector2_5 = this.Center + new Vector2((float) (this.direction * 30), 12f); for (int index = 0; index < 1; ++index) { Vector2 vector2_6 = vec3 * 4f; Projectile.NewProjectile(vector2_5.X, vector2_5.Y, vector2_6.X, vector2_6.Y, 464, Damage1, 0.0f, Main.myPlayer, ai1: 1f); } } } ++this.ai[1]; if ((double) this.ai[1] >= (double) (4 + num1)) { this.ai[0] = 0.0f; this.ai[1] = 0.0f; ++this.ai[3]; this.velocity = Vector2.Zero; this.netUpdate = true; } } else if ((double) this.ai[0] == 3.0) { this.localAI[2] = 11f; Vector2 vec4 = Vector2.Normalize(player.Center - center1); if (vec4.HasNaNs()) vec4 = new Vector2((float) this.direction, 0.0f); if ((double) this.ai[1] >= 4.0 & flag2 && (int) ((double) this.ai[1] - 4.0) % num2 == 0) { if ((int) ((double) this.ai[1] - 4.0) / num2 == 2) { List intList = new List(); for (int index = 0; index < 200; ++index) { if (Main.npc[index].active && Main.npc[index].type == 440 && (double) Main.npc[index].ai[3] == (double) this.whoAmI) intList.Add(index); } if (Main.netMode != 1) { foreach (int index3 in intList) { NPC npc = Main.npc[index3]; Vector2 center4 = npc.Center; int num17 = Math.Sign(player.Center.X - center4.X); if (num17 != 0) npc.direction = npc.spriteDirection = num17; if (Main.netMode != 1) { Vector2 vec5 = Vector2.Normalize(player.Center - center4 + player.velocity * 20f); if (vec5.HasNaNs()) vec5 = new Vector2((float) this.direction, 0.0f); Vector2 vector2_7 = center4 + new Vector2((float) (this.direction * 30), 12f); for (int index4 = 0; index4 < 1; ++index4) { Vector2 vector2_8 = (vec5 * (float) (6.0 + Main.rand.NextDouble() * 4.0)).RotatedByRandom(0.523598790168762); Projectile.NewProjectile(vector2_7.X, vector2_7.Y, vector2_8.X, vector2_8.Y, 468, 18, 0.0f, Main.myPlayer); } } } } } int num18 = Math.Sign(player.Center.X - center1.X); if (num18 != 0) this.direction = this.spriteDirection = num18; if (Main.netMode != 1) { Vector2 vec6 = Vector2.Normalize(player.Center - center1 + player.velocity * 20f); if (vec6.HasNaNs()) vec6 = new Vector2((float) this.direction, 0.0f); Vector2 vector2_9 = this.Center + new Vector2((float) (this.direction * 30), 12f); for (int index = 0; index < 1; ++index) { Vector2 vector2_10 = (vec6 * (float) (6.0 + Main.rand.NextDouble() * 4.0)).RotatedByRandom(0.523598790168762); Projectile.NewProjectile(vector2_9.X, vector2_9.Y, vector2_10.X, vector2_10.Y, 467, Damage2, 0.0f, Main.myPlayer); } } } ++this.ai[1]; if ((double) this.ai[1] >= (double) (4 + num2 * num3)) { this.ai[0] = 0.0f; this.ai[1] = 0.0f; ++this.ai[3]; this.velocity = Vector2.Zero; this.netUpdate = true; } } else if ((double) this.ai[0] == 4.0) { this.localAI[2] = !flag2 ? 11f : 12f; if ((double) this.ai[1] == 20.0 & flag2 && Main.netMode != 1) { List intList = new List(); for (int index = 0; index < 200; ++index) { if (Main.npc[index].active && Main.npc[index].type == 440 && (double) Main.npc[index].ai[3] == (double) this.whoAmI) intList.Add(index); } foreach (int index5 in intList) { NPC npc = Main.npc[index5]; Vector2 center5 = npc.Center; int num19 = Math.Sign(player.Center.X - center5.X); if (num19 != 0) npc.direction = npc.spriteDirection = num19; if (Main.netMode != 1) { Vector2 vec = Vector2.Normalize(player.Center - center5 + player.velocity * 20f); if (vec.HasNaNs()) vec = new Vector2((float) this.direction, 0.0f); Vector2 vector2_11 = center5 + new Vector2((float) (this.direction * 30), 12f); for (int index6 = 0; index6 < 1; ++index6) { Vector2 vector2_12 = (vec * (float) (6.0 + Main.rand.NextDouble() * 4.0)).RotatedByRandom(0.523598790168762); Projectile.NewProjectile(vector2_11.X, vector2_11.Y, vector2_12.X, vector2_12.Y, 468, 18, 0.0f, Main.myPlayer); } } } if ((int) ((double) this.ai[1] - 20.0) % num4 == 0) Projectile.NewProjectile(this.Center.X, this.Center.Y - 100f, 0.0f, 0.0f, 465, Damage3, 0.0f, Main.myPlayer); } ++this.ai[1]; if ((double) this.ai[1] >= (double) (20 + num4)) { this.ai[0] = 0.0f; this.ai[1] = 0.0f; ++this.ai[3]; this.velocity = Vector2.Zero; this.netUpdate = true; } } else if ((double) this.ai[0] == 5.0) { this.localAI[2] = 10f; if (Vector2.Normalize(player.Center - center1).HasNaNs()) { Vector2 vector2_13 = new Vector2((float) this.direction, 0.0f); } if ((double) this.ai[1] >= 0.0 && (double) this.ai[1] < 30.0) { flag3 = true; flag4 = true; this.alpha = (int) (((double) this.ai[1] - 0.0) / 30.0 * (double) byte.MaxValue); } else if ((double) this.ai[1] >= 30.0 && (double) this.ai[1] < 90.0) { if ((((double) this.ai[1] != 30.0 ? 0 : (Main.netMode != 1 ? 1 : 0)) & (flag2 ? 1 : 0)) != 0) { ++this.localAI[1]; Vector2 spinningpoint = new Vector2(180f, 0.0f); List intList = new List(); for (int index = 0; index < 200; ++index) { if (Main.npc[index].active && Main.npc[index].type == 440 && (double) Main.npc[index].ai[3] == (double) this.whoAmI) intList.Add(index); } int num20 = 6 - intList.Count; if (num20 > 2) num20 = 2; int length = intList.Count + num20 + 1; float[] numArray = new float[length]; for (int index = 0; index < numArray.Length; ++index) numArray[index] = Vector2.Distance(this.Center + spinningpoint.RotatedBy((double) index * 6.28318548202515 / (double) length - 1.57079637050629), player.Center); int index7 = 0; for (int index8 = 1; index8 < numArray.Length; ++index8) { if ((double) numArray[index7] > (double) numArray[index8]) index7 = index8; } int num21 = index7 >= length / 2 ? index7 - length / 2 : index7 + length / 2; int num22 = num20; for (int index9 = 0; index9 < numArray.Length; ++index9) { if (num21 != index9) { Vector2 vector2_14 = this.Center + spinningpoint.RotatedBy((double) index9 * 6.28318548202515 / (double) length - 1.57079637050629); if (num22-- > 0) { int index10 = NPC.NewNPC((int) vector2_14.X, (int) vector2_14.Y + this.height / 2, 440, this.whoAmI); Main.npc[index10].ai[3] = (float) this.whoAmI; Main.npc[index10].netUpdate = true; Main.npc[index10].localAI[1] = this.localAI[1]; } else { int number = intList[-num22 - 1]; Main.npc[number].Center = vector2_14; NetMessage.SendData(23, number: number); } } } this.ai[2] = (float) Projectile.NewProjectile(this.Center.X, this.Center.Y, 0.0f, 0.0f, 490, 0, 0.0f, Main.myPlayer, ai1: ((float) this.whoAmI)); this.Center = this.Center + spinningpoint.RotatedBy((double) num21 * 6.28318548202515 / (double) length - 1.57079637050629); this.netUpdate = true; intList.Clear(); } flag3 = true; flag4 = true; this.alpha = (int) byte.MaxValue; if (flag2) { Vector2 vector2_15 = Main.projectile[(int) this.ai[2]].Center - this.Center; if (vector2_15 == Vector2.Zero) vector2_15 = -Vector2.UnitY; vector2_15.Normalize(); this.localAI[2] = (double) Math.Abs(vector2_15.Y) >= 0.769999980926514 ? ((double) vector2_15.Y >= 0.0 ? 10f : 12f) : 11f; int num23 = Math.Sign(vector2_15.X); if (num23 != 0) this.direction = this.spriteDirection = num23; } else { Vector2 vector2_16 = Main.projectile[(int) Main.npc[(int) this.ai[3]].ai[2]].Center - this.Center; if (vector2_16 == Vector2.Zero) vector2_16 = -Vector2.UnitY; vector2_16.Normalize(); this.localAI[2] = (double) Math.Abs(vector2_16.Y) >= 0.769999980926514 ? ((double) vector2_16.Y >= 0.0 ? 10f : 12f) : 11f; int num24 = Math.Sign(vector2_16.X); if (num24 != 0) this.direction = this.spriteDirection = num24; } } else if ((double) this.ai[1] >= 90.0 && (double) this.ai[1] < 120.0) { flag3 = true; flag4 = true; this.alpha = (int) byte.MaxValue - (int) (((double) this.ai[1] - 90.0) / 30.0 * (double) byte.MaxValue); } else if ((double) this.ai[1] >= 120.0 && (double) this.ai[1] < 420.0) { flag4 = true; this.alpha = 0; if (flag2) { Vector2 vector2_17 = Main.projectile[(int) this.ai[2]].Center - this.Center; if (vector2_17 == Vector2.Zero) vector2_17 = -Vector2.UnitY; vector2_17.Normalize(); this.localAI[2] = (double) Math.Abs(vector2_17.Y) >= 0.769999980926514 ? ((double) vector2_17.Y >= 0.0 ? 10f : 12f) : 11f; int num25 = Math.Sign(vector2_17.X); if (num25 != 0) this.direction = this.spriteDirection = num25; } else { Vector2 vector2_18 = Main.projectile[(int) Main.npc[(int) this.ai[3]].ai[2]].Center - this.Center; if (vector2_18 == Vector2.Zero) vector2_18 = -Vector2.UnitY; vector2_18.Normalize(); this.localAI[2] = (double) Math.Abs(vector2_18.Y) >= 0.769999980926514 ? ((double) vector2_18.Y >= 0.0 ? 10f : 12f) : 11f; int num26 = Math.Sign(vector2_18.X); if (num26 != 0) this.direction = this.spriteDirection = num26; } } ++this.ai[1]; if ((double) this.ai[1] >= 420.0) { flag4 = true; this.ai[0] = 0.0f; this.ai[1] = 0.0f; ++this.ai[3]; this.velocity = Vector2.Zero; this.netUpdate = true; } } else if ((double) this.ai[0] == 6.0) { this.localAI[2] = 13f; ++this.ai[1]; if ((double) this.ai[1] >= 120.0) { this.ai[0] = 0.0f; this.ai[1] = 0.0f; ++this.ai[3]; this.velocity = Vector2.Zero; this.netUpdate = true; } } else if ((double) this.ai[0] == 7.0) { this.localAI[2] = 11f; Vector2 vec7 = Vector2.Normalize(player.Center - center1); if (vec7.HasNaNs()) vec7 = new Vector2((float) this.direction, 0.0f); if ((double) this.ai[1] >= 4.0 & flag2 && (int) ((double) this.ai[1] - 4.0) % num5 == 0) { if ((int) ((double) this.ai[1] - 4.0) / num5 == 2) { List intList = new List(); for (int index = 0; index < 200; ++index) { if (Main.npc[index].active && Main.npc[index].type == 440 && (double) Main.npc[index].ai[3] == (double) this.whoAmI) intList.Add(index); } foreach (int index11 in intList) { NPC npc = Main.npc[index11]; Vector2 center6 = npc.Center; int num27 = Math.Sign(player.Center.X - center6.X); if (num27 != 0) npc.direction = npc.spriteDirection = num27; if (Main.netMode != 1) { Vector2 vec8 = Vector2.Normalize(player.Center - center6 + player.velocity * 20f); if (vec8.HasNaNs()) vec8 = new Vector2((float) this.direction, 0.0f); Vector2 vector2_19 = center6 + new Vector2((float) (this.direction * 30), 12f); for (int index12 = 0; (double) index12 < 5.0; ++index12) { Vector2 vector2_20 = (vec8 * (float) (6.0 + Main.rand.NextDouble() * 4.0)).RotatedByRandom(1.25663709640503); Projectile.NewProjectile(vector2_19.X, vector2_19.Y, vector2_20.X, vector2_20.Y, 468, 18, 0.0f, Main.myPlayer); } } } } int num28 = Math.Sign(player.Center.X - center1.X); if (num28 != 0) this.direction = this.spriteDirection = num28; if (Main.netMode != 1) { Vector2 vec9 = Vector2.Normalize(player.Center - center1 + player.velocity * 20f); if (vec9.HasNaNs()) vec9 = new Vector2((float) this.direction, 0.0f); Vector2 vector2_21 = this.Center + new Vector2((float) (this.direction * 30), 12f); float num29 = 8f; float num30 = 0.2513274f; for (int index13 = 0; (double) index13 < 5.0; ++index13) { Vector2 vector2_22 = (vec9 * num29).RotatedBy((double) num30 * (double) index13 - (1.25663709640503 - (double) num30) / 2.0); float ai1 = (float) (((double) Main.rand.NextFloat() - 0.5) * 0.300000011920929 * 6.28318548202515 / 60.0); int index14 = NPC.NewNPC((int) vector2_21.X, (int) vector2_21.Y + 7, 522, ai1: ai1, ai2: vector2_22.X, ai3: vector2_22.Y); Main.npc[index14].velocity = vector2_22; } } } ++this.ai[1]; if ((double) this.ai[1] >= (double) (4 + num5 * num6)) { this.ai[0] = 0.0f; this.ai[1] = 0.0f; ++this.ai[3]; this.velocity = Vector2.Zero; this.netUpdate = true; } } else if ((double) this.ai[0] == 8.0) { this.localAI[2] = 13f; if ((double) this.ai[1] >= 4.0 & flag2 && (int) ((double) this.ai[1] - 4.0) % num7 == 0) { List intList = new List(); for (int index = 0; index < 200; ++index) { if (Main.npc[index].active && Main.npc[index].type == 440 && (double) Main.npc[index].ai[3] == (double) this.whoAmI) intList.Add(index); } int num31 = intList.Count + 1; if (num31 > 3) num31 = 3; int num32 = Math.Sign(player.Center.X - center1.X); if (num32 != 0) this.direction = this.spriteDirection = num32; if (Main.netMode != 1) { for (int index15 = 0; index15 < num31; ++index15) { Point tileCoordinates1 = this.Center.ToTileCoordinates(); Point tileCoordinates2 = Main.player[this.target].Center.ToTileCoordinates(); Vector2 vector2 = Main.player[this.target].Center - this.Center; int num33 = 20; int num34 = 3; int num35 = 7; int num36 = 2; int num37 = 0; bool flag6 = false; if ((double) vector2.Length() > 2000.0) flag6 = true; while (!flag6 && num37 < 100) { ++num37; int index16 = Main.rand.Next(tileCoordinates2.X - num33, tileCoordinates2.X + num33 + 1); int index17 = Main.rand.Next(tileCoordinates2.Y - num33, tileCoordinates2.Y + num33 + 1); if ((index17 < tileCoordinates2.Y - num35 || index17 > tileCoordinates2.Y + num35 || index16 < tileCoordinates2.X - num35 || index16 > tileCoordinates2.X + num35) && (index17 < tileCoordinates1.Y - num34 || index17 > tileCoordinates1.Y + num34 || index16 < tileCoordinates1.X - num34 || index16 > tileCoordinates1.X + num34) && !Main.tile[index16, index17].nactive()) { bool flag7 = true; if (flag7 && Collision.SolidTiles(index16 - num36, index16 + num36, index17 - num36, index17 + num36)) flag7 = false; if (flag7) { NPC.NewNPC(index16 * 16 + 8, index17 * 16 + 8, 523, ai0: ((float) this.whoAmI)); break; } } } } } } ++this.ai[1]; if ((double) this.ai[1] >= (double) (4 + num7 * num8)) { this.ai[0] = 0.0f; this.ai[1] = 0.0f; ++this.ai[3]; this.velocity = Vector2.Zero; this.netUpdate = true; } } if (!flag2) this.ai[3] = num10; this.dontTakeDamage = flag3; this.chaseable = !flag4; } private void AI_108_DivingFlyer() { this.rotation = this.velocity.ToRotation(); float num1 = 0.4f; float num2 = 10f; float num3 = 200f; float num4 = 750f; float num5 = 30f; float num6 = 30f; float num7 = 0.95f; int num8 = 50; float num9 = 14f; float num10 = 30f; float num11 = 100f; float num12 = 20f; float num13 = 0.0f; float num14 = 7f; bool flag1 = true; bool flag2 = true; int num15 = 120; bool flag3 = false; bool flag4 = false; float num16 = 0.05f; float num17 = 0.0f; bool flag5 = false; switch (this.type) { case 558: case 559: case 560: flag4 = true; num1 = 0.7f; if (this.type == 559) num1 = 0.5f; if (this.type == 560) num1 = 0.2f; num2 = 3f; num3 = 400f; num4 = 500f; num5 = 90f; num6 = 20f; num7 = 0.95f; num8 = 0; num9 = 8f; num10 = 30f; num11 = 150f; num12 = 60f; num13 = 0.05f; num14 = 6f; flag2 = false; flag5 = true; break; case 574: case 575: flag4 = true; num1 = 0.6f; if (this.type == 575) num1 = 0.4f; num2 = 4f; num3 = 400f; num4 = 500f; num5 = 90f; num6 = 30f; num7 = 0.95f; num8 = 3; num9 = 8f; num10 = 30f; num11 = 150f; num12 = 10f; num13 = 0.05f; num14 = 0.0f; num17 = -0.1f; flag3 = true; flag5 = true; break; } NPCUtils.TargetClosestOldOnesInvasion(this); NPCAimedTarget targetData = this.GetTargetData(); if (flag5) { if ((double) this.localAI[0] == 0.0) this.alpha = (int) byte.MaxValue; if ((double) this.localAI[0] == 30.0) Main.PlayTrackedSound((SoundStyle) SoundID.DD2_EtherianPortalSpawnEnemy, this.Center); if ((double) this.localAI[0] < 60.0) { ++this.localAI[0]; this.alpha -= 5; if (this.alpha < 0) this.alpha = 0; int num18 = (int) this.localAI[0] / 10; float num19 = this.Size.Length() / 2f / 20f; int maxValue = 5; if (this.type == 576 || this.type == 577) maxValue = 1; for (int index = 0; index < num18; ++index) { if (Main.rand.Next(maxValue) == 0) { Dust dust = Dust.NewDustDirect(this.position, this.width, this.height, 27, this.velocity.X * 1f, Alpha: 100); dust.scale = 0.55f; dust.fadeIn = 0.7f; dust.velocity *= 0.1f * num19; dust.velocity += this.velocity; } } } } if (flag4) { for (int index = 0; index < 200; ++index) { if (index != this.whoAmI && Main.npc[index].active && Main.npc[index].type == this.type && (double) Math.Abs(this.position.X - Main.npc[index].position.X) + (double) Math.Abs(this.position.Y - Main.npc[index].position.Y) < (double) this.width) { if ((double) this.position.X < (double) Main.npc[index].position.X) this.velocity.X -= num16; else this.velocity.X += num16; if ((double) this.position.Y < (double) Main.npc[index].position.Y) this.velocity.Y -= num16; else this.velocity.Y += num16; } } } if (Math.Sign(this.velocity.X) != 0) this.spriteDirection = -Math.Sign(this.velocity.X); if ((double) this.rotation < -1.57079637050629) this.rotation += 3.141593f; if ((double) this.rotation > 1.57079637050629) this.rotation -= 3.141593f; float num20 = num13 * num12; if (Main.expertMode) num1 *= Main.expertKnockBack; SlotId slotId; if ((double) this.ai[0] == 0.0) { this.knockBackResist = num1; float num21 = num2; Vector2 center = this.Center; Vector2 vector2_1 = targetData.Center - center; Vector2 vector2_2 = vector2_1 - Vector2.UnitY * num3; double num22 = (double) vector2_1.Length(); Vector2 v = Vector2.Normalize(vector2_1) * num21; Vector2 vector2_3 = Vector2.Normalize(vector2_2) * num21; bool flag6 = Collision.CanHit(this.Center, 1, 1, targetData.Center, 1, 1); if ((double) this.ai[3] >= (double) num15) flag6 = true; float num23 = 8f; bool flag7 = flag6 && (double) v.ToRotation() > 3.14159274101257 / (double) num23 && (double) v.ToRotation() < 3.14159274101257 - 3.14159274101257 / (double) num23; double num24 = (double) num4; if (num22 > num24 || !flag7) { this.velocity.X = (this.velocity.X * (num5 - 1f) + vector2_3.X) / num5; this.velocity.Y = (this.velocity.Y * (num5 - 1f) + vector2_3.Y) / num5; if (!flag7) { ++this.ai[3]; if ((double) this.ai[3] == (double) num15) this.netUpdate = true; } else this.ai[3] = 0.0f; } else { this.ai[0] = 1f; this.ai[2] = v.X; this.ai[3] = v.Y; this.netUpdate = true; } } else if ((double) this.ai[0] == 1.0) { this.knockBackResist = 0.0f; this.velocity = this.velocity * num7; this.velocity.Y += num17; ++this.ai[1]; if ((double) this.ai[1] == (double) num6) { if (this.type == 558 || this.type == 559 || this.type == 560) { float[] localAi1 = this.localAI; slotId = Main.PlayTrackedSound((SoundStyle) SoundID.DD2_WyvernDiveDown, this.Center); double num25 = (double) ((SlotId) ref slotId).ToFloat(); localAi1[1] = (float) num25; if (Main.rand.Next(5) == 0) { float[] localAi2 = this.localAI; slotId = Main.PlayTrackedSound((SoundStyle) SoundID.DD2_WyvernScream, this.Center); double num26 = (double) ((SlotId) ref slotId).ToFloat(); localAi2[2] = (float) num26; } } else if (this.type == 574 || this.type == 575) { float[] localAi = this.localAI; slotId = Main.PlayTrackedSound((SoundStyle) SoundID.DD2_KoboldFlyerChargeScream, this.Center); double num27 = (double) ((SlotId) ref slotId).ToFloat(); localAi[1] = (float) num27; Main.PlayTrackedSound((SoundStyle) SoundID.DD2_KoboldIgnite, this.Center); } } if ((double) this.ai[1] >= (double) num6) { this.ai[0] = 2f; this.ai[1] = 0.0f; this.netUpdate = true; Vector2 vector2 = new Vector2(this.ai[2], this.ai[3]) + new Vector2((float) Main.rand.Next(-num8, num8 + 1), (float) Main.rand.Next(-num8, num8 + 1)) * 0.04f; vector2.Normalize(); this.velocity = vector2 * num9; } } else if ((double) this.ai[0] == 2.0) { if ((double) this.ai[1] >= 20.0 && (this.type == 574 || this.type == 575)) { ActiveSound activeSound = Main.GetActiveSound(SlotId.FromFloat(this.localAI[2])); if (activeSound == null) { float[] localAi = this.localAI; slotId = Main.PlayTrackedSound((SoundStyle) SoundID.DD2_KoboldIgniteLoop, this.Center); double num28 = (double) ((SlotId) ref slotId).ToFloat(); localAi[2] = (float) num28; } else activeSound.Position = this.Center; } this.knockBackResist = 0.0f; float num29 = num10; ++this.ai[1]; bool flag8 = (double) Vector2.Distance(this.Center, targetData.Center) > (double) num11 && (double) this.Center.Y > (double) targetData.Center.Y; if (flag3) flag8 = false; if ((double) this.ai[1] >= (double) num29 & flag8 || (double) this.velocity.Length() < (double) num14) { this.ai[0] = 0.0f; this.ai[1] = 0.0f; this.ai[2] = 0.0f; this.ai[3] = 0.0f; this.velocity = this.velocity / 2f; this.netUpdate = true; if (flag1) { this.ai[1] = 45f; this.ai[0] = 4f; } } else { Vector2 center = this.Center; Vector2 vec = targetData.Center - center; vec.Normalize(); if (vec.HasNaNs()) vec = new Vector2((float) this.direction, 0.0f); this.velocity = (this.velocity * (num12 - 1f) + vec * (this.velocity.Length() + num20)) / num12; } if (flag2 && Collision.SolidCollision(this.position, this.width, this.height)) { this.ai[0] = 3f; this.ai[1] = 0.0f; this.ai[2] = 0.0f; this.ai[3] = 0.0f; this.netUpdate = true; } } else if ((double) this.ai[0] == 4.0) { this.ai[1] -= 3f; if ((double) this.ai[1] <= 0.0) { this.ai[0] = 0.0f; this.ai[1] = 0.0f; this.netUpdate = true; } this.velocity = this.velocity * 0.95f; } ActiveSound activeSound1 = Main.GetActiveSound(SlotId.FromFloat(this.localAI[1])); if (activeSound1 != null) { activeSound1.Position = this.Center; } else { float[] localAi = this.localAI; slotId = (SlotId) SlotId.Invalid; double num30 = (double) ((SlotId) ref slotId).ToFloat(); localAi[1] = (float) num30; } if (this.type == 558 || this.type == 559 || this.type == 560) { ActiveSound activeSound2 = Main.GetActiveSound(SlotId.FromFloat(this.localAI[2])); if (activeSound2 != null) { activeSound2.Position = this.Center; } else { float[] localAi = this.localAI; slotId = (SlotId) SlotId.Invalid; double num31 = (double) ((SlotId) ref slotId).ToFloat(); localAi[2] = (float) num31; } } if (flag2 && (double) this.ai[0] != 3.0 && (double) Vector2.Distance(this.Center, targetData.Center) < 64.0) { this.ai[0] = 3f; this.ai[1] = 0.0f; this.ai[2] = 0.0f; this.ai[3] = 0.0f; this.netUpdate = true; } if ((double) this.ai[0] != 3.0) return; this.position = this.Center; this.width = this.height = 192; this.position.X -= (float) (this.width / 2); this.position.Y -= (float) (this.height / 2); this.velocity = Vector2.Zero; this.damage = (int) (80.0 * (double) Main.damageMultiplier); this.alpha = (int) byte.MaxValue; if ((double) this.ai[1] == 0.0 && (this.type == 574 || this.type == 575)) { for (int index1 = 0; index1 < 4; ++index1) { int index2 = Dust.NewDust(new Vector2(this.position.X, this.position.Y), this.width, this.height, 31, Alpha: 100, Scale: 1.5f); Main.dust[index2].position = this.Center + Vector2.UnitY.RotatedByRandom(3.14159274101257) * (float) Main.rand.NextDouble() * (float) this.width / 2f; } for (int index3 = 0; index3 < 20; ++index3) { int index4 = Dust.NewDust(new Vector2(this.position.X, this.position.Y), this.width, this.height, 6, Alpha: 200, Scale: 3.7f); Main.dust[index4].position = this.Center + Vector2.UnitY.RotatedByRandom(3.14159274101257) * (float) Main.rand.NextDouble() * (float) this.width / 2f; Main.dust[index4].noGravity = true; Main.dust[index4].velocity *= 3f; int index5 = Dust.NewDust(new Vector2(this.position.X, this.position.Y), this.width, this.height, 6, Alpha: 100, Scale: 1.5f); Main.dust[index5].position = this.Center + Vector2.UnitY.RotatedByRandom(3.14159274101257) * (float) Main.rand.NextDouble() * (float) this.width / 4f; Main.dust[index5].velocity *= 2f; Main.dust[index5].noGravity = true; Main.dust[index5].fadeIn = 2.5f; } for (int index6 = 0; index6 < 6; ++index6) { int index7 = Dust.NewDust(new Vector2(this.position.X, this.position.Y), this.width, this.height, 6, Scale: 2.7f); Main.dust[index7].position = this.Center + Vector2.UnitX.RotatedByRandom(3.14159274101257).RotatedBy((double) this.velocity.ToRotation()) * (float) this.width / 2f; Main.dust[index7].noGravity = true; Main.dust[index7].velocity *= 3f; } for (int index8 = 0; index8 < 12; ++index8) { int index9 = Dust.NewDust(new Vector2(this.position.X, this.position.Y), this.width, this.height, 31, Scale: 1.5f); Main.dust[index9].position = this.Center + Vector2.UnitX.RotatedByRandom(3.14159274101257).RotatedBy((double) this.velocity.ToRotation()) * (float) this.width / 2f; Main.dust[index9].noGravity = true; Main.dust[index9].velocity *= 3f; } for (int index10 = 0; index10 < 5; ++index10) { int index11 = Gore.NewGore(this.position + new Vector2((float) (this.width * Main.rand.Next(100)) / 100f, (float) (this.height * Main.rand.Next(100)) / 100f) - Vector2.One * 10f, new Vector2(), Main.rand.Next(61, 64)); Main.gore[index11].position = this.Center + Vector2.UnitY.RotatedByRandom(3.14159274101257) * (float) Main.rand.NextDouble() * (float) this.width / 2f; Main.gore[index11].velocity *= 0.3f; Main.gore[index11].velocity.X += (float) Main.rand.Next(-10, 11) * 0.05f; Main.gore[index11].velocity.Y += (float) Main.rand.Next(-10, 11) * 0.05f; } } ++this.ai[1]; if ((double) this.ai[1] < 3.0) return; Main.PlaySound(SoundID.Item14, this.position); this.life = 0; this.HitEffect(); this.active = false; } private void AI_109_DarkMage() { bool flag1 = false; bool flag2 = false; bool flag3 = true; bool flag4 = false; int num1 = 4; int num2 = 3; int num3 = 0; float num4 = 0.2f; float num5 = 2f; float num6 = -0.2f; float num7 = -4f; bool flag5 = true; float num8 = 2f; float num9 = 0.1f; float num10 = 1f; float num11 = 0.04f; bool flag6 = false; float num12 = 0.96f; bool flag7 = true; NPCAimedTarget targetData = this.GetTargetData(); if (this.type == 564 || this.type == 565) { flag5 = false; this.rotation = this.velocity.X * 0.04f; this.spriteDirection = this.direction > 0 ? 1 : -1; num3 = 2; num6 = -0.05f; num7 = -0.4f; num4 = 0.05f; num5 = 0.2f; num10 = 0.5f; num11 = 0.02f; num8 = 0.5f; num9 = 0.1f; this.localAI[2] = 0.0f; DelegateMethods.v3_1 = new Vector3(0.3f, 0.05f, 0.45f) * 1.5f; Utils.PlotTileLine(this.Top, this.Bottom, (float) this.width, new Utils.PerLinePoint(DelegateMethods.CastLightOpen)); if ((double) this.ai[0] < 0.0) this.ai[0] = MathHelper.Min(this.ai[0] + 1f, 0.0f); if ((double) this.ai[0] > 0.0) { flag7 = false; flag6 = true; num12 = 0.9f; --this.ai[0]; if ((double) this.ai[0] == 80.0 && (double) this.ai[1] == 2.0) Main.PlayTrackedSound((SoundStyle) SoundID.DD2_DarkMageSummonSkeleton, this.Center); if ((double) this.ai[1] == 2.0 && (double) this.ai[0] == 64.0 && Main.netMode != 1) { Projectile.NewProjectile(this.Center + new Vector2((float) (this.direction * 24), -40f), Vector2.Zero, 673, 0, 0.0f, Main.myPlayer); DD2Event.RaiseGoblins(this.Center); } if ((double) this.ai[1] == 0.0 && (double) this.ai[0] == 32.0) { Vector2 velocity = (targetData.Center - (this.Center + new Vector2((float) (this.direction * 10), -16f))).SafeNormalize(Vector2.UnitY) * 14f; this.direction = (double) velocity.X > 0.0 ? 1 : -1; if (Main.netMode != 1) Projectile.NewProjectile(this.Center + new Vector2((float) (this.direction * 10), -16f), velocity, 675, 40, 0.0f, Main.myPlayer); } if ((double) this.ai[0] == 126.0 && (double) this.ai[1] == 1.0) Main.PlayTrackedSound((SoundStyle) SoundID.DD2_DarkMageCastHeal, this.Center); if ((double) this.ai[1] == 1.0 && Main.netMode != 1 && ((double) this.ai[0] == 40.0 || (double) this.ai[0] == 48.0 || (double) this.ai[0] == 56.0)) { Point result; if (WorldUtils.Find(new Vector2(this.Center.X + (float) (this.direction * 240), this.Center.Y).ToTileCoordinates(), Searches.Chain((GenSearch) new Searches.Down(50), (GenCondition) new Conditions.IsSolid()), out result)) Projectile.NewProjectile(result.ToWorldCoordinates(autoAddY: 0.0f), Vector2.Zero, 674, 0, 0.0f, Main.myPlayer); } if ((double) this.ai[0] <= 0.0) { double num13 = (double) this.ai[1]; ++this.ai[1]; if ((double) this.ai[1] >= 3.0) this.ai[1] = 0.0f; this.ai[0] = -120f; if (num13 == 0.0) this.ai[0] = -20f; this.netUpdate = true; } } if ((double) this.ai[0] == 0.0 && (double) this.localAI[3] >= 60.0) { bool flag8 = false; Vector2 minimum = this.Center + new Vector2(-600f, -200f); Vector2 maximum = this.Center + new Vector2(600f, 200f); int num14 = 0; for (int index = 0; index < 200; ++index) { NPC npc = Main.npc[index]; if (npc.active && npc.lifeMax != npc.life && npc.Center.Between(minimum, maximum) && ++num14 >= 2) { flag8 = true; break; } } if (!flag8) this.ai[1] = 2f; if ((double) this.ai[1] == 2.0 && !DD2Event.CanRaiseGoblinsHere(this.Center)) this.ai[1] = 0.0f; bool flag9 = true; if ((double) this.ai[1] == 0.0 && ((double) this.Distance(targetData.Center) >= 1000.0 || !Collision.CanHitLine(this.Center, 0, 0, targetData.Center, 0, 0))) flag9 = false; if (flag9) { switch ((int) this.ai[1]) { case 0: this.ai[0] = 97f; break; case 1: this.ai[0] = (float) sbyte.MaxValue; break; case 2: this.ai[0] = 183f; break; } this.netUpdate = true; flag6 = true; } } if ((double) this.localAI[3] == 0.0) this.alpha = (int) byte.MaxValue; if ((double) this.localAI[3] == 30.0) Main.PlayTrackedSound((SoundStyle) SoundID.DD2_EtherianPortalSpawnEnemy, this.Center); if ((double) this.localAI[3] < 60.0) { ++this.localAI[3]; this.alpha -= 5; if (this.alpha < 0) this.alpha = 0; int num15 = (int) this.localAI[3] / 10; float num16 = this.Size.Length() / 2f / 20f; int maxValue = 5; if (this.type == 576 || this.type == 577) maxValue = 1; for (int index = 0; index < num15; ++index) { if (Main.rand.Next(maxValue) == 0) { Dust dust = Dust.NewDustDirect(this.position, this.width, this.height, 27, this.velocity.X * 1f, Alpha: 100); dust.scale = 0.55f; dust.fadeIn = 0.7f; dust.velocity *= 0.1f * num16; dust.velocity += this.velocity; } } } } if (this.justHit) this.localAI[2] = 0.0f; if (!flag2) { if ((double) this.localAI[2] >= 0.0) { float num17 = 16f; bool flag10 = false; bool flag11 = false; if ((double) this.position.X > (double) this.localAI[0] - (double) num17 && (double) this.position.X < (double) this.localAI[0] + (double) num17) flag10 = true; else if ((double) this.velocity.X < 0.0 && this.direction > 0 || (double) this.velocity.X > 0.0 && this.direction < 0) { flag10 = true; num17 += 24f; } if ((double) this.position.Y > (double) this.localAI[1] - (double) num17 && (double) this.position.Y < (double) this.localAI[1] + (double) num17) flag11 = true; if (flag10 & flag11) { ++this.localAI[2]; if ((double) this.localAI[2] >= 30.0 && (double) num17 == 16.0) flag1 = true; if ((double) this.localAI[2] >= 60.0) { this.localAI[2] = -180f; this.direction *= -1; this.velocity.X *= -1f; this.collideX = false; } } else { this.localAI[0] = this.position.X; this.localAI[1] = this.position.Y; this.localAI[2] = 0.0f; } if (flag7) NPCUtils.TargetClosestOldOnesInvasion(this); } else { ++this.localAI[2]; this.direction = (double) targetData.Center.X > (double) this.Center.X ? 1 : -1; } } int index1 = (int) (((double) this.position.X + (double) (this.width / 2)) / 16.0) + this.direction * 2; int num18 = (int) (((double) this.position.Y + (double) this.height) / 16.0); int num19 = (int) this.Bottom.Y / 16; int index2 = (int) this.Bottom.X / 16; if (flag6) { this.velocity = this.velocity * num12; } else { for (int index3 = num18; index3 < num18 + num1; ++index3) { if (Main.tile[index1, index3] == null) Main.tile[index1, index3] = new Tile(); if (Main.tile[index1, index3].nactive() && Main.tileSolid[(int) Main.tile[index1, index3].type] || Main.tile[index1, index3].liquid > (byte) 0) { if (index3 <= num18 + 1) flag4 = true; flag3 = false; break; } } for (int index4 = num19; index4 < num19 + num3; ++index4) { if (Main.tile[index2, index4] == null) Main.tile[index2, index4] = new Tile(); if (Main.tile[index2, index4].nactive() && Main.tileSolid[(int) Main.tile[index2, index4].type] || Main.tile[index2, index4].liquid > (byte) 0) { flag4 = true; flag3 = false; break; } } if (flag5) { for (int index5 = num18 - num2; index5 < num18; ++index5) { if (Main.tile[index1, index5] == null) Main.tile[index1, index5] = new Tile(); if (Main.tile[index1, index5].nactive() && Main.tileSolid[(int) Main.tile[index1, index5].type] || Main.tile[index1, index5].liquid > (byte) 0) { flag4 = false; flag1 = true; break; } } } if (flag1) { flag4 = false; flag3 = true; } if (flag3) { this.velocity.Y += num4; if ((double) this.velocity.Y > (double) num5) this.velocity.Y = num5; } else { if (((this.directionY >= 0 ? 0 : ((double) this.velocity.Y > 0.0 ? 1 : 0)) | (flag4 ? 1 : 0)) != 0) this.velocity.Y += num6; if ((double) this.velocity.Y < (double) num7) this.velocity.Y = num7; } if (this.collideX) { this.velocity.X = this.oldVelocity.X * -0.4f; if (this.direction == -1 && (double) this.velocity.X > 0.0 && (double) this.velocity.X < 1.0) this.velocity.X = 1f; if (this.direction == 1 && (double) this.velocity.X < 0.0 && (double) this.velocity.X > -1.0) this.velocity.X = -1f; } if (this.collideY) { this.velocity.Y = this.oldVelocity.Y * -0.25f; if ((double) this.velocity.Y > 0.0 && (double) this.velocity.Y < 1.0) this.velocity.Y = 1f; if ((double) this.velocity.Y < 0.0 && (double) this.velocity.Y > -1.0) this.velocity.Y = -1f; } if (this.direction == -1 && (double) this.velocity.X > -(double) num8) { this.velocity.X -= num9; if ((double) this.velocity.X > (double) num8) this.velocity.X -= num9; else if ((double) this.velocity.X > 0.0) this.velocity.X += num9 / 2f; if ((double) this.velocity.X < -(double) num8) this.velocity.X = -num8; } else if (this.direction == 1 && (double) this.velocity.X < (double) num8) { this.velocity.X += num9; if ((double) this.velocity.X < -(double) num8) this.velocity.X += num9; else if ((double) this.velocity.X < 0.0) this.velocity.X -= num9 / 2f; if ((double) this.velocity.X > (double) num8) this.velocity.X = num8; } if (this.directionY == -1 && (double) this.velocity.Y > -(double) num10) { this.velocity.Y -= num11; if ((double) this.velocity.Y > (double) num10) this.velocity.Y -= num11 * 1.25f; else if ((double) this.velocity.Y > 0.0) this.velocity.Y += num11 * 0.75f; if ((double) this.velocity.Y >= -(double) num10) return; this.velocity.Y = -num8; } else { if (this.directionY != 1 || (double) this.velocity.Y >= (double) num10) return; this.velocity.Y += num11; if ((double) this.velocity.Y < -(double) num10) this.velocity.Y += num11 * 1.25f; else if ((double) this.velocity.Y < 0.0) this.velocity.Y -= num11 * 0.75f; if ((double) this.velocity.Y <= (double) num10) return; this.velocity.Y = num10; } } } private void AI_111_DD2LightningBug() { bool flag1 = true; float num1 = 7f; float num2 = 60f; float num3 = 60f; float num4 = 1f; float num5 = 0.96f; int num6 = 30; int num7 = 20; float num8 = 200f; int Damage = 40; int Type = 438; float num9 = 10f; float num10 = 100f; bool flag2 = false; float num11 = 0.05f; Vector2 center = this.Center; NPCUtils.TargetClosestOldOnesInvasion(this); NPCAimedTarget targetData = this.GetTargetData(); bool flag3 = false; if (this.type == 578) { num1 = 4f; num2 = 20f; num3 = 20f; flag3 = true; flag2 = true; num11 = 0.1f; Type = 682; Damage = 10; num9 = 10f; num10 = 50f; num6 = 5; num7 = 30; center += new Vector2((float) (-this.spriteDirection * 20), 10f); if (Main.rand.Next(15) == 0) { Vector2 position = this.position; if (this.direction == -1) position.X += (float) (this.width / 2); Dust dust = Dust.NewDustDirect(position, this.width / 2, this.height, 272); dust.scale = 0.65f; dust.velocity.Y -= 0.8f; if ((double) dust.velocity.X * (double) this.direction > 0.0) dust.velocity.X *= -1f; if ((double) dust.velocity.Y > 0.0) dust.velocity *= -0.5f; } if (Main.rand.Next(80) == 0) { Vector2 rotationVector2 = (Main.rand.NextFloat() * 6.283185f).ToRotationVector2(); Dust dust1 = Dust.NewDustPerfect(this.Center, 272, new Vector2?(rotationVector2)); dust1.velocity *= 1.1f; dust1.noGravity = true; dust1.customData = (object) this; Dust dust2 = Dust.NewDustPerfect(this.Center, 272, new Vector2?(rotationVector2)); dust2.velocity *= 1.5f; dust2.noGravity = true; dust2.customData = (object) this; } } if (flag3) { if ((double) this.localAI[1] == 0.0) this.alpha = (int) byte.MaxValue; if ((double) this.localAI[1] == 30.0) Main.PlayTrackedSound((SoundStyle) SoundID.DD2_EtherianPortalSpawnEnemy, this.Center); if ((double) this.localAI[1] < 60.0) { ++this.localAI[1]; this.alpha -= 5; if (this.alpha < 0) this.alpha = 0; int num12 = (int) this.localAI[1] / 10; float num13 = this.Size.Length() / 2f / 20f; int maxValue = 5; if (this.type == 576 || this.type == 577) maxValue = 1; for (int index = 0; index < num12; ++index) { if (Main.rand.Next(maxValue) == 0) { Dust dust = Dust.NewDustDirect(this.position, this.width, this.height, 27, this.velocity.X * 1f, Alpha: 100); dust.scale = 0.55f; dust.fadeIn = 0.7f; dust.velocity *= 0.1f * num13; dust.velocity += this.velocity; } } } } if (flag2) { for (int index = 0; index < 200; ++index) { if (index != this.whoAmI && Main.npc[index].active && Main.npc[index].type == this.type && (double) Math.Abs(this.position.X - Main.npc[index].position.X) + (double) Math.Abs(this.position.Y - Main.npc[index].position.Y) < (double) this.width) { if ((double) this.position.X < (double) Main.npc[index].position.X) this.velocity.X -= num11; else this.velocity.X += num11; if ((double) this.position.Y < (double) Main.npc[index].position.Y) this.velocity.Y -= num11; else this.velocity.Y += num11; } } } this.rotation = (float) ((double) Math.Abs(this.velocity.X) * (double) this.direction * 0.100000001490116); this.spriteDirection = this.direction; Vector2 position1 = center; Vector2 v = targetData.Center - position1; Vector2 vector2_1 = v.SafeNormalize(Vector2.UnitY) * num1; bool flag4 = Collision.CanHit(this.Center, 1, 1, targetData.Center, 1, 1); if ((double) this.localAI[0] < 0.0) ++this.localAI[0]; if (!flag1) { this.velocity = (this.velocity * (num2 - 1f) + vector2_1) / num2; if (this.timeLeft <= 10) return; this.timeLeft = 10; } else if ((double) v.Length() > (double) num8 || !flag4) this.velocity = (this.velocity * (num3 - 1f) + vector2_1) / num3; else if ((double) v.Y < (double) num10) { this.velocity.Y -= 0.03f; } else { if ((double) this.localAI[0] < 0.0) return; this.velocity = this.velocity * num5; if ((double) this.velocity.Length() >= (double) num4 || Main.netMode == 1) return; ++this.localAI[0]; if ((double) this.localAI[0] < (double) num6) return; this.localAI[0] = (float) -num7; this.direction = this.spriteDirection = (double) vector2_1.X > 0.0 ? 1 : -1; Vector2 vector2_2 = v + Utils.RandomVector2(Main.rand, -25f, 25f); vector2_2.X *= (float) (1.0 + (double) Main.rand.Next(-20, 21) * 0.00499999988824129); vector2_2.Y *= (float) (1.0 + (double) Main.rand.Next(-20, 21) * 0.00499999988824129); vector2_2 = vector2_2.SafeNormalize(Vector2.UnitY) * num9; vector2_2.X *= (float) (1.0 + (double) Main.rand.Next(-20, 21) * (1.0 / 160.0)); vector2_2.Y *= (float) (1.0 + (double) Main.rand.Next(-20, 21) * (1.0 / 160.0)); Projectile.NewProjectile(position1, vector2_2, Type, Damage, 0.0f, Main.myPlayer); } } public void ReflectProjectiles(Microsoft.Xna.Framework.Rectangle myRect) { for (int i = 0; i < 1000; ++i) { if (Main.projectile[i].active && Main.projectile[i].CanReflect()) { Microsoft.Xna.Framework.Rectangle hitbox = Main.projectile[i].Hitbox; if (myRect.Intersects(hitbox)) this.ReflectProjectile(i); } } } public void ReflectProjectile(int i) { if (this.HitSound != null) Main.PlaySound(this.HitSound, Main.projectile[i].position); for (int index1 = 0; index1 < 3; ++index1) { int index2 = Dust.NewDust(Main.projectile[i].position, Main.projectile[i].width, Main.projectile[i].height, 31); Main.dust[index2].velocity *= 0.3f; } Main.projectile[i].hostile = true; Main.projectile[i].friendly = false; Vector2 vector2_1 = Main.player[Main.projectile[i].owner].Center - Main.projectile[i].Center; vector2_1.Normalize(); Vector2 vector2_2 = vector2_1 * Main.projectile[i].oldVelocity.Length(); Main.projectile[i].velocity = new Vector2((float) Main.rand.Next(-100, 101), (float) Main.rand.Next(-100, 101)); Main.projectile[i].velocity.Normalize(); Projectile projectile1 = Main.projectile[i]; projectile1.velocity = projectile1.velocity * vector2_2.Length(); Projectile projectile2 = Main.projectile[i]; projectile2.velocity = projectile2.velocity + vector2_2 * 20f; Main.projectile[i].velocity.Normalize(); Projectile projectile3 = Main.projectile[i]; projectile3.velocity = projectile3.velocity * vector2_2.Length(); Main.projectile[i].damage /= 2; Main.projectile[i].penetrate = 1; } public int GetShootingFrame(float circleY) { int num = -4; if ((double) circleY < -0.300000011920929) num = 1; if ((double) circleY < -0.100000001490116) num = 0; if ((double) circleY > 0.100000001490116) num = 2; if ((double) circleY > 0.300000011920929) num = 3; if (this.type == 228 || this.type == 229 || this.type == 209 || this.type == 22 || this.type == 368) { if (num == -4) num = 1; if ((double) circleY >= -0.100000001490116) ++num; } return num; } public Tuple GetSwingStats( int swingMax, int swingCurrent, int aimDir, int itemWidth, int itemHeight) { Vector2 zero = Vector2.Zero; if ((double) swingCurrent < (double) swingMax * 0.333) { float num = 10f; if (itemWidth > 32) num = 14f; if (itemWidth >= 52) num = 24f; if (itemWidth >= 64) num = 28f; if (itemWidth >= 92) num = 38f; zero.X = this.Center.X + ((float) itemWidth * 0.5f - num) * (float) aimDir; zero.Y = this.position.Y + 24f; } else if ((double) swingCurrent < (double) swingMax * 0.666) { float num1 = 10f; if (itemWidth > 32) num1 = 18f; if (itemWidth >= 52) num1 = 24f; if (itemWidth >= 64) num1 = 28f; if (itemWidth >= 92) num1 = 38f; zero.X = this.Center.X + ((float) itemWidth * 0.5f - num1) * (float) aimDir; float num2 = 10f; if (itemHeight > 32) num2 = 8f; if (itemHeight > 52) num2 = 12f; if (itemHeight > 64) num2 = 14f; zero.Y = this.position.Y + num2; } else { float num3 = 6f; if (itemWidth > 32) num3 = 14f; if (itemWidth >= 48) num3 = 18f; if (itemWidth >= 52) num3 = 24f; if (itemWidth >= 64) num3 = 28f; if (itemWidth >= 92) num3 = 38f; zero.X = this.Center.X - ((float) itemWidth * 0.5f - num3) * (float) aimDir; float num4 = 10f; if (itemHeight > 32) num4 = 10f; if (itemHeight > 52) num4 = 12f; if (itemHeight > 64) num4 = 14f; zero.Y = this.position.Y + num4; } float num5 = (float) (((double) swingCurrent / (double) swingMax - 0.5) * (double) -aimDir * 3.5 - (double) aimDir * 0.300000011920929); return Tuple.Create(zero, num5); } public void TweakSwingStats( int swingMax, int swingCurrent, int aimDir, ref Microsoft.Xna.Framework.Rectangle itemRectangle) { if ((double) swingCurrent < (double) swingMax * 0.333) { if (aimDir == -1) itemRectangle.X -= (int) ((double) itemRectangle.Width * 1.4 - (double) itemRectangle.Width); itemRectangle.Width = (int) ((double) itemRectangle.Width * 1.4); itemRectangle.Y += (int) ((double) itemRectangle.Height * 0.5); itemRectangle.Height = (int) ((double) itemRectangle.Height * 1.1); } else { if ((double) swingCurrent < (double) swingMax * 0.666) return; if (aimDir == 1) itemRectangle.X -= (int) ((double) itemRectangle.Width * 1.2); itemRectangle.Width *= 2; itemRectangle.Y -= (int) ((double) itemRectangle.Height * 1.4 - (double) itemRectangle.Height); itemRectangle.Height = (int) ((double) itemRectangle.Height * 1.4); } } public bool UsesPartyHat() => this.frame.Height > 0 && this.townNPC && BirthdayParty.PartyIsUp && this.type != 441 && this.type != 37; public PartyHatColor GetPartyHatColor() { if (!this.UsesPartyHat() || string.IsNullOrEmpty(this.GivenOrTypeName)) return PartyHatColor.None; int num1 = this.GivenOrTypeName.Length + (int) this.GivenOrTypeName[0]; int moonPhase = Main.moonPhase; if (Main.dayTime) --moonPhase; int num2 = num1 + this.whoAmI + moonPhase * (this.whoAmI % 2 == 0).ToDirectionInt(); if (num2 < 0) num2 += 5; return (PartyHatColor) (num2 % 5); } public void FindFrame() { int num1 = 1; if (!Main.dedServ) { if (!Main.NPCLoaded[this.type] || Main.npcTexture[this.type] == null) return; num1 = Main.npcTexture[this.type].Height / Main.npcFrameCount[this.type]; } int num2 = 0; if (this.aiAction == 0) num2 = (double) this.velocity.Y >= 0.0 ? ((double) this.velocity.Y <= 0.0 ? ((double) this.velocity.X == 0.0 ? 0 : 1) : 3) : 2; else if (this.aiAction == 1) num2 = 4; if (this.type == 568 || this.type == 569) { if ((double) this.ai[0] > 0.0) { int num3 = this.frame.Y / this.frame.Height; this.spriteDirection = this.direction; if (num3 < 5 || num3 > 16) this.frameCounter = 0.0; int num4 = 7; ++this.frameCounter; int num5 = 0; int num6; if (this.frameCounter >= (double) (5 * (num6 = num5 + 1))) num4 = 8; int num7; if (this.frameCounter >= (double) (5 * (num7 = num6 + 1))) num4 = 9; int num8; if (this.frameCounter >= (double) (5 * (num8 = num7 + 1))) num4 = 10; int num9; if (this.frameCounter >= (double) (5 * (num9 = num8 + 1))) num4 = 7; int num10; if (this.frameCounter >= (double) (5 * (num10 = num9 + 1))) num4 = 8; int num11; if (this.frameCounter >= (double) (5 * (num11 = num10 + 1))) num4 = 9; int num12; if (this.frameCounter >= (double) (5 * (num12 = num11 + 1))) num4 = 10; int num13; if (this.frameCounter >= (double) (5 * (num13 = num12 + 1))) num4 = 7; int num14; if (this.frameCounter >= (double) (5 * (num14 = num13 + 1))) num4 = 8; int num15; if (this.frameCounter >= (double) (5 * (num15 = num14 + 1))) num4 = 9; int num16; if (this.frameCounter >= (double) (5 * (num16 = num15 + 1))) num4 = 10; int num17; if (this.frameCounter >= (double) (5 * (num17 = num16 + 1))) num4 = 7; int num18; if (this.frameCounter >= (double) (5 * (num18 = num17 + 1))) num4 = 8; int num19; if (this.frameCounter >= (double) (5 * (num19 = num18 + 1))) num4 = 9; int num20; if (this.frameCounter >= (double) (5 * (num20 = num19 + 1))) num4 = 10; int num21; if (this.frameCounter >= (double) (5 * (num21 = num20 + 1))) num4 = 7; int num22; if (this.frameCounter >= (double) (5 * (num22 = num21 + 1))) num4 = 8; int num23; if (this.frameCounter >= (double) (5 * (num23 = num22 + 1))) num4 = 9; int num24; if (this.frameCounter >= (double) (5 * (num24 = num23 + 1))) num4 = 10; int num25; if (this.frameCounter >= (double) (5 * (num25 = num24 + 1))) num4 = 7; int num26; if (this.frameCounter >= (double) (5 * (num26 = num25 + 1))) num4 = 8; int num27; if (this.frameCounter >= (double) (5 * (num27 = num26 + 1))) num4 = 9; int num28; if (this.frameCounter >= (double) (5 * (num28 = num27 + 1))) num4 = 10; int num29; if (this.frameCounter >= (double) (5 * (num29 = num28 + 1))) num4 = 11; int num30; if (this.frameCounter >= (double) (5 * (num30 = num29 + 1))) num4 = 12; int num31; if (this.frameCounter >= (double) (5 * (num31 = num30 + 1))) num4 = 13; int num32; if (this.frameCounter >= (double) (5 * (num32 = num31 + 1))) num4 = 14; if (this.frameCounter >= 270.0) { num4 = 14; this.frameCounter -= 10.0; } this.frame.Y = num1 * num4; } else { if ((double) this.velocity.Y == 0.0) this.spriteDirection = this.direction; if ((double) this.velocity.Y != 0.0 || this.direction == -1 && (double) this.velocity.X > 0.0 || this.direction == 1 && (double) this.velocity.X < 0.0) { this.frameCounter = 0.0; this.frame.Y = num1 * 4; } else if ((double) this.velocity.X == 0.0) { this.frameCounter = 0.0; this.frame.Y = num1 * 6; } else { this.frameCounter += (double) Math.Abs(this.velocity.X); if (this.frameCounter >= 56.0 || this.frameCounter < 0.0) this.frameCounter = 0.0; this.frame.Y = num1 * (int) (this.frameCounter / 8.0); } } } else if (this.type == 551) { int num33 = this.frame.Y / num1; int num34; if ((double) this.ai[0] == 4.0) { float num35 = 60f; int num36 = 6 * 10; if (num33 < 5) this.frameCounter = 0.0; num34 = 5; this.frameCounter = (double) (int) this.ai[1]; int num37 = 0; int num38; if (this.frameCounter >= (double) (5 * (num38 = num37 + 1))) num34 = 6; num38 = 0; if (this.frameCounter >= (double) num35 - 6.0) num34 = 7; if (this.frameCounter >= (double) num35 - 3.0) num34 = 8; if (this.frameCounter >= (double) num35) num34 = 9 + (int) this.frameCounter / 3 % 2; int num39 = 0; if (this.frameCounter >= (double) num35 + (double) num36 + 3.0) num34 = 8; int num40; if (this.frameCounter >= (double) num35 + (double) num36 + 3.0 + (double) (5 * (num40 = num39 + 1))) num34 = 7; if (this.frameCounter >= (double) num35 + (double) num36 + 3.0 + (double) (5 * (num38 = num40 + 1))) num34 = 0; } else if ((double) this.ai[0] == 3.0) { float num41 = 40f; float num42 = 80f; float num43 = num41 + num42; float num44 = 25f; if (num33 < 5) this.frameCounter = 0.0; num34 = 5; this.frameCounter = (double) (int) this.ai[1]; int num45 = 0; int num46; if (this.frameCounter >= (double) (5 * (num46 = num45 + 1))) num34 = 6; num46 = 0; if (this.frameCounter >= (double) num41 - 6.0) num34 = 7; if (this.frameCounter >= (double) num41 - 3.0) num34 = 8; if (this.frameCounter >= (double) num41) num34 = 9 + (int) this.frameCounter / 3 % 2; int num47 = 0; if (this.frameCounter >= (double) num43 - (double) num44 + 3.0) num34 = 8; int num48; if (this.frameCounter >= (double) num43 - (double) num44 + 3.0 + (double) (5 * (num48 = num47 + 1))) num34 = 7; if (this.frameCounter >= (double) num43 - (double) num44 + 3.0 + (double) (5 * (num46 = num48 + 1))) num34 = 0; } else if ((double) this.ai[0] == 5.0) num34 = 3; else if ((double) this.ai[0] == 6.0) { if (num33 > 4) this.frameCounter = 0.0; num34 = 1; this.frameCounter = (double) (int) this.ai[1]; int num49 = 0; int num50; if (this.frameCounter >= (double) (8 * (num50 = num49 + 1))) num34 = 2; int num51; if (this.frameCounter >= (double) (8 * (num51 = num50 + 1))) num34 = 3; int num52; if (this.frameCounter >= (double) (8 * (num52 = num51 + 1))) num34 = 4; int num53; if (this.frameCounter >= (double) (8 * (num53 = num52 + 1))) num34 = 3; int num54; if (this.frameCounter >= (double) (8 * (num54 = num53 + 1))) num34 = 4; int num55; if (this.frameCounter >= (double) (8 * (num55 = num54 + 1))) num34 = 3; int num56; if (this.frameCounter >= (double) (8 * (num56 = num55 + 1))) num34 = 2; int num57; if (this.frameCounter >= (double) (8 * (num57 = num56 + 1))) num34 = 1; int num58; if (this.frameCounter >= (double) (8 * (num58 = num57 + 1))) num34 = 0; } else num34 = 0; this.frame.Y = num1 * num34; } if (this.type == 552 || this.type == 553 || this.type == 554) { if ((double) this.ai[0] > 0.0) { this.spriteDirection = this.direction; if (this.frame.Y < num1 * 10 || this.frame.Y > num1 * 13 || (double) this.ai[1] == 29.0) { this.frame.Y = num1 * 10; this.frameCounter = 0.0; } if (++this.frameCounter >= 6.0 && this.frame.Y < num1 * 13) { this.frameCounter = 0.0; this.frame.Y += num1; } } else { if ((double) this.velocity.Y == 0.0) this.spriteDirection = this.direction; if ((double) this.velocity.Y != 0.0 || this.direction == -1 && (double) this.velocity.X > 0.0 || this.direction == 1 && (double) this.velocity.X < 0.0) { this.frameCounter = 0.0; this.frame.Y = num1 * 8; } else if ((double) this.velocity.X == 0.0) { this.frameCounter = 0.0; this.frame.Y = num1 * 9; } else { this.frameCounter += (double) Math.Abs(this.velocity.X); if (this.frameCounter >= 64.0 || this.frameCounter < 0.0) this.frameCounter = 0.0; this.frame.Y = num1 * (int) (this.frameCounter / 8.0); } } } if (this.type == 572 || this.type == 573) { if ((double) this.ai[0] > 0.0 && (double) this.ai[1] == 0.0) { this.spriteDirection = this.direction; if (this.frame.Y != num1 * 8 || this.frameCounter > 2.0) { this.frame.Y = num1 * 8; this.frameCounter = 0.0; } if (this.frameCounter == 0.0) { this.frameCounter = 1.0; EmoteBubble.NewBubble(3, new WorldUIAnchor((Entity) this), 60); } } else if ((double) this.ai[1] == 1.0) { if ((double) this.velocity.Y == 0.0) this.spriteDirection = this.direction; if ((double) this.velocity.Y != 0.0 || this.direction == -1 && (double) this.velocity.X > 0.0 || this.direction == 1 && (double) this.velocity.X < 0.0) { this.frameCounter = 0.0; this.frame.Y = num1 * 17; } else if ((double) this.velocity.X == 0.0) { this.frameCounter = 0.0; this.frame.Y = num1 * 8; } else { this.frameCounter += (double) Math.Abs(this.velocity.X); if (this.frameCounter >= 64.0 || this.frameCounter < 0.0) this.frameCounter = 0.0; this.frame.Y = num1 * ((int) (this.frameCounter / 8.0) + 8); } } else { if ((double) this.velocity.Y == 0.0) this.spriteDirection = this.direction; if ((double) this.velocity.Y != 0.0 || this.direction == -1 && (double) this.velocity.X > 0.0 || this.direction == 1 && (double) this.velocity.X < 0.0) { this.frameCounter = 0.0; this.frame.Y = num1 * 16; } else if ((double) this.velocity.X == 0.0) { this.frameCounter = 0.0; this.frame.Y = 0; } else { this.frameCounter += (double) Math.Abs(this.velocity.X); if (this.frameCounter >= 64.0 || this.frameCounter < 0.0) this.frameCounter = 0.0; this.frame.Y = num1 * (int) (this.frameCounter / 8.0); } } } if (this.type == 566 || this.type == 567) { if ((double) this.velocity.Y == 0.0) this.spriteDirection = this.direction; if ((double) this.velocity.Y != 0.0 || this.direction == -1 && (double) this.velocity.X > 0.0 || this.direction == 1 && (double) this.velocity.X < 0.0) { this.frameCounter = 0.0; this.frame.Y = num1 * 8; } else if ((double) this.velocity.X == 0.0) { this.frameCounter = 0.0; this.frame.Y = 0; } else { this.frameCounter += (double) Math.Abs(this.velocity.X); if (this.frameCounter >= 64.0 || this.frameCounter < 0.0) this.frameCounter = 0.0; this.frame.Y = num1 * (int) (this.frameCounter / 8.0); } } if (this.type == 576 || this.type == 577) { int num59 = this.frame.Y; this.frame.Width = 80; if ((double) this.ai[0] > 0.0 && (double) this.ai[1] == 0.0) { this.spriteDirection = this.direction; if (num59 < 11 || num59 > 20) { num59 = 11; this.frameCounter = 0.0; } int num60 = 4; if (num59 == 13 || num59 == 19) num60 = 8; if (num59 == 14 || num59 == 18) num60 = 2; if (++this.frameCounter >= (double) num60 && num59 < 20) { this.frameCounter = 0.0; ++num59; } } else if ((double) this.ai[0] > 0.0 && (double) this.ai[1] == 2.0) { this.spriteDirection = this.direction; if (num59 < 37 || num59 > 47) { num59 = 39; this.frameCounter = 0.0; } int num61 = 5; if (num59 == 42) num61 = 6; if (num59 == 45) num61 = 8; if (num59 == 46) num61 = 4; if (num59 == 47) num61 = 26; if (num59 == 37 || num59 == 38) num61 = 7; bool flag = true; if (num59 == 46 && (double) this.velocity.Y != 0.0) flag = false; if (num59 == 38) flag = false; if (flag) ++this.frameCounter; if (this.frameCounter >= (double) num61) { if (num59 < 47) { this.frameCounter = 0.0; ++num59; } else { num59 = 37; this.frameCounter = 0.0; } } } else if ((double) this.ai[0] > 0.0 && (double) this.ai[1] == 1.0) { this.spriteDirection = this.direction; if (num59 < 21 || num59 > 38) { num59 = 21; this.frameCounter = 0.0; } if (++this.frameCounter >= 5.0 && num59 < 38) { this.frameCounter = 0.0; ++num59; } } else { if ((double) this.velocity.Y == 0.0) this.spriteDirection = this.direction; if ((double) this.velocity.Y != 0.0) { this.frameCounter = 0.0; num59 = 43; } else if ((double) this.velocity.X == 0.0) { this.frameCounter = 0.0; num59 = 0; } else { this.frameCounter += (double) Math.Abs(this.velocity.X); if (this.frameCounter >= 60.0 || this.frameCounter < 0.0) this.frameCounter = 0.0; num59 = 1 + (int) (this.frameCounter / 6.0); } } this.frame.Y = num59; } if (this.type == 570 || this.type == 571) { if ((double) this.ai[1] > 0.0 && (double) this.ai[0] > 0.0) { this.spriteDirection = this.direction; if (this.frame.Y < num1 * 10 || this.frame.Y > num1 * 15 || (double) this.ai[1] == 59.0) { this.frame.Y = num1 * 10; this.frameCounter = 0.0; } int num62 = 5; if (this.frame.Y == num1 * 14) num62 = 35; if (++this.frameCounter >= (double) num62 && this.frame.Y < num1 * 15) { this.frameCounter = 0.0; this.frame.Y += num1; } } else { if ((double) this.velocity.Y == 0.0) this.spriteDirection = this.direction; if ((double) this.velocity.Y != 0.0 || this.direction == -1 && (double) this.velocity.X > 0.0 || this.direction == 1 && (double) this.velocity.X < 0.0) { this.frameCounter = 0.0; this.frame.Y = num1; } else if ((double) this.velocity.X == 0.0) { this.frameCounter = 0.0; this.frame.Y = num1 * 9; } else { this.frameCounter += (double) Math.Abs(this.velocity.X); if (this.frameCounter >= 64.0 || this.frameCounter < 0.0) this.frameCounter = 0.0; this.frame.Y = num1 * (int) (this.frameCounter / 8.0 + 2.0); } } } if (this.type == 561 || this.type == 562 || this.type == 563) { if (this.justHit) this.justHit = this.justHit; if ((double) this.ai[1] > 0.0 && (double) this.ai[0] > 0.0) { this.spriteDirection = this.direction; if (this.frame.Y < num1 * 10 || this.frame.Y > num1 * 13 || (double) this.ai[1] == 89.0) { this.frame.Y = num1 * 10; this.frameCounter = 0.0; } if (++this.frameCounter >= 6.0 && this.frame.Y < num1 * 13) { this.frameCounter = 0.0; this.frame.Y += num1; } } else { if ((double) this.velocity.Y == 0.0) this.spriteDirection = this.direction; if ((double) this.velocity.Y != 0.0 || this.direction == -1 && (double) this.velocity.X > 0.0 || this.direction == 1 && (double) this.velocity.X < 0.0) { this.frameCounter = 0.0; this.frame.Y = num1 * 8; } else if ((double) this.velocity.X == 0.0) { this.frameCounter = 0.0; this.frame.Y = num1 * 9; } else { this.frameCounter += (double) Math.Abs(this.velocity.X); if (this.frameCounter >= 64.0 || this.frameCounter < 0.0) this.frameCounter = 0.0; this.frame.Y = num1 * (int) (this.frameCounter / 8.0); } } } if (this.type == 555 || this.type == 556 || this.type == 557) { if ((double) this.ai[1] > 0.0 && (double) this.ai[0] > 0.0) { this.spriteDirection = this.direction; if (this.frame.Y < num1 * 10 || this.frame.Y > num1 * 16 || (double) this.ai[1] == 41.0) { this.frame.Y = num1 * 10; this.frameCounter = 0.0; } if (++this.frameCounter >= 6.0 && this.frame.Y < num1 * 16) { this.frameCounter = 0.0; this.frame.Y += num1; } } else { if ((double) this.velocity.Y == 0.0) this.spriteDirection = this.direction; if ((double) this.velocity.Y != 0.0 || this.direction == -1 && (double) this.velocity.X > 0.0 || this.direction == 1 && (double) this.velocity.X < 0.0) { this.frameCounter = 0.0; this.frame.Y = num1; } else if ((double) this.velocity.X == 0.0) { this.frameCounter = 0.0; this.frame.Y = 0; } else { this.frameCounter += (double) Math.Abs(this.velocity.X); if (this.frameCounter >= 64.0 || this.frameCounter < 0.0) this.frameCounter = 0.0; this.frame.Y = num1 * ((int) (this.frameCounter / 8.0) + 2); } } } if (this.type == 558 || this.type == 559 || this.type == 560) { if ((double) this.velocity.X > 0.0) this.spriteDirection = 1; if ((double) this.velocity.X < 0.0) this.spriteDirection = -1; float num63 = this.velocity.ToRotation(); if ((double) this.velocity.X < 0.0) num63 += 3.141593f; if ((double) this.ai[0] != 2.0) num63 = this.velocity.X * 0.1f; this.rotation = num63; if ((double) this.ai[0] == 2.0) this.frame.Y = num1 * 4; else if (++this.frameCounter >= 6.0) { this.frame.Y += num1; this.frameCounter = 0.0; if (this.frame.Y >= num1 * 4) this.frame.Y = 0; } } if (this.type == 578) { this.rotation = this.velocity.X * 0.1f; if (++this.frameCounter >= 4.0) { this.frame.Y += num1; this.frameCounter = 0.0; if (this.frame.Y >= num1 * 4) this.frame.Y = 0; } } if (this.type == 574 || this.type == 575) { if ((double) this.velocity.X > 0.0) this.spriteDirection = 1; if ((double) this.velocity.X < 0.0) this.spriteDirection = -1; float rotation = this.velocity.ToRotation(); if ((double) this.velocity.X < 0.0) rotation += 3.141593f; this.rotation = this.rotation.AngleTowards(rotation, 0.02f); if ((double) this.ai[0] != 0.0) { if (this.frame.Y < num1 * 2) { this.frame.Y = num1 * 2; this.frameCounter = 0.0; } int num64 = 4; if (this.frame.Y >= num1 * 5) num64 = 8; Vector2 Position = this.Center + new Vector2((float) (56 * this.spriteDirection), -30f).RotatedBy((double) this.rotation); if (++this.frameCounter >= (double) num64 && this.frame.Y < num1 * 9) { this.frameCounter = 0.0; this.frame.Y += num1; if (this.frame.Y == num1 * 9) { for (int index = 0; index < 8; ++index) { Dust dust = Dust.NewDustDirect(Position, 0, 0, 6, Alpha: 100); dust.velocity *= 3f; dust.scale = 0.6f; dust.fadeIn = 1.2f; dust.noGravity = true; dust.noLight = true; } } } if (this.frame.Y >= num1 * 9 && (double) this.ai[0] < 3.0) { Vector2 vector2_1 = Position; Vector2 vector2_2 = Position + (this.oldPos[3] - this.position); int maxValue = 5; if (this.frameCounter > 60.0) maxValue = 4; if (this.frameCounter > 180.0) maxValue = 3; if (this.frameCounter > 300.0) maxValue = 2; if (this.frameCounter > 600.0) maxValue = 1; for (int index = 0; index < 2; ++index) { if (Main.rand.Next(maxValue) == 0) { Dust dust = Dust.NewDustDirect(Vector2.Lerp(vector2_2, vector2_1, (float) ((double) index / 10.0 + 0.100000001490116)), 0, 0, 6, Alpha: 50); dust.scale = 0.3f; dust.fadeIn = 1.5f; dust.noGravity = true; dust.noLight = true; } } } } else if (++this.frameCounter >= 6.0) { this.frame.Y += num1; this.frameCounter = 0.0; if (this.frame.Y >= num1 * 2) this.frame.Y = 0; } } if (this.type == 549) { this.spriteDirection = 1; this.rotation = 0.0f; if (++this.frameCounter >= 6.0) { this.frame.Y += num1; this.frameCounter = 0.0; if (this.frame.Y >= num1 * Main.npcFrameCount[this.type]) this.frame.Y = 0; } } if (this.type == 564 || this.type == 565) { int y = this.frame.Y; this.frame.Width = 80; this.frame.Height = 80; int num65; if ((double) this.ai[0] > 0.0 && (double) this.ai[1] == 0.0) { this.spriteDirection = this.direction; if (y < 5 || y > 13) this.frameCounter = 0.0; num65 = 5; ++this.frameCounter; int num66 = 0; int num67; if (this.frameCounter >= (double) (7 * (num67 = num66 + 1))) num65 = 6; int num68; if (this.frameCounter >= (double) (7 * (num68 = num67 + 1))) num65 = 7; int num69; if (this.frameCounter >= (double) (7 * (num69 = num68 + 1))) num65 = 5; int num70; if (this.frameCounter >= (double) (7 * (num70 = num69 + 1))) num65 = 6; int num71; if (this.frameCounter >= (double) (7 * (num71 = num70 + 1))) num65 = 7; int num72; if (this.frameCounter >= (double) (7 * (num72 = num71 + 1))) num65 = 5; int num73; if (this.frameCounter >= (double) (7 * (num73 = num72 + 1))) num65 = 6; int num74; if (this.frameCounter >= (double) (7 * (num74 = num73 + 1))) num65 = 7; int num75; if (this.frameCounter >= (double) (7 * (num75 = num74 + 1))) num65 = 8; int num76; if (this.frameCounter >= (double) (7 * (num76 = num75 + 1))) num65 = 9; int num77; if (this.frameCounter >= (double) (7 * (num77 = num76 + 1))) num65 = 10; int num78; if (this.frameCounter >= (double) (7 * (num78 = num77 + 1))) num65 = 11; int num79; if (this.frameCounter >= (double) (7 * (num79 = num78 + 1))) num65 = 12; int num80; if (this.frameCounter >= (double) (7 * (num80 = num79 + 1))) { num65 = 5; this.frameCounter = 0.0; } } else if ((double) this.ai[0] > 0.0 && (double) this.ai[1] == 1.0) { this.spriteDirection = this.direction; if (y < 13 || y > 25) this.frameCounter = 0.0; num65 = 13; ++this.frameCounter; int num81 = 0; int num82; if (this.frameCounter >= (double) (8 * (num82 = num81 + 1))) num65 = 14; int num83; if (this.frameCounter >= (double) (8 * (num83 = num82 + 1))) num65 = 15; int num84; if (this.frameCounter >= (double) (8 * (num84 = num83 + 1))) num65 = 16; int num85; if (this.frameCounter >= (double) (8 * (num85 = num84 + 1))) num65 = 17; int num86; if (this.frameCounter >= (double) (8 * (num86 = num85 + 1))) num65 = 18; int num87; if (this.frameCounter >= (double) (8 * (num87 = num86 + 1))) num65 = 19; int num88; if (this.frameCounter >= (double) (8 * (num88 = num87 + 1))) num65 = 20; int num89; if (this.frameCounter >= (double) (8 * (num89 = num88 + 1))) num65 = 18; int num90; if (this.frameCounter >= (double) (8 * (num90 = num89 + 1))) num65 = 19; int num91; if (this.frameCounter >= (double) (8 * (num91 = num90 + 1))) num65 = 20; int num92; if (this.frameCounter >= (double) (8 * (num92 = num91 + 1))) num65 = 21; int num93; if (this.frameCounter >= (double) (8 * (num93 = num92 + 1))) num65 = 22; int num94; if (this.frameCounter >= (double) (8 * (num94 = num93 + 1))) num65 = 23; int num95; if (this.frameCounter >= (double) (8 * (num95 = num94 + 1))) num65 = 24; int num96; if (this.frameCounter >= (double) (8 * (num96 = num95 + 1))) num65 = 25; int num97; if (this.frameCounter >= (double) (8 * (num97 = num96 + 1))) { num65 = 14; this.frameCounter = 0.0; } } else if ((double) this.ai[0] > 0.0 && (double) this.ai[1] == 2.0) { this.spriteDirection = this.direction; if (y < 26 || y > 40) this.frameCounter = 0.0; num65 = 26; ++this.frameCounter; int num98 = 0; int num99; if (this.frameCounter >= (double) (8 * (num99 = num98 + 1))) num65 = 27; int num100; if (this.frameCounter >= (double) (8 * (num100 = num99 + 1))) num65 = 28; int num101; if (this.frameCounter >= (double) (8 * (num101 = num100 + 1))) num65 = 29; int num102; if (this.frameCounter >= (double) (8 * (num102 = num101 + 1))) num65 = 26; int num103; if (this.frameCounter >= (double) (8 * (num103 = num102 + 1))) num65 = 27; int num104; if (this.frameCounter >= (double) (8 * (num104 = num103 + 1))) num65 = 28; int num105; if (this.frameCounter >= (double) (8 * (num105 = num104 + 1))) num65 = 29; int num106; if (this.frameCounter >= (double) (8 * (num106 = num105 + 1))) num65 = 26; int num107; if (this.frameCounter >= (double) (8 * (num107 = num106 + 1))) num65 = 27; int num108; if (this.frameCounter >= (double) (8 * (num108 = num107 + 1))) num65 = 28; int num109; if (this.frameCounter >= (double) (8 * (num109 = num108 + 1))) num65 = 29; int num110; if (this.frameCounter >= (double) (8 * (num110 = num109 + 1))) num65 = 30; int num111; if (this.frameCounter >= (double) (8 * (num111 = num110 + 1))) num65 = 31; int num112; if (this.frameCounter >= (double) (8 * (num112 = num111 + 1))) num65 = 32; int num113; if (this.frameCounter >= (double) (8 * (num113 = num112 + 1))) num65 = 33; int num114; if (this.frameCounter >= (double) (8 * (num114 = num113 + 1))) num65 = 34; int num115; if (this.frameCounter >= (double) (8 * (num115 = num114 + 1))) num65 = 35; int num116; if (this.frameCounter >= (double) (8 * (num116 = num115 + 1))) num65 = 36; int num117; if (this.frameCounter >= (double) (8 * (num117 = num116 + 1))) num65 = 37; int num118; if (this.frameCounter >= (double) (8 * (num118 = num117 + 1))) num65 = 38; int num119; if (this.frameCounter >= (double) (8 * (num119 = num118 + 1))) num65 = 39; int num120; if (this.frameCounter >= (double) (8 * (num120 = num119 + 1))) num65 = 40; int num121; if (this.frameCounter >= (double) (8 * (num121 = num120 + 1))) { num65 = 26; this.frameCounter = 0.0; } } else { this.frameCounter = this.frameCounter + (double) this.velocity.Length() * 0.100000001490116 + 1.0; if (this.frameCounter >= 40.0 || this.frameCounter < 0.0) this.frameCounter = 0.0; num65 = (int) (this.frameCounter / 8.0); } this.frame.Y = num65; } if (this.type == 338 || this.type == 339 || this.type == 340 || this.type == 17 || this.type == 18 || this.type == 19 || this.type == 20 || this.type == 22 || this.type == 142 || this.type == 353 || this.type == 178 || this.type == 38 || this.type == 26 || this.type == 27 || this.type == 28 || this.type == 31 || this.type == 294 || this.type == 295 || this.type == 296 || this.type == 21 || this.type == 44 || this.type == 54 || this.type == 37 || this.type == 73 || this.type == 77 || this.type == 78 || this.type == 79 || this.type == 80 || this.type == 104 || this.type == 107 || this.type == 108 || this.type == 120 || this.type == 124 || this.type == 140 || this.type == 159 || this.type == 160 || this.type == 167 || this.type == 181 || this.type == 185 || this.type == 196 || this.type == 197 || this.type == 198 || this.type == 201 || this.type == 202 || this.type == 203 || this.type == 207 || this.type == 208 || this.type == 209 || this.type == 212 || this.type == 213 || this.type == 227 || this.type == 228 || this.type == 229 || this.type == 287 || this.type >= 310 && this.type <= 314 || this.type >= 322 && this.type <= 324 || this.type == 326 || this.type == 368 || this.type == 369 || this.type == 453 || this.type == 460 || this.type == 462 || this.type == 463 || this.type == 489 || this.type == 441 || this.type == 534 || this.type == 550) { int num122 = this.townNPC || this.type == 453 ? NPCID.Sets.ExtraFramesCount[this.type] : 0; if ((double) this.velocity.Y == 0.0) { if (this.direction == 1) this.spriteDirection = 1; if (this.direction == -1) this.spriteDirection = -1; int num123 = Main.npcFrameCount[this.type] - NPCID.Sets.AttackFrameCount[this.type]; if ((double) this.ai[0] == 2.0) { ++this.frameCounter; if (this.frame.Y / num1 == num123 - 1 && this.frameCounter >= 5.0) { this.frame.Y = 0; this.frameCounter = 0.0; } else if (this.frame.Y / num1 == 0 && this.frameCounter >= 40.0) { this.frame.Y = num1 * (num123 - 1); this.frameCounter = 0.0; } else if (this.frame.Y != 0 && this.frame.Y != num1 * (num123 - 1)) { this.frame.Y = 0; this.frameCounter = 0.0; } } else if ((double) this.ai[0] == 11.0) { ++this.frameCounter; if (this.frame.Y / num1 == num123 - 1 && this.frameCounter >= 20.0) { if (this.frameCounter == 20.0) { int num124 = Main.rand.Next(4); for (int index1 = 0; index1 < 3 + num124; ++index1) { int index2 = Dust.NewDust(this.Center + Vector2.UnitX * (float) -this.direction * 8f - Vector2.One * 5f + Vector2.UnitY * 8f, 3, 6, 216, (float) -this.direction, 1f); Main.dust[index2].velocity /= 2f; Main.dust[index2].scale = 0.8f; } if (Main.rand.Next(30) == 0) { int index = Gore.NewGore(this.Center + Vector2.UnitX * (float) -this.direction * 8f, Vector2.Zero, Main.rand.Next(580, 583)); Main.gore[index].velocity /= 2f; Main.gore[index].velocity.Y = Math.Abs(Main.gore[index].velocity.Y); Main.gore[index].velocity.X = -Math.Abs(Main.gore[index].velocity.X) * (float) this.direction; } } if (this.frameCounter >= 40.0 && Main.rand.Next(20) == 0) { this.frame.Y = 0; this.frameCounter = 0.0; } } else if (this.frame.Y / num1 == 0 && this.frameCounter >= 20.0) { this.frame.Y = num1 * (num123 - 1); this.frameCounter = 0.0; if (Main.netMode != 1) EmoteBubble.NewBubble(89, new WorldUIAnchor((Entity) this), 30); } else if (this.frame.Y != 0 && this.frame.Y != num1 * (num123 - 1)) { this.frame.Y = 0; this.frameCounter = 0.0; } } else if ((double) this.ai[0] == 5.0) { this.frame.Y = num1 * (num123 - 3); this.frameCounter = 0.0; } else if ((double) this.ai[0] == 6.0) { ++this.frameCounter; int num125 = this.frame.Y / num1; switch (num123 - num125) { case 1: case 2: case 4: case 5: int num126 = this.frameCounter >= 10.0 ? (this.frameCounter >= 16.0 ? (this.frameCounter >= 46.0 ? (this.frameCounter >= 60.0 ? (this.frameCounter >= 66.0 ? (this.frameCounter >= 72.0 ? (this.frameCounter >= 102.0 ? (this.frameCounter >= 108.0 ? (this.frameCounter >= 114.0 ? (this.frameCounter >= 120.0 ? (this.frameCounter >= 150.0 ? (this.frameCounter >= 156.0 ? (this.frameCounter >= 162.0 ? (this.frameCounter >= 168.0 ? (this.frameCounter >= 198.0 ? (this.frameCounter >= 204.0 ? (this.frameCounter >= 210.0 ? (this.frameCounter >= 216.0 ? (this.frameCounter >= 246.0 ? (this.frameCounter >= 252.0 ? (this.frameCounter >= 258.0 ? (this.frameCounter >= 264.0 ? (this.frameCounter >= 294.0 ? (this.frameCounter >= 300.0 ? 0 : num123 - 5) : num123 - 4) : num123 - 5) : 0) : num123 - 5) : num123 - 4) : num123 - 5) : 0) : num123 - 5) : num123 - 4) : num123 - 5) : 0) : num123 - 5) : num123 - 4) : num123 - 5) : 0) : num123 - 5) : num123 - 4) : num123 - 5) : 0) : num123 - 5) : num123 - 4) : num123 - 5) : 0; if (num126 == num123 - 4 && num125 == num123 - 5) { Vector2 Position = this.Center + new Vector2((float) (10 * this.direction), -4f); for (int index3 = 0; index3 < 8; ++index3) { int Type = Main.rand.Next(139, 143); int index4 = Dust.NewDust(Position, 0, 0, Type, this.velocity.X + (float) this.direction, this.velocity.Y - 2.5f, Scale: 1.2f); Main.dust[index4].velocity.X += (float) this.direction * 1.5f; Main.dust[index4].position -= new Vector2(4f); Main.dust[index4].velocity *= 2f; Main.dust[index4].scale = (float) (0.699999988079071 + (double) Main.rand.NextFloat() * 0.300000011920929); } } this.frame.Y = num1 * num126; if (this.frameCounter >= 300.0) { this.frameCounter = 0.0; break; } break; default: if (num125 != 0) { this.frame.Y = 0; this.frameCounter = 0.0; goto case 1; } else goto case 1; } } else if ((double) this.ai[0] == 7.0) { ++this.frameCounter; int num127 = this.frame.Y / num1; switch (num123 - num127) { case 1: case 2: case 4: case 5: int num128 = 0; if (this.frameCounter < 16.0) num128 = 0; else if (this.frameCounter == 16.0 && Main.netMode != 1) EmoteBubble.NewBubbleNPC(new WorldUIAnchor((Entity) this), 112); else if (this.frameCounter < 128.0) num128 = this.frameCounter % 16.0 < 8.0 ? num123 - 2 : 0; else if (this.frameCounter < 160.0) num128 = 0; else if (this.frameCounter == 160.0 && Main.netMode != 1) EmoteBubble.NewBubbleNPC(new WorldUIAnchor((Entity) this), 60); else num128 = this.frameCounter >= 220.0 ? 0 : (this.frameCounter % 12.0 < 6.0 ? num123 - 2 : 0); this.frame.Y = num1 * num128; if (this.frameCounter >= 220.0) { this.frameCounter = 0.0; break; } break; default: if (num127 != 0) { this.frame.Y = 0; this.frameCounter = 0.0; goto case 1; } else goto case 1; } } else if ((double) this.ai[0] == 9.0) { ++this.frameCounter; int num129 = this.frame.Y / num1; switch (num123 - num129) { case 1: case 2: case 4: case 5: int num130 = this.frameCounter >= 10.0 ? (this.frameCounter >= 16.0 ? num123 - 4 : num123 - 5) : 0; if ((double) this.ai[1] < 16.0) num130 = num123 - 5; if ((double) this.ai[1] < 10.0) num130 = 0; this.frame.Y = num1 * num130; break; default: if (num129 != 0) { this.frame.Y = 0; this.frameCounter = 0.0; goto case 1; } else goto case 1; } } else if ((double) this.ai[0] == 18.0) { ++this.frameCounter; int num131 = this.frame.Y / num1; switch (num123 - num131) { case 1: case 2: case 4: case 5: int num132 = 0; num132 = this.frameCounter >= 10.0 ? (this.frameCounter >= 16.0 ? num123 - 2 : num123 - 1) : 0; if ((double) this.ai[1] < 16.0) num132 = num123 - 1; if ((double) this.ai[1] < 10.0) num132 = 0; int num133 = Main.npcFrameCount[this.type] - 2; this.frame.Y = num1 * num133; break; default: if (num131 != 0) { this.frame.Y = 0; this.frameCounter = 0.0; goto case 1; } else goto case 1; } } else if ((double) this.ai[0] == 10.0 || (double) this.ai[0] == 13.0) { ++this.frameCounter; int num134 = this.frame.Y / num1; if ((uint) (num134 - num123) > 3U && num134 != 0) { this.frame.Y = 0; this.frameCounter = 0.0; } int num135 = 10; int num136 = 6; int num137 = this.frameCounter >= (double) num135 ? (this.frameCounter >= (double) (num135 + num136) ? (this.frameCounter >= (double) (num135 + num136 * 2) ? (this.frameCounter >= (double) (num135 + num136 * 3) ? (this.frameCounter >= (double) (num135 + num136 * 4) ? 0 : num123 + 3) : num123 + 2) : num123 + 1) : num123) : 0; this.frame.Y = num1 * num137; } else if ((double) this.ai[0] == 15.0) { ++this.frameCounter; int num138 = this.frame.Y / num1; if ((uint) (num138 - num123) > 3U && num138 != 0) { this.frame.Y = 0; this.frameCounter = 0.0; } float num139 = this.ai[1] / (float) NPCID.Sets.AttackTime[this.type]; int num140 = (double) num139 <= 0.649999976158142 ? ((double) num139 <= 0.5 ? ((double) num139 <= 0.349999994039536 ? ((double) num139 <= 0.0 ? 0 : num123 + 3) : num123 + 2) : num123 + 1) : num123; this.frame.Y = num1 * num140; } else if ((double) this.ai[0] == 12.0) { ++this.frameCounter; int num141 = this.frame.Y / num1; if ((uint) (num141 - num123) > 4U && num141 != 0) { this.frame.Y = 0; this.frameCounter = 0.0; } int num142 = num123 + this.GetShootingFrame(this.ai[2]); this.frame.Y = num1 * num142; } else if ((double) this.ai[0] == 14.0) { ++this.frameCounter; int num143 = this.frame.Y / num1; if ((uint) (num143 - num123) > 1U && num143 != 0) { this.frame.Y = 0; this.frameCounter = 0.0; } int num144 = 12; int num145 = this.frameCounter % (double) num144 * 2.0 < (double) num144 ? num123 : num123 + 1; this.frame.Y = num1 * num145; } else if ((double) this.ai[0] == 3.0 || (double) this.ai[0] == 4.0) { ++this.frameCounter; int num146 = this.frame.Y / num1; switch (num123 - num146) { case 1: case 2: case 4: case 5: bool flag = (double) this.ai[0] == 3.0; int num147 = 0; int num148 = 0; int time1 = -1; int time2 = -1; if (this.frameCounter < 10.0) num147 = 0; else if (this.frameCounter < 16.0) num147 = num123 - 5; else if (this.frameCounter < 46.0) num147 = num123 - 4; else if (this.frameCounter < 60.0) num147 = num123 - 5; else if (this.frameCounter < 216.0) num147 = 0; else if (this.frameCounter == 216.0 && Main.netMode != 1) time1 = 70; else if (this.frameCounter < 286.0) num147 = this.frameCounter % 12.0 < 6.0 ? num123 - 2 : 0; else if (this.frameCounter < 320.0) num147 = 0; else if (this.frameCounter == 320.0 && Main.netMode != 1) time1 = 100; else num147 = this.frameCounter >= 420.0 ? 0 : (this.frameCounter % 16.0 < 8.0 ? num123 - 2 : 0); if (this.frameCounter < 70.0) num148 = 0; else if (this.frameCounter == 70.0 && Main.netMode != 1) time2 = 90; else num148 = this.frameCounter >= 160.0 ? (this.frameCounter >= 166.0 ? (this.frameCounter >= 186.0 ? (this.frameCounter >= 200.0 ? (this.frameCounter >= 320.0 ? (this.frameCounter >= 326.0 ? 0 : num123 - 1) : 0) : num123 - 5) : num123 - 4) : num123 - 5) : (this.frameCounter % 16.0 < 8.0 ? num123 - 2 : 0); if (flag) { if (time1 != -1) EmoteBubble.NewBubbleNPC(new WorldUIAnchor((Entity) this), time1, new WorldUIAnchor((Entity) Main.npc[(int) this.ai[2]])); if (time2 != -1) EmoteBubble.NewBubbleNPC(new WorldUIAnchor((Entity) Main.npc[(int) this.ai[2]]), time2, new WorldUIAnchor((Entity) this)); } this.frame.Y = num1 * (flag ? num147 : num148); if (this.frameCounter >= 420.0) { this.frameCounter = 0.0; break; } break; default: if (num146 != 0) { this.frame.Y = 0; this.frameCounter = 0.0; goto case 1; } else goto case 1; } } else if ((double) this.ai[0] == 16.0 || (double) this.ai[0] == 17.0) { ++this.frameCounter; int num149 = this.frame.Y / num1; switch (num123 - num149) { case 1: case 2: case 4: case 5: bool flag = (double) this.ai[0] == 16.0; int num150 = 0; int time = -1; if (this.frameCounter < 10.0) num150 = 0; else if (this.frameCounter < 16.0) num150 = num123 - 5; else if (this.frameCounter < 22.0) num150 = num123 - 4; else if (this.frameCounter < 28.0) num150 = num123 - 5; else if (this.frameCounter < 34.0) num150 = num123 - 4; else if (this.frameCounter < 40.0) num150 = num123 - 5; else if (this.frameCounter == 40.0 && Main.netMode != 1) time = 45; else if (this.frameCounter < 70.0) num150 = num123 - 4; else if (this.frameCounter < 76.0) num150 = num123 - 5; else if (this.frameCounter < 82.0) num150 = num123 - 4; else if (this.frameCounter < 88.0) num150 = num123 - 5; else if (this.frameCounter < 94.0) num150 = num123 - 4; else if (this.frameCounter < 100.0) num150 = num123 - 5; else if (this.frameCounter == 100.0 && Main.netMode != 1) time = 45; else if (this.frameCounter < 130.0) num150 = num123 - 4; else if (this.frameCounter < 136.0) num150 = num123 - 5; else if (this.frameCounter < 142.0) num150 = num123 - 4; else if (this.frameCounter < 148.0) num150 = num123 - 5; else if (this.frameCounter < 154.0) num150 = num123 - 4; else if (this.frameCounter < 160.0) num150 = num123 - 5; else if (this.frameCounter == 160.0 && Main.netMode != 1) time = 75; else num150 = this.frameCounter >= 220.0 ? (this.frameCounter >= 226.0 ? 0 : num123 - 5) : num123 - 4; if (flag && time != -1) { int num151 = (int) this.localAI[2]; int num152 = (int) this.localAI[3]; int num153 = (int) Main.npc[(int) this.ai[2]].localAI[3]; int num154 = (int) Main.npc[(int) this.ai[2]].localAI[2]; int num155 = 3 - num151 - num152; int num156 = 0; if (this.frameCounter == 40.0) num156 = 1; if (this.frameCounter == 100.0) num156 = 2; if (this.frameCounter == 160.0) num156 = 3; int num157 = 3 - num156; int num158 = -1; int num159 = 0; while (num158 < 0 && ++num159 < 100) { num158 = Main.rand.Next(2); if (num158 == 0 && num154 >= num152) num158 = -1; if (num158 == 1 && num153 >= num151) num158 = -1; if (num158 == -1 && num157 <= num155) num158 = 2; } if (num158 == 0) { ++Main.npc[(int) this.ai[2]].localAI[3]; ++num153; } if (num158 == 1) { ++Main.npc[(int) this.ai[2]].localAI[2]; ++num154; } int emoticon1 = Utils.SelectRandom(Main.rand, 38, 37, 36); int emoticon2 = emoticon1; if (num158 == 0) { switch (emoticon1) { case 36: emoticon2 = 38; break; case 37: emoticon2 = 36; break; case 38: emoticon2 = 37; break; } } else if (num158 == 1) { switch (emoticon1) { case 36: emoticon2 = 37; break; case 37: emoticon2 = 38; break; case 38: emoticon2 = 36; break; } } if (num157 == 0) { if (num153 >= 2) emoticon1 -= 3; if (num154 >= 2) emoticon2 -= 3; } EmoteBubble.NewBubble(emoticon1, new WorldUIAnchor((Entity) this), time); EmoteBubble.NewBubble(emoticon2, new WorldUIAnchor((Entity) Main.npc[(int) this.ai[2]]), time); } this.frame.Y = num1 * (flag ? num150 : num150); if (this.frameCounter >= 420.0) { this.frameCounter = 0.0; break; } break; default: if (num149 != 0) { this.frame.Y = 0; this.frameCounter = 0.0; goto case 1; } else goto case 1; } } else if ((double) this.velocity.X == 0.0) { if (this.type == 140 || this.type == 287 || this.type == 489) { this.frame.Y = num1; this.frameCounter = 0.0; } else { this.frame.Y = 0; this.frameCounter = 0.0; } } else { int num160 = 6; if (this.type == 534) num160 = 12; if (this.type == 489) { num160 = 8; this.frameCounter += (double) Math.Abs(this.velocity.X) * 1.0; this.frameCounter += 0.5; } else { this.frameCounter += (double) Math.Abs(this.velocity.X) * 2.0; ++this.frameCounter; } if (this.type == 462) num160 = 9; if (this.frameCounter > (double) num160) { this.frame.Y += num1; this.frameCounter = 0.0; } if (this.frame.Y / num1 >= Main.npcFrameCount[this.type] - num122) this.frame.Y = num1 * 2; } } else if (this.type == 462) { this.frameCounter = 0.0; this.frame.Y = (double) this.velocity.Y >= 0.0 ? num1 * 2 : num1; } else { this.frameCounter = 0.0; this.frame.Y = num1; if (this.type == 489 || this.type == 21 || this.type == 31 || this.type == 294 || this.type == 326 || this.type == 295 || this.type == 296 || this.type == 44 || this.type == 77 || this.type == 78 || this.type == 79 || this.type == 80 || this.type == 120 || this.type == 140 || this.type == 159 || this.type == 167 || this.type == 197 || this.type == 201 || this.type == 202 || this.type == 203 || this.type == 287 || this.type >= 322 && this.type <= 324) this.frame.Y = 0; if (this.type == 181) this.frame.Y = num1 * 14; } } if (this.type >= 494 && this.type <= 495) { if ((double) this.ai[2] > 0.0) { if ((double) this.ai[2] < 7.0) this.frame.Y = num1 * 5; else if ((double) this.ai[2] < 14.0) this.frame.Y = num1 * 6; else if ((double) this.ai[2] < 20.0) this.frame.Y = num1 * 7; } else { if ((double) this.velocity.Y == 0.0) { if (this.direction == 1) this.spriteDirection = 1; if (this.direction == -1) this.spriteDirection = -1; } if ((double) this.velocity.Y != 0.0 || this.direction == -1 && (double) this.velocity.X > 0.0 || this.direction == 1 && (double) this.velocity.X < 0.0) { this.frameCounter = 0.0; this.frame.Y = (double) this.velocity.Y >= 0.0 ? num1 * 3 : num1 * 2; } else if ((double) this.velocity.X == 0.0) { this.frameCounter = 0.0; this.frame.Y = 0; } else { this.frameCounter += (double) Math.Abs(this.velocity.X); if (this.frameCounter < 8.0) this.frame.Y = 0; else if (this.frameCounter < 16.0) this.frame.Y = num1; else if (this.frameCounter < 24.0) this.frame.Y = num1 * 2; else if (this.frameCounter < 32.0) this.frame.Y = num1 * 3; else if (this.frameCounter < 39.0) { this.frame.Y = num1 * 4; } else { this.frame.Y = num1 * 4; this.frameCounter = 0.0; } } } } if (this.type == 541) { if ((double) this.ai[0] > 0.0) { float num161 = this.ai[0]; this.frame.Y = (double) num161 >= 6.0 ? ((double) num161 >= 105.0 ? ((double) num161 >= 114.0 ? ((double) num161 >= 135.0 ? num1 : num1 * (int) (((double) num161 - 99.0 - 15.0) / 7.0 + 10.0)) : num1 * 9) : num1 * (int) ((double) num161 / 8.0 % 4.0 + 5.0)) : num1 * 4; } else { this.frameCounter = this.frameCounter + (double) this.velocity.Length() * 0.100000001490116 + 1.0; if (this.frameCounter >= 8.0) { this.frame.Y += num1; this.frameCounter = 0.0; } if (this.frame.Y >= num1 * 4) this.frame.Y = 0; } } if (this.type >= 498 && this.type <= 506) { if ((double) this.velocity.Y == 0.0) { if (this.direction == 1) this.spriteDirection = 1; if (this.direction == -1) this.spriteDirection = -1; if ((double) this.ai[2] > 0.0) { this.spriteDirection = this.direction; this.frame.Y = (double) this.ai[1] >= 12.0 ? ((double) this.ai[1] >= 34.0 ? num1 * 8 : num1 * 9) : num1 * 8; this.frameCounter = 0.0; } else if ((double) this.velocity.X == 0.0) { this.frame.Y = 0; } else { this.frameCounter += (double) Math.Abs(this.velocity.X) * 1.0; if (this.frameCounter > 4.0) { this.frame.Y += num1; this.frameCounter = 0.0; } if (this.frame.Y > num1 * 7) this.frame.Y = 0; } } else { this.frameCounter = 0.0; this.frame.Y = num1 * 10; } } else if (this.type >= 524 && this.type <= 527) { if ((double) this.velocity.Y == 0.0) { if (this.direction != 0) this.spriteDirection = this.direction; if ((double) this.velocity.X == 0.0) { this.frame.Y = 0; this.frameCounter = 0.0; } else { this.frameCounter += (double) Math.Abs(this.velocity.X); ++this.frameCounter; if (this.frameCounter > 9.0) { this.frame.Y += num1; this.frameCounter = 0.0; } if (this.frame.Y / num1 >= Main.npcFrameCount[this.type]) this.frame.Y = num1 * 2; } } else { this.frame.Y = num1; this.frameCounter = 0.0; } } else if (this.type >= 528 && this.type <= 529) { if ((double) this.velocity.Y == 0.0) { if (this.direction != 0) this.spriteDirection = this.direction; if ((double) this.velocity.X == 0.0) { this.frame.Y = 0; this.frameCounter = 0.0; } else { this.frameCounter += (double) Math.Abs(this.velocity.X); ++this.frameCounter; if (this.frameCounter > 9.0) { this.frame.Y += num1; this.frameCounter = 0.0; } if (this.frame.Y / num1 >= Main.npcFrameCount[this.type] - 1) this.frame.Y = num1; } } else { this.frame.Y = num1 * (Main.npcFrameCount[this.type] - 1); this.frameCounter = 0.0; } } else if (this.type == 533) { if ((double) this.velocity.Y == 0.0 && this.direction != 0) this.spriteDirection = this.direction; ++this.frameCounter; if (this.frameCounter >= 48.0) this.frameCounter = 0.0; this.frame.Y = (int) (this.frameCounter / 6.0) * num1; if ((double) this.ai[1] > 0.0) this.frame.Y += num1 * 8; } if (this.type >= 496 && this.type <= 497) { if ((double) this.ai[0] == 0.0) { this.rotation = 0.0f; if ((double) this.velocity.Y == 0.0) this.spriteDirection = this.direction; else if ((double) this.velocity.Y < 0.0) this.frameCounter = 0.0; this.frameCounter += (double) Math.Abs(this.velocity.X) * 1.10000002384186; if (this.frameCounter < 6.0) this.frame.Y = 0; else if (this.frameCounter < 12.0) this.frame.Y = num1; else if (this.frameCounter < 18.0) this.frame.Y = num1 * 2; else if (this.frameCounter < 24.0) this.frame.Y = num1 * 3; else this.frameCounter = 0.0; } else if ((double) this.ai[0] == 1.0) { this.frameCounter = 0.0; this.frame.Y = (double) this.ai[1] >= 10.0 ? ((double) this.ai[1] >= 20.0 ? num1 * 6 : num1 * 5) : num1 * 4; } else if ((double) this.ai[0] == 5.0) { this.frameCounter = 0.0; this.frame.Y = (double) this.ai[1] >= 10.0 ? ((double) this.ai[1] >= 20.0 ? num1 * 3 : num1 * 11) : num1 * 10; } else { this.frameCounter = 0.0; this.frame.Y = num1 * 7; } } else if (this.aiStyle == 39 && this.type != 417) { if ((double) this.ai[0] == 0.0) { this.rotation = 0.0f; if ((double) this.velocity.Y == 0.0) this.spriteDirection = this.direction; else if ((double) this.velocity.Y < 0.0) this.frameCounter = 0.0; this.frameCounter += (double) Math.Abs(this.velocity.X) * 1.10000002384186; if (this.frameCounter < 6.0) this.frame.Y = 0; else if (this.frameCounter < 12.0) this.frame.Y = num1; else if (this.frameCounter < 18.0) this.frame.Y = num1 * 2; else if (this.frameCounter < 24.0) this.frame.Y = num1 * 3; else if (this.frameCounter < 32.0) this.frame.Y = num1 * 4; else this.frameCounter = 0.0; } else if ((double) this.ai[0] == 1.0) { this.frameCounter = 0.0; this.frame.Y = (double) this.ai[1] >= 10.0 ? ((double) this.ai[1] >= 20.0 ? num1 * 7 : num1 * 6) : num1 * 5; } else if ((double) this.ai[0] == 5.0) { this.frameCounter = 0.0; this.frame.Y = (double) this.ai[1] >= 10.0 ? ((double) this.ai[1] >= 20.0 ? num1 * 5 : num1 * 6) : num1 * 7; } else { this.frameCounter = 0.0; this.frame.Y = num1 * 7; } } else if (this.type == 508 || this.type == 532) { if ((double) this.velocity.Y != 0.0) this.frame.Y = num1; else if ((double) this.velocity.X == 0.0) { this.frame.Y = 0; } else { if (this.direction < 0 && (double) this.velocity.X < 0.0) this.spriteDirection = -1; if (this.direction > 0 && (double) this.velocity.X > 0.0) this.spriteDirection = 1; if (this.frame.Y / num1 < 2) this.frame.Y = num1 * 2; this.frameCounter += 1.0 + (double) Math.Abs(this.velocity.X) / 2.0; if (this.frameCounter > 6.0) { this.frame.Y += num1; this.frameCounter = 0.0; } if (this.frame.Y / num1 >= Main.npcFrameCount[this.type]) this.frame.Y = num1 * 2; } } else if (this.type == 509) { if ((double) this.velocity.X > 0.0 && this.direction > 0 || (double) this.velocity.X < 0.0 && this.direction < 0) this.spriteDirection = this.direction; if (++this.frameCounter >= 3.0) { this.frameCounter = 0.0; this.frame.Y += num1; if (this.frame.Y / num1 >= Main.npcFrameCount[this.type]) this.frame.Y = 0; } } if (this.type == 415) { if ((double) this.ai[2] < 0.0) { if (this.frame.Y / num1 != 8 && this.frame.Y / num1 != 9 && this.frame.Y / num1 != 0) this.frameCounter = 0.0; ++this.frameCounter; int num162 = 0; int num163 = 18; int num164 = 4; if (this.frameCounter > (double) (num163 - num164 * 2)) num162 = 8 + (int) this.frameCounter / 4 % 2; if (this.frameCounter > (double) (num163 + num164 * 6)) { num162 = 0; this.frameCounter = 0.0; } this.frame.Y = num1 * num162; } else if ((double) this.velocity.Y == 0.0) { if (this.direction != 0) this.spriteDirection = this.direction; if (this.frame.Y < num1 * 2) this.frame.Y = num1 * 2; this.frameCounter += (double) Math.Abs(this.velocity.X) * 0.5; if (this.frameCounter >= 8.0) { this.frame.Y += num1; this.frameCounter = 0.0; } if (this.frame.Y / num1 >= Main.npcFrameCount[this.type] - 2) this.frame.Y = num1 * 2; if ((double) this.velocity.X == 0.0) this.frame.Y = 0; } else { this.frameCounter = 0.0; this.frame.Y = num1; } } if (this.type == 416) { int index = (int) this.ai[0]; if (Main.npc[index].active && Main.npc[index].type == 415 && Main.npcTexture[415] != null) this.frame.Y = Main.npc[index].frame.Y / (Main.npcTexture[415].Height / Main.npcFrameCount[415]) * num1; } else if (this.type == 417) { if ((double) this.ai[0] == 0.0) { this.rotation = 0.0f; if ((double) this.velocity.Y == 0.0) this.spriteDirection = this.direction; else if ((double) this.velocity.Y < 0.0) this.frameCounter = 0.0; this.frameCounter += (double) Math.Abs(this.velocity.X) * 1.10000002384186; this.frame.Y = (int) (this.frameCounter / 6.0) * num1; if (this.frameCounter >= 48.0) this.frameCounter = 0.0; } else if ((double) this.ai[0] == 1.0) { this.frameCounter = 0.0; this.frame.Y = num1 * (9 + (int) ((double) this.ai[1] / 6.0)); } else if ((double) this.ai[0] == 5.0) { this.frameCounter = 0.0; this.frame.Y = num1 * (13 - (int) ((double) this.ai[1] / 6.0)); } else { this.frameCounter = 0.0; this.frame.Y = num1 * 14; } } else if (this.type == 518) { if ((double) this.velocity.Y == 0.0) { if (this.direction != 0) this.spriteDirection = this.direction; if ((double) this.velocity.X == 0.0) { this.frame.Y = 0; this.frameCounter = 0.0; } else { this.frameCounter += (double) Math.Abs(this.velocity.X) * 1.0; ++this.frameCounter; if (this.frameCounter > 6.0) { this.frame.Y += num1; this.frameCounter = 0.0; } if (this.frame.Y / num1 >= Main.npcFrameCount[this.type]) this.frame.Y = num1 * 2; } } else { this.frame.Y = num1; this.frameCounter = 0.0; } } else if (this.type == 419) { if ((double) this.ai[2] < 0.0) { int num165 = 1; if (this.direction != 0) this.spriteDirection = this.direction; if (this.frame.Y / num1 >= 9) { this.frame.Y = num1 * 2; this.frameCounter = 0.0; } if (this.frame.Y / num1 < 2) { this.frame.Y = num1 * 2; this.frameCounter = 0.0; } ++this.frameCounter; if (this.frameCounter >= (double) (num165 * 4 + 6)) this.frameCounter = 8.0; this.frame.Y = this.frameCounter >= 6.0 ? num1 * (int) (4.0 + (this.frameCounter - 6.0) / (double) num165) : num1 * (int) (2.0 + this.frameCounter / 3.0); } else if ((double) this.velocity.Y == 0.0) { if (this.direction != 0) this.spriteDirection = this.direction; if ((double) this.velocity.X == 0.0) { this.frame.Y = 0; this.frameCounter = 0.0; } else { this.frameCounter += (double) Math.Abs(this.velocity.X) * 1.0; ++this.frameCounter; if (this.frameCounter > 6.0) { this.frame.Y += num1; this.frameCounter = 0.0; } if (this.frame.Y / num1 >= Main.npcFrameCount[this.type]) this.frame.Y = num1 * 9; if (this.frame.Y / num1 < 9) this.frame.Y = num1 * 9; } } else { this.frame.Y = num1; this.frameCounter = 0.0; } } else if (this.type == 425) { if (this.direction != 0) this.spriteDirection = -this.direction; if ((double) this.ai[2] == 1.0) { ++this.frameCounter; if (this.frameCounter >= 3.0) { this.frame.Y += num1; this.frameCounter = 0.0; } if (this.frame.Y > num1 * 12 || this.frame.Y < num1 * 10) this.frame.Y = num1 * 10; } else if ((double) this.velocity.Y != 0.0) { this.frameCounter = 0.0; this.frame.Y = num1; } else if ((double) this.velocity.X == 0.0) { this.frameCounter = 0.0; this.frame.Y = 0; } else { this.frameCounter += (double) Math.Abs(this.velocity.X); if (this.frameCounter >= 8.0) { this.frame.Y += num1; this.frameCounter = 0.0; } if (this.frame.Y > num1 * 9 || this.frame.Y < num1 * 2) this.frame.Y = num1 * 2; } } else if (this.type == 427) { if (this.direction != 0) this.spriteDirection = this.direction; if ((double) this.velocity.Y != 0.0) { ++this.frameCounter; if (this.frameCounter >= 2.0) { this.frame.Y += num1; this.frameCounter = 0.0; } if (this.frame.Y >= num1 * 9 || this.frame.Y < num1 * 6) this.frame.Y = num1 * 6; } else if ((double) this.velocity.X == 0.0) { this.frameCounter = 0.0; this.frame.Y = 0; } else { this.frameCounter += (double) Math.Abs(this.velocity.X); if (this.frameCounter >= 8.0) { this.frame.Y += num1; this.frameCounter = 0.0; } if (this.frame.Y > num1 * 5 || this.frame.Y < num1) this.frame.Y = num1; } } else if (this.type == 426) { if (this.direction != 0) this.spriteDirection = this.direction; if ((double) this.ai[1] >= 45.0) { if ((double) this.velocity.Y == 0.0) { this.frame.Y = num1 * 8; } else { ++this.frameCounter; if (this.frameCounter >= 2.0) { this.frame.Y += num1; this.frameCounter = 0.0; } if (this.frame.Y >= num1 * 15 || this.frame.Y < num1 * 12) this.frame.Y = num1 * 12; } } else if ((double) this.velocity.Y != 0.0) { ++this.frameCounter; if (this.frameCounter >= 2.0) { this.frame.Y += num1; this.frameCounter = 0.0; } if (this.frame.Y >= num1 * 12 || this.frame.Y < num1 * 9) this.frame.Y = num1 * 9; } else if ((double) this.velocity.X == 0.0) { this.frameCounter = 0.0; this.frame.Y = 0; } else { this.frameCounter += (double) Math.Abs(this.velocity.X); if (this.frameCounter >= 10.0) { this.frame.Y += num1; this.frameCounter = 0.0; } if (this.frame.Y > num1 * 7 || this.frame.Y < num1) this.frame.Y = num1; } } else if (this.type == 429) { if ((double) this.velocity.Y == 0.0) { if (this.direction != 0) this.spriteDirection = this.direction; if ((double) this.velocity.X == 0.0) { this.frame.Y = 0; this.frameCounter = 0.0; } else { this.frameCounter += (double) Math.Abs(this.velocity.X) * 1.0; ++this.frameCounter; if (this.frameCounter > 6.0) { this.frame.Y += num1; this.frameCounter = 0.0; } if (this.frame.Y / num1 >= Main.npcFrameCount[this.type]) this.frame.Y = num1 * 2; } } else { this.frame.Y = num1; this.frameCounter = 0.0; } } else if (this.type == 428) { if ((double) this.velocity.Y == 0.0) { if (this.direction != 0) this.spriteDirection = this.direction; if ((double) this.velocity.X == 0.0) { this.frame.Y = 0; this.frameCounter = 0.0; } else { this.frameCounter += (double) Math.Abs(this.velocity.X) * 1.0; if (++this.frameCounter > 10.0) { this.frame.Y += num1; this.frameCounter = 0.0; } if (this.frame.Y / num1 >= Main.npcFrameCount[this.type] - 1) this.frame.Y = 0; } } else if (this.frame.Y / num1 != 4) { if (this.frameCounter > 0.0) this.frameCounter = 0.0; if (--this.frameCounter < -10.0 || (double) this.velocity.Y > 0.600000023841858) { this.frame.Y = num1 * 4; this.frameCounter = 0.0; } } } else if (this.type == 423) { if ((double) this.ai[2] == 1.0) { int num166 = 2; if ((double) this.ai[1] >= 30.0 && (double) this.ai[1] < 45.0) num166 = 3; this.frame.Y = num166 * num1; } else if ((double) this.velocity.Y != 0.0) this.frame.Y = num1; else if ((double) this.velocity.X == 0.0) { this.frame.Y = 0; } else { if ((double) this.velocity.X != 0.0) this.spriteDirection = Math.Sign(-this.velocity.X); if (this.frame.Y / num1 < 4) this.frame.Y = num1 * 4; this.frameCounter += 1.0 + (double) Math.Abs(this.velocity.X) / 2.0; if (this.frameCounter > 6.0) { this.frame.Y += num1; this.frameCounter = 0.0; } if (this.frame.Y / num1 >= Main.npcFrameCount[this.type]) this.frame.Y = num1 * 4; } } else if (this.type == 421) { if ((double) this.ai[0] == 5.0) ++this.frameCounter; if (++this.frameCounter >= 5.0) { this.frameCounter = 0.0; this.frame.Y += num1; if (this.frame.Y / num1 >= Main.npcFrameCount[this.type]) this.frame.Y = 0; } } if (this.type == 424) { if ((double) this.velocity.Y == 0.0) { if (this.direction != 0) this.spriteDirection = -this.direction; if ((double) this.ai[2] > 0.0) { this.frame.Y = num1 * ((double) this.ai[1] > 90.0 ? Main.npcFrameCount[this.type] - 2 : Main.npcFrameCount[this.type] - 1); this.frameCounter = 0.0; } else if ((double) this.velocity.X == 0.0) { this.frame.Y = 0; } else { if (this.frame.Y < num1 * 2) this.frame.Y = num1 * 2; this.frameCounter += (double) Math.Abs(this.velocity.X) * 2.0; this.frameCounter += (double) this.velocity.X * 1.29999995231628; if (this.frameCounter > 6.0) { this.frame.Y += num1; this.frameCounter = 0.0; } if (this.frame.Y / num1 >= Main.npcFrameCount[this.type] - 2) this.frame.Y = num1 * 2; } } else { this.frameCounter = 0.0; this.frame.Y = num1; } } else if (this.type == 420 && ++this.frameCounter >= 5.0) { this.frameCounter = 0.0; this.frame.Y += num1; if (this.frame.Y / num1 >= Main.npcFrameCount[this.type]) this.frame.Y = 0; } if (this.type == 411) { if ((double) this.ai[1] >= 90.0 && (double) this.ai[1] < 180.0) { this.spriteDirection = -this.direction; this.frame.Y = num1 * (Main.npcFrameCount[this.type] - 1); this.frameCounter = 0.0; } else if ((double) this.velocity.Y == 0.0) { if (this.direction != 0) this.spriteDirection = -this.direction; if ((double) this.velocity.X == 0.0) { this.frame.Y = 0; this.frameCounter = 0.0; } else { this.frameCounter += (double) Math.Abs(this.velocity.X) * 1.0; ++this.frameCounter; if (this.frameCounter > 6.0) { this.frame.Y += num1; this.frameCounter = 0.0; } if (this.frame.Y / num1 >= Main.npcFrameCount[this.type] - 1) this.frame.Y = num1 * 2; } } else { this.frame.Y = num1; this.frameCounter = 0.0; } } else if (this.type == 409) { if ((double) this.velocity.Y == 0.0 && (double) this.ai[1] <= 30.0 && (double) this.ai[1] > 0.0) { this.frame.Y = num1 * (Main.npcFrameCount[this.type] - 1); this.frameCounter = 0.0; } else { if ((double) this.velocity.Y == 0.0) this.spriteDirection = this.direction; if (++this.frameCounter >= 6.0) { this.frameCounter = 0.0; this.frame.Y += num1; if (this.frame.Y / num1 >= Main.npcFrameCount[this.type] - 2) this.frame.Y = 0; } } } else if (this.type == 410) { this.frameCounter += (double) Math.Abs(this.velocity.X); if (this.frameCounter >= 10.0) { this.frameCounter -= 10.0; this.frame.Y += num1; if (this.frame.Y / num1 >= Main.npcFrameCount[this.type]) this.frame.Y = 0; } } else if (this.type == 407) { if (++this.frameCounter >= 6.0) { this.frameCounter = 0.0; this.frame.Y += num1; if (this.frame.Y / num1 >= Main.npcFrameCount[this.type]) this.frame.Y = 0; } } else if ((this.type == 405 || this.type == 406) && ++this.frameCounter >= 4.0) { this.frameCounter = 0.0; this.frame.Y += num1; if (this.frame.Y / num1 >= Main.npcFrameCount[this.type]) this.frame.Y = 0; } if (this.type == 516) { if ((double) this.localAI[1] == 0.0) { this.localAI[1] = 1f; this.frame.Y = num1 * Main.rand.Next(3); this.frameCounter += (double) Main.rand.Next(3); } ++this.frameCounter; if (this.frameCounter > 3.0) { this.frameCounter = 0.0; this.frame.Y += num1; if (this.frame.Y > num1 * 3) this.frame.Y = 0; } } if (this.type == 418) { if ((double) this.ai[0] == 0.0 || (double) this.ai[0] == 1.0 || (double) this.ai[0] == -1.0) { ++this.frameCounter; if (this.frameCounter > 6.0) { this.frameCounter = 0.0; this.frame.Y += num1; } if (this.frame.Y > num1 * 4) this.frame.Y = 0; } else if ((double) this.ai[0] == 2.0) this.frame.Y = (double) this.ai[1] >= 10.0 ? ((double) this.ai[1] >= 20.0 ? num1 * 7 : num1 * 6) : num1 * 5; else if ((double) this.ai[0] == -2.0) { ++this.frameCounter; if (this.frameCounter > 12.0) { this.frameCounter = 0.0; this.frame.Y += num1; } if (this.frame.Y > num1 * 7) this.frame.Y = num1 * 5; } } if (this.type == 1 || this.type == 537 || this.type == 16 || this.type == 59 || this.type == 71 || this.type == 81 || this.type == 138 || this.type == 147 || this.type == 183 || this.type == 184 || this.type == 204 || this.type == 225 || this.type == 302 || this.type == 304 || this.type >= 333 && this.type <= 336 || this.type == 535) { if (this.type == 302 || this.type == 304) this.spriteDirection = this.direction; ++this.frameCounter; if (num2 > 0) ++this.frameCounter; if (num2 == 4) ++this.frameCounter; if (this.frameCounter >= 8.0) { this.frame.Y += num1; this.frameCounter = 0.0; } if (this.frame.Y >= num1 * Main.npcFrameCount[this.type]) this.frame.Y = 0; } if (this.type == 488) { int num167 = (int) this.localAI[1]; if (Framing.GetTileSafely((int) this.ai[0], (int) this.ai[1]).frameX >= (short) 36) num167 *= -1; if ((double) this.localAI[0] > 24.0) this.localAI[0] = 24f; if ((double) this.localAI[0] > 0.0) --this.localAI[0]; if ((double) this.localAI[0] < 0.0) this.localAI[0] = 0.0f; int num168 = num167 == -1 ? 4 : 6; int num169 = (int) this.localAI[0] / num168; if ((double) this.localAI[0] % (double) num168 != 0.0) ++num169; if (num169 != 0 && num167 == 1) num169 += 5; this.frame.Y = num169 * num1; } if (this.type >= 430 && this.type <= 436) { if ((double) this.ai[2] > 0.0) { this.frame.Y = (double) this.ai[2] >= 5.0 ? ((double) this.ai[2] >= 10.0 ? ((double) this.ai[2] >= 15.0 ? num1 * 6 : num1 * 5) : num1 * 4) : num1 * 3; } else { if ((double) this.velocity.Y == 0.0) { if (this.direction == 1) this.spriteDirection = 1; if (this.direction == -1) this.spriteDirection = -1; } if ((double) this.velocity.Y != 0.0 || this.direction == -1 && (double) this.velocity.X > 0.0 || this.direction == 1 && (double) this.velocity.X < 0.0) { this.frameCounter = 0.0; this.frame.Y = num1 * 2; } else if ((double) this.velocity.X == 0.0) { this.frameCounter = 0.0; this.frame.Y = 0; } else { this.frameCounter += (double) Math.Abs(this.velocity.X); if (this.frameCounter < 8.0) this.frame.Y = 0; else if (this.frameCounter < 16.0) this.frame.Y = num1; else if (this.frameCounter < 24.0) this.frame.Y = num1 * 2; else if (this.frameCounter < 32.0) this.frame.Y = num1; else this.frameCounter = 0.0; } } } if (this.type == 454) { int num170 = (int) (this.frameCounter / 2.0); this.frame.Y = num1 * num170; } if (this.type == 377 || this.type == 446) { this.frame.Y = (double) this.velocity.Y == 0.0 ? 0 : num1; this.spriteDirection = this.direction; } if (this.type == 378) { if ((double) this.velocity.Y != 0.0 && this.frame.Y < num1 * 2) this.frame.Y += num1 * 2; if ((double) this.velocity.Y == 0.0 && this.frame.Y > num1 * 2) this.frame.Y -= num1 * 2; ++this.frameCounter; if (this.frameCounter >= 6.0) { this.frameCounter = 0.0; this.frame.Y += num1; if ((double) this.velocity.Y != 0.0 && this.frame.Y >= num1 * 4) this.frame.Y = num1 * 2; if ((double) this.velocity.Y == 0.0 && this.frame.Y >= num1 * 2) this.frame.Y = 0; } } if (this.type == 376) { ++this.frameCounter; if (this.frameCounter > 30.0) { this.frameCounter = 0.0; this.frame.Y += num1; if (this.frame.Y >= num1 * 2) this.frame.Y = 0; } } if (this.type == 375) { ++this.frameCounter; if (this.frameCounter > 4.0) { this.frameCounter = 0.0; this.frame.Y += num1; if (this.frame.Y >= num1 * 4) this.frame.Y = 0; } } if (this.type == 374) { this.localAI[0] = -2f; if ((double) this.velocity.Y == 0.0) { this.rotation = 0.0f; if ((double) this.velocity.X == 0.0) { this.frame.Y = 0; this.frameCounter = 0.0; } else { ++this.frameCounter; if (this.frameCounter > 6.0) { this.frameCounter = 0.0; this.frame.Y += num1; if (this.frame.Y >= num1 * 4) this.frame.Y = num1; } } } else { this.rotation += (float) this.direction * 0.1f; ++this.frameCounter; if (this.frameCounter > 3.0) { this.frameCounter = 0.0; this.frame.Y += num1; if (this.frame.Y >= num1 * 4) this.frame.Y = num1; } } } if (this.type == 492) this.frame.Y = num1 * (int) this.ai[2]; if (this.type == 473 || this.type == 474 || this.type == 475 || this.type == 476) { if ((double) this.velocity.Y == 0.0) this.spriteDirection = this.direction; if ((double) this.ai[0] == 0.0 || (double) this.ai[0] == 7.0) { this.rotation = 0.0f; this.frameCounter = 0.0; this.frame.Y = 0; } else if ((double) this.ai[0] == 1.0) { this.rotation = 0.0f; this.frameCounter = 0.0; int num171 = 6; this.frame.Y = (double) this.ai[1] >= (double) num171 ? ((double) this.ai[1] >= (double) (num171 * 2) ? ((double) this.ai[1] >= (double) (num171 * 3) ? ((double) this.ai[1] >= (double) (num171 * 4) ? ((double) this.ai[1] >= (double) (num171 * 5) ? num1 * 6 : num1 * 5) : num1 * 4) : num1 * 3) : num1 * 2) : num1; } else if ((double) this.ai[0] == 2.0 || (double) this.ai[0] == 6.0) { this.rotation = 0.0f; if ((double) this.velocity.Y == 0.0) { int num172 = 6; ++this.frameCounter; if (this.frame.Y < num1 * 7) this.frame.Y = num1 * 12; if (this.frame.Y < num1 * 10) { if (this.frameCounter > 8.0) { this.frame.Y += num1; this.frameCounter = 0.0; if (this.frame.Y == num1 * 10) this.frameCounter = (double) (num172 * 2); } } else if (this.frameCounter < (double) num172) this.frame.Y = num1 * 12; else if (this.frameCounter < (double) (num172 * 2)) this.frame.Y = num1 * 11; else if (this.frameCounter < (double) (num172 * 3)) { this.frame.Y = num1 * 10; } else { this.frame.Y = num1 * 11; if (this.frameCounter >= (double) (num172 * 4 - 1)) this.frameCounter = 0.0; } } else { this.frame.Y = num1 * 13; this.frameCounter = 0.0; } } else if ((double) this.ai[0] == 3.0) { this.rotation = 0.0f; ++this.frameCounter; if (this.frameCounter > 6.0) { this.frameCounter = 0.0; if (this.frame.Y > num1 * 7) this.frame.Y -= num1; } } else if ((double) this.ai[0] == 4.0 || (double) this.ai[0] == 5.0) { if ((double) this.ai[0] == 4.0 && (double) this.ai[2] == 1.0) this.rotation = 0.0f; this.frame.Y = num1 * 13; this.frameCounter = 0.0; } else if ((double) this.ai[0] == 4.09999990463257) { this.rotation = 0.0f; if (this.frame.Y > num1 * 6) this.frameCounter = 0.0; ++this.frameCounter; int num173 = 4; if (this.frameCounter < (double) num173) this.frame.Y = num1 * 6; else if (this.frameCounter < (double) (num173 * 2)) this.frame.Y = num1 * 5; else if (this.frameCounter < (double) (num173 * 3)) this.frame.Y = num1 * 4; else if (this.frameCounter < (double) (num173 * 4)) this.frame.Y = num1 * 3; else if (this.frameCounter < (double) (num173 * 5)) { this.frame.Y = num1 * 4; } else { this.frame.Y = num1 * 5; if (this.frameCounter >= (double) (num173 * 6 - 1)) this.frameCounter = 0.0; } } } if (this.type == 477) { this.frameCounter += (double) this.velocity.Length() / 4.0; ++this.frameCounter; if (this.frameCounter >= 6.0) { this.frameCounter = 0.0; this.frame.Y += num1; } if (this.frame.Y / num1 > 5) this.frame.Y = 0; } if (this.type == 479) { ++this.frameCounter; int num174 = 4; if (this.frameCounter < (double) num174) this.frame.Y = 0; else if (this.frameCounter < (double) (num174 * 2)) this.frame.Y = num1; else if (this.frameCounter < (double) (num174 * 3)) this.frame.Y = num1 * 2; else if (this.frameCounter < (double) (num174 * 4 - 1)) this.frame.Y = num1; else this.frameCounter = 0.0; } if (this.type == 472) { if ((double) this.velocity.X < 0.0) this.direction = -1; else this.direction = 1; if (this.direction == 1) this.spriteDirection = 1; if (this.direction == -1) this.spriteDirection = -1; this.rotation = (float) Math.Atan2((double) this.velocity.Y * (double) this.direction, (double) this.velocity.X * (double) this.direction); ++this.frameCounter; if (this.frameCounter > 4.0) { this.frame.Y += num1; this.frameCounter = 0.0; } if (this.frame.Y / num1 >= 6) this.frame.Y = 0; } if (this.type >= 449 && this.type <= 452) { if ((double) this.velocity.Y == 0.0) { if (this.direction == 1) this.spriteDirection = 1; if (this.direction == -1) this.spriteDirection = -1; if ((double) this.ai[2] > 0.0) { this.spriteDirection = this.direction; int num175 = 0; if ((double) this.ai[1] < 22.0) num175 = -14; else if ((double) this.ai[1] < 28.0) num175 = 3; else if ((double) this.ai[1] < 34.0) num175 = 2; else if ((double) this.ai[1] < 40.0) num175 = 1; this.frame.Y = num1 * (15 + num175); this.frameCounter = 0.0; } else if ((double) this.velocity.X == 0.0) { this.frame.Y = num1; } else { if (this.frame.Y < num1 * 2) this.frame.Y = num1 * 2; this.frameCounter += (double) Math.Abs(this.velocity.X) * 2.0; if (this.frameCounter > 6.0) { this.frame.Y += num1; this.frameCounter = 0.0; } if (this.frame.Y / num1 >= 15) this.frame.Y = num1 * 2; } } else { this.frameCounter = 0.0; this.frame.Y = 0; } } if (this.type == 481) { if ((double) this.velocity.Y == 0.0) { if (this.direction == 1) this.spriteDirection = 1; if (this.direction == -1) this.spriteDirection = -1; if ((double) this.ai[2] > 0.0) { this.spriteDirection = this.direction; int num176 = 0; if ((double) this.ai[1] < 22.0) num176 = -14; else if ((double) this.ai[1] < 28.0) num176 = 3; else if ((double) this.ai[1] < 34.0) num176 = 2; else if ((double) this.ai[1] < 40.0) num176 = 1; this.frame.Y = num1 * (15 + num176); this.frameCounter = 0.0; } else if ((double) this.velocity.X == 0.0) { this.frame.Y = num1; } else { if (this.frame.Y < num1 * 2) this.frame.Y = num1 * 2; this.frameCounter += (double) Math.Abs(this.velocity.X) * 2.0; if (this.frameCounter > 6.0) { this.frame.Y += num1; this.frameCounter = 0.0; } if (this.frame.Y / num1 >= 15) this.frame.Y = num1 * 2; } } else { this.frameCounter = 0.0; this.frame.Y = 0; } } if (this.type == 468) { if ((double) this.velocity.Y == 0.0) { if (this.direction == 1) this.spriteDirection = 1; if (this.direction == -1) this.spriteDirection = -1; if ((double) this.ai[2] > 0.0) { this.spriteDirection = this.direction; int num177 = 0; if ((double) this.ai[1] < 22.0) num177 = -15; else if ((double) this.ai[1] < 28.0) num177 = 3; else if ((double) this.ai[1] < 34.0) num177 = 2; else if ((double) this.ai[1] < 40.0) num177 = 1; this.frame.Y = num1 * (15 + num177); this.frameCounter = 0.0; } else if ((double) this.velocity.X == 0.0) { this.frame.Y = 0; } else { if (this.frame.Y < num1 * 2) this.frame.Y = num1 * 2; this.frameCounter += (double) Math.Abs(this.velocity.X) * 2.0; if (this.frameCounter > 6.0) { this.frame.Y += num1; this.frameCounter = 0.0; } if (this.frame.Y / num1 >= 15) this.frame.Y = num1 * 2; } } else { this.frameCounter = 0.0; this.frame.Y = num1; } } if (this.type == 379 || this.type == 380) { if ((double) this.velocity.Y == 0.0) { if (this.direction == 1) this.spriteDirection = 1; if (this.direction == -1) this.spriteDirection = -1; if ((double) this.ai[2] > 0.0) { this.spriteDirection = this.direction; this.frame.Y = num1 * ((int) this.ai[2] - 1 + 2); this.frameCounter = 0.0; } else if ((double) this.velocity.X == 0.0) { this.frame.Y = 0; } else { if (this.frame.Y < num1 * 7) this.frame.Y = num1 * 7; this.frameCounter += (double) Math.Abs(this.velocity.X) * 2.0; if (this.frameCounter > 6.0) { this.frame.Y += num1; this.frameCounter = 0.0; } if (this.frame.Y / num1 >= Main.npcFrameCount[this.type]) this.frame.Y = num1 * 7; } } else { this.frameCounter = 0.0; this.frame.Y = num1; } } if (this.type == 381 || this.type == 382 || this.type == 383 || this.type == 385 || this.type == 389) { if ((double) this.velocity.Y == 0.0) { this.spriteDirection = this.direction; if (this.frame.Y < num1 * 2) this.frame.Y = num1 * 2; if (this.type == 389 || this.type == 385) this.frameCounter += (double) Math.Abs(this.velocity.X) * 1.2; else this.frameCounter += (double) Math.Abs(this.velocity.X) * 2.0; if (this.frameCounter > 6.0) { this.frame.Y += num1; this.frameCounter = 0.0; } if (this.frame.Y / num1 >= Main.npcFrameCount[this.type]) this.frame.Y = num1 * 2; if ((double) this.velocity.X == 0.0) this.frame.Y = 0; } else { this.frameCounter = 0.0; this.frame.Y = num1; } } if (this.type == 387) { if ((double) this.ai[0] > 0.0) { ++this.frameCounter; if ((double) this.ai[0] >= 20.0) ++this.frameCounter; if ((double) this.ai[0] >= 40.0) ++this.frameCounter; if (this.frameCounter >= 10.0) { this.frameCounter = 0.0; this.frame.Y += num1; if (this.frame.Y >= num1 * 2) this.frame.Y = 0; } } else { ++this.frameCounter; if (this.frameCounter >= 15.0) { this.frameCounter = 0.0; this.frame.Y += num1; if (this.frame.Y >= num1 * 2) this.frame.Y = 0; } } } if (this.type == 386) { if ((double) this.ai[2] > 0.0) { int num178 = (int) this.ai[2] / 12; this.frame.Y = num1 * (9 + num178 % 2); } else if ((double) this.velocity.Y == 0.0) { this.spriteDirection = this.direction; if (this.frame.Y < num1 * 2) this.frame.Y = num1 * 2; this.frameCounter += (double) Math.Abs(this.velocity.X) * 2.0; if (this.frameCounter > 6.0) { this.frame.Y += num1; this.frameCounter = 0.0; } if (this.frame.Y / num1 >= 9) this.frame.Y = num1 * 2; if ((double) this.velocity.X == 0.0) this.frame.Y = 0; } else { this.frameCounter = 0.0; this.frame.Y = num1; } } if (this.type == 388) { ++this.frameCounter; if (this.frameCounter >= 6.0) { this.frameCounter = 0.0; this.frame.Y += num1; if (this.frame.Y >= num1 * 2) this.frame.Y = 0; } } if (this.type == 391) { if ((double) this.velocity.Y == 0.0) { if (this.direction == 1) this.spriteDirection = -1; if (this.direction == -1) this.spriteDirection = 1; if (this.frame.Y < num1) this.frame.Y = num1; this.frameCounter += (double) Math.Abs(this.velocity.X) * 0.5; if (this.frameCounter > 6.0) { this.frame.Y += num1; this.frameCounter = 0.0; } if (this.frame.Y / num1 >= Main.npcFrameCount[this.type]) this.frame.Y = num1; if ((double) this.velocity.X == 0.0) this.frame.Y = 0; } else { this.frameCounter = 0.0; this.frame.Y = 0; } } if (this.type == 390) { if (this.direction != 0) this.spriteDirection = -this.direction; this.frame.Y = (double) this.ai[2] <= 0.0 ? num1 * 2 : num1 * ((int) this.ai[2] - 1); } if (this.type == 393) { Vector2 rotationVector2 = this.ai[2].ToRotationVector2(); int num179 = (double) rotationVector2.Y <= (double) Math.Abs(rotationVector2.X) * 2.0 ? ((double) rotationVector2.Y <= (double) Math.Abs(rotationVector2.X) * 1.5 ? ((double) Math.Abs(rotationVector2.X) <= (double) rotationVector2.Y * 2.0 ? ((double) Math.Abs(rotationVector2.X) <= (double) rotationVector2.Y * 1.5 ? ((double) rotationVector2.X > 0.0 ? 6 : 2) : ((double) rotationVector2.X > 0.0 ? 7 : 1)) : ((double) rotationVector2.X > 0.0 ? 8 : 0)) : ((double) rotationVector2.X > 0.0 ? 5 : 3)) : 4; this.frame.Y = num1 * num179; float num180 = 280f; float num181 = 140f; if (((double) this.ai[3] < (double) num180 ? 0 : ((double) this.ai[3] < (double) num180 + (double) num181 ? 1 : 0)) != 0 && (int) this.ai[3] % 6 <= 2) this.frame.Y += num1 * 9; } if (this.type == 394) { int num182 = (int) this.ai[3] - 300; if (num182 >= 120) { int num183 = num182 - 120; this.frame.Y = num183 < 160 ? (num183 < 20 ? num1 * (4 + num183 / 5) : num1 * (num183 / 4 % 4)) : num1 * (7 - (num183 - 160) / 5); } else this.frame.Y = num1 * 4; } if (this.type == 395) { float num184 = 20f; float num185 = 240f; int num186 = (double) this.ai[3] < (double) num184 ? 0 : ((double) this.ai[3] < (double) num184 + (double) num185 ? 1 : 0); ++this.frameCounter; if (this.frameCounter >= 66.0) this.frameCounter = 0.0; if (num186 != 0) { ++this.frameCounter; if (this.frameCounter >= 54.0 || this.frameCounter < 36.0) this.frameCounter = 36.0; } int num187 = (int) this.frameCounter % 66 / 6; this.frame.Y = num1 * num187; } if (this.type == 392) { float num188 = 20f; float num189 = 240f; int num190 = (double) this.ai[3] < (double) num188 ? 0 : ((double) this.ai[3] < (double) num188 + (double) num189 ? 1 : 0); ++this.frameCounter; if (num190 != 0) ++this.frameCounter; if (this.frameCounter >= 12.0) this.frameCounter = 0.0; int num191 = (int) this.frameCounter % 12 / 3; this.frame.Y = num1 * num191; } if (this.type == 399) { this.frameCounter = (this.frameCounter + 0.25) % 4.0 + ((double) this.ai[0] == 0.0 ? 0.0 : 4.0); this.frame.Y = num1 * (int) this.frameCounter; } else if (this.type == 520) { if ((double) this.velocity.Y == 0.0) { this.spriteDirection = this.direction; this.frameCounter += (double) Math.Abs(this.velocity.X) * 1.0; if (this.frameCounter > 6.0) { if ((double) Math.Abs(this.velocity.X) < 0.200000002980232) { this.frame.Y = 0; this.frameCounter = 0.0; } else { this.frame.Y += num1; this.frameCounter = 0.0; } } if (this.frame.Y / num1 >= Main.npcFrameCount[this.type]) this.frame.Y = num1; if ((double) this.velocity.X == 0.0) this.frame.Y = 0; } else { this.frameCounter = 0.0; this.frame.Y = num1; } } if (this.type == 398) { if ((double) this.ai[0] <= 0.0) { this.frame.Y = 0; } else { if (this.frame.Y == 0) { Gore.NewGore(this.position + new Vector2(-10f, -15f), this.velocity, 619); Gore.NewGore(this.position + new Vector2(10f, -15f), this.velocity, 620); Gore.NewGore(this.position + new Vector2(-10f, 15f), this.velocity, 621); Gore.NewGore(this.position + new Vector2(10f, 15f), this.velocity, 622); for (int index = 0; index < 50; ++index) { this.frame.Y = num1; Dust.NewDust(this.position, this.width, this.height, 209); } } ++this.frameCounter; if (this.frameCounter >= 30.0) this.frameCounter = 6.0; int num192 = (int) this.frameCounter % 30 / 6; this.frame.Y = num1 * num192; } } if (this.type == 397) { int num193 = (int) this.frameCounter / 7; this.frame.Y = num1 * num193; } if (this.type == 400) { ++this.frameCounter; if ((double) this.ai[0] == 0.0 || (double) this.ai[0] == 3.0) ++this.frameCounter; if (this.frameCounter >= 16.0) this.frameCounter = 0.0; int num194 = (int) this.frameCounter % 16 / 4; this.frame.Y = num1 * num194; } if (this.type == 437) { ++this.frameCounter; if (this.frameCounter >= 20.0) this.frameCounter = 0.0; int num195 = (int) this.frameCounter % 20 / 5; this.frame.Y = num1 * num195; } if (this.type == 438) { ++this.frameCounter; if ((double) this.ai[1] == 1.0) ++this.frameCounter; if (this.frameCounter >= 49.0) this.frameCounter = 0.0; int num196 = (int) this.frameCounter % 49 / 7; if (num196 >= 4) num196 = 6 - num196; this.frame.Y = num1 * num196; } if (this.type == 439 || this.type == 440) { switch ((int) this.localAI[2]) { case 0: if (this.frameCounter >= 15.0) { this.frameCounter = 0.0; this.frame.Y = 0; break; } if (this.frame.Y != 0) { this.frame.Y = ((int) this.frameCounter / 5 + 4) * num1; break; } break; case 1: if (this.frameCounter >= 15.0) { this.frameCounter = 0.0; this.frame.Y = num1; break; } if (this.frame.Y != num1) { this.frame.Y = ((int) this.frameCounter / 5 + 10) * num1; break; } break; case 2: if (this.frameCounter >= 15.0) { this.frameCounter = 0.0; this.frame.Y = num1 * 2; break; } if (this.frame.Y != num1 * 2) { this.frame.Y = ((int) this.frameCounter / 5 + 7) * num1; break; } break; case 10: if (this.frameCounter >= 15.0) this.frameCounter = 0.0; this.frame.Y = ((int) this.frameCounter / 5 + 4) * num1; break; case 11: if (this.frameCounter >= 15.0) this.frameCounter = 0.0; this.frame.Y = ((int) this.frameCounter / 5 + 10) * num1; break; case 12: if (this.frameCounter >= 15.0) this.frameCounter = 0.0; this.frame.Y = ((int) this.frameCounter / 5 + 7) * num1; break; case 13: if (this.frameCounter >= 15.0) this.frameCounter = 0.0; this.frame.Y = ((int) this.frameCounter / 5 + 13) * num1; break; } ++this.frameCounter; } if (this.type == 521) { if ((double) this.velocity.X < 0.0) this.direction = -1; else this.direction = 1; if (this.direction != 0) this.spriteDirection = this.direction; this.rotation = (float) Math.Atan2((double) this.velocity.Y * (double) this.spriteDirection, (double) this.velocity.X * (double) this.spriteDirection) + this.velocity.X * 0.1f; if (++this.frameCounter >= 5.0) { this.frame.Y += num1; this.frameCounter = 0.0; if (this.frame.Y / num1 >= Main.npcFrameCount[this.type]) this.frame.Y = 0; } } if (this.type == 523 && ++this.frameCounter >= 6.0) { this.frame.Y += num1; this.frameCounter = 0.0; if (this.frame.Y / num1 >= Main.npcFrameCount[this.type]) this.frame.Y = 0; } if (this.type == 371 || this.type == 372 || this.type == 373) this.frame.Y = num1; if (this.type == 370) { if ((double) this.ai[0] == 0.0 || (double) this.ai[0] == 5.0) { int num197 = 5; if ((double) this.ai[0] == 5.0) num197 = 4; ++this.frameCounter; if (this.frameCounter > (double) num197) { this.frameCounter = 0.0; this.frame.Y += num1; } if (this.frame.Y >= num1 * 6) this.frame.Y = 0; } if ((double) this.ai[0] == 1.0 || (double) this.ai[0] == 6.0) this.frame.Y = (double) this.ai[2] >= 10.0 ? num1 * 7 : num1 * 6; if ((double) this.ai[0] == 2.0 || (double) this.ai[0] == 7.0) this.frame.Y = (double) this.ai[2] >= 10.0 ? num1 * 7 : num1 * 6; if ((double) this.ai[0] == 3.0 || (double) this.ai[0] == 8.0 || (double) this.ai[0] == -1.0) { int num198 = 90; if ((double) this.ai[2] < (double) (num198 - 30) || (double) this.ai[2] > (double) (num198 - 10)) { ++this.frameCounter; if (this.frameCounter > 5.0) { this.frameCounter = 0.0; this.frame.Y += num1; } if (this.frame.Y >= num1 * 6) this.frame.Y = 0; } else { this.frame.Y = num1 * 6; if ((double) this.ai[2] > (double) (num198 - 20) && (double) this.ai[2] < (double) (num198 - 15)) this.frame.Y = num1 * 7; } } if ((double) this.ai[0] == 4.0 || (double) this.ai[0] == 9.0) { int num199 = 180; if ((double) this.ai[2] < (double) (num199 - 60) || (double) this.ai[2] > (double) (num199 - 20)) { ++this.frameCounter; if (this.frameCounter > 5.0) { this.frameCounter = 0.0; this.frame.Y += num1; } if (this.frame.Y >= num1 * 6) this.frame.Y = 0; } else { this.frame.Y = num1 * 6; if ((double) this.ai[2] > (double) (num199 - 50) && (double) this.ai[2] < (double) (num199 - 25)) this.frame.Y = num1 * 7; } } } if (this.type == 359 || this.type == 360) { if ((double) this.velocity.Y > 1.0) { ++this.frameCounter; int num200 = 6; if (this.frameCounter < (double) num200) { this.frame.Y = num1 * 4; } else { this.frame.Y = num1 * 5; if (this.frameCounter >= (double) (num200 * 2 - 1)) this.frameCounter = 0.0; } } else { ++this.frameCounter; int num201 = 10; if (this.frameCounter < (double) num201) this.frame.Y = 0; else if (this.frameCounter < (double) (num201 * 2)) this.frame.Y = num1; else if (this.frameCounter < (double) (num201 * 3)) this.frame.Y = num1 * 2; else if (this.frameCounter < (double) (num201 * 4)) this.frame.Y = num1 * 3; else if (this.frameCounter < (double) (num201 * 5)) { this.frame.Y = num1 * 2; } else { this.frame.Y = num1; if (this.frameCounter >= (double) (num201 * 6 - 1)) this.frameCounter = 0.0; } } } if (this.type == 327) { if ((double) this.ai[3] == 0.0) { if (this.frame.Y > num1 * 5) ++this.frameCounter; else if (this.frame.Y > 0) --this.frameCounter; } else if ((double) this.ai[3] == 1.0) { if (this.frame.Y > num1 * 10) ++this.frameCounter; else if (this.frame.Y > num1 * 4) --this.frameCounter; else if (this.frame.Y < num1 * 4) ++this.frameCounter; } else if ((double) this.ai[3] == 2.0) { if (this.frame.Y < num1 * 2) --this.frameCounter; else if (this.frame.Y > num1 * 8) --this.frameCounter; else if (this.frame.Y < num1 * 8) ++this.frameCounter; } if (this.frameCounter > 6.0) { this.frameCounter = 0.0; this.frame.Y += num1; if (this.frame.Y > num1 * 11) this.frame.Y = 0; } if (this.frameCounter < 0.0) { this.frameCounter = 6.0; this.frame.Y -= num1; if (this.frame.Y < 0) this.frame.Y = num1 * 11; } } if (this.type == 347) { ++this.frameCounter; if (this.frameCounter > 1.0) { this.frame.Y += num1; this.frameCounter = 0.0; } if (this.frame.Y > num1 * 3) this.frame.Y = 0; } if (this.type == 346) { if ((double) this.ai[0] == 1.0) { this.spriteDirection = this.direction; ++this.frameCounter; if (this.frameCounter > 2.0) { this.frame.Y += num1; this.frameCounter = 0.0; } if (this.frame.Y > num1 * 8) this.frame.Y = num1 * 6; if (this.frame.Y < num1 * 6) this.frame.Y = num1 * 6; } else if ((double) this.velocity.X == 0.0) { ref int local = ref this.frame.Y; local = local; this.frameCounter = 0.0; } else { this.spriteDirection = this.direction; ++this.frameCounter; this.frameCounter += (double) Math.Abs(this.velocity.X) / 2.0; if (this.frameCounter > 4.0) { this.frame.Y += num1; this.frameCounter = 0.0; } if (this.frame.Y > num1 * 5) this.frame.Y = num1; if (this.frame.Y < num1) this.frame.Y = num1; } } if (this.type == 352) { ++this.frameCounter; if (this.frameCounter > 3.0) { this.frame.Y += num1; this.frameCounter = 0.0; } if (this.frame.Y > num1 * 5) this.frame.Y = 0; } if (this.type == 345) { if ((double) this.ai[0] == 0.0) this.frame.Y = (double) this.ai[3] < 0.0 ? ((double) this.velocity.X >= 0.0 ? num1 * 2 : num1) : 0; else if ((double) this.ai[0] == 1.0) { ++this.frameCounter; if (this.frameCounter > 5.0) { this.frameCounter = 0.0; this.frame.Y += num1; } if (this.frame.Y > num1 * 4) this.frame.Y = num1 * 3; if (this.frame.Y < num1 * 3) this.frame.Y = num1 * 3; } else if ((double) this.ai[0] == 2.0) this.frame.Y = num1 * 5; } if (this.type == 344) { if ((double) this.velocity.X == 0.0) { ++this.frameCounter; if (this.frameCounter > 2.0) { this.frameCounter = 0.0; this.frame.Y += num1; } if (this.frame.Y > num1 * 9) this.frame.Y = 0; } else { ++this.frameCounter; if (this.frameCounter > 3.0) { this.frameCounter = 0.0; this.frame.Y += num1; } if (this.frame.Y > num1 * 9) this.frame.Y = 0; } } if (this.type == 325) { if ((double) this.velocity.X == 0.0) { ++this.frameCounter; if (this.frameCounter > 4.0) { this.frameCounter = 0.0; this.frame.Y += num1; } if (this.frame.Y > num1 * 4) this.frame.Y = 0; } else { ++this.frameCounter; if (this.frameCounter > 4.0) { this.frameCounter = 0.0; this.frame.Y += num1; } if (this.frame.Y < num1 * 5) this.frame.Y = num1 * 5; if (this.frame.Y > num1 * 9) this.frame.Y = num1 * 5; } } if (this.type == 490) { this.rotation = this.velocity.X * 0.15f; ++this.frameCounter; if (this.frameCounter > 6.0) { this.frameCounter = 0.0; this.frame.Y += num1; } if (this.frame.Y >= num1 * Main.npcFrameCount[this.type]) this.frame.Y = 0; } else if (this.type == 266) { ++this.frameCounter; if (this.frameCounter > 6.0) { this.frameCounter = 0.0; this.frame.Y += num1; } if ((double) this.ai[0] >= 0.0) { if (this.frame.Y > num1 * 3) this.frame.Y = 0; } else { if (this.frame.Y < num1 * 4) this.frame.Y = num1 * 4; if (this.frame.Y > num1 * 7) this.frame.Y = num1 * 4; } } else if (this.type == 262) { ++this.frameCounter; if (this.frameCounter > 6.0) { this.frameCounter = 0.0; this.frame.Y += num1; } if (this.life > this.lifeMax / 2) { if (this.frame.Y > num1 * 3) this.frame.Y = 0; } else { if (this.frame.Y < num1 * 4) this.frame.Y = num1 * 4; if (this.frame.Y > num1 * 7) this.frame.Y = num1 * 4; } } else if (this.type >= 305 && this.type <= 309) { if ((double) this.velocity.Y == 0.0) this.spriteDirection = this.direction; this.frame.Y = (double) this.velocity.Y >= -3.0 ? ((double) this.velocity.Y > 0.0 ? ((double) this.velocity.Y >= 2.0 ? num1 : num1 * 3) : 0) : num1 * 5; this.rotation = this.velocity.X * 0.1f; } else if (this.type == 263) { if ((double) this.velocity.X == 0.0 && (double) this.velocity.Y == 0.0) { if (this.frame.Y > 0) { ++this.frameCounter; if (this.frameCounter > 4.0) { this.frameCounter = 0.0; this.frame.Y -= num1; } } } else if (this.frame.Y < 2) { ++this.frameCounter; if (this.frameCounter > 4.0) { this.frameCounter = 0.0; this.frame.Y += num1; } } } else if (this.type == 244) { ++this.frameCounter; if (num2 > 0) ++this.frameCounter; if (num2 == 4) ++this.frameCounter; if (this.frameCounter >= 8.0) { this.frame.Y += num1; this.frameCounter = 0.0; } if (this.frame.Y >= num1 * Main.npcFrameCount[this.type]) this.frame.Y = 0; } else if (this.type == 289) { ++this.frameCounter; if (this.frameCounter < 2.0) this.frame.Y = 0; else if (this.frameCounter < 3.0) { this.frame.Y = num1; } else { this.frame.Y = num1 * 2; this.frameCounter = 0.0; } if ((double) this.ai[3] == 1.0) this.frame.Y += num1 * 3; } else if (this.type == 288) { ++this.frameCounter; if (this.frameCounter >= 6.0) { this.frame.Y += num1; this.frameCounter = 0.0; } if (this.frame.Y >= num1 * Main.npcFrameCount[this.type]) this.frame.Y = 0; } else if (this.type == 355 || this.type == 358) { this.spriteDirection = this.direction; ++this.frameCounter; if (this.frameCounter < 4.0) { this.frame.Y = 0; } else { this.frame.Y = num1; if (this.frameCounter >= 7.0) this.frameCounter = 0.0; } if ((double) this.localAI[2] <= 0.0) this.frame.Y += num1 * 2; } else if (this.type == 356 || this.type == 444) { int num202 = 7; this.rotation = this.velocity.X * 0.3f; this.spriteDirection = this.direction; this.frameCounter = this.frameCounter + 1.0 + ((double) Math.Abs(this.velocity.X) + (double) Math.Abs(this.velocity.Y)) / 2.0; if (this.frameCounter < (double) num202) this.frame.Y = 0; else if (this.frameCounter < (double) (num202 * 2)) this.frame.Y = num1; else if (this.frameCounter < (double) (num202 * 3)) { this.frame.Y = num1 * 2; } else { this.frame.Y = num1; if (this.frameCounter >= (double) (num202 * 4 - 1)) this.frameCounter = 0.0; } if (this.type != 444) this.frame.Y += (int) ((double) (num1 * 3) * ((double) this.ai[2] - 1.0)); } else if (this.type == 357 || this.type == 448 || this.type == 484) { this.localAI[0] = -2f; if ((double) this.velocity.Y == 0.0) { this.rotation = 0.0f; if ((double) this.velocity.X == 0.0) { this.frame.Y = num1; this.frameCounter = 0.0; } else { ++this.frameCounter; if (this.frameCounter > 12.0) { this.frameCounter = 0.0; this.frame.Y += num1; if (this.frame.Y > num1) this.frame.Y = 0; } } } else { this.rotation += (float) this.direction * 0.1f; this.frame.Y = num1; } int x = (int) this.Center.X / 16; int y = (int) this.position.Y / 16; if (WorldGen.InWorld(x, y) && Main.tile[x, y] != null) { if (Main.tile[x, y].slope() == (byte) 0) ++y; if (Main.tile[x, y].slope() == (byte) 1) { this.rotation = 0.785f; this.localAI[0] = 0.0f; } else if (Main.tile[x, y].slope() == (byte) 2) { this.rotation = -0.785f; this.localAI[0] = 0.0f; } } } else if (this.type >= 485 && this.type <= 487) { this.spriteDirection = this.direction; this.localAI[0] = -2f; if ((double) this.velocity.Y == 0.0) { this.rotation = 0.0f; if ((double) this.velocity.X == 0.0) { this.frame.Y = num1; this.frameCounter = 0.0; } else { this.frameCounter += (double) Math.Abs(this.velocity.X * 5f); if (this.frameCounter > 10.0) { this.frameCounter = 0.0; this.frame.Y += num1; if (this.frame.Y > num1 * 3) this.frame.Y = 0; } } } else { this.rotation += (float) this.direction * 0.1f; this.frame.Y = num1; } int index5 = (int) this.Center.X / 16; int index6 = (int) this.position.Y / 16; if (Main.tile[index5, index6] != null) { if (Main.tile[index5, index6].slope() == (byte) 0) ++index6; if (Main.tile[index5, index6].slope() == (byte) 1) { this.rotation = 0.785f; this.localAI[0] = 0.0f; } else if (Main.tile[index5, index6].slope() == (byte) 2) { this.rotation = -0.785f; this.localAI[0] = 0.0f; } } } else if (this.type == 250 || this.type == 264 || this.type == 268) { ++this.frameCounter; if (this.frameCounter >= 6.0) { this.frame.Y += num1; this.frameCounter = 0.0; } if (this.frame.Y >= num1 * Main.npcFrameCount[this.type]) this.frame.Y = 0; } else if (this.type == 245) { if ((double) this.ai[0] == 0.0) this.frame.Y = (double) this.ai[1] >= -16.0 ? ((double) this.ai[1] >= -12.0 ? ((double) this.ai[1] >= -8.0 ? ((double) this.ai[1] >= -4.0 ? ((double) this.ai[1] >= 0.0 ? 0 : num1 * 4) : num1 * 3) : num1 * 2) : num1) : 0; else if ((double) this.ai[0] == 1.0) this.frame.Y = 1; } else if (this.type == 246) { if ((double) this.ai[0] == 0.0) this.frame.Y = (double) this.localAI[0] != 1.0 ? 0 : num1; else if ((double) this.ai[0] == 1.0) { this.frame.Y = (double) this.localAI[0] != 1.0 ? 0 : num1; if ((double) this.localAI[1] == -1.0) this.frame.Y += num1 * 4; if ((double) this.localAI[1] == 1.0) this.frame.Y += num1 * 2; } } else if (this.type == 249) this.frame.Y = (double) this.localAI[0] != 1.0 ? 0 : num1; else if (this.type == 141) { this.spriteDirection = this.direction; if ((double) this.velocity.Y != 0.0) { this.frame.Y = num1 * 2; } else { ++this.frameCounter; if (this.frameCounter >= 8.0) { this.frame.Y += num1; this.frameCounter = 0.0; } if (this.frame.Y > num1) this.frame.Y = 0; } } else if (this.type == 243) { if (this.frameCounter < 0.0) { if ((double) this.velocity.Y == 0.0) { ++this.frameCounter; if (this.frameCounter < -12.0) { if (this.frame.Y > num1 * 9) this.frame.Y = num1 * 11; } else if (this.frameCounter < -6.0) { if (this.frame.Y > num1 * 9) this.frame.Y = num1 * 12; } else if (this.frameCounter < 0.0) { this.frameCounter = 0.0; if (this.frame.Y > num1 * 9) this.frame.Y = num1 * 11; } } else { this.frameCounter = -18.0; this.frame.Y = (double) this.velocity.Y >= 0.0 ? num1 * 13 : num1 * 14; } } else { this.spriteDirection = this.direction; this.frameCounter += (double) Math.Abs(this.velocity.X * 1.1f); if (this.frameCounter >= 6.0) { this.frameCounter = 0.0; this.frame.Y += num1; if (this.frame.Y > num1 * 9) this.frame.Y = 0; } if ((double) this.velocity.Y < -2.0 || (double) this.velocity.Y > 5.0) this.frameCounter = -18.0; } } else if (this.type == 222) { ++this.frameCounter; if ((double) this.localAI[0] == 1.0) { if (this.frameCounter > 4.0) { this.frame.Y += num1; this.frameCounter = 0.0; } if (this.frame.Y >= num1 * 4) this.frame.Y = 0; } else { if (this.frameCounter > 4.0) { this.frame.Y += num1; this.frameCounter = 0.0; } if (this.frame.Y < num1 * 4) this.frame.Y = num1 * 4; if (this.frame.Y >= num1 * 12) this.frame.Y = num1 * 4; } } else if (this.type == 164 || this.type == 239 || this.type == 530) { if ((double) this.velocity.Y != 0.0) { this.frameCounter = 0.0; this.frame.Y = (double) this.velocity.Y >= 0.0 ? 0 : num1 * 4; } else { this.spriteDirection = this.direction; this.frameCounter += (double) Math.Abs(this.velocity.X) * 1.10000002384186; if (this.frameCounter < 6.0) this.frame.Y = num1; else if (this.frameCounter < 12.0) this.frame.Y = num1 * 2; else if (this.frameCounter < 18.0) this.frame.Y = num1 * 3; else this.frameCounter = 0.0; } } else if (this.type == 236) { if ((double) this.velocity.Y == 0.0) this.spriteDirection = this.direction; else this.frame.Y = 0; this.frameCounter += (double) Math.Abs(this.velocity.X); if (this.frameCounter > 6.0) { this.frame.Y += num1; this.frameCounter = 0.0; } if (this.frame.Y > num1 || (double) this.velocity.Y != 0.0) this.frame.Y = 0; } else if (this.type == 165 || this.type == 237 || this.type == 238 || this.type == 240 || this.type == 531) { float num203 = 0.5f; if (this.type == 531) num203 = 0.4f; this.frameCounter += ((double) Math.Abs(this.velocity.X) + (double) Math.Abs(this.velocity.Y)) * (double) num203; if (this.frameCounter < 6.0) this.frame.Y = 0; else if (this.frameCounter < 12.0) this.frame.Y = num1; else if (this.frameCounter < 18.0) this.frame.Y = num1 * 2; else if (this.frameCounter < 24.0) this.frame.Y = num1 * 3; else this.frameCounter = 0.0; } else if (this.type == 195) this.frame.Y = (double) this.ai[0] >= 3.0 ? ((double) this.ai[0] >= 6.0 ? ((double) this.ai[0] >= 9.0 ? ((double) this.ai[0] >= 12.0 ? ((double) this.ai[0] >= 15.0 ? num1 * 5 : num1 * 4) : num1 * 3) : num1 * 2) : num1) : 0; else if (this.type == 174) this.frame.Y = (double) this.velocity.Y != 0.0 ? ((double) this.velocity.Y >= -1.5 ? ((double) this.velocity.Y <= 1.5 ? num1 * 2 : num1 * 3) : num1) : 0; else if (this.type == 177) { if ((double) this.velocity.Y == 0.0) { ++this.frameCounter; if (this.frameCounter >= 10.0) { this.frameCounter = 30.0; this.frame.Y = 0; } else this.frame.Y = num1; } else if ((double) this.velocity.Y < 0.0) { this.frame.Y = num1 * 2; } else { this.frameCounter = 0.0; this.frame.Y = num1 * 2; } } else if (this.type == 163) { if ((double) this.velocity.Y != 0.0) { this.frameCounter = -12.0; this.frame.Y = (double) this.velocity.Y >= 0.0 ? num1 * 6 : num1 * 5; } else { this.spriteDirection = this.direction; this.frameCounter += (double) Math.Abs(this.velocity.X) * 1.10000002384186; if (this.frameCounter < -6.0) this.frame.Y = num1 * 6; else if (this.frameCounter < 0.0) this.frame.Y = num1 * 7; else if (this.frameCounter < 6.0) this.frame.Y = num1; else if (this.frameCounter < 12.0) this.frame.Y = num1 * 2; else if (this.frameCounter < 18.0) this.frame.Y = num1 * 3; else this.frameCounter = 0.0; } } else if (this.type == 143) { if ((double) this.velocity.Y > 0.0) ++this.frameCounter; else if ((double) this.velocity.Y < 0.0) --this.frameCounter; if (this.frameCounter < 6.0) this.frame.Y = num1; else if (this.frameCounter < 12.0) this.frame.Y = num1 * 2; else if (this.frameCounter < 18.0) this.frame.Y = num1 * 3; if (this.frameCounter < 0.0) this.frameCounter = 0.0; if (this.frameCounter > 17.0) this.frameCounter = 17.0; } else if (this.type == 144) { if ((double) this.velocity.X == 0.0 && (double) this.velocity.Y == 0.0) { ++this.localAI[3]; if ((double) this.localAI[3] < 6.0) this.frame.Y = 0; else if ((double) this.localAI[3] < 12.0) this.frame.Y = num1; if ((double) this.localAI[3] >= 11.0) this.localAI[3] = 0.0f; } else { if ((double) this.velocity.Y > 0.0) ++this.frameCounter; else if ((double) this.velocity.Y < 0.0) --this.frameCounter; if (this.frameCounter < 6.0) this.frame.Y = num1 * 2; else if (this.frameCounter < 12.0) this.frame.Y = num1 * 3; else if (this.frameCounter < 18.0) this.frame.Y = num1 * 4; if (this.frameCounter < 0.0) this.frameCounter = 0.0; if (this.frameCounter > 17.0) this.frameCounter = 17.0; } } else if (this.type == 145) { if ((double) this.velocity.X == 0.0 && (double) this.velocity.Y == 0.0) { if ((double) this.ai[2] < 4.0) this.frame.Y = 0; else if ((double) this.ai[2] < 8.0) this.frame.Y = num1; else if ((double) this.ai[2] < 12.0) this.frame.Y = num1 * 2; else if ((double) this.ai[2] < 16.0) this.frame.Y = num1 * 3; } else { if ((double) this.velocity.Y > 0.0) ++this.frameCounter; else if ((double) this.velocity.Y < 0.0) --this.frameCounter; if (this.frameCounter < 6.0) this.frame.Y = num1 * 4; else if (this.frameCounter < 12.0) this.frame.Y = num1 * 5; else if (this.frameCounter < 18.0) this.frame.Y = num1 * 6; if (this.frameCounter < 0.0) this.frameCounter = 0.0; if (this.frameCounter > 17.0) this.frameCounter = 17.0; } } else if (this.type == 50) { if ((double) this.velocity.Y != 0.0) { if (this.frame.Y < num1 * 4) { this.frame.Y = num1 * 4; this.frameCounter = 0.0; } if (++this.frameCounter >= 4.0) this.frame.Y = num1 * 5; } else { if (this.frame.Y >= num1 * 5) { this.frame.Y = num1 * 4; this.frameCounter = 0.0; } ++this.frameCounter; if (num2 > 0) ++this.frameCounter; if (num2 == 4) ++this.frameCounter; if (this.frameCounter >= 8.0) { this.frame.Y += num1; this.frameCounter = 0.0; if (this.frame.Y >= num1 * 4) this.frame.Y = 0; } } } else if (this.type == 170 || this.type == 171 || this.type == 180) { this.spriteDirection = this.direction; ++this.frameCounter; if (this.frameCounter >= 4.0) { this.frame.Y += num1; this.frameCounter = 0.0; } if (this.frame.Y >= num1 * 14) this.frame.Y = 0; } else if (this.type == 135) this.frame.Y = (double) this.ai[2] != 0.0 ? num1 : 0; else if (this.type == 85 || this.type == 341) { if ((double) this.ai[0] == 0.0) { this.frameCounter = 0.0; this.frame.Y = 0; } else { int num204 = 3; if ((double) this.velocity.Y == 0.0) --this.frameCounter; else ++this.frameCounter; if (this.frameCounter < 0.0) this.frameCounter = 0.0; if (this.frameCounter > (double) (num204 * 4)) this.frameCounter = (double) (num204 * 4); if (this.frameCounter < (double) num204) this.frame.Y = num1; else if (this.frameCounter < (double) (num204 * 2)) this.frame.Y = num1 * 2; else if (this.frameCounter < (double) (num204 * 3)) this.frame.Y = num1 * 3; else if (this.frameCounter < (double) (num204 * 4)) this.frame.Y = num1 * 4; else if (this.frameCounter < (double) (num204 * 5)) this.frame.Y = num1 * 5; else if (this.frameCounter < (double) (num204 * 6)) this.frame.Y = num1 * 4; else if (this.frameCounter < (double) (num204 * 7)) { this.frame.Y = num1 * 3; } else { this.frame.Y = num1 * 2; if (this.frameCounter >= (double) (num204 * 8)) this.frameCounter = (double) num204; } } if ((double) this.ai[3] == 2.0) this.frame.Y += num1 * 6; else if ((double) this.ai[3] == 3.0) this.frame.Y += num1 * 12; else if ((double) this.ai[3] == 4.0) this.frame.Y += num1 * 18; } else if (this.type == 113 || this.type == 114) { if ((double) this.ai[2] == 0.0) { ++this.frameCounter; if (this.frameCounter >= 12.0) { this.frame.Y += num1; this.frameCounter = 0.0; } if (this.frame.Y >= num1 * Main.npcFrameCount[this.type]) this.frame.Y = 0; } else { this.frame.Y = 0; this.frameCounter = -60.0; } } else if (this.type == 61) { this.spriteDirection = this.direction; this.rotation = this.velocity.X * 0.1f; if ((double) this.velocity.X == 0.0 && (double) this.velocity.Y == 0.0) { this.frame.Y = 0; this.frameCounter = 0.0; } else { ++this.frameCounter; if (this.frameCounter < 4.0) { this.frame.Y = num1; } else { this.frame.Y = num1 * 2; if (this.frameCounter >= 7.0) this.frameCounter = 0.0; } } } else if (this.type == 252 || this.type == 301) { if (this.type == 301) { if ((double) this.velocity.Y == 0.0) { this.spriteDirection = -this.direction; } else { if ((double) this.velocity.X > 0.5) this.spriteDirection = -1; if ((double) this.velocity.X < -0.5) this.spriteDirection = 1; } } else { if ((double) this.velocity.X > 0.5) this.spriteDirection = 1; if ((double) this.velocity.X < -0.5) this.spriteDirection = -1; } this.rotation = this.velocity.X * 0.1f; if ((double) this.velocity.X == 0.0 && (double) this.velocity.Y == 0.0) { this.frame.Y = 0; this.frameCounter = 0.0; } else { ++this.frameCounter; if (this.frameCounter > 4.0) { this.frameCounter = 0.0; this.frame.Y += num1; } if (this.frame.Y > num1 * 4 || this.frame.Y == 0) this.frame.Y = num1; } } else if (this.type == 122) { this.spriteDirection = this.direction; this.rotation = this.velocity.X * 0.05f; if ((double) this.ai[3] > 0.0) { int num205 = (int) ((double) this.ai[3] / 8.0); this.frameCounter = 0.0; this.frame.Y = (num205 + 3) * num1; } else { ++this.frameCounter; if (this.frameCounter >= 8.0) { this.frame.Y += num1; this.frameCounter = 0.0; } if (this.frame.Y >= num1 * 3) this.frame.Y = 0; } } else if (this.type == 74 || this.type == 297 || this.type == 298 || this.type == 442) { this.spriteDirection = this.direction; this.rotation = this.velocity.X * 0.1f; if ((double) this.velocity.X == 0.0 && (double) this.velocity.Y == 0.0) { this.frame.Y = num1 * 4; this.frameCounter = 0.0; } else { ++this.frameCounter; if (this.frameCounter >= 4.0) { this.frame.Y += num1; this.frameCounter = 0.0; } if (this.frame.Y >= num1 * Main.npcFrameCount[this.type]) this.frame.Y = 0; } } else if (this.type == 362 || this.type == 364) { this.spriteDirection = this.direction; if ((double) this.velocity.X == 0.0) { this.frameCounter = 0.0; this.frame.Y = 0; } else { ++this.frameCounter; if (this.frameCounter >= 4.0) { this.frame.Y += num1; this.frameCounter = 0.0; } if (this.frame.Y >= num1 * 10) this.frame.Y = num1 * 3; if (this.frame.Y < num1 * 3) this.frame.Y = num1 * 3; } } else if (this.type == 363 || this.type == 365) { this.spriteDirection = this.direction; if (this.wet) { ++this.frameCounter; if (this.frameCounter >= 8.0) { this.frame.Y += num1; this.frameCounter = 0.0; } if (this.frame.Y > num1 * 2) this.frame.Y = num1; if (this.frame.Y < num1) this.frame.Y = num1; this.rotation = 0.0f; } else if ((double) this.velocity.X == 0.0 && (double) this.velocity.Y == 0.0) { this.frame.Y = num1; this.frameCounter = 0.0; this.rotation = 0.0f; } else { this.rotation = this.velocity.X * 0.1f; ++this.frameCounter; if (this.frameCounter >= 4.0) { this.frame.Y += num1; this.frameCounter = 0.0; } if (this.frame.Y >= num1 * Main.npcFrameCount[this.type]) this.frame.Y = num1 * 11; if (this.frame.Y < num1 * 11) this.frame.Y = num1 * 11; } } else if (this.type == 62 || this.type == 66) { this.spriteDirection = this.direction; this.rotation = this.velocity.X * 0.1f; ++this.frameCounter; if (this.frameCounter < 6.0) { this.frame.Y = 0; } else { this.frame.Y = num1; if (this.frameCounter >= 11.0) this.frameCounter = 0.0; } } else if (this.type == 156) { this.spriteDirection = this.direction; this.rotation = this.velocity.X * 0.1f; ++this.frameCounter; if (this.frameCounter >= 20.0) this.frameCounter = 0.0; this.frame.Y = (int) this.frameCounter / 4 * num1; } else if (this.type == 63 || this.type == 64 || this.type == 103 || this.type == 242 || this.type == 256) { if ((this.type == 63 || this.type == 64 || this.type == 103 || this.type == 242) && (double) this.ai[1] == 1.0) { ++this.frameCounter; if (this.frameCounter > 4.0) { this.frameCounter = 0.0; this.frame.Y += num1; } if (this.frame.Y > num1 * 6) this.frame.Y = num1 * 4; if (this.frame.Y >= num1 * 4) return; this.frame.Y = num1 * 4; return; } ++this.frameCounter; if (this.frameCounter < 6.0) this.frame.Y = 0; else if (this.frameCounter < 12.0) this.frame.Y = num1; else if (this.frameCounter < 18.0) { this.frame.Y = num1 * 2; } else { this.frame.Y = num1 * 3; if (this.frameCounter >= 23.0) this.frameCounter = 0.0; } } else if (this.type == 221) { if ((double) this.localAI[2] == 1.0) { if ((double) this.localAI[0] == 1.0) { this.frame.Y = 0; this.localAI[0] = 0.0f; } ++this.frameCounter; if (this.frameCounter >= 8.0) { this.frame.Y += num1; this.frameCounter = 0.0; } if (this.frame.Y >= num1 * Main.npcFrameCount[this.type]) this.frame.Y = num1 * Main.npcFrameCount[this.type] - num1; } else { ++this.frameCounter; if (this.frameCounter >= 13.0) { this.frame.Y += num1; this.frameCounter = 0.0; } if (this.frame.Y >= num1 * Main.npcFrameCount[this.type]) this.frame.Y = 0; } } else if (this.type == 2 || this.type == 23 || this.type == 121 || this.type == 169 || this.type == 190 || this.type == 191 || this.type == 192 || this.type == 193 || this.type == 194 || this.type == 317 || this.type == 318) { if (this.type == 2 || this.type == 190 || this.type == 191 || this.type == 192 || this.type == 193 || this.type == 194 || this.type == 317 || this.type == 318) { if ((double) this.velocity.X > 0.0) { this.spriteDirection = 1; this.rotation = (float) Math.Atan2((double) this.velocity.Y, (double) this.velocity.X); } if ((double) this.velocity.X < 0.0) { this.spriteDirection = -1; this.rotation = (float) Math.Atan2((double) this.velocity.Y, (double) this.velocity.X) + 3.14f; } } else if (this.type == 2 || this.type == 121) { if ((double) this.velocity.X > 0.0) this.spriteDirection = 1; if ((double) this.velocity.X < 0.0) this.spriteDirection = -1; this.rotation = this.velocity.X * 0.1f; } ++this.frameCounter; if (this.frameCounter >= 8.0) { this.frame.Y += num1; this.frameCounter = 0.0; } if (this.frame.Y >= num1 * Main.npcFrameCount[this.type]) this.frame.Y = 0; } else if (this.type == 133) { if ((double) this.velocity.X > 0.0) { this.spriteDirection = 1; this.rotation = (float) Math.Atan2((double) this.velocity.Y, (double) this.velocity.X); } if ((double) this.velocity.X < 0.0) { this.spriteDirection = -1; this.rotation = (float) Math.Atan2((double) this.velocity.Y, (double) this.velocity.X) + 3.14f; } ++this.frameCounter; this.frame.Y = this.frameCounter < 8.0 ? 0 : num1; if (this.frameCounter >= 16.0) { this.frame.Y = 0; this.frameCounter = 0.0; } if ((double) this.life < (double) this.lifeMax * 0.5) this.frame.Y += num1 * 2; } else if (this.type == 116) { if ((double) this.velocity.X > 0.0) { this.spriteDirection = 1; this.rotation = (float) Math.Atan2((double) this.velocity.Y, (double) this.velocity.X); } if ((double) this.velocity.X < 0.0) { this.spriteDirection = -1; this.rotation = (float) Math.Atan2((double) this.velocity.Y, (double) this.velocity.X) + 3.14f; } ++this.frameCounter; if (this.frameCounter >= 5.0) { this.frame.Y += num1; this.frameCounter = 0.0; } if (this.frame.Y >= num1 * Main.npcFrameCount[this.type]) this.frame.Y = 0; } else if (this.type == 75) { this.spriteDirection = (double) this.velocity.X <= 0.0 ? -1 : 1; this.rotation = this.velocity.X * 0.1f; ++this.frameCounter; if (this.frameCounter >= 4.0) { this.frame.Y += num1; this.frameCounter = 0.0; } if (this.frame.Y >= num1 * Main.npcFrameCount[this.type]) this.frame.Y = 0; } else if (this.type == 157) { this.spriteDirection = this.direction; ++this.frameCounter; if (!this.wet) ++this.frameCounter; int num206 = 5; if (this.frameCounter < (double) num206) this.frame.Y = 0; else if (this.frameCounter < (double) (num206 * 2)) this.frame.Y = num1; else if (this.frameCounter < (double) (num206 * 3)) this.frame.Y = num1 * 2; else if (this.frameCounter < (double) (num206 * 4)) this.frame.Y = num1; else if (this.frameCounter < (double) (num206 * 5)) this.frame.Y = num1 * 3; else if (this.frameCounter < (double) (num206 * 6)) this.frame.Y = num1 * 4; else if (this.frameCounter < (double) (num206 * 7)) this.frame.Y = num1 * 5; else if (this.frameCounter < (double) (num206 * 8)) this.frame.Y = num1 * 4; else this.frameCounter = 0.0; } else if (this.type == 55 || this.type == 57 || this.type == 58 || this.type == 102 || this.type == 241 || this.type == 465) { this.spriteDirection = this.direction; ++this.frameCounter; if (this.wet) { if (this.frameCounter < 6.0) this.frame.Y = 0; else if (this.frameCounter < 12.0) this.frame.Y = num1; else if (this.frameCounter < 18.0) this.frame.Y = num1 * 2; else if (this.frameCounter < 24.0) this.frame.Y = num1 * 3; else this.frameCounter = 0.0; } else if (this.frameCounter < 6.0) this.frame.Y = num1 * 4; else if (this.frameCounter < 12.0) this.frame.Y = num1 * 5; else this.frameCounter = 0.0; } else if (this.type == 69) { if ((double) this.ai[0] < 190.0) { ++this.frameCounter; if (this.frameCounter >= 6.0) { this.frameCounter = 0.0; this.frame.Y += num1; if (this.frame.Y / num1 >= Main.npcFrameCount[this.type] - 1) this.frame.Y = 0; } } else { this.frameCounter = 0.0; this.frame.Y = num1 * (Main.npcFrameCount[this.type] - 1); } } else if (this.type == 155) { if ((double) this.velocity.Y > 0.0) { this.frame.Y = num1 * 4; this.frameCounter = 0.0; } else if ((double) this.velocity.Y < 0.0) { this.frame.Y = num1 * 6; this.frameCounter = 0.0; } else { this.spriteDirection = this.direction; this.frameCounter += (double) Math.Abs(this.velocity.X) * 0.400000005960464; if (this.direction > 0 && (double) this.velocity.X < 0.0 || this.direction < 0 && (double) this.velocity.X > 0.0) { this.frameCounter = 0.0; this.frame.Y = 0; } else if (this.frameCounter < 8.0) this.frame.Y = num1 * 3; else if (this.frameCounter < 16.0) this.frame.Y = num1 * 6; else if (this.frameCounter < 24.0) this.frame.Y = num1 * 4; else if (this.frameCounter < 32.0) this.frame.Y = num1 * 5; else this.frameCounter = 0.0; } } else if (this.type == 329) { if ((double) this.velocity.Y > 0.0) { this.frame.Y = num1 * 3; this.frameCounter = 0.0; } else if ((double) this.velocity.Y < 0.0) { this.frame.Y = num1 * 2; this.frameCounter = 0.0; } else { this.spriteDirection = this.direction; this.frameCounter += (double) Math.Abs(this.velocity.X) * 0.400000005960464; if (this.frameCounter > 4.0) { this.frameCounter = 0.0; this.frame.Y += num1; if (this.frame.Y < num1 * 2) this.frame.Y = num1 * 2; if (this.frame.Y > num1 * 9) this.frame.Y = num1 * 2; } } } else if (this.type == 86) { if ((double) this.velocity.Y == 0.0 || this.wet) this.spriteDirection = (double) this.velocity.X >= -2.0 ? ((double) this.velocity.X <= 2.0 ? this.direction : 1) : -1; if ((double) this.velocity.Y != 0.0) { this.frame.Y = num1 * 15; this.frameCounter = 0.0; } else if ((double) this.velocity.X == 0.0) { this.frameCounter = 0.0; this.frame.Y = 0; } else if ((double) Math.Abs(this.velocity.X) < 3.0) { this.frameCounter += (double) Math.Abs(this.velocity.X); if (this.frameCounter >= 6.0) { this.frameCounter = 0.0; this.frame.Y += num1; if (this.frame.Y / num1 >= 9) this.frame.Y = num1; if (this.frame.Y / num1 <= 0) this.frame.Y = num1; } } else { this.frameCounter += (double) Math.Abs(this.velocity.X); if (this.frameCounter >= 10.0) { this.frameCounter = 0.0; this.frame.Y += num1; if (this.frame.Y / num1 >= 15) this.frame.Y = num1 * 9; if (this.frame.Y / num1 <= 8) this.frame.Y = num1 * 9; } } } else if (this.type == 315) { if ((double) this.velocity.Y == 0.0 || this.wet) this.spriteDirection = (double) this.velocity.X >= -1.0 ? ((double) this.velocity.X <= 1.0 ? this.direction : 1) : -1; if ((double) this.velocity.Y != 0.0) { this.frame.Y = 0; this.frameCounter = 0.0; } else { this.frameCounter += (double) Math.Abs(this.velocity.X); if (this.frameCounter >= 8.0) { this.frameCounter = 0.0; this.frame.Y += num1; if (this.frame.Y / num1 > 10) this.frame.Y = num1; } } } else if (this.type == (int) sbyte.MaxValue) { if ((double) this.ai[1] == 0.0) { ++this.frameCounter; if (this.frameCounter >= 12.0) { this.frameCounter = 0.0; this.frame.Y += num1; if (this.frame.Y / num1 >= 2) this.frame.Y = 0; } } else { this.frameCounter = 0.0; this.frame.Y = num1 * 2; } } else if (this.type == 129) { if ((double) this.velocity.Y == 0.0) this.spriteDirection = this.direction; ++this.frameCounter; if (this.frameCounter >= 2.0) { this.frameCounter = 0.0; this.frame.Y += num1; if (this.frame.Y / num1 >= Main.npcFrameCount[this.type]) this.frame.Y = 0; } } else if (this.type == 130) { if ((double) this.velocity.Y == 0.0) this.spriteDirection = this.direction; ++this.frameCounter; if (this.frameCounter >= 8.0) { this.frameCounter = 0.0; this.frame.Y += num1; if (this.frame.Y / num1 >= Main.npcFrameCount[this.type]) this.frame.Y = 0; } } else if (this.type == 67 || this.type == 217 || this.type == 218 || this.type == 219) { if ((double) this.velocity.Y == 0.0) this.spriteDirection = this.direction; ++this.frameCounter; if (this.frameCounter >= 6.0) { this.frameCounter = 0.0; this.frame.Y += num1; if (this.frame.Y / num1 >= Main.npcFrameCount[this.type]) this.frame.Y = 0; } } else if (this.type == 220) { if ((double) this.velocity.Y == 0.0) this.spriteDirection = this.direction; ++this.frameCounter; if (this.frameCounter >= 10.0) { this.frameCounter = 0.0; this.frame.Y += num1; if (this.frame.Y / num1 >= Main.npcFrameCount[this.type]) this.frame.Y = 0; } } else if (this.type == 109) { if ((double) this.velocity.Y == 0.0 && ((double) this.velocity.X <= 0.0 && this.direction < 0 || (double) this.velocity.X >= 0.0 && this.direction > 0)) this.spriteDirection = this.direction; this.frameCounter += (double) Math.Abs(this.velocity.X); if (this.frameCounter >= 7.0) { this.frameCounter -= 7.0; this.frame.Y += num1; if (this.frame.Y / num1 >= Main.npcFrameCount[this.type]) this.frame.Y = 0; } } else if (this.type == 83 || this.type == 84 || this.type == 179) { if ((double) this.ai[0] == 2.0) { this.frameCounter = 0.0; this.frame.Y = 0; } else { ++this.frameCounter; if (this.frameCounter >= 4.0) { this.frameCounter = 0.0; this.frame.Y += num1; if (this.frame.Y / num1 >= Main.npcFrameCount[this.type]) this.frame.Y = 0; } } } else if (this.type == 72) { ++this.frameCounter; if (this.frameCounter >= 3.0) { this.frameCounter = 0.0; this.frame.Y += num1; if (this.frame.Y / num1 >= Main.npcFrameCount[this.type]) this.frame.Y = 0; } } else if (this.type == 65) { this.spriteDirection = this.direction; ++this.frameCounter; if (this.wet && this.type == 65) { if (this.frameCounter < 6.0) this.frame.Y = 0; else if (this.frameCounter < 12.0) this.frame.Y = num1; else if (this.frameCounter < 18.0) this.frame.Y = num1 * 2; else if (this.frameCounter < 24.0) this.frame.Y = num1 * 3; else this.frameCounter = 0.0; } } else if (this.type >= 542 && this.type <= 545) { this.spriteDirection = this.direction; ++this.frameCounter; if (this.frameCounter >= 16.0) this.frameCounter = 0.0; this.frame.Y = num1 * (int) (this.frameCounter / 4.0); } else if (this.type == 224) { if ((double) this.velocity.X > 0.0) { this.spriteDirection = 1; this.rotation = this.velocity.Y * 0.2f; } if ((double) this.velocity.X < 0.0) { this.spriteDirection = -1; this.rotation = (float) (-(double) this.velocity.Y * 0.200000002980232); } ++this.frameCounter; if (this.frameCounter >= 6.0) { this.frame.Y += num1; this.frameCounter = 0.0; } if (this.frame.Y >= num1 * 4) this.frame.Y = 0; } else if (this.type == 150 || this.type == 151 || this.type == 152 || this.type == 158 || this.type == 226) { if ((double) this.velocity.X > 0.0) this.spriteDirection = 1; if ((double) this.velocity.X < 0.0) this.spriteDirection = -1; this.rotation = this.velocity.X * 0.1f; ++this.frameCounter; if (this.frameCounter >= 6.0) { this.frame.Y += num1; this.frameCounter = 0.0; } if (this.frame.Y >= num1 * 4) this.frame.Y = 0; } else if (this.type == 48 || this.type == 49 || this.type == 51 || this.type == 60 || this.type == 82 || this.type == 93 || this.type == 137 || this.type == 182 || this.type == 210 || this.type == 211 || this.type == 253 || this.type == 316) { if ((double) this.velocity.X > 0.0) this.spriteDirection = 1; if ((double) this.velocity.X < 0.0) this.spriteDirection = -1; this.rotation = this.velocity.X * 0.1f; if (this.type == 210 || this.type == 211) { ++this.frameCounter; this.rotation = this.velocity.X * 0.2f; } ++this.frameCounter; if (this.frameCounter >= 6.0) { this.frame.Y += num1; this.frameCounter = 0.0; } if (this.frame.Y >= num1 * Main.npcFrameCount[this.type]) this.frame.Y = 0; } else if (this.type == 330) { if ((double) this.velocity.X > 0.0) this.spriteDirection = 1; if ((double) this.velocity.X < 0.0) this.spriteDirection = -1; this.rotation = this.velocity.X * 0.15f; ++this.frameCounter; if (this.frameCounter >= 8.0) { this.frame.Y += num1; this.frameCounter = 0.0; } if (this.frame.Y >= num1 * Main.npcFrameCount[this.type]) this.frame.Y = 0; } else if (this.type == 42 || this.type >= 231 && this.type <= 235) { ++this.frameCounter; if (this.frameCounter < 2.0) this.frame.Y = 0; else if (this.frameCounter < 4.0) this.frame.Y = num1; else if (this.frameCounter < 6.0) this.frame.Y = num1 * 2; else if (this.frameCounter < 8.0) this.frame.Y = num1; else this.frameCounter = 0.0; } else if (this.type == 205) { this.frameCounter += 0.5; if (this.frameCounter < 2.0) this.frame.Y = 0; else if (this.frameCounter < 4.0) this.frame.Y = num1; else if (this.frameCounter < 6.0) this.frame.Y = num1 * 2; else if (this.frameCounter < 8.0) this.frame.Y = num1; else this.frameCounter = 0.0; } else if (this.type == 176) { ++this.frameCounter; if (this.frameCounter > 4.0) { this.frame.Y += num1; this.frameCounter = 0.0; } if (this.frame.Y > num1) this.frame.Y = 0; } else if (this.type == 43 || this.type == 56 || this.type == 175) { ++this.frameCounter; if (this.frameCounter < 6.0) this.frame.Y = 0; else if (this.frameCounter < 12.0) this.frame.Y = num1; else if (this.frameCounter < 18.0) this.frame.Y = num1 * 2; else if (this.frameCounter < 24.0) this.frame.Y = num1; if (this.frameCounter == 23.0) this.frameCounter = 0.0; } else if (this.type == 115) { ++this.frameCounter; if (this.frameCounter < 3.0) this.frame.Y = 0; else if (this.frameCounter < 6.0) this.frame.Y = num1; else if (this.frameCounter < 12.0) this.frame.Y = num1 * 2; else if (this.frameCounter < 15.0) this.frame.Y = num1; if (this.frameCounter == 15.0) this.frameCounter = 0.0; } else if (this.type == 101) { ++this.frameCounter; if (this.frameCounter > 6.0) { this.frame.Y += num1 * 2; this.frameCounter = 0.0; } if (this.frame.Y > num1 * 2) this.frame.Y = 0; } if (this.type == 199) { if ((double) this.velocity.Y == 0.0) { if (this.direction == 1) this.spriteDirection = 1; if (this.direction == -1) this.spriteDirection = -1; } if (this.frame.Y < num1 * 3) { ++this.frameCounter; if (this.frameCounter <= 6.0) return; this.frameCounter = 0.0; this.frame.Y += num1; } else { if ((double) this.velocity.Y != 0.0) return; this.frameCounter += (double) Math.Abs(this.velocity.X); if (this.frameCounter <= 12.0) return; this.frameCounter = 0.0; this.frame.Y += num1; if (this.frame.Y <= num1 * 7) return; this.frame.Y = num1 * 3; } } else if (this.type == 467) { if ((double) this.ai[0] == 1.0) { ++this.frameCounter; if (this.frameCounter <= 4.0) return; this.frameCounter = 0.0; if (this.frame.Y >= num1 * 6) return; this.frame.Y += num1; this.frameCounter = 0.0; } else { ++this.frameCounter; if (this.frameCounter <= 4.0) return; this.frameCounter = 0.0; if (this.frame.Y > num1 * 3) this.frame.Y = num1 * 3; if (this.frame.Y <= 0) return; this.frame.Y -= num1; this.frameCounter = 0.0; } } else if (this.type == 480) { if ((double) this.velocity.Y == 0.0) { if (this.direction == 1) this.spriteDirection = 1; if (this.direction == -1) this.spriteDirection = -1; if ((double) this.ai[2] < 0.0) { ++this.frameCounter; if (this.frameCounter > 3.0) { this.frame.Y += num1; this.frameCounter = 0.0; } if (this.frame.Y >= Main.npcFrameCount[this.type] * num1) { this.frame.Y = num1 * 21; } else { if (this.frame.Y >= num1 * 21) return; this.frame.Y = num1 * 21; } } else if ((double) this.velocity.X == 0.0) { ++this.frameCounter; if (this.frameCounter > 4.0) { this.frame.Y += num1; this.frameCounter = 0.0; } if (this.frame.Y / num1 <= 7) return; this.frame.Y = 0; } else { this.frameCounter += 1.0 + (double) Math.Abs(this.velocity.X); if (this.frameCounter > 6.0) { this.frame.Y += num1; this.frameCounter = 0.0; } if (this.frame.Y / num1 >= Main.npcFrameCount[this.type] - 4) { this.frame.Y = num1 * 10; } else { if (this.frame.Y / num1 >= 10) return; this.frame.Y = num1 * 10; } } } else { this.frameCounter = 0.0; this.frame.Y = num1 * 8; } } else if (this.type == 483) { if ((double) this.ai[0] == -1.0) { ++this.frameCounter; if (this.frameCounter > 4.0) { this.frame.Y += num1; this.frameCounter = 0.0; } if (this.frame.Y > num1 * 21) this.frame.Y = num1 * 21; else if (this.frame.Y < num1 * 13) this.frame.Y = num1 * 13; this.rotation += this.velocity.X * 0.2f; } else { ++this.frameCounter; if (this.frameCounter > 4.0) { this.frame.Y += num1; this.frameCounter = 0.0; } if (this.frame.Y > num1 * 11) this.frame.Y = 0; this.rotation = this.velocity.X * 0.1f; } } else if (this.type == 482) { if ((double) this.velocity.Y == 0.0) { if (this.direction == 1) this.spriteDirection = 1; if (this.direction == -1) this.spriteDirection = -1; if ((double) this.ai[2] < 0.0) { ++this.frameCounter; if (this.frameCounter > 3.0) { this.frame.Y += num1; this.frameCounter = 0.0; } if (this.frame.Y >= Main.npcFrameCount[this.type] * num1) { this.frame.Y = num1 * 11; } else { if (this.frame.Y >= num1 * 11) return; this.frame.Y = num1 * 11; } } else if ((double) this.velocity.X == 0.0) { ++this.frameCounter; this.frame.Y = 0; } else { this.frameCounter += 0.200000002980232 + (double) Math.Abs(this.velocity.X); if (this.frameCounter > 8.0) { this.frame.Y += num1; this.frameCounter = 0.0; } if (this.frame.Y / num1 >= Main.npcFrameCount[this.type] - 10) { this.frame.Y = num1 * 2; } else { if (this.frame.Y / num1 >= 2) return; this.frame.Y = num1 * 2; } } } else { this.frameCounter = 0.0; this.frame.Y = num1; } } else if (this.type == 461) { if (this.wet) { if ((double) this.velocity.X < 0.0) this.direction = -1; if ((double) this.velocity.X > 0.0) this.direction = 1; if (this.spriteDirection != this.direction) { this.rotation *= -1f; this.spriteDirection = this.direction; } float num207 = (float) Math.Atan2((double) this.velocity.Y * (double) this.direction, (double) this.velocity.X * (double) this.direction); if ((double) Math.Abs(this.rotation - num207) >= 3.14) { if ((double) num207 < (double) this.rotation) this.rotation -= 6.28f; else this.rotation += 6.28f; } this.rotation = (float) (((double) this.rotation * 4.0 + (double) num207) / 5.0); this.frameCounter += (double) Math.Abs(this.velocity.Length()); ++this.frameCounter; if (this.frameCounter > 8.0) { this.frame.Y += num1; this.frameCounter = 0.0; } if (this.frame.Y / num1 > 20) { this.frame.Y = num1 * 16; } else { if (this.frame.Y / num1 >= 16) return; this.frame.Y = num1 * 19; } } else { if ((double) this.rotation > 3.14) this.rotation -= 6.28f; if ((double) this.rotation > -0.01 && (double) this.rotation < 0.01) this.rotation = 0.0f; else this.rotation *= 0.9f; if ((double) this.velocity.Y == 0.0) { if (this.direction == 1) this.spriteDirection = 1; if (this.direction == -1) this.spriteDirection = -1; if ((double) this.velocity.X == 0.0) { this.frame.Y = 0; this.frameCounter = 0.0; } else { this.frameCounter += (double) Math.Abs(this.velocity.X) * 2.0; ++this.frameCounter; if (this.frameCounter > 6.0) { this.frame.Y += num1; this.frameCounter = 0.0; } if (this.frame.Y / num1 <= 15) return; this.frame.Y = num1 * 2; } } else { this.frameCounter = 0.0; this.frame.Y = num1; } } } else if (this.type == 466) { if ((double) this.ai[2] <= 0.0) { if (this.direction == 1) this.spriteDirection = 1; if (this.direction == -1) this.spriteDirection = -1; if ((double) this.ai[2] == 0.0) this.frame.Y = 0; else if ((double) this.ai[2] < -8.0) this.frame.Y = num1; else this.frame.Y = num1 * 2; } else if ((double) this.velocity.Y == 0.0) { if (this.direction == 1) this.spriteDirection = 1; if (this.direction == -1) this.spriteDirection = -1; if ((double) this.velocity.X == 0.0) { this.frame.Y = num1 * 2; this.frameCounter = 0.0; } else { this.frameCounter += (double) Math.Abs(this.velocity.X) * 2.0; ++this.frameCounter; if (this.frameCounter > 7.0) { this.frame.Y += num1; this.frameCounter = 0.0; } if (this.frame.Y / num1 > 17) this.frame.Y = num1 * 4; if (this.frame.Y / num1 >= 4) return; this.frame.Y = num1 * 4; } } else { this.frameCounter = 0.0; this.frame.Y = num1 * 3; } } else if (this.type == 471) { bool flag = false; if ((double) this.ai[3] < 0.0) flag = true; if (flag) { if (this.direction == 1) this.spriteDirection = 1; if (this.direction == -1) this.spriteDirection = -1; this.frameCounter += (double) Math.Abs(this.velocity.Length()) * 0.5; ++this.frameCounter; if (this.frameCounter < 6.0) this.frame.Y = num1 * 17; else if (this.frameCounter < 12.0) this.frame.Y = num1 * 18; else if (this.frameCounter < 18.0) this.frame.Y = num1 * 19; else if (this.frameCounter < 23.0) { this.frame.Y = num1 * 18; } else { this.frame.Y = num1 * 18; this.frameCounter = 0.0; } } else if ((double) this.ai[3] == 1.0) { this.frame.Y = num1 * 16; this.frameCounter = 0.0; } else if ((double) this.velocity.Y == 0.0) { if (this.direction == 1) this.spriteDirection = 1; if (this.direction == -1) this.spriteDirection = -1; if ((double) this.velocity.X == 0.0) { this.frame.Y = 0; this.frameCounter = 0.0; } else { this.frameCounter += (double) Math.Abs(this.velocity.X) * 2.0; ++this.frameCounter; if (this.frameCounter > 7.0) { this.frame.Y += num1; this.frameCounter = 0.0; } if (this.frame.Y / num1 > 15) this.frame.Y = num1 * 2; if (this.frame.Y / num1 >= 2) return; this.frame.Y = num1 * 2; } } else { this.frameCounter = 0.0; this.frame.Y = num1; } } else if (this.type == 166) { if ((double) this.velocity.Y == 0.0) { if (this.direction == 1) this.spriteDirection = 1; if (this.direction == -1) this.spriteDirection = -1; if ((double) this.velocity.X == 0.0) { this.frameCounter += 2.0; if (this.frameCounter > 7.0) { this.frame.Y += num1; this.frameCounter = 0.0; } if (this.frame.Y / num1 <= 5) return; this.frame.Y = 0; } else { this.frameCounter += (double) Math.Abs(this.velocity.X); ++this.frameCounter; if (this.frameCounter > 9.0) { this.frame.Y += num1; this.frameCounter = 0.0; } if (this.frame.Y / num1 > 12) this.frame.Y = num1 * 7; if (this.frame.Y / num1 >= 7) return; this.frame.Y = num1 * 7; } } else { this.frameCounter = 0.0; this.frame.Y = num1 * 6; } } else if (this.type == 469) { if ((double) this.ai[2] == 1.0) { this.rotation = (float) Math.Atan2((double) this.velocity.Y, (double) this.velocity.X) + 1.57f; if ((double) this.velocity.X < 0.0) this.direction = -1; if ((double) this.velocity.X > 0.0) this.direction = 1; this.spriteDirection = this.direction; this.frameCounter += (double) Math.Abs(this.velocity.Length()); if (this.frameCounter > 11.0) { this.frame.Y += num1; this.frameCounter = 0.0; } if (this.frame.Y / num1 > 5) this.frame.Y = num1 * 2; if (this.frame.Y / num1 >= 2) return; this.frame.Y = num1 * 2; } else { this.rotation = 0.0f; if ((double) this.velocity.Y == 0.0) { if (this.direction == 1) this.spriteDirection = 1; if (this.direction == -1) this.spriteDirection = -1; if ((double) this.velocity.X == 0.0) { this.frameCounter = 0.0; this.frame.Y = 0; } else { this.frameCounter += (double) Math.Abs(this.velocity.X); ++this.frameCounter; if (this.frameCounter > 9.0) { this.frame.Y += num1; this.frameCounter = 0.0; } if (this.frame.Y / num1 > 11) this.frame.Y = num1 * 6; if (this.frame.Y / num1 >= 6) return; this.frame.Y = num1 * 6; } } else { this.frameCounter = 0.0; this.frame.Y = num1; } } } else if (this.type == 351) { if ((double) this.velocity.Y == 0.0) { if (this.direction == 1) this.spriteDirection = 1; if (this.direction == -1) this.spriteDirection = -1; if ((double) this.velocity.X == 0.0) { this.frame.Y = 0; this.frameCounter = 0.0; } else { this.frameCounter += (double) Math.Abs(this.velocity.X) * 1.0; ++this.frameCounter; if (this.frameCounter > 8.0) { this.frame.Y += num1; this.frameCounter = 0.0; } if (this.frame.Y / num1 < Main.npcFrameCount[this.type]) return; this.frame.Y = num1 * 2; } } else { this.frame.Y = (double) this.velocity.Y >= 0.0 ? num1 : num1; this.frameCounter = 0.0; } } else if (this.type == 343) { if ((double) this.velocity.Y == 0.0) { if (this.direction == 1) this.spriteDirection = 1; if (this.direction == -1) this.spriteDirection = -1; if ((double) this.velocity.X == 0.0) { this.frame.Y = num1 * 2; this.frameCounter = 0.0; } else { this.frameCounter += (double) Math.Abs(this.velocity.X) * 1.0; ++this.frameCounter; if (this.frameCounter > 6.0) { this.frame.Y += num1; this.frameCounter = 0.0; } if (this.frame.Y / num1 < Main.npcFrameCount[this.type]) return; this.frame.Y = num1 * 2; } } else { this.frame.Y = (double) this.velocity.Y >= 0.0 ? num1 : 0; this.frameCounter = 0.0; } } else if (this.type >= 269 && this.type <= 280) { if ((double) this.velocity.Y == 0.0) { if (this.direction == 1) this.spriteDirection = 1; if (this.direction == -1) this.spriteDirection = -1; if ((double) this.velocity.X == 0.0) { if (this.type == 140) { this.frame.Y = num1; this.frameCounter = 0.0; } else { this.frame.Y = 0; this.frameCounter = 0.0; } } else { this.frameCounter += (double) Math.Abs(this.velocity.X) * 2.0; ++this.frameCounter; if (this.frameCounter > 6.0) { this.frame.Y += num1; this.frameCounter = 0.0; } if (this.frame.Y / num1 < Main.npcFrameCount[this.type]) return; this.frame.Y = num1 * 2; } } else { this.frameCounter = 0.0; this.frame.Y = 0; } } else if (this.type == 230) { if ((double) this.velocity.Y == 0.0) { this.rotation = 0.0f; if (this.direction == 1) this.spriteDirection = 1; if (this.direction == -1) this.spriteDirection = -1; if ((double) this.velocity.X == 0.0) { this.frame.Y = 0; this.frameCounter = 0.0; } else { this.frameCounter += (double) Math.Abs(this.velocity.X) * 2.0; ++this.frameCounter; if (this.frameCounter > 10.0) { this.frame.Y += num1; this.frameCounter = 0.0; } if (this.frame.Y / num1 < Main.npcFrameCount[this.type]) return; this.frame.Y = 0; } } else { this.frameCounter = 0.0; this.frame.Y = 0; if ((double) this.velocity.Y <= 4.0) return; this.rotation -= this.velocity.Y * 0.01f; } } else if (this.type == 290) { if ((double) this.velocity.Y == 0.0) { if (this.direction == 1) this.spriteDirection = 1; if (this.direction == -1) this.spriteDirection = -1; if ((double) this.ai[2] > 0.0) { if ((double) this.ai[1] < 10.0) this.frame.Y = num1 * 11; else if ((double) this.ai[1] < 20.0) this.frame.Y = num1 * 10; else this.frame.Y = num1 * 9; } else if ((double) this.velocity.X == 0.0) { this.frameCounter = 0.0; this.frame.Y = 0; } else { if (this.frame.Y < num1 * 2) this.frame.Y = num1 * 2; this.frameCounter += (double) Math.Abs(this.velocity.X) * 1.0; if (this.frameCounter > 6.0) { this.frame.Y += num1; this.frameCounter = 0.0; } if (this.frame.Y <= num1 * 8) return; this.frame.Y = num1 * 2; } } else { this.frameCounter = 0.0; this.frame.Y = num1; } } else if (this.type == 110 || this.type == 214 || this.type == 215 || this.type == 216 || this.type == 291 || this.type == 292 || this.type == 293) { if ((double) this.velocity.Y == 0.0) { if (this.direction == 1) this.spriteDirection = 1; if (this.direction == -1) this.spriteDirection = -1; if ((double) this.ai[2] > 0.0) { this.spriteDirection = this.direction; this.frame.Y = num1 * (int) this.ai[2]; this.frameCounter = 0.0; } else { if (this.frame.Y < num1 * 6) this.frame.Y = num1 * 6; this.frameCounter += (double) Math.Abs(this.velocity.X) * 2.0; this.frameCounter += (double) this.velocity.X; if (this.frameCounter > 6.0) { this.frame.Y += num1; this.frameCounter = 0.0; } if (this.frame.Y / num1 < Main.npcFrameCount[this.type]) return; this.frame.Y = num1 * 6; } } else { this.frameCounter = 0.0; this.frame.Y = 0; } } else if (this.type == 206) { if ((double) this.velocity.Y == 0.0) { if (this.direction == 1) this.spriteDirection = 1; if (this.direction == -1) this.spriteDirection = -1; if ((double) this.ai[2] > 0.0) { this.spriteDirection = this.direction; this.frame.Y = num1 * (int) this.ai[2]; this.frameCounter = 0.0; } else { if (this.frame.Y < num1 * 6) this.frame.Y = num1 * 6; this.frameCounter += (double) Math.Abs(this.velocity.X) * 2.0; this.frameCounter += (double) this.velocity.X; if (this.frameCounter > 6.0) { this.frame.Y += num1; this.frameCounter = 0.0; } if (this.frame.Y / num1 < Main.npcFrameCount[this.type]) return; this.frame.Y = num1 * 6; } } else { this.frameCounter = 0.0; this.frame.Y = 0; } } else if (this.type == 350) { if ((double) this.velocity.Y == 0.0) { if (this.direction == 1) this.spriteDirection = 1; if (this.direction == -1) this.spriteDirection = -1; if ((double) this.ai[2] > 0.0) { this.spriteDirection = this.direction; this.frame.Y = num1 * ((int) this.ai[2] - 1); this.frameCounter = 0.0; } else { if (this.frame.Y < num1 * 7) this.frame.Y = num1 * 7; this.frameCounter += (double) Math.Abs(this.velocity.X) * 2.0; this.frameCounter += (double) this.velocity.X * 1.29999995231628; if (this.frameCounter > 4.0) { this.frame.Y += num1; this.frameCounter = 0.0; } if (this.frame.Y / num1 < Main.npcFrameCount[this.type]) return; this.frame.Y = num1 * 7; } } else { this.frameCounter = 0.0; this.frame.Y = num1 * 5; } } else if (this.type == 111) { if ((double) this.velocity.Y == 0.0) { if (this.direction == 1) this.spriteDirection = 1; if (this.direction == -1) this.spriteDirection = -1; if ((double) this.ai[2] > 0.0) { this.spriteDirection = this.direction; this.frame.Y = num1 * ((int) this.ai[2] - 1); this.frameCounter = 0.0; } else { if (this.frame.Y < num1 * 7) this.frame.Y = num1 * 7; this.frameCounter += (double) Math.Abs(this.velocity.X) * 2.0; this.frameCounter += (double) this.velocity.X * 1.29999995231628; if (this.frameCounter > 6.0) { this.frame.Y += num1; this.frameCounter = 0.0; } if (this.frame.Y / num1 < Main.npcFrameCount[this.type]) return; this.frame.Y = num1 * 7; } } else { this.frameCounter = 0.0; this.frame.Y = num1 * 6; } } else if (this.type == 257) { if ((double) this.velocity.Y == 0.0) { if (this.direction == 1) this.spriteDirection = 1; if (this.direction == -1) this.spriteDirection = -1; } if ((double) this.velocity.Y != 0.0 || this.direction == -1 && (double) this.velocity.X > 0.0 || this.direction == 1 && (double) this.velocity.X < 0.0) { this.frameCounter = 0.0; this.frame.Y = num1 * 4; } else if ((double) this.velocity.X == 0.0) { this.frameCounter = 0.0; this.frame.Y = 0; } else { this.frameCounter += (double) Math.Abs(this.velocity.X); if (this.frameCounter < 8.0) this.frame.Y = 0; else if (this.frameCounter < 16.0) this.frame.Y = num1; else if (this.frameCounter < 24.0) this.frame.Y = num1 * 2; else if (this.frameCounter < 32.0) this.frame.Y = num1 * 3; else this.frameCounter = 0.0; } } else if (this.type == 258) { if ((double) this.velocity.Y == 0.0) { if (this.direction == 1) this.spriteDirection = 1; if (this.direction == -1) this.spriteDirection = -1; } if ((double) this.velocity.Y != 0.0 || this.direction == -1 && (double) this.velocity.X > 0.0 || this.direction == 1 && (double) this.velocity.X < 0.0) { ++this.frameCounter; if (this.frameCounter > 1.0) { this.frame.Y += num1; this.frameCounter = 0.0; } if (this.frame.Y <= num1 * 5 && this.frame.Y >= num1 * 3) return; this.frame.Y = num1 * 3; } else if ((double) this.velocity.X == 0.0) { this.frameCounter = 0.0; this.frame.Y = 0; } else { this.frameCounter += (double) Math.Abs(this.velocity.X); if (this.frameCounter < 8.0) this.frame.Y = 0; else if (this.frameCounter < 16.0) this.frame.Y = num1; else if (this.frameCounter < 24.0) this.frame.Y = num1 * 2; else this.frameCounter = 0.0; } } else if (this.type == 348) { if ((double) this.velocity.Y == 0.0) { if (this.direction == 1) this.spriteDirection = 1; if (this.direction == -1) this.spriteDirection = -1; } if ((double) this.velocity.Y != 0.0) { this.frameCounter = 0.0; this.frame.Y = num1 * 8; } else if ((double) this.velocity.X == 0.0) { this.frameCounter = 0.0; this.frame.Y = 0; } else { this.frameCounter += (double) Math.Abs(this.velocity.X); ++this.frameCounter; if (this.frameCounter > 6.0) { this.frame.Y += num1; this.frameCounter = 0.0; } if (this.frame.Y <= num1 * 7) return; this.frame.Y = num1; } } else if (this.type == 349) { ++this.frameCounter; if (this.frameCounter > 3.0) { this.frame.Y += num1; this.frameCounter = 0.0; } if (this.frame.Y <= num1 * 7) return; this.frame.Y = 0; } else if (this.type == 3 || this.type == 342 || this.type == 331 || this.type == 332 || this.type == 52 || this.type == 53 || this.type == 536 || this.type == 132 || this.type == 161 || this.type == 162 || this.type == 186 || this.type == 187 || this.type == 188 || this.type == 189 || this.type == 200 || this.type == 223 || this.type == 251 || this.type == 254 || this.type == (int) byte.MaxValue || this.type >= 319 && this.type <= 321) { if ((double) this.velocity.Y == 0.0) { if (this.direction == 1) this.spriteDirection = 1; if (this.direction == -1) this.spriteDirection = -1; } if ((double) this.velocity.Y != 0.0 || this.direction == -1 && (double) this.velocity.X > 0.0 || this.direction == 1 && (double) this.velocity.X < 0.0) { this.frameCounter = 0.0; this.frame.Y = num1 * 2; } else if ((double) this.velocity.X == 0.0) { this.frameCounter = 0.0; this.frame.Y = 0; } else { this.frameCounter += (double) Math.Abs(this.velocity.X); if (this.frameCounter < 8.0) this.frame.Y = 0; else if (this.frameCounter < 16.0) this.frame.Y = num1; else if (this.frameCounter < 24.0) this.frame.Y = num1 * 2; else if (this.frameCounter < 32.0) this.frame.Y = num1; else this.frameCounter = 0.0; } } else if (this.type == 148 || this.type == 149 || this.type == 168 || this.type == 470) { int num208 = 0; if ((double) this.localAI[0] == 2.0) num208 = 3; if ((double) this.localAI[0] == 3.0) num208 = 6; if ((double) this.localAI[0] == 4.0) num208 = 9; int num209 = num208 * num1; if ((double) this.velocity.Y == 0.0) { if (this.direction == 1) this.spriteDirection = 1; if (this.direction == -1) this.spriteDirection = -1; if ((double) this.velocity.X == 0.0) { this.frame.Y = num209; this.frameCounter = 0.0; } else { this.frameCounter += (double) Math.Abs(this.velocity.X) * 1.0; if (this.frameCounter < 6.0) this.frame.Y = num209; else if (this.frameCounter < 12.0) this.frame.Y = num1 + num209; else if (this.frameCounter < 15.0) { this.frame.Y = num1 * 2 + num209; } else { this.frameCounter = 0.0; this.frame.Y = num1 * 2 + num209; } } } else if ((double) this.velocity.Y < 0.0) { this.frameCounter = 0.0; this.frame.Y = num1 * 2 + num209; } else { if ((double) this.velocity.Y <= 0.0) return; this.frameCounter = 0.0; this.frame.Y = num1 * 2 + num209; } } else if (this.type == 299 || this.type == 538 || this.type == 539) { if ((double) this.velocity.Y == 0.0) { if (this.direction == 1) this.spriteDirection = 1; if (this.direction == -1) this.spriteDirection = -1; if ((double) this.velocity.X == 0.0) { this.frame.Y = 0; this.frameCounter = 0.0; } else { this.frameCounter += (double) Math.Abs(this.velocity.X) * 0.5; ++this.frameCounter; if (this.frameCounter > 6.0) { this.frame.Y += num1; this.frameCounter = 0.0; } if (this.frame.Y / num1 < Main.npcFrameCount[this.type] - 1) return; this.frame.Y = num1; } } else if ((double) this.velocity.Y < 0.0) { this.frameCounter = 0.0; this.frame.Y = num1 * 2; } else { if ((double) this.velocity.Y <= 0.0) return; this.frameCounter = 0.0; this.frame.Y = num1 * 4; } } else if (this.type == 300 || this.type == 447) { if ((double) this.velocity.Y == 0.0) { if (this.direction == 1) this.spriteDirection = 1; if (this.direction == -1) this.spriteDirection = -1; if ((double) this.velocity.X == 0.0) { ++this.frameCounter; if (this.frameCounter > 8.0) { this.frame.Y += num1; this.frameCounter = 0.0; } if (this.frame.Y / num1 <= 1) return; this.frame.Y = 0; } else { this.frameCounter += (double) Math.Abs(this.velocity.X) * 0.5; ++this.frameCounter; if (this.frameCounter > 6.0) { this.frame.Y += num1; this.frameCounter = 0.0; } if (this.frame.Y / num1 < Main.npcFrameCount[this.type]) return; this.frame.Y = num1 * 2; } } else { this.frameCounter += (double) Math.Abs(this.velocity.X) * 0.5; ++this.frameCounter; if (this.frameCounter > 6.0) { this.frame.Y += num1; this.frameCounter = 0.0; } if (this.frame.Y / num1 < Main.npcFrameCount[this.type]) return; this.frame.Y = num1 * 2; } } else if (this.type == 361 || this.type == 445) { this.spriteDirection = this.direction; if ((double) this.velocity.Y == 0.0) { if ((double) this.velocity.X == 0.0) { ++this.frameCounter; if (this.frameCounter > 6.0) { this.frameCounter = 0.0; this.frame.Y += num1; } if (this.frame.Y <= num1 * 5) return; this.frame.Y = 0; } else { ++this.frameCounter; int num210 = 6; if (this.frameCounter < (double) num210) this.frame.Y = 0; else if (this.frameCounter < (double) (num210 * 2)) this.frame.Y = num1 * 6; else if (this.frameCounter < (double) (num210 * 3)) { this.frame.Y = num1 * 8; } else { this.frame.Y = num1 * 9; if (this.frameCounter < (double) (num210 * 4 - 1)) return; this.frameCounter = 0.0; } } } else if ((double) this.velocity.Y > 0.0) this.frame.Y = num1 * 9; else this.frame.Y = num1 * 8; } else if (this.type == 366 || this.type == 367) { if ((double) this.velocity.Y == 0.0) { if (this.direction == 1) this.spriteDirection = 1; if (this.direction == -1) this.spriteDirection = -1; } if ((double) this.velocity.X == 0.0) { this.frame.Y = 0; this.frameCounter = 0.0; } else { this.frameCounter += (double) Math.Abs(this.velocity.X) * 1.0; ++this.frameCounter; if (this.frameCounter > 6.0) { this.frame.Y += num1; this.frameCounter = 0.0; } if (this.frame.Y / num1 < Main.npcFrameCount[this.type]) return; this.frame.Y = 0; } } else if (this.type == 46 || this.type == 47 || this.type == 303 || this.type == 337 || this.type == 443 || this.type == 464 || this.type == 540) { if ((double) this.velocity.Y == 0.0) { if (this.direction == 1) this.spriteDirection = 1; if (this.direction == -1) this.spriteDirection = -1; if ((double) this.velocity.X == 0.0) { this.frame.Y = 0; this.frameCounter = 0.0; } else { this.frameCounter += (double) Math.Abs(this.velocity.X) * 1.0; ++this.frameCounter; if (this.frameCounter > 6.0) { this.frame.Y += num1; this.frameCounter = 0.0; } if (this.frame.Y / num1 < Main.npcFrameCount[this.type]) return; this.frame.Y = 0; } } else if ((double) this.velocity.Y < 0.0) { this.frameCounter = 0.0; this.frame.Y = num1 * 4; } else { if ((double) this.velocity.Y <= 0.0) return; this.frameCounter = 0.0; this.frame.Y = num1 * 6; } } else if (this.type == 4 || this.type == 125 || this.type == 126) { ++this.frameCounter; if (this.frameCounter < 7.0) this.frame.Y = 0; else if (this.frameCounter < 14.0) this.frame.Y = num1; else if (this.frameCounter < 21.0) { this.frame.Y = num1 * 2; } else { this.frameCounter = 0.0; this.frame.Y = 0; } if ((double) this.ai[0] <= 1.0) return; this.frame.Y += num1 * 3; } else if (this.type == 5) { ++this.frameCounter; if (this.frameCounter >= 8.0) { this.frame.Y += num1; this.frameCounter = 0.0; } if (this.frame.Y < num1 * Main.npcFrameCount[this.type]) return; this.frame.Y = 0; } else if (this.type == 94) { ++this.frameCounter; if (this.frameCounter < 6.0) this.frame.Y = 0; else if (this.frameCounter < 12.0) this.frame.Y = num1; else if (this.frameCounter < 18.0) { this.frame.Y = num1 * 2; } else { this.frame.Y = num1; if (this.frameCounter < 23.0) return; this.frameCounter = 0.0; } } else if (this.type == 6 || this.type == 173) { ++this.frameCounter; if (this.frameCounter >= 8.0) { this.frame.Y += num1; this.frameCounter = 0.0; } if (this.frame.Y < num1 * Main.npcFrameCount[this.type]) return; this.frame.Y = 0; } else if (this.type == 24) { if ((double) this.velocity.Y == 0.0) { if (this.direction == 1) this.spriteDirection = 1; if (this.direction == -1) this.spriteDirection = -1; } if ((double) this.ai[1] > 0.0) { if (this.frame.Y < 4) this.frameCounter = 0.0; ++this.frameCounter; if (this.frameCounter <= 4.0) this.frame.Y = num1 * 4; else if (this.frameCounter <= 8.0) this.frame.Y = num1 * 5; else if (this.frameCounter <= 12.0) this.frame.Y = num1 * 6; else if (this.frameCounter <= 16.0) this.frame.Y = num1 * 7; else if (this.frameCounter <= 20.0) { this.frame.Y = num1 * 8; } else { this.frame.Y = num1 * 9; this.frameCounter = 100.0; } } else { ++this.frameCounter; if (this.frameCounter <= 4.0) this.frame.Y = 0; else if (this.frameCounter <= 8.0) this.frame.Y = num1; else if (this.frameCounter <= 12.0) { this.frame.Y = num1 * 2; } else { this.frame.Y = num1 * 3; if (this.frameCounter < 16.0) return; this.frameCounter = 0.0; } } } else if (this.type == 29 || this.type == 32 || this.type == 45 || this.type == 172 || this.type >= 281 && this.type <= 286) { if ((double) this.velocity.Y == 0.0) { if (this.direction == 1) this.spriteDirection = 1; if (this.direction == -1) this.spriteDirection = -1; } this.frame.Y = 0; if ((double) this.velocity.Y != 0.0) { this.frame.Y += num1; } else { if ((double) this.ai[1] <= 0.0) return; this.frame.Y += num1 * 2; } } else { if (this.type != 34) return; ++this.frameCounter; if (this.frameCounter >= 4.0) { this.frame.Y += num1; this.frameCounter = 0.0; } if (this.frame.Y < num1 * Main.npcFrameCount[this.type]) return; this.frame.Y = 0; } } public void SimpleFlyMovement(Vector2 desiredVelocity, float moveSpeed) { if ((double) this.velocity.X < (double) desiredVelocity.X) { this.velocity.X += moveSpeed; if ((double) this.velocity.X < 0.0 && (double) desiredVelocity.X > 0.0) this.velocity.X += moveSpeed; } else if ((double) this.velocity.X > (double) desiredVelocity.X) { this.velocity.X -= moveSpeed; if ((double) this.velocity.X > 0.0 && (double) desiredVelocity.X < 0.0) this.velocity.X -= moveSpeed; } if ((double) this.velocity.Y < (double) desiredVelocity.Y) { this.velocity.Y += moveSpeed; if ((double) this.velocity.Y >= 0.0 || (double) desiredVelocity.Y <= 0.0) return; this.velocity.Y += moveSpeed; } else { if ((double) this.velocity.Y <= (double) desiredVelocity.Y) return; this.velocity.Y -= moveSpeed; if ((double) this.velocity.Y <= 0.0 || (double) desiredVelocity.Y >= 0.0) return; this.velocity.Y -= moveSpeed; } } public void HealEffect(int healAmount, bool broadcast = true) { int index = CombatText.NewText(new Microsoft.Xna.Framework.Rectangle((int) this.position.X, (int) this.position.Y, this.width, this.height), CombatText.HealLife, healAmount); if (!broadcast || Main.netMode != 2 || index == 100) return; CombatText combatText = Main.combatText[index]; NetMessage.SendData(81, number: ((int) combatText.color.PackedValue), number2: combatText.position.X, number3: combatText.position.Y, number4: ((float) healAmount)); } public static void HealEffect(Microsoft.Xna.Framework.Rectangle r, int healAmount, bool broadcast = true) { int index = CombatText.NewText(r, CombatText.HealLife, healAmount); if (!broadcast || Main.netMode != 2 || index == 100) return; CombatText combatText = Main.combatText[index]; NetMessage.SendData(81, number: ((int) combatText.color.PackedValue), number2: combatText.position.X, number3: combatText.position.Y, number4: ((float) healAmount)); } public int FindClosestPlayer() => this.FindClosestPlayer(out float _); public int FindClosestPlayer(out float distanceToPlayer) { Vector2 center = this.Center; float num1 = float.MaxValue; int num2 = -1; for (int index = 0; index < (int) byte.MaxValue; ++index) { Player player = Main.player[index]; if (player.active && !player.dead && !player.ghost) { float num3 = Vector2.DistanceSquared(center, player.Center); if ((double) num3 < (double) num1) { num1 = num3; num2 = index; } } } if (num2 < 0) { for (int index = 0; index < (int) byte.MaxValue; ++index) { Player player = Main.player[index]; if (player.active) { float num4 = Vector2.DistanceSquared(center, player.Center); if ((double) num4 < (double) num1) { num1 = num4; num2 = index; } } } } distanceToPlayer = (float) Math.Sqrt((double) num1); return num2; } public void BigMimicSpawnSmoke() { if (Main.netMode == 2) { NetMessage.SendData(51, number: this.whoAmI, number2: 4f); } else { for (int index1 = 0; index1 < 20; ++index1) { int index2 = Dust.NewDust(this.position, this.width, this.height, 54, Alpha: 50, Scale: 1.5f); Main.dust[index2].velocity *= 2f; Main.dust[index2].noGravity = true; } for (int index3 = 0; index3 < 3; ++index3) { for (int index4 = 0; index4 < 2; ++index4) { int index5 = Gore.NewGore(new Vector2((float) ((double) this.position.X + (double) (this.width * index3) * 0.449999988079071 - 20.0), (float) ((double) this.position.Y + (double) (this.height * index4) * 0.5 + 10.0)), new Vector2(0.0f, 0.0f), 99, 1.1f); Main.gore[index5].velocity *= 0.3f; } } } } public static bool BigMimicSummonCheck(int x, int y) { if (Main.netMode == 1 || !Main.hardMode) return false; int chest1 = Chest.FindChest(x, y); if (chest1 < 0) return false; int num1 = 0; int num2 = 0; int num3 = 0; for (int index = 0; index < 40; ++index) { ushort type = Main.tile[Main.chest[chest1].x, Main.chest[chest1].y].type; int num4 = (int) Main.tile[Main.chest[chest1].x, Main.chest[chest1].y].frameX / 36; if (TileID.Sets.BasicChest[(int) type] && (type != (ushort) 21 || num4 < 5 || num4 > 6) && Main.chest[chest1].item[index] != null && Main.chest[chest1].item[index].type > 0) { if (Main.chest[chest1].item[index].type == 3092) num1 += Main.chest[chest1].item[index].stack; else if (Main.chest[chest1].item[index].type == 3091) num2 += Main.chest[chest1].item[index].stack; else ++num3; } } if (num3 == 0 && num1 + num2 == 1) { if (num1 != 1) ; if (TileID.Sets.BasicChest[(int) Main.tile[x, y].type]) { if ((int) Main.tile[x, y].frameX % 36 != 0) --x; if ((int) Main.tile[x, y].frameY % 36 != 0) --y; int chest2 = Chest.FindChest(x, y); for (int index1 = x; index1 <= x + 1; ++index1) { for (int index2 = y; index2 <= y + 1; ++index2) { if (TileID.Sets.BasicChest[(int) Main.tile[index1, index2].type]) Main.tile[index1, index2].active(false); } } for (int index = 0; index < 40; ++index) Main.chest[chest1].item[index] = new Item(); Chest.DestroyChest(x, y); int number = 1; if (Main.tile[x, y].type == (ushort) 467) number = 5; NetMessage.SendData(34, number: number, number2: ((float) x), number3: ((float) y), number5: chest2); NetMessage.SendTileSquare(-1, x, y, 3); } int Type = 475; if (num2 == 1) Type = !WorldGen.crimson ? 473 : 474; int number1 = NPC.NewNPC(x * 16 + 16, y * 16 + 32, Type); Main.npc[number1].whoAmI = number1; NetMessage.SendData(23, number: number1); Main.npc[number1].BigMimicSpawnSmoke(); } return false; } public bool ShouldFaceTarget( ref NPCUtils.TargetSearchResults searchResults, NPCUtils.TargetType? overrideTargetType = null) { NPCUtils.TargetType nearestTargetType = searchResults.NearestTargetType; if (overrideTargetType.HasValue) nearestTargetType = overrideTargetType.Value; switch (nearestTargetType) { case NPCUtils.TargetType.NPC: case NPCUtils.TargetType.TankPet: return true; case NPCUtils.TargetType.Player: bool flag = true; Player nearestTankOwner = searchResults.NearestTankOwner; if (nearestTankOwner.dead || nearestTankOwner.npcTypeNoAggro[this.type] && this.direction != 0) flag = false; if (flag) { float num = (float) ((double) (nearestTankOwner.width + nearestTankOwner.height + this.width + this.height) / 4.0 + 800.0); return nearestTankOwner.itemAnimation != 0 || nearestTankOwner.aggro >= 0 || (double) searchResults.NearestTankDistance <= (double) num || this.oldTarget < 0 || this.oldTarget >= (int) byte.MaxValue; } break; } return false; } public void FaceTarget() { this.direction = (double) this.targetRect.Center.X < (double) this.Center.X ? -1 : 1; this.directionY = (double) this.targetRect.Center.Y < (double) this.Center.Y ? -1 : 1; } public void TargetClosestUpgraded(bool faceTarget = true, Vector2? checkPosition = null) { int index1 = -1; int index2 = -1; int index3 = -1; Vector2 center = this.Center; if (checkPosition.HasValue) center = checkPosition.Value; bool flag1 = this.direction == 0; float num1 = 9999999f; for (int index4 = 0; index4 < (int) byte.MaxValue; ++index4) { Player player = Main.player[index4]; if (player.active && !player.dead && !player.ghost) { float num2 = Vector2.Distance(center, player.Center) - (float) player.aggro; bool flag2 = player.npcTypeNoAggro[this.type]; if (flag2 && !flag1) num2 += 1000f; if ((double) num2 < (double) num1) { index1 = index4; index2 = -1; num1 = num2; } if (player.tankPet >= 0 && !flag2) { float num3 = Vector2.Distance(center, Main.projectile[player.tankPet].Center) - 200f; if ((double) num3 < (double) num1 && (double) num3 < 200.0 && Collision.CanHit(this.Center, 0, 0, Main.projectile[player.tankPet].Center, 0, 0)) { index2 = player.tankPet; num1 = num3; } } } } for (int index5 = 0; index5 < 200; ++index5) { NPC npc = Main.npc[index5]; if (npc.active && npc.type == 548) { float num4 = Vector2.Distance(center, npc.Center); if ((double) num1 > (double) num4) { index3 = index5; index1 = -1; index2 = -1; num1 = num4; } } } if ((double) num1 == 9999999.0) return; if (index3 >= 0) { this.target = Main.npc[index3].WhoAmIToTargettingIndex; this.targetRect = Main.npc[index3].Hitbox; this.direction = (double) this.targetRect.Center.X < (double) this.Center.X ? -1 : 1; this.directionY = (double) this.targetRect.Center.Y < (double) this.Center.Y ? -1 : 1; } else if (index2 >= 0) { this.target = Main.projectile[index2].owner; this.targetRect = Main.projectile[index2].Hitbox; this.direction = (double) this.targetRect.Center.X < (double) this.Center.X ? -1 : 1; this.directionY = (double) this.targetRect.Center.Y < (double) this.Center.Y ? -1 : 1; } else { if (index1 < 0 || index1 >= (int) byte.MaxValue) index1 = 0; Player player = Main.player[index1]; this.targetRect = player.Hitbox; this.target = index1; if (player.dead || player.npcTypeNoAggro[this.type] && !flag1) faceTarget = false; if (!faceTarget) return; float num5 = (float) ((double) (player.width + player.height + this.width + this.height) / 4.0 + 800.0); float num6 = num1 - (float) player.aggro; if (player.itemAnimation == 0 && player.aggro < 0 && (double) num6 > (double) num5 && this.oldTarget >= 0 && this.oldTarget < (int) byte.MaxValue) return; this.direction = (double) this.targetRect.Center.X < (double) this.Center.X ? -1 : 1; this.directionY = (double) this.targetRect.Center.Y < (double) this.Center.Y ? -1 : 1; } } public void TargetClosest(bool faceTarget = true) { float num1 = 0.0f; float num2 = 0.0f; bool flag = false; int num3 = -1; for (int index = 0; index < (int) byte.MaxValue; ++index) { if (Main.player[index].active && !Main.player[index].dead && !Main.player[index].ghost) { float num4 = Math.Abs(Main.player[index].position.X + (float) (Main.player[index].width / 2) - this.position.X + (float) (this.width / 2)) + Math.Abs(Main.player[index].position.Y + (float) (Main.player[index].height / 2) - this.position.Y + (float) (this.height / 2)) - (float) Main.player[index].aggro; if (Main.player[index].npcTypeNoAggro[this.type] && this.direction != 0) num4 += 1000f; if (!flag || (double) num4 < (double) num1) { flag = true; num3 = -1; num2 = Math.Abs(Main.player[index].position.X + (float) (Main.player[index].width / 2) - this.position.X + (float) (this.width / 2)) + Math.Abs(Main.player[index].position.Y + (float) (Main.player[index].height / 2) - this.position.Y + (float) (this.height / 2)); num1 = num4; this.target = index; } if (Main.player[index].tankPet >= 0 && !Main.player[index].npcTypeNoAggro[this.type]) { int tankPet = Main.player[index].tankPet; float num5 = Math.Abs(Main.projectile[tankPet].position.X + (float) (Main.projectile[tankPet].width / 2) - this.position.X + (float) (this.width / 2)) + Math.Abs(Main.projectile[tankPet].position.Y + (float) (Main.projectile[tankPet].height / 2) - this.position.Y + (float) (this.height / 2)) - 200f; if ((double) num5 < (double) num1 && (double) num5 < 200.0 && Collision.CanHit(this.Center, 1, 1, Main.projectile[tankPet].Center, 1, 1)) num3 = tankPet; } } } if (num3 >= 0) { int index = num3; this.targetRect = new Microsoft.Xna.Framework.Rectangle((int) Main.projectile[index].position.X, (int) Main.projectile[index].position.Y, Main.projectile[index].width, Main.projectile[index].height); this.direction = 1; if ((double) (this.targetRect.X + this.targetRect.Width / 2) < (double) this.position.X + (double) (this.width / 2)) this.direction = -1; this.directionY = 1; if ((double) (this.targetRect.Y + this.targetRect.Height / 2) < (double) this.position.Y + (double) (this.height / 2)) this.directionY = -1; } else { if (this.target < 0 || this.target >= (int) byte.MaxValue) this.target = 0; this.targetRect = new Microsoft.Xna.Framework.Rectangle((int) Main.player[this.target].position.X, (int) Main.player[this.target].position.Y, Main.player[this.target].width, Main.player[this.target].height); if (Main.player[this.target].dead) faceTarget = false; if (Main.player[this.target].npcTypeNoAggro[this.type] && this.direction != 0) faceTarget = false; if (faceTarget) { float num6 = num2 - (float) Main.player[this.target].aggro; float num7 = (float) ((Main.player[this.target].height + Main.player[this.target].width + this.height + this.width) / 4 + 750 + 50); if (Main.player[this.target].itemAnimation != 0 || Main.player[this.target].aggro >= 0 || (double) num6 <= (double) num7 || this.oldTarget < 0 || this.oldTarget > 254) { this.direction = 1; if ((double) (this.targetRect.X + this.targetRect.Width / 2) < (double) this.position.X + (double) (this.width / 2)) this.direction = -1; this.directionY = 1; if ((double) (this.targetRect.Y + this.targetRect.Height / 2) < (double) this.position.Y + (double) (this.height / 2)) this.directionY = -1; } } } if (this.confused) this.direction *= -1; if (this.direction == this.oldDirection && this.directionY == this.oldDirectionY && this.target == this.oldTarget || this.collideX || this.collideY) return; this.netUpdate = true; } public void CheckActive() { if (!this.active) return; switch (this.type) { case 8: return; case 9: return; case 11: return; case 12: return; case 14: return; case 15: return; case 40: case 41: return; case 88: return; case 89: return; case 90: return; case 91: return; case 92: return; case 96: return; case 97: return; case 99: return; case 100: return; case 113: case 114: case 115: return; case 118: case 119: return; case 134: case 135: case 136: return; case 139: if (NPC.npcsFoundForCheckActive[134]) return; break; case 246: case 247: case 248: case 249: return; case 263: return; case 267: return; case 328: return; case 379: case 380: return; case 396: case 397: case 398: return; case 400: return; case 422: return; case 437: case 438: case 439: case 440: return; case 488: return; case 493: return; case 507: return; case 517: return; case 548: return; case 549: return; case 551: return; case 552: case 553: case 554: case 555: case 556: case 557: case 558: case 559: case 560: case 561: case 562: case 563: case 566: case 567: case 568: case 569: case 570: case 571: case 572: case 573: case 574: case 575: case 576: case 577: case 578: if (NPC.npcsFoundForCheckActive[548]) return; break; case 564: return; case 565: return; } if (this.townNPC) { Microsoft.Xna.Framework.Rectangle rectangle = new Microsoft.Xna.Framework.Rectangle((int) ((double) this.position.X + (double) (this.width / 2) - (double) NPC.townRangeX), (int) ((double) this.position.Y + (double) (this.height / 2) - (double) NPC.townRangeY), NPC.townRangeX * 2, NPC.townRangeY * 2); for (int index = 0; index < (int) byte.MaxValue; ++index) { if (Main.player[index].active && rectangle.Intersects(new Microsoft.Xna.Framework.Rectangle((int) Main.player[index].position.X, (int) Main.player[index].position.Y, Main.player[index].width, Main.player[index].height))) Main.player[index].townNPCs += this.npcSlots; } } else { bool flag = false; Microsoft.Xna.Framework.Rectangle rectangle1 = new Microsoft.Xna.Framework.Rectangle((int) ((double) this.position.X + (double) (this.width / 2) - (double) NPC.activeRangeX), (int) ((double) this.position.Y + (double) (this.height / 2) - (double) NPC.activeRangeY), NPC.activeRangeX * 2, NPC.activeRangeY * 2); Microsoft.Xna.Framework.Rectangle rectangle2 = new Microsoft.Xna.Framework.Rectangle((int) ((double) this.position.X + (double) (this.width / 2) - (double) NPC.sWidth * 0.5 - (double) this.width), (int) ((double) this.position.Y + (double) (this.height / 2) - (double) NPC.sHeight * 0.5 - (double) this.height), NPC.sWidth + this.width * 2, NPC.sHeight + this.height * 2); for (int index = 0; index < (int) byte.MaxValue; ++index) { if (Main.player[index].active) { if (rectangle1.Intersects(new Microsoft.Xna.Framework.Rectangle((int) Main.player[index].position.X, (int) Main.player[index].position.Y, Main.player[index].width, Main.player[index].height))) { flag = true; if (this.type != 25 && this.type != 30 && this.type != 33 && this.releaseOwner == (short) byte.MaxValue && this.lifeMax > 0) { if (Main.slimeRain && Main.slimeRainNPC[this.type]) Main.player[index].activeNPCs += this.npcSlots * Main.slimeRainNPCSlots; else Main.player[index].activeNPCs += this.npcSlots; } } if (rectangle2.Intersects(new Microsoft.Xna.Framework.Rectangle((int) Main.player[index].position.X, (int) Main.player[index].position.Y, Main.player[index].width, Main.player[index].height))) this.timeLeft = NPC.activeTime; if (this.boss) flag = true; switch (this.type) { case 7: case 10: case 13: case 35: case 36: case 39: case 87: case (int) sbyte.MaxValue: case 128: case 129: case 130: case 131: case 392: case 393: case 394: case 491: case 492: flag = true; continue; case 399: if ((double) this.ai[0] == 2.0 || (double) this.ai[0] == 1.0) this.timeLeft = NPC.activeTime; flag = true; continue; default: continue; } } } --this.timeLeft; if (this.timeLeft <= 0) flag = false; if (flag || Main.netMode == 1) return; NPC.noSpawnCycle = true; this.active = false; if (Main.netMode == 2) { this.netSkip = -1; this.life = 0; NetMessage.SendData(23, number: this.whoAmI); } if (this.aiStyle != 6) return; for (int number = (int) this.ai[0]; number > 0; number = (int) Main.npc[number].ai[0]) { if (Main.npc[number].active) { Main.npc[number].active = false; if (Main.netMode == 2) { Main.npc[number].life = 0; Main.npc[number].netSkip = -1; NetMessage.SendData(23, number: number); } } } } } public void checkDead() { if (!this.active || this.realLife >= 0 && this.realLife != this.whoAmI || this.life > 0) return; if (this.type == 397 || this.type == 396) { if ((double) this.ai[0] == -2.0) return; this.ai[0] = -2f; this.life = this.lifeMax; this.netUpdate = true; this.dontTakeDamage = true; if (Main.netMode == 1) return; int index = NPC.NewNPC((int) this.Center.X, (int) this.Center.Y, 400); Main.npc[index].ai[3] = this.ai[3]; Main.npc[index].netUpdate = true; } else if (this.type == 398 && (double) this.ai[0] != 2.0) { this.ai[0] = 2f; this.life = this.lifeMax; this.netUpdate = true; this.dontTakeDamage = true; } else if ((this.type == 517 || this.type == 422 || this.type == 507 || this.type == 493) && (double) this.ai[2] != 1.0) { this.ai[2] = 1f; this.ai[1] = 0.0f; this.life = this.lifeMax; this.dontTakeDamage = true; this.netUpdate = true; } else if (this.type == 548 && (double) this.ai[1] != 1.0) { this.ai[1] = 1f; this.ai[0] = 0.0f; this.life = this.lifeMax; this.dontTakeDamageFromHostiles = true; this.netUpdate = true; } else { NPC.noSpawnCycle = true; if (this.townNPC && this.type != 37 && this.type != 453) { NetworkText fullNetName = this.GetFullNetName(); NetworkText text = NetworkText.FromKey(Lang.misc[this.type == 369 ? 36 : 19].Key, (object) fullNetName); switch (Main.netMode) { case 0: Main.NewText(text.ToString(), G: (byte) 25, B: (byte) 25); break; case 2: NetMessage.BroadcastChatMessage(text, new Color((int) byte.MaxValue, 25, 25)); break; } } if (Main.netMode != 1 && !Main.dayTime && this.type == 54 && !NPC.AnyNPCs(35)) { for (int index = 0; index < (int) byte.MaxValue; ++index) { if (Main.player[index].active && !Main.player[index].dead && Main.player[index].killClothier) { NPC.SpawnSkeletron(); break; } } } if (this.townNPC && Main.netMode != 1 && this.homeless && WorldGen.prioritizedTownNPC == this.type) WorldGen.prioritizedTownNPC = 0; if (this.DeathSound != null) Main.PlaySound(this.DeathSound, this.position); if (this.type == 13 || this.type == 14 || this.type == 15) { bool flag = true; for (int index = 0; index < 200; ++index) { if (index != this.whoAmI && Main.npc[index].active && (Main.npc[index].type == 13 || Main.npc[index].type == 14 || Main.npc[index].type == 15)) { flag = false; break; } } if (flag) { this.boss = true; this.NPCLoot(); } else this.NPCLoot(); } else if (this.type == 134) { Vector2 position1 = this.position; Vector2 center = Main.player[this.target].Center; float num1 = 1E+08f; Vector2 position2 = this.position; for (int index = 0; index < 200; ++index) { if (Main.npc[index].active && (Main.npc[index].type == 134 || Main.npc[index].type == 135 || Main.npc[index].type == 136)) { float num2 = Math.Abs(Main.npc[index].Center.X - center.X) + Math.Abs(Main.npc[index].Center.Y - center.Y); if ((double) num2 < (double) num1) { num1 = num2; position2 = Main.npc[index].position; } } } this.position = position2; this.NPCLoot(); this.position = position1; } else this.NPCLoot(); this.active = false; DD2Event.CheckProgress(this.type); this.CheckProgressFrostMoon(); this.CheckProgressPumpkinMoon(); int num3 = 0; switch (this.type) { case 26: case 27: case 28: case 29: case 111: case 471: num3 = 1; break; case 143: case 144: case 145: num3 = 2; break; case 212: case 213: case 214: case 215: case 216: case 491: num3 = 3; break; case 381: case 382: case 383: case 385: case 386: case 388: case 389: case 390: case 391: case 395: num3 = 4; break; } if (num3 == 0 || num3 != Main.invasionType) return; int num4 = 1; switch (this.type) { case 216: num4 = 5; break; case 395: num4 = 10; break; case 471: num4 = 10; break; case 491: num4 = 10; break; } Main.invasionSize -= num4; if (Main.invasionSize < 0) Main.invasionSize = 0; if (Main.netMode != 1) Main.ReportInvasionProgress(Main.invasionSizeStart - Main.invasionSize, Main.invasionSizeStart, num3 + 3, 0); if (Main.netMode != 2) return; NetMessage.SendData(78, number: Main.invasionProgress, number2: ((float) Main.invasionProgressMax), number3: ((float) Main.invasionProgressIcon)); } } private void CheckProgressFrostMoon() { if (!Main.snowMoon) return; NetworkText text = NetworkText.Empty; int[] numArray = new int[21] { 0, 25, 15, 10, 30, 100, 160, 180, 200, 250, 300, 375, 450, 525, 675, 850, 1025, 1325, 1550, 2000, 0 }; int progressMax = numArray[NPC.waveNumber]; switch (NPC.waveNumber) { case 1: text = Lang.GetInvasionWaveText(2, (short) 338, (short) 350); break; case 2: text = Lang.GetInvasionWaveText(3, (short) 338, (short) 350, (short) 342, (short) 348); break; case 3: text = Lang.GetInvasionWaveText(4, (short) 344, (short) 338, (short) 350, (short) 342); break; case 4: text = Lang.GetInvasionWaveText(5, (short) 344, (short) 338, (short) 350, (short) 348); break; case 5: text = Lang.GetInvasionWaveText(6, (short) 344, (short) 350, (short) 348, (short) 347); break; case 6: text = Lang.GetInvasionWaveText(7, (short) 346, (short) 342, (short) 350, (short) 338); break; case 7: text = Lang.GetInvasionWaveText(8, (short) 346, (short) 347, (short) 350, (short) 348, (short) 351); break; case 8: text = Lang.GetInvasionWaveText(9, (short) 346, (short) 344, (short) 348, (short) 347, (short) 342); break; case 9: text = Lang.GetInvasionWaveText(10, (short) 346, (short) 344, (short) 351, (short) 338, (short) 347); break; case 10: text = Lang.GetInvasionWaveText(11, (short) 345, (short) 352, (short) 338, (short) 342); break; case 11: text = Lang.GetInvasionWaveText(12, (short) 345, (short) 344, (short) 342, (short) 343, (short) 338); break; case 12: text = Lang.GetInvasionWaveText(13, (short) 345, (short) 346, (short) 342, (short) 352, (short) 343, (short) 347); break; case 13: text = Lang.GetInvasionWaveText(14, (short) 345, (short) 346, (short) 344, (short) 343, (short) 351); break; case 14: text = Lang.GetInvasionWaveText(15, (short) 345, (short) 346, (short) 344, (short) 343, (short) 347); break; case 15: text = Lang.GetInvasionWaveText(16, (short) 345, (short) 346, (short) 344, (short) 343, (short) 352); break; case 16: text = Lang.GetInvasionWaveText(17, (short) 345, (short) 346, (short) 344, (short) 343, (short) 351, (short) 347); break; case 17: text = Lang.GetInvasionWaveText(18, (short) 345, (short) 346, (short) 344, (short) 343, (short) 348, (short) 351); break; case 18: text = Lang.GetInvasionWaveText(19, (short) 345, (short) 346, (short) 344, (short) 343); break; case 19: text = Lang.GetInvasionWaveText(-1, (short) 345, (short) 346, (short) 344); break; } float num = 0.0f; switch (this.type) { case 338: case 339: case 340: num = 1f; break; case 341: num = 20f; break; case 342: num = 2f; break; case 343: num = 18f; break; case 344: num = 50f; break; case 345: num = 150f; break; case 346: num = 100f; break; case 347: num = 8f; break; case 348: case 349: num = 4f; break; case 350: num = 3f; break; } if (Main.expertMode) num *= 2f; float waveKills = NPC.waveKills; NPC.waveKills += num; if ((double) NPC.waveKills >= (double) progressMax && progressMax != 0) { NPC.waveKills = 0.0f; ++NPC.waveNumber; progressMax = numArray[NPC.waveNumber]; if (text != NetworkText.Empty) { switch (Main.netMode) { case 0: Main.NewText(text.ToString(), (byte) 175, (byte) 75); break; case 2: NetMessage.BroadcastChatMessage(text, new Color(175, 75, (int) byte.MaxValue)); break; } if (NPC.waveNumber == 15) AchievementsHelper.NotifyProgressionEvent(14); } } if ((double) NPC.waveKills == (double) waveKills || (double) num == 0.0) return; if (Main.netMode != 1) Main.ReportInvasionProgress((int) NPC.waveKills, progressMax, 1, NPC.waveNumber); if (Main.netMode != 2) return; NetMessage.SendData(78, number: Main.invasionProgress, number2: ((float) Main.invasionProgressMax), number3: 1f, number4: ((float) NPC.waveNumber)); } private void CheckProgressPumpkinMoon() { if (!Main.pumpkinMoon) return; NetworkText text = NetworkText.Empty; int[] numArray = new int[16] { 0, 25, 40, 50, 80, 100, 160, 180, 200, 250, 300, 375, 450, 525, 675, 0 }; int progressMax = numArray[NPC.waveNumber]; switch (NPC.waveNumber) { case 1: text = Lang.GetInvasionWaveText(2, (short) 305, (short) 326); break; case 2: text = Lang.GetInvasionWaveText(3, (short) 305, (short) 326, (short) 329); break; case 3: text = Lang.GetInvasionWaveText(4, (short) 305, (short) 326, (short) 329, (short) 325); break; case 4: text = Lang.GetInvasionWaveText(5, (short) 305, (short) 326, (short) 329, (short) 330, (short) 325); break; case 5: text = Lang.GetInvasionWaveText(6, (short) 326, (short) 329, (short) 330, (short) 325); break; case 6: text = Lang.GetInvasionWaveText(7, (short) 305, (short) 329, (short) 330, (short) 327); break; case 7: text = Lang.GetInvasionWaveText(8, (short) 326, (short) 329, (short) 330, (short) 327); break; case 8: text = Lang.GetInvasionWaveText(9, (short) 305, (short) 315, (short) 325, (short) 327); break; case 9: text = Lang.GetInvasionWaveText(10, (short) 326, (short) 329, (short) 330, (short) 315, (short) 325, (short) 327); break; case 10: text = Lang.GetInvasionWaveText(11, (short) 305, (short) 326, (short) 329, (short) 330, (short) 315, (short) 325, (short) 327); break; case 11: text = Lang.GetInvasionWaveText(12, (short) 326, (short) 329, (short) 330, (short) 315, (short) 325, (short) 327); break; case 12: text = Lang.GetInvasionWaveText(13, (short) 329, (short) 330, (short) 315, (short) 325, (short) 327); break; case 13: text = Lang.GetInvasionWaveText(14, (short) 315, (short) 325, (short) 327); break; case 14: text = Lang.GetInvasionWaveText(-1, (short) 325, (short) 327); break; } float num = 0.0f; switch (this.type) { case 305: case 306: case 307: case 308: case 309: case 310: case 311: case 312: case 313: case 314: num = 1f; break; case 315: num = 25f; break; case 325: num = 75f; break; case 326: num = 2f; break; case 327: num = 150f; break; case 329: num = 4f; break; case 330: num = 8f; break; } if (Main.expertMode) num *= 2f; float waveKills = NPC.waveKills; NPC.waveKills += num; if ((double) NPC.waveKills >= (double) progressMax && progressMax != 0) { NPC.waveKills = 0.0f; ++NPC.waveNumber; progressMax = numArray[NPC.waveNumber]; if (text != NetworkText.Empty) { switch (Main.netMode) { case 0: Main.NewText(text.ToString(), (byte) 175, (byte) 75); break; case 2: NetMessage.BroadcastChatMessage(text, new Color(175, 75, (int) byte.MaxValue)); break; } if (NPC.waveNumber == 15) AchievementsHelper.NotifyProgressionEvent(15); } } if ((double) NPC.waveKills == (double) waveKills || (double) num == 0.0) return; if (Main.netMode != 1) Main.ReportInvasionProgress((int) NPC.waveKills, progressMax, 2, NPC.waveNumber); if (Main.netMode != 2) return; NetMessage.SendData(78, number: Main.invasionProgress, number2: ((float) Main.invasionProgressMax), number3: 2f, number4: ((float) NPC.waveNumber)); } public static void ResetKillCount() { for (int index = 0; index < 580; ++index) NPC.killCount[index] = 0; } public bool AnyInteractions() { if (Main.netMode == 0) { if (this.playerInteraction[Main.myPlayer]) return true; } else { for (int index = 0; index < (int) byte.MaxValue; ++index) { if (this.playerInteraction[index]) return true; } } return false; } public void NPCLoot() { if (Main.netMode == 1 || this.type >= 580) return; bool flag1 = NPC.downedMechBoss1 && NPC.downedMechBoss2 && NPC.downedMechBoss3; switch (this.type) { case 13: case 14: case 15: if (this.boss) { AchievementsHelper.NotifyNPCKilled(this); break; } break; case 125: case 126: if (!NPC.AnyNPCs(this.type == 126 ? 125 : 126)) { AchievementsHelper.NotifyNPCKilled(this); AchievementsHelper.CheckMechaMayhem(this.type); break; } break; case (int) sbyte.MaxValue: case 134: AchievementsHelper.CheckMechaMayhem(this.type); AchievementsHelper.NotifyNPCKilled(this); break; default: AchievementsHelper.NotifyNPCKilled(this); break; } int index1 = Item.NPCtoBanner(this.BannerID()); if (index1 > 0 && !NPCID.Sets.ExcludedFromDeathTally[this.type]) { if (this.realLife < 0 ? this.AnyInteractions() : Main.npc[this.realLife].AnyInteractions()) { ++NPC.killCount[index1]; if (Main.netMode == 2) NetMessage.SendData(83, number: index1); int num = ItemID.Sets.KillsToBanner[Item.BannerToItem(index1)]; if (NPC.killCount[index1] % num == 0 && index1 > 0) { int npc = Item.BannerToNPC(index1); new NPC().SetDefaults(npc); int index2 = this.lastInteraction; if (!Main.player[index2].active || Main.player[index2].dead) index2 = this.FindClosestPlayer(); NetworkText text = NetworkText.FromKey("Game.EnemiesDefeatedAnnouncement", (object) NPC.killCount[index1], (object) NetworkText.FromKey(Lang.GetNPCName(npc).Key)); if (index2 >= 0 && index2 < (int) byte.MaxValue) text = NetworkText.FromKey("Game.EnemiesDefeatedByAnnouncement", (object) Main.player[index2].name, (object) NPC.killCount[index1], (object) NetworkText.FromKey(Lang.GetNPCName(npc).Key)); switch (Main.netMode) { case 0: Main.NewText(text.ToString(), (byte) 250, (byte) 250, (byte) 0); break; case 2: NetMessage.BroadcastChatMessage(text, new Color(250, 250, 0)); break; } int Type = Item.BannerToItem(index1); Vector2 position = this.position; if (index2 >= 0 && index2 < (int) byte.MaxValue) position = Main.player[index2].position; Item.NewItem((int) position.X, (int) position.Y, this.width, this.height, Type); } } } if (this.type == 23 && Main.hardMode || this.SpawnedFromStatue && NPCID.Sets.NoEarlymodeLootWhenSpawnedFromStatue[this.type] && !Main.hardMode || this.SpawnedFromStatue && (double) NPCID.Sets.StatueSpawnedDropRarity[this.type] != -1.0 && ((double) Main.rand.NextFloat() >= (double) NPCID.Sets.StatueSpawnedDropRarity[this.type] || !this.AnyInteractions())) return; if ((this.type == 170 || this.type == 180 || this.type == 171) && Main.rand.Next(3) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 3532); switch (this.type) { case 75: case 80: case 84: case 86: case 120: case 122: case 137: case 138: case 171: case 244: case 475: int maxValue1 = Main.expertMode ? 150 : 200; if (Main.rand.Next(maxValue1) == 0) { Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 3260); break; } break; } if (Main.slimeRain && Main.slimeRainNPC[this.type] && !NPC.AnyNPCs(50)) { int num = 150; if (NPC.downedSlimeKing) num /= 2; ++Main.slimeRainKillCount; if (Main.slimeRainKillCount >= num) { NPC.SpawnOnPlayer(this.FindClosestPlayer(), 50); Main.slimeRainKillCount = -num / 2; } } if (!Main.player[(int) Player.FindClosest(this.position, this.width, this.height)].ZoneDungeon) { bool flag2 = false; if (Main.expertMode && Main.rand.Next(5) == 0) flag2 = true; else if (Main.rand.Next(5) == 0) flag2 = true; if (this.boss) flag2 = false; switch (this.type) { case 13: case 14: case 15: flag2 = false; break; } if (((!Main.hardMode || this.lifeMax <= 1 || this.damage <= 0 || this.friendly ? 0 : ((double) this.position.Y > Main.rockLayer * 16.0 ? 1 : 0)) & (flag2 ? 1 : 0)) != 0 && this.type != 121 && (double) this.value > 0.0) { if (Main.player[(int) Player.FindClosest(this.position, this.width, this.height)].ZoneCorrupt || Main.player[(int) Player.FindClosest(this.position, this.width, this.height)].ZoneCrimson) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 521); if (Main.player[(int) Player.FindClosest(this.position, this.width, this.height)].ZoneHoly) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 520); } } if (this.type == 1 && (double) this.ai[1] > 0.0) { int Type = (int) this.ai[1]; if (Type > 0 && Type < 3930) { int Stack = 1; switch (Type) { case 8: Stack = Main.rand.Next(5, 11); break; case 166: Stack = Main.rand.Next(2, 7); break; case 965: Stack = Main.rand.Next(20, 46); break; default: if (Type >= 11 && Type <= 14 || Type >= 699 && Type <= 702) { Stack = Main.rand.Next(3, 9); if (Main.rand.Next(2) == 0) { Stack += 5; break; } break; } switch (Type) { case 71: Stack = Main.rand.Next(50, 100); break; case 72: Stack = Main.rand.Next(20, 100); break; case 73: Stack = Main.rand.Next(1, 3); break; } break; } Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, Type, Stack); } } if (this.type == 22 && this.GivenOrTypeName == "Andrew") Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 867); if (this.type == 353 && Main.rand.Next(8) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 3352); if (this.type == 441 && Main.rand.Next(8) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 3351); if (this.type == 227 && Main.rand.Next(10) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 3350); if (this.type == 550 && Main.rand.Next(6) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 3821); if (this.type == 208 && Main.rand.Next(4) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 3548, Main.rand.Next(30, 61)); if (this.type == 207 && Main.rand.Next(8) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 3349); if (Main.hardMode && (double) this.value > 0.0) { if (!NPC.downedMechBoss1 && Main.rand.Next(2500) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 556); else if (!NPC.downedMechBoss2 && Main.rand.Next(2500) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 544); else if (!NPC.downedMechBoss3 && Main.rand.Next(2500) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 557); } if (Main.halloween && (double) this.value > 0.0 && (double) this.value < 500.0 && this.damage < 40 && this.defense < 20) { if (Main.rand.Next(2000) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1825); else if (Main.rand.Next(2000) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1827); } if (Main.hardMode && (double) this.value > 0.0) { if (Main.rand.Next(2500) == 0 && Main.player[(int) Player.FindClosest(this.position, this.width, this.height)].ZoneJungle) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1533); if (Main.rand.Next(2500) == 0 && Main.player[(int) Player.FindClosest(this.position, this.width, this.height)].ZoneCorrupt) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1534); if (Main.rand.Next(2500) == 0 && Main.player[(int) Player.FindClosest(this.position, this.width, this.height)].ZoneCrimson) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1535); if (Main.rand.Next(2500) == 0 && Main.player[(int) Player.FindClosest(this.position, this.width, this.height)].ZoneHoly) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1536); if (Main.rand.Next(2500) == 0 && Main.player[(int) Player.FindClosest(this.position, this.width, this.height)].ZoneSnow) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1537); } if (DD2Event.Ongoing) { switch (this.type) { case 552: case 553: case 554: DD2Event.AnnounceGoblinDeath(this); if (DD2Event.ShouldDropCrystals()) { Item.NewItem(this.position, this.Size, 3822); break; } break; case 555: case 556: case 557: case 561: case 562: case 563: case 570: case 571: case 572: case 573: if (DD2Event.ShouldDropCrystals()) { Item.NewItem(this.position, this.Size, 3822); break; } break; case 558: case 559: case 560: case 568: case 569: if (DD2Event.ShouldDropCrystals()) { Item.NewItem(this.position, this.Size, 3822); break; } break; case 564: if (Main.rand.Next(7) == 0) Item.NewItem(this.position, this.Size, 3864); if (Main.rand.Next(5) == 0) { if (Main.rand.Next(2) == 0) Item.NewItem(this.position, this.Size, 3815, 4); else Item.NewItem(this.position, this.Size, 3814); } if (Main.rand.Next(Main.expertMode ? 2 : 3) == 0) Item.NewItem(this.position, this.Size, (int) Utils.SelectRandom(Main.rand, (short) 3857, (short) 3855)); if (DD2Event.ShouldDropCrystals()) { Item.NewItem(this.position, this.Size, 3822); break; } break; case 565: if (Main.rand.Next(14) == 0) Item.NewItem(this.position, this.Size, 3864); if (Main.rand.Next(10) == 0) { if (Main.rand.Next(2) == 0) Item.NewItem(this.position, this.Size, 3815, 4); else Item.NewItem(this.position, this.Size, 3814); } if (Main.rand.Next(6) == 0) Item.NewItem(this.position, this.Size, (int) Utils.SelectRandom(Main.rand, (short) 3857, (short) 3855)); if (DD2Event.ShouldDropCrystals()) { Item.NewItem(this.position, this.Size, 3822); break; } break; case 574: case 575: case 578: if (DD2Event.ShouldDropCrystals()) { Item.NewItem(this.position, this.Size, 3822); break; } break; case 576: if (Main.rand.Next(7) == 0) Item.NewItem(this.position, this.Size, 3865); if (Main.rand.Next(Main.expertMode ? 2 : 3) == 0) Item.NewItem(this.position, this.Size, (int) Utils.SelectRandom(Main.rand, (short) 3809, (short) 3811, (short) 3810, (short) 3812)); if (Main.rand.Next(Main.expertMode ? 2 : 3) == 0) Item.NewItem(this.position, this.Size, (int) Utils.SelectRandom(Main.rand, (short) 3852, (short) 3854, (short) 3823, (short) 3835, (short) 3836)); if (Main.rand.Next(Main.expertMode ? 4 : 5) == 0) Item.NewItem(this.position, this.Size, 3856); if (DD2Event.ShouldDropCrystals()) { Item.NewItem(this.position, this.Size, 3822); break; } break; case 577: if (Main.rand.Next(14) == 0) Item.NewItem(this.position, this.Size, 3865); if (Main.rand.Next(6) == 0) Item.NewItem(this.position, this.Size, (int) Utils.SelectRandom(Main.rand, (short) 3809, (short) 3811, (short) 3810, (short) 3812)); if (Main.rand.Next(6) == 0) Item.NewItem(this.position, this.Size, (int) Utils.SelectRandom(Main.rand, (short) 3852, (short) 3854, (short) 3823, (short) 3835, (short) 3836)); if (Main.rand.Next(10) == 0) Item.NewItem(this.position, this.Size, 3856); if (DD2Event.ShouldDropCrystals()) { Item.NewItem(this.position, this.Size, 3822); break; } break; } } if (this.type == 68) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1169); if (Main.snowMoon) { int waveNumber = NPC.waveNumber; if (Main.expertMode) waveNumber += 7; int maxValue2 = (int) ((double) (30 - waveNumber) / 2.5); if (Main.expertMode) maxValue2 -= 2; if (maxValue2 < 1) maxValue2 = 1; if (this.type == 344) NPC.downedChristmasTree = true; if (this.type == 345) NPC.downedChristmasIceQueen = true; if (this.type == 346) NPC.downedChristmasSantank = true; if ((this.type == 344 || this.type == 345 || this.type == 346) && Main.rand.Next(maxValue2) == 0 && waveNumber >= 15) { int maxValue3 = 4; if (waveNumber == 16) maxValue3 = 4; if (waveNumber == 17) maxValue3 = 3; if (waveNumber == 18) maxValue3 = 3; if (waveNumber == 19) maxValue3 = 2; if (waveNumber >= 20) maxValue3 = 2; if (Main.expertMode && Main.rand.Next(3) == 0) --maxValue3; if (Main.rand.Next(maxValue3) == 0) { if (this.type == 344) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1962); if (this.type == 345) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1960); if (this.type == 346) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1961); } } if (Main.rand.Next(maxValue2) == 0) { if (this.type == 344) { int num = Main.rand.Next(3); if (Main.rand.Next(15) == 0) { Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1871, pfix: -1); } else { if (num == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1916); if (num == 1) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1928, pfix: -1); if (num == 2) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1930, pfix: -1); } } if (this.type == 346) { int num = Main.rand.Next(2); if (num == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1910, pfix: -1); if (num == 1) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1929, pfix: -1); } if (this.type == 345) { if (NPC.waveNumber >= 15 && Main.rand.Next(30) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1914); else if (Main.rand.Next(15) == 0) { Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1959); } else { int num = Main.rand.Next(3); if (num == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1931, pfix: -1); if (num == 1) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1946, pfix: -1); if (num == 2) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1947, pfix: -1); } } } } if (this.type == 341) { int num = Main.rand.Next(5, 11); for (int index3 = 0; index3 < num; ++index3) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 58); if (Main.xMas) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1869); } if (this.type >= 338 && this.type <= 340 && Main.rand.Next(5) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 58); if (this.type >= 338 && this.type <= 340 && Main.rand.Next(200) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1943 + Main.rand.Next(3)); if (this.type == 342 && Main.rand.Next(3) != 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 58); if (Main.pumpkinMoon) { if (this.type == 325) NPC.downedHalloweenTree = true; if (this.type == 327) NPC.downedHalloweenKing = true; int waveNumber = NPC.waveNumber; if (Main.expertMode) waveNumber += 6; int maxValue4 = (int) ((double) (17 - waveNumber) / 1.25); if (Main.expertMode) --maxValue4; if (maxValue4 < 1) maxValue4 = 1; if (waveNumber >= 15) { if (this.type == 325) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1855); if (this.type == 327) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1856); } if (Main.rand.Next(maxValue4) == 0) { if (this.type == 315 && Main.rand.Next(20) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1857); if (this.type >= 305 && this.type <= 314 && Main.rand.Next(10) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, Main.rand.Next(1788, 1791)); if (this.type == 325) { int num = Main.rand.Next(5); if (num == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1829); if (num == 1) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1831); if (num == 2) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1835, pfix: -1); if (num == 2) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1836, Main.rand.Next(30, 61)); if (num == 3) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1837); if (num == 4) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1845, pfix: -1); } if (this.type == 327) { int num = Main.rand.Next(7); if (num == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1782, pfix: -1); if (num == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1783, Main.rand.Next(50, 101)); if (num == 1) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1784, pfix: -1); if (num == 1) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1785, Main.rand.Next(25, 51)); if (num == 2) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1811); if (num == 3) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1826, pfix: -1); if (num == 4) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1801, pfix: -1); if (num == 5) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1802, pfix: -1); if (num == 6) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1798); } } } if (this.type == 325) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1729, Main.rand.Next(30, 51)); if (this.type == 326) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1729, Main.rand.Next(1, 5)); if (this.type >= 305 && this.type <= 314 && Main.rand.Next(4) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 58); if (this.type == 326 && Main.rand.Next(6) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 58); if (this.type == 329 && Main.rand.Next(4) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 58); if (this.type == 330 && Main.rand.Next(4) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 58); if (this.type == 315) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 58); if (Main.halloween && this.lifeMax > 1 && this.damage > 0 && !this.friendly && this.type != 121 && this.type != 23 && (double) this.value > 0.0 && Main.rand.Next(80) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1774); if (Main.xMas && this.lifeMax > 1 && this.damage > 0 && !this.friendly && this.type != 121 && (double) this.value > 0.0 && Main.rand.Next(13) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1869); if (this.lifeMax > 5 && (double) this.value > 0.0 && !this.friendly && Main.hardMode && (double) this.position.Y / 16.0 > (double) (Main.maxTilesY - 200) && Main.rand.Next(50) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 2701, Main.rand.Next(20, 51)); if (this.type == 325 || this.type == 327 || this.type == 344 || this.type == 345 || this.type == 346) { int num = Main.rand.Next(6) + 6; for (int index4 = 0; index4 < num; ++index4) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 58); } if (this.type == 156 && Main.rand.Next(75) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1518); if (this.type == 243 && Main.rand.Next(3) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1519); if (this.type >= 269 && this.type <= 280 && Main.rand.Next(450) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1517); if ((this.type == 158 || this.type == 159) && Main.rand.Next(40) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1520); if (this.type == 176 && Main.rand.Next(150) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1521); if (this.type == 48 && Main.rand.Next(200) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1516); if (this.type == 205 && Main.rand.Next(2) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1611); if (this.type == 483 || this.type == 482) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 3086, Main.rand.Next(5, 11), pfix: -1); if (!Main.hardMode && Main.rand.Next(100) == 0 && this.HasPlayerTarget && this.lifeMax > 5 && !this.friendly && Main.rand.Next(4) == 0 && (double) this.position.Y / 16.0 > (double) (Main.maxTilesY - 350) && NPC.downedBoss3) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 3282, pfix: -1); if (Main.hardMode && this.HasPlayerTarget && Main.player[this.target].ZoneSnow && Main.rand.Next(300) == 0 && this.HasPlayerTarget && this.lifeMax > 5 && !this.friendly && (double) this.value > 0.0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 3289, pfix: -1); else if (Main.hardMode && Main.rand.Next(200) == 0 && this.HasPlayerTarget && this.lifeMax > 5 && !this.friendly && (double) this.value > 0.0) { if (Main.player[this.target].ZoneJungle && NPC.downedMechBossAny) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 3286, pfix: -1); else if (Main.player[this.target].ZoneDungeon && NPC.downedPlantBoss && Main.rand.Next(2) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 3291, pfix: -1); else if ((double) this.position.Y / 16.0 > (Main.rockLayer + (double) Main.maxTilesY) / 2.0 && !Main.player[this.target].ZoneDungeon && Main.rand.Next(2) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 3290, pfix: -1); } int num1 = 1; if (Main.expertMode && Main.rand.Next(2) == 0) num1 = 2; for (int index5 = 0; index5 < num1; ++index5) { if (this.type == 461 && Main.rand.Next(50) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 497, pfix: -1); if ((this.type == 159 || this.type == 158) && Main.rand.Next(35) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 900, pfix: -1); if (this.type == 251 && Main.rand.Next(15) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1311, pfix: -1); if (NPC.downedMechBoss1 && NPC.downedMechBoss2 && NPC.downedMechBoss3) { if (this.type == 477) { if (Main.rand.Next(20) == 0 && NPC.downedPlantBoss) { Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 2770, pfix: -1); ++index5; } if (Main.rand.Next(4) == 0) { Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1570, pfix: -1); ++index5; } else if (Main.rand.Next(3) == 0 && NPC.downedPlantBoss) { Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 3292, pfix: -1); ++index5; } } if (this.type == 253 && Main.rand.Next(40) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1327, pfix: -1); } if (NPC.downedPlantBoss) { if (this.type == 460 && Main.rand.Next(40) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 3098, pfix: -1); if (this.type == 468 && Main.rand.Next(40) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 3105, pfix: -1); if (this.type == 466 && Main.rand.Next(40) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 3106, pfix: -1); if (this.type == 467 && Main.rand.Next(40) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 3249, pfix: -1); if (this.type == 463 && Main.rand.Next(25) == 0) { Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 3107, pfix: -1); Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 3108, Main.rand.Next(100, 201), pfix: -1); } } } if (Main.bloodMoon && Main.hardMode && Main.rand.Next(1000) == 0 && (double) this.value > 0.0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1314, pfix: -1); if (this.type == 77 && Main.rand.Next(150) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 723, pfix: -1); if (Main.rand.Next(100) == 0 || Main.expertMode && Main.rand.Next(100) == 0) { int Type1 = -1; int Type2 = -1; switch (this.type) { case 34: case 83: case 84: case 179: Type1 = 891; break; case 42: case 141: case 176: case 231: case 232: case 233: case 234: case 235: Type1 = 887; break; case 75: Type1 = Main.rand.Next(2) != 0 ? 890 : 889; if (Main.rand.Next(100) == 0) { Type2 = Type1 != 889 ? 889 : 890; break; } break; case 77: case 273: case 274: case 275: case 276: Type1 = 886; break; case 78: case 82: Type1 = 889; break; case 79: Type1 = Main.rand.Next(2) != 0 ? 890 : 888; if (Main.rand.Next(100) == 0) { Type2 = Type1 != 888 ? 888 : 890; break; } break; case 80: case 93: case 109: Type1 = 893; break; case 81: Type1 = 888; break; case 94: case 182: Type1 = 892; break; case 102: case 104: case 269: case 270: case 271: case 272: Type1 = 885; break; case 103: Type1 = 890; break; case 480: Type1 = 3781; break; } if (Type1 != -1) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, Type1, pfix: -1); if (Type2 != -1) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, Type2, pfix: -1); } int num2 = 1; if (Main.expertMode && Main.rand.Next(2) == 0) num2 = 2; for (int index6 = 0; index6 < num2; ++index6) { if (this.type == 290) { if (Main.rand.Next(15) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1513, pfix: -1); else if (Main.rand.Next(10) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 938, pfix: -1); } if (this.type == 287 && Main.rand.Next(6) == 0) { if (Main.rand.Next(2) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 963, pfix: -1); else Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 977, pfix: -1); } if (this.type == 291) { if (Main.rand.Next(12) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1300, pfix: -1); else if (Main.rand.Next(12) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1254, pfix: -1); } if (this.type == 292) { if (Main.rand.Next(12) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1514, pfix: -1); else if (Main.rand.Next(12) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 679, pfix: -1); } if (this.type == 293 && Main.rand.Next(18) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 759, pfix: -1); if ((this.type == 281 || this.type == 282) && Main.rand.Next(20) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1446, pfix: -1); if ((this.type == 283 || this.type == 284) && Main.rand.Next(20) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1444, pfix: -1); if ((this.type == 285 || this.type == 286) && Main.rand.Next(20) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1445, pfix: -1); if (this.type >= 269 && this.type <= 280) { if (Main.rand.Next(400) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1183, pfix: -1); else if (Main.rand.Next(300) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1266, pfix: -1); else if (Main.rand.Next(200) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 671, pfix: -1); } } if (this.lifeMax > 100 && this.type != 288 && (double) this.value > 0.0 && this.HasPlayerTarget && Main.hardMode && NPC.downedPlantBoss && Main.player[this.target].ZoneDungeon) { int maxValue5 = 13; if (Main.expertMode) maxValue5 = 9; if (Main.rand.Next(maxValue5) == 0 && Main.wallDungeon[(int) Main.tile[(int) this.Center.X / 16, (int) this.Center.Y / 16].wall]) NPC.NewNPC((int) this.Center.X, (int) this.Center.Y, 288); } if (this.type == 288) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1508, Main.rand.Next(1, 3), pfix: -1); if (this.type == 156 && Main.rand.Next(30) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 683, pfix: -1); if ((this.type == 195 || this.type == 196) && (Main.expertMode || Main.rand.Next(2) == 0)) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 3102, pfix: -1); if (this.type == 245) { if (Main.expertMode) { this.DropBossBags(); } else { if (Main.rand.Next(7) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 2110, pfix: -1); switch (Main.rand.Next(8)) { case 0: Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1258, pfix: -1); Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1261, Main.rand.Next(60, 100)); break; case 1: Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1122, pfix: -1); break; case 2: Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 899, pfix: -1); break; case 3: Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1248, pfix: -1); break; case 4: Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1294, pfix: -1); break; case 5: Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1295, pfix: -1); break; case 6: Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1296, pfix: -1); break; case 7: Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1297, pfix: -1); break; } Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 2218, Main.rand.Next(4, 9), pfix: -1); } NPC.downedGolemBoss = true; } if (this.type == 471 && (Main.expertMode || Main.rand.Next(2) == 0)) { if (Main.rand.Next(3) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 3052, pfix: -1); else if (Main.rand.Next(2) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 3053, pfix: -1); else Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 3054, pfix: -1); } if (this.type == 268) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1332, Main.rand.Next(2, 6)); if (this.type == 370) { NPC.downedFishron = true; if (Main.expertMode) { this.DropBossBags(); } else { if (Main.rand.Next(7) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 2588, pfix: -1); if (Main.rand.Next(15) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 2609, pfix: -1); switch (Main.rand.Next(5)) { case 0: Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 2611, pfix: -1); break; case 1: Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 2624, pfix: -1); break; case 2: Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 2622, pfix: -1); break; case 3: Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 2621, pfix: -1); break; case 4: Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 2623, pfix: -1); break; } } } if (this.type == 109 && !NPC.downedClown) { NPC.downedClown = true; if (Main.netMode == 2) NetMessage.SendData(7); } if (this.type == 153 && Main.rand.Next(17) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1328, pfix: -1); if (this.type == 120 && Main.rand.Next(500) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1326, pfix: -1); if (this.type == 49 && Main.rand.Next(250) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1325, pfix: -1); if (this.type == 185 && Main.rand.Next(150) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 951, pfix: -1); if (this.type == 44 && Main.rand.Next(50) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1320, pfix: -1); if (this.type == 44 && Main.rand.Next(20) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 88, pfix: -1); if (this.type == 110 && Main.rand.Next(80) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1321, pfix: -1); if (this.type == 60 && Main.rand.Next(150) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1322, pfix: -1); if (this.type == 151 && Main.rand.Next(50) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1322, pfix: -1); if (this.type == 24 && Main.rand.Next(50) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1323, pfix: -1); if (this.type == 109 && Main.rand.Next(30) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1324, Main.rand.Next(1, 5), pfix: -1); if (this.type == 163 || this.type == 238) { if (Main.rand.Next(40) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1308, pfix: -1); if (Main.expertMode) { if (Main.rand.Next(3) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 2607, Main.rand.Next(2, 4)); else if (Main.rand.Next(2) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 2607, Main.rand.Next(1, 4)); else Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 2607); } else if (Main.rand.Next(4) != 0) { if (Main.rand.Next(3) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 2607, Main.rand.Next(1, 4)); else if (Main.rand.Next(2) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 2607, Main.rand.Next(1, 3)); else Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 2607); } } if (Main.hardMode && (this.type == 197 || this.type == 206 || this.type == 169 || this.type == 154) && Main.rand.Next(180) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1306, pfix: -1); if (this.type == 244) { Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 23, Main.rand.Next(1, 6)); if (Main.rand.Next(2) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 23, Main.rand.Next(1, 6)); if (Main.rand.Next(2) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 23, Main.rand.Next(1, 6)); if (Main.rand.Next(2) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 23, Main.rand.Next(1, 6)); Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 662, Main.rand.Next(30, 60)); } if (this.type == 250 && Main.rand.Next(15) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1244, pfix: -1); if (this.type == 172) { Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 754, pfix: -1); Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 755, pfix: -1); } if (this.type == 110 && Main.rand.Next(200) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 682, pfix: -1); if (this.type == 154 && Main.rand.Next(100) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1253, pfix: -1); if ((this.type == 169 || this.type == 206) && Main.rand.Next(50) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 726, pfix: -1); if (this.type == 243) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 2161, pfix: -1); if (this.type == 480 && Main.rand.Next(50) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 3269, pfix: -1); if (this.type == 198 || this.type == 199 || this.type == 226) { if (Main.rand.Next(1000) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1172, pfix: -1); if (Main.rand.Next(50) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1293, pfix: -1); if (Main.rand.Next(7) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 2766, Main.rand.Next(1, 3), pfix: -1); } if (this.type == 78 || this.type == 79 || this.type == 80) { if (Main.rand.Next(75) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 870, pfix: -1); if (Main.rand.Next(75) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 871, pfix: -1); if (Main.rand.Next(75) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 872, pfix: -1); } if (this.type == 473) { switch (Main.rand.Next(5)) { case 0: Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 3008, pfix: -1); break; case 1: Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 3014, pfix: -1); break; case 2: Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 3012, pfix: -1); break; case 3: Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 3015, pfix: -1); break; case 4: Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 3023, pfix: -1); break; } } else if (this.type == 474) { switch (Main.rand.Next(5)) { case 0: Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 3006, pfix: -1); break; case 1: Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 3007, pfix: -1); break; case 2: Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 3013, pfix: -1); break; case 3: Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 3016, pfix: -1); break; case 4: Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 3020, pfix: -1); break; } } else if (this.type == 475) { switch (Main.rand.Next(4)) { case 0: Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 3029, pfix: -1); break; case 1: Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 3030, pfix: -1); break; case 2: Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 3051, pfix: -1); break; case 3: Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 3022, pfix: -1); break; } } else { int type = this.type; } if (this.type == 473 || this.type == 474 || this.type == 475 || this.type == 476) { Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 499, Main.rand.Next(5, 11), pfix: -1); Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 500, Main.rand.Next(5, 16), pfix: -1); } if (this.type == 85 && (double) this.value > 0.0) { if ((double) this.ai[3] == 4.0) { if (Main.rand.Next(20) == 0) { Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1312, pfix: -1); } else { switch (Main.rand.Next(3)) { case 0: Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 676, pfix: -1); break; case 1: Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 725, pfix: -1); break; case 2: Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1264, pfix: -1); break; } } } else { switch (Main.rand.Next(6)) { case 0: Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 437, pfix: -1); break; case 1: Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 517, pfix: -1); break; case 2: Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 535, pfix: -1); break; case 3: Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 536, pfix: -1); break; case 4: Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 532, pfix: -1); break; default: Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 554, pfix: -1); break; } } } if (this.type == 87) { if (Main.expertMode) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 575, Main.rand.Next(5, 11) * 2); else Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 575, Main.rand.Next(5, 11)); } if (this.type >= 212 && this.type <= 215) { if (Main.rand.Next(8000) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 905, pfix: -1); if (Main.rand.Next(4000) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 855, pfix: -1); if (Main.rand.Next(2000) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 854, pfix: -1); if (Main.rand.Next(2000) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 2584, pfix: -1); if (Main.rand.Next(1000) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 3033, pfix: -1); if (Main.rand.Next(200) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 672, pfix: -1); if (Main.rand.Next(500) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1277); if (Main.rand.Next(500) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1278); if (Main.rand.Next(500) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1279); if (Main.rand.Next(500) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1280); if (Main.rand.Next(300) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1704); if (Main.rand.Next(300) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1705); if (Main.rand.Next(300) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1710); if (Main.rand.Next(300) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1716); if (Main.rand.Next(300) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1720); if (Main.rand.Next(300) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 2379); if (Main.rand.Next(300) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 2389); if (Main.rand.Next(300) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 2405); if (Main.rand.Next(300) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 2843); if (Main.rand.Next(300) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 3885); if (Main.rand.Next(300) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 2663); if (Main.rand.Next(150) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 3904, Main.rand.Next(6, 11) * 5); if (Main.rand.Next(300) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 3910); if (Main.rand.Next(300) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 2238); if (Main.rand.Next(300) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 2133); if (Main.rand.Next(300) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 2137); if (Main.rand.Next(300) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 2143); if (Main.rand.Next(300) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 2147); if (Main.rand.Next(300) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 2151); if (Main.rand.Next(300) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 2155); if (Main.rand.Next(500) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 3263); if (Main.rand.Next(500) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 3264); if (Main.rand.Next(500) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 3265); } else if (this.type == 216) { if (Main.rand.Next(2000) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 905, pfix: -1); if (Main.rand.Next(1000) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 855, pfix: -1); if (Main.rand.Next(500) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 854, pfix: -1); if (Main.rand.Next(500) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 2584, pfix: -1); if (Main.rand.Next(250) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 3033, pfix: -1); if (Main.rand.Next(50) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 672, pfix: -1); } else if (this.type == 491) { if (Main.rand.Next(400) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 905, pfix: -1); else if (Main.rand.Next(200) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 855, pfix: -1); else if (Main.rand.Next(100) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 854, pfix: -1); else if (Main.rand.Next(100) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 2584, pfix: -1); else if (Main.rand.Next(50) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 3033, pfix: -1); else if (Main.rand.Next(10) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 672, pfix: -1); } if ((this.type == 161 || this.type == 431) && Main.rand.Next(50) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 803 + Main.rand.Next(3)); if (this.type == 217) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1115, pfix: -1); if (this.type == 218) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1116, pfix: -1); if (this.type == 219) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1117, pfix: -1); if (this.type == 220) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1118, pfix: -1); if (this.type == 221) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1119, pfix: -1); if (this.type == 167 && Main.rand.Next(50) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 879, pfix: -1); if (this.type == 143 || this.type == 144 || this.type == 145) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 593, Main.rand.Next(5, 11)); if (this.type == 79) { if (Main.rand.Next(10) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 527); } else if (this.type == 80 && Main.rand.Next(10) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 528); if (this.type == 524 && Main.rand.Next(10) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 3794, Main.rand.Next(1, 4)); if (this.type == 525) { if (Main.rand.Next(10) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 3794); if (Main.rand.Next(3) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 522, Main.rand.Next(1, 4)); if (Main.rand.Next(15) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 527); } if (this.type == 526) { if (Main.rand.Next(10) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 3794); if (Main.rand.Next(3) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1332, Main.rand.Next(1, 4)); if (Main.rand.Next(15) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 527); } if (this.type == 527) { if (Main.rand.Next(10) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 3794); if (Main.rand.Next(15) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 528); } if (this.type == 532) { if (Main.rand.Next(3) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 3380); if (Main.rand.Next(50) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 3771); } if (this.type == 528) { if (Main.rand.Next(25) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 2802); if (Main.rand.Next(60) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 3784 + Main.rand.Next(3)); } else if (this.type == 529) { if (Main.rand.Next(25) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 2801); if (Main.rand.Next(40) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 3784 + Main.rand.Next(3)); } if ((this.type == 49 || this.type == 51 || this.type == 150 || this.type == 93) && Main.rand.Next(100) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 18, pfix: -1); if ((this.type == 16 || this.type == 185 || this.type == 167 || this.type == 197) && Main.rand.Next(50) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 393, pfix: -1); if (this.type == 58 && Main.rand.Next(75) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 393, pfix: -1); if (this.type >= 494 && this.type <= 506) { if (Main.rand.Next(80) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 18, pfix: -1); else if (Main.rand.Next(80) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 393, pfix: -1); else if (Main.rand.Next(25) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 3285, pfix: -1); } if (this.type == 21 || this.type == 201 || this.type == 202 || this.type == 203 || this.type == 322 || this.type == 323 || this.type == 324 || this.type >= 449 && this.type <= 452) { if (Main.rand.Next(100) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 954, pfix: -1); else if (Main.rand.Next(200) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 955, pfix: -1); else if (Main.rand.Next(200) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1166, pfix: -1); else if (Main.rand.Next(500) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1274, pfix: -1); } else if (this.type == 6) { if (Main.rand.Next(175) == 0) { switch (Main.rand.Next(3)) { case 0: Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 956, pfix: -1); break; case 1: Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 957, pfix: -1); break; default: Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 958, pfix: -1); break; } } } else if (this.type == 42 || this.type == 43 || this.type >= 231 && this.type <= 235) { if (Main.rand.Next(100) == 0) { switch (Main.rand.Next(3)) { case 0: Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 960, pfix: -1); break; case 1: Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 961, pfix: -1); break; default: Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 962, pfix: -1); break; } } } else if (this.type == 31 || this.type == 32 || this.type == 294 || this.type == 295 || this.type == 296) { if (Main.rand.Next(450) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 959, pfix: -1); if (Main.rand.Next(300) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1307, pfix: -1); } if ((this.type == 174 || this.type == 179 || this.type == 182 || this.type == 183) && Main.rand.Next(200) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 996); if (this.type == 101 || this.type == 98) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 522, Main.rand.Next(2, 6)); if (this.type == 86) { Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 526); if (Main.rand.Next(100) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 856); } if (this.type == 186 || this.type == 432) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 40, Main.rand.Next(1, 10)); if (this.type == 225) { if (Main.rand.Next(45) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1243); else Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 23, Main.rand.Next(2, 7)); } if (this.type == 537) { int Stack = Main.rand.Next(1, 3); if (Main.expertMode) { if (this.netID == -7) ++Stack; if (this.netID == -8 || this.netID == -9) Stack += Main.rand.Next(2); } Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 23, Stack); int maxValue6 = 8000; if (Main.expertMode) maxValue6 = (int) ((double) maxValue6 * 0.7); if (Main.rand.Next(maxValue6) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1309, pfix: -1); } if (this.type >= 333 && this.type <= 336 && Main.rand.Next(20) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1906); if (this.netID == -4) { Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 3111, Main.rand.Next(25, 51)); int maxValue7 = 100; if (Main.expertMode) maxValue7 = (int) ((double) maxValue7 * 0.7); if (Main.rand.Next(maxValue7) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1309, pfix: -1); } else if (this.type == 1 || this.type == 16 || this.type == 138 || this.type == 141 || this.type == 147 || this.type == 184 || this.type == 187 || this.type == 204 || this.type == 302 || this.type >= 333 && this.type <= 336 || this.type == 535) { int Stack = Main.rand.Next(1, 3); if (Main.expertMode) { if (this.netID == -7) ++Stack; if (this.netID == -8 || this.netID == -9) Stack += Main.rand.Next(2); } int number = Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 23, Stack); if (this.netID <= 1 && this.netID != -1 && this.netID != -2 && this.netID != -5 && this.netID != -6) { Main.item[number].color = this.color; NetMessage.SendData(88, number: number, number2: 1f); } int maxValue8 = 10000; if (Main.expertMode) maxValue8 = (int) ((double) maxValue8 * 0.7); if (Main.rand.Next(maxValue8) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1309, pfix: -1); } if (this.type == 75) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 501, Main.rand.Next(1, 4)); if (this.type == 81 || this.type == 183) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 23, Main.rand.Next(2, 5)); if (this.type == 122) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 23, Main.rand.Next(5, 11)); if (this.type == 71) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 327); if (this.type == 2 || this.type == 317 || this.type == 318 || this.type == 190 || this.type == 191 || this.type == 192 || this.type == 193 || this.type == 194 || this.type == 133) { if (Main.rand.Next(3) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 38); else if (Main.rand.Next(100) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 236); } if (this.type == 104 && Main.rand.Next(60) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 485, pfix: -1); if (this.type == 58) { if (Main.rand.Next(250) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 263); else if (Main.rand.Next(30) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 118); } if (this.type == 102 && Main.rand.Next(250) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 263); if (this.type == 3 || this.type == 331 || this.type == 332 || this.type == 132 || this.type == 161 || this.type == 186 || this.type == 187 || this.type == 188 || this.type == 189 || this.type == 200 || this.type == 223 || this.type == 319 || this.type == 320 || this.type == 321 || this.type >= 430 && this.type <= 436) { if (Main.rand.Next(50) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 216, pfix: -1); if (Main.rand.Next(250) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1304, pfix: -1); } if ((this.type == 489 || this.type == 490) && (Main.expertMode || Main.rand.Next(2) == 0)) { if (Main.rand.Next(75) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 3212, pfix: -1); if (Main.rand.Next(100) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 3213, pfix: -1); } if (this.type == 223 && Main.rand.Next(20) == 0) { if (Main.rand.Next(2) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1135, pfix: -1); else Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1136, pfix: -1); } if (this.type == 66) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 267); if ((this.type == 62 || this.type == 66) && Main.rand.Next(35) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 272, pfix: -1); if ((double) this.value > 0.0 && Main.hardMode && (double) this.position.Y / 16.0 < Main.worldSurface + 10.0 && ((double) this.Center.X / 16.0 < 380.0 || (double) this.Center.X / 16.0 > (double) (Main.maxTilesX - 380)) && Main.rand.Next(100) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1315); if (this.type == 52) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 251); if (this.type == 53) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 239); if (this.type == 536) { Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 3478); Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 3479); } if (this.type == 54) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 260); if (this.type == 368) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 2222); if ((this.type == 69 || this.type == 509 || this.type == 508) && Main.rand.Next(3) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 323, Main.rand.Next(1, 3)); if (this.type == 508 && Main.rand.Next(50) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 3772); if (this.type == 73) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 362, Main.rand.Next(1, 3)); if ((this.type == 483 || this.type == 482) && Main.rand.Next(30) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 3109); if ((this.type == 6 || this.type == 94) && Main.rand.Next(3) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 68); if ((this.type == 181 || this.type == 173 || this.type == 239 || this.type == 182 || this.type == 240) && Main.rand.Next(3) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1330); if (this.type == 7 || this.type == 8 || this.type == 9) { if (Main.rand.Next(3) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 68, Main.rand.Next(1, 3)); Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 69, Main.rand.Next(3, 9)); } if ((this.type == 10 || this.type == 11 || this.type == 12 || this.type == 95 || this.type == 96 || this.type == 97) && (Main.rand.Next(50) == 0 || Main.expertMode && Main.rand.Next(50) == 0)) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 215); if ((this.type == 47 || this.type == 464) && Main.rand.Next(75) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 243); if ((this.type == 168 || this.type == 470) && Main.rand.Next(50) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, (int) Utils.SelectRandom(Main.rand, (short) 3757, (short) 3758, (short) 3759)); if (this.type == 533) { if (Main.rand.Next(40) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 3795); else if (Main.rand.Next(30) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 3770); } if (this.type == 551) { if (Main.expertMode) { this.DropBossBags(); } else { switch (Main.rand.Next(4)) { case 0: Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 3859, pfix: -1); break; case 1: Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 3827, pfix: -1); break; case 2: Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 3870, pfix: -1); break; default: Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 3858, pfix: -1); break; } if (Main.rand.Next(7) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 3863, pfix: -1); if (Main.rand.Next(4) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 3883, pfix: -1); } } if (this.type == 4) { if (Main.expertMode) { this.DropBossBags(); } else { if (Main.rand.Next(7) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 2112, pfix: -1); if (Main.rand.Next(40) == 0 || Main.expertMode && Main.rand.Next(20) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1299); if (Main.expertMode) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 3097, pfix: -1); int num3 = 1; if (Main.expertMode) num3 = 2; for (int index7 = 0; index7 < num3; ++index7) { if (WorldGen.crimson) { Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 880, Main.rand.Next(20) + 10); Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 880, Main.rand.Next(20) + 10); Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 880, Main.rand.Next(20) + 10); Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 2171, Main.rand.Next(3) + 1); } else { Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 47, Main.rand.Next(30) + 20); Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 56, Main.rand.Next(20) + 10); Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 56, Main.rand.Next(20) + 10); Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 56, Main.rand.Next(20) + 10); Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 59, Main.rand.Next(3) + 1); } } } } if (this.type == 266) { if (Main.expertMode) { this.DropBossBags(); } else { Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 880, Main.rand.Next(20, 46)); Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 880, Main.rand.Next(20, 46)); if (Main.expertMode) { Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 880, Main.rand.Next(30, 51)); Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 880, Main.rand.Next(30, 51)); } if (Main.rand.Next(7) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 2104, pfix: -1); if (Main.rand.Next(20) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 3060); if (Main.expertMode) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 3223); } } if (this.type == 267 && NPC.AnyNPCs(266)) { int Stack1 = Main.rand.Next(2, 6); if (Main.rand.Next(3) != 0) { if (Main.expertMode) Stack1 += Main.rand.Next(2, 6); Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1329, Stack1); } if (Main.rand.Next(3) != 0) { int Stack2 = Main.rand.Next(5, 13); if (Main.expertMode) Stack2 += Main.rand.Next(6, 14); Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 880, Stack2); } if (Main.rand.Next(2) == 0 && Main.player[(int) Player.FindClosest(this.position, this.width, this.height)].statLife < Main.player[(int) Player.FindClosest(this.position, this.width, this.height)].statLifeMax2) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 58); } if (this.type == 13 || this.type == 14 || this.type == 15) { int Stack = Main.rand.Next(1, 3); if (Main.rand.Next(2) == 0) { if (Main.expertMode) ++Stack; Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 86, Stack); } if (Main.rand.Next(2) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 56, Main.rand.Next(2, 6)); if (this.boss) { if (Main.expertMode) { this.DropBossBags(); } else { Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 56, Main.rand.Next(10, 30)); Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 56, Main.rand.Next(10, 31)); if (Main.expertMode) { Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 56, Main.rand.Next(10, 30)); Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 56, Main.rand.Next(10, 31)); } if (Main.expertMode) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 3224); if (Main.rand.Next(20) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 994); if (Main.rand.Next(7) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 2111, pfix: -1); } } if (Main.rand.Next(4) == 0 && Main.player[(int) Player.FindClosest(this.position, this.width, this.height)].statLife < Main.player[(int) Player.FindClosest(this.position, this.width, this.height)].statLifeMax2) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 58); } if (this.type == 222) { if (Main.expertMode) { this.DropBossBags(); } else { if (Main.rand.Next(7) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 2108, pfix: -1); int Type3 = Main.rand.Next(3); switch (Type3) { case 0: Type3 = 1121; break; case 1: Type3 = 1123; break; case 2: Type3 = 2888; break; } Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, Type3, pfix: -1); if (Main.expertMode) { int Type4 = Main.rand.Next(3); switch (Type4) { case 0: Type4 = 1121; break; case 1: Type4 = 1123; break; case 2: Type4 = 2888; break; } while (Type4 == Type3) { Type4 = Main.rand.Next(3); switch (Type4) { case 0: Type4 = 1121; continue; case 1: Type4 = 1123; continue; case 2: Type4 = 2888; continue; default: continue; } } Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, Type4, pfix: -1); Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1132, pfix: -1); } else if (Main.rand.Next(3) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1132, pfix: -1); if (Main.expertMode && Main.rand.Next(15) == 0 || Main.rand.Next(15) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1170); if (Main.expertMode && Main.rand.Next(20) == 0 || Main.rand.Next(20) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 2502); if (Main.expertMode) { Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1129); Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, Main.rand.Next(842, 845)); } else if (Main.rand.Next(3) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1129); else if (Main.rand.Next(2) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, Main.rand.Next(842, 845)); if (Main.rand.Next(4) != 0 || Main.expertMode) { Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1130, Main.rand.Next(10, 30)); if (Main.expertMode) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1130, Main.rand.Next(10, 30)); } if (Main.expertMode) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 2431, Main.rand.Next(44, 67)); else Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 2431, Main.rand.Next(16, 27)); } NPC.downedQueenBee = true; if (Main.netMode == 2) NetMessage.SendData(7); } if (this.type == 35) { if (Main.expertMode) this.DropBossBags(); else if (Main.rand.Next(7) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1281, pfix: -1); else if (Main.rand.Next(7) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1273, pfix: -1); else if (Main.rand.Next(7) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1313, pfix: -1); } if (this.type == 113) { if (Main.expertMode) { this.DropBossBags(); } else { if (Main.rand.Next(7) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 2105, pfix: -1); Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 367, pfix: -1); if (Main.expertMode) { int num4 = Main.rand.Next(4); Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, num4 != 3 ? 489 + num4 : 2998, pfix: -1); switch (Main.rand.Next(3)) { case 0: Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 514, pfix: -1); break; case 1: Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 426, pfix: -1); break; case 2: Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 434, pfix: -1); break; } } else if (Main.rand.Next(2) == 0) { int num5 = Main.rand.Next(4); Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, num5 != 3 ? 489 + num5 : 2998, pfix: -1); } else { switch (Main.rand.Next(3)) { case 0: Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 514, pfix: -1); break; case 1: Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 426, pfix: -1); break; case 2: Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 434, pfix: -1); break; } } } if (Main.netMode != 1) { int num6 = (int) ((double) this.position.X + (double) (this.width / 2)) / 16; int num7 = (int) ((double) this.position.Y + (double) (this.height / 2)) / 16; int num8 = this.width / 2 / 16 + 1; for (int index8 = num6 - num8; index8 <= num6 + num8; ++index8) { for (int index9 = num7 - num8; index9 <= num7 + num8; ++index9) { if ((index8 == num6 - num8 || index8 == num6 + num8 || index9 == num7 - num8 || index9 == num7 + num8) && !Main.tile[index8, index9].active()) { Main.tile[index8, index9].type = WorldGen.crimson ? (ushort) 347 : (ushort) 140; Main.tile[index8, index9].active(true); } Main.tile[index8, index9].lava(false); Main.tile[index8, index9].liquid = (byte) 0; if (Main.netMode == 2) NetMessage.SendTileSquare(-1, index8, index9, 1); else WorldGen.SquareTileFrame(index8, index9); } } } } if (this.type == 439) { NPC.downedAncientCultist = true; if (Main.rand.Next(7) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 3372, pfix: -1); Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 3549, pfix: -1); WorldGen.TriggerLunarApocalypse(); } if (this.type == 398) { NPC.downedMoonlord = true; NPC.LunarApocalypseIsUp = false; if (Main.expertMode) { this.DropBossBags(); } else { if (Main.rand.Next(7) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 3373, pfix: -1); Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 3384, pfix: -1); Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 3460, Main.rand.Next(70, 91), pfix: -1); Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, Utils.SelectRandom(Main.rand, 3063, 3389, 3065, 1553, 3546, 3541, 3570, 3571, 3569), pfix: -1); } } switch (this.type) { case 402: case 405: case 407: case 409: case 411: if ((this.type != 406 || Main.rand.Next(3) == 0) && NPC.ShieldStrengthTowerStardust > 0) { Projectile.NewProjectile(this.Center.X, this.Center.Y, 0.0f, 0.0f, 629, 0, 0.0f, Main.myPlayer, (float) NPC.FindFirstNPC(493)); break; } break; case 412: case 413: case 414: case 415: case 416: case 417: case 418: case 419: case 518: if (NPC.ShieldStrengthTowerSolar > 0) { Projectile.NewProjectile(this.Center.X, this.Center.Y, 0.0f, 0.0f, 629, 0, 0.0f, Main.myPlayer, (float) NPC.FindFirstNPC(517)); break; } break; case 420: case 421: case 423: case 424: if (NPC.ShieldStrengthTowerNebula > 0) { Projectile.NewProjectile(this.Center.X, this.Center.Y, 0.0f, 0.0f, 629, 0, 0.0f, Main.myPlayer, (float) NPC.FindFirstNPC(507)); break; } break; case 422: int num9 = Main.rand.Next(25, 41) / 2; if (Main.expertMode) num9 = (int) ((double) num9 * 1.5); for (int index10 = 0; index10 < num9; ++index10) Item.NewItem((int) this.position.X + Main.rand.Next(this.width), (int) this.position.Y + Main.rand.Next(this.height), 2, 2, 3456, Main.rand.Next(1, 4)); NPC.downedTowerVortex = true; NPC.TowerActiveVortex = false; WorldGen.UpdateLunarApocalypse(); WorldGen.MessageLunarApocalypse(); break; case 425: case 426: case 427: case 429: if (NPC.ShieldStrengthTowerVortex > 0) { Projectile.NewProjectile(this.Center.X, this.Center.Y, 0.0f, 0.0f, 629, 0, 0.0f, Main.myPlayer, (float) NPC.FindFirstNPC(422)); break; } break; case 493: int num10 = Main.rand.Next(25, 41) / 2; if (Main.expertMode) num10 = (int) ((double) num10 * 1.5); for (int index11 = 0; index11 < num10; ++index11) Item.NewItem((int) this.position.X + Main.rand.Next(this.width), (int) this.position.Y + Main.rand.Next(this.height), 2, 2, 3459, Main.rand.Next(1, 4)); NPC.downedTowerStardust = true; NPC.TowerActiveStardust = false; WorldGen.UpdateLunarApocalypse(); WorldGen.MessageLunarApocalypse(); break; case 507: int num11 = Main.rand.Next(25, 41) / 2; if (Main.expertMode) num11 = (int) ((double) num11 * 1.5); for (int index12 = 0; index12 < num11; ++index12) Item.NewItem((int) this.position.X + Main.rand.Next(this.width), (int) this.position.Y + Main.rand.Next(this.height), 2, 2, 3457, Main.rand.Next(1, 4)); NPC.downedTowerNebula = true; NPC.TowerActiveNebula = false; WorldGen.UpdateLunarApocalypse(); WorldGen.MessageLunarApocalypse(); break; case 517: int num12 = Main.rand.Next(25, 41) / 2; if (Main.expertMode) num12 = (int) ((double) num12 * 1.5); for (int index13 = 0; index13 < num12; ++index13) Item.NewItem((int) this.position.X + Main.rand.Next(this.width), (int) this.position.Y + Main.rand.Next(this.height), 2, 2, 3458, Main.rand.Next(1, 4)); NPC.downedTowerSolar = true; NPC.TowerActiveSolar = false; WorldGen.UpdateLunarApocalypse(); WorldGen.MessageLunarApocalypse(); break; } switch (this.type) { case 381: case 382: case 383: case 385: case 386: case 389: case 390: case 520: if (Main.rand.Next(8) == 0) { Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 2860, Main.rand.Next(8, 21)); break; } break; } switch (this.type) { case 383: case 386: case 389: if (Main.rand.Next(200) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 2806); if (Main.rand.Next(200) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 2807); if (Main.rand.Next(200) == 0) { Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 2808); break; } break; } switch (this.type) { case 381: case 382: case 385: case 390: if (Main.rand.Next(200) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 2803); if (Main.rand.Next(200) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 2804); if (Main.rand.Next(200) == 0) { Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 2805); break; } break; } if (this.type == 395) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, Utils.SelectRandom(Main.rand, 2797, 2749, 2795, 2798, 2796, 2882, 2880, 2769, 2800)); if (this.type == 390 && Main.rand.Next(100) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 2771); if ((this.type == 116 || this.type == 117 || this.type == 118 || this.type == 119) && (!Main.expertMode || Main.rand.Next(5) == 0)) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 58); if (this.type == 139 && Main.rand.Next(2) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 58); if (this.type == 63 || this.type == 64 || this.type == 103) { if (Main.rand.Next(100) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1303, pfix: -1); Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 282, Main.rand.Next(1, 5)); } if (this.type == 481 && Main.rand.Next(2) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 3094, Main.rand.Next(40, 81)); if (this.type == 481 && Main.rand.Next(20) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 3187 + Main.rand.Next(3)); if (this.type == 21 || this.type == 44 || this.type == 167 || this.type == 201 || this.type == 202 || this.type == 481 || this.type == 203 || this.type == 322 || this.type == 323 || this.type == 324 || this.type >= 449 && this.type <= 452) { if (Main.rand.Next(25) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 118); else if (this.type == 44) { if (Main.rand.Next(20) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, Main.rand.Next(410, 412)); else Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 166, Main.rand.Next(1, 4)); } } if (this.type == 45) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 238); if (this.type == 50) { if (Main.slimeRain) { Main.StopSlimeRain(); AchievementsHelper.NotifyProgressionEvent(16); } if (Main.expertMode) { this.DropBossBags(); } else { if (Main.rand.Next(4) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 2430); if (Main.rand.Next(7) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 2493, pfix: -1); Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, Main.rand.Next(256, 259)); Main.rand.Next(2); if (Main.rand.Next(3) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 2585); else Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 2610); Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 998); } NPC.downedSlimeKing = true; if (Main.netMode == 2) NetMessage.SendData(7); } if (this.type == 23 && Main.rand.Next(50) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 116); if (this.type == 24 && Main.rand.Next(250) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 244); if (this.type == 31 || this.type == 32 || this.type == 34) { if (Main.rand.Next(250) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 932); else if (Main.rand.Next(100) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 3095); else if (Main.rand.Next(65) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 327); else if (!Main.expertMode) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 154, Main.rand.Next(1, 4)); if (Main.expertMode) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 154, Main.rand.Next(2, 7)); } if (this.type == 26 || this.type == 27 || this.type == 28 || this.type == 29 || this.type == 111) { if (Main.rand.Next(200) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 160); else if (Main.rand.Next(2) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 161, Main.rand.Next(1, 6)); } if (this.type == 175 && Main.rand.Next(100) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1265, pfix: -1); if ((this.type == 42 || this.type >= 231 && this.type <= 235) && (Main.expertMode || Main.rand.Next(3) != 0)) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 209); if (this.type == 204 && (Main.expertMode || Main.rand.Next(2) == 0)) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 209); if (this.type == 43 && (Main.expertMode || Main.rand.Next(2) == 0)) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 210); if (this.type == 65) { if (Main.rand.Next(50) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 268); else Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 319); } if (this.type == 48 && Main.rand.Next(2) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 320); if (this.type == 541) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 3783); if (this.type == 542 && Main.rand.Next(8) == 0) { int number = Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 319); Main.item[number].color = new Color(189, 148, 96, (int) byte.MaxValue); NetMessage.SendData(88, number: number, number2: 1f); } if (this.type == 543 || this.type == 544) { if (Main.rand.Next(25) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 527); if (Main.rand.Next(8) == 0) { int number = Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 319); Main.item[number].color = this.type != 544 ? new Color(112, 85, 89, (int) byte.MaxValue) : new Color(145, 27, 40, (int) byte.MaxValue); NetMessage.SendData(88, number: number, number2: 1f); } } if (this.type == 545) { if (Main.rand.Next(25) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 528); if (Main.rand.Next(8) == 0) { int number = Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 319); Main.item[number].color = new Color(158, 113, 164, (int) byte.MaxValue); NetMessage.SendData(88, number: number, number2: 1f); } } if (this.type == 125 || this.type == 126) { int Type = 125; if (this.type == 125) Type = 126; if (!NPC.AnyNPCs(Type)) { if (Main.expertMode) { this.DropBossBags(); } else { if (Main.rand.Next(7) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 2106, pfix: -1); Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 549, Main.rand.Next(25, 41)); Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1225, Main.rand.Next(15, 31)); } } else { this.value = 0.0f; this.boss = false; } } else if (Main.expertMode) { if (this.type == (int) sbyte.MaxValue || this.type == 134) this.DropBossBags(); } else if (this.type == (int) sbyte.MaxValue) { if (Main.rand.Next(7) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 2107, pfix: -1); Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 547, Main.rand.Next(25, 41)); Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1225, Main.rand.Next(15, 31)); } else if (this.type == 134) { if (Main.rand.Next(7) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 2113, pfix: -1); Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 548, Main.rand.Next(25, 41)); Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1225, Main.rand.Next(15, 31)); } if (this.type == 262) { if (Main.expertMode) { this.DropBossBags(); } else { if (Main.rand.Next(7) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 2109, pfix: -1); if (Main.expertMode) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1141, Main.rand.Next(2, 4), pfix: -1); else Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1141, pfix: -1); if (Main.rand.Next(20) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1182, pfix: -1); if (Main.rand.Next(50) == 0 || Main.expertMode && Main.rand.Next(50) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1305, pfix: -1); if (Main.rand.Next(4) == 0 || Main.expertMode) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1157, pfix: -1); if (Main.rand.Next(10) == 0) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 3021, pfix: -1); int num13 = 1; if (Main.expertMode) num13 = 2; int num14 = 0; for (int index14 = 0; index14 < num13; ++index14) { int num15 = Main.rand.Next(7); if (!NPC.downedPlantBoss) num15 = 0; if (index14 == 0) { num14 = num15; } else { while (num14 == num15) num15 = Main.rand.Next(7); } switch (num15) { case 0: Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 758, pfix: -1); Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 771, Main.rand.Next(50, 150)); break; case 1: Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1255, pfix: -1); break; case 2: Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 788, pfix: -1); break; case 3: Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1178, pfix: -1); break; case 4: Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1259, pfix: -1); break; case 5: Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1155, pfix: -1); break; case 6: Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 3018, pfix: -1); break; } } } int num16 = NPC.downedPlantBoss ? 1 : 0; NPC.downedPlantBoss = true; if (num16 == 0) { switch (Main.netMode) { case 0: Main.NewText(Lang.misc[33].Value, (byte) 50, B: (byte) 130); break; case 2: NetMessage.BroadcastChatMessage(NetworkText.FromKey(Lang.misc[33].Key), new Color(50, (int) byte.MaxValue, 130)); break; } } } if ((this.boss || this.type == 125 || this.type == 126 || this.type == 491 || this.type == 551 || this.type == 576 || this.type == 577 || this.type == 564 || this.type == 565) && Main.rand.Next(10) == 0) { if (this.type == 4) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1360); if (this.type == 13 || this.type == 14 || this.type == 15) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1361); if (this.type == 266) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1362); if (this.type == 35) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1363); if (this.type == 222) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1364); if (this.type == 113) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1365); if (this.type == 134) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1366); if (this.type == (int) sbyte.MaxValue) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1367); if (this.type == 125) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1368); if (this.type == 126) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1369); if (this.type == 262) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1370); if (this.type == 245) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 1371); if (this.type == 50) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 2489); if (this.type == 370) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 2589); if (this.type == 439) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 3357); if (this.type == 491) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 3359); if (this.type == 395) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 3358); if (this.type == 398) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 3595); if (this.type == 551) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 3866); if (this.type == 564 || this.type == 565) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 3867); if (this.type == 576 || this.type == 577) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 3868); } if (this.boss) { if (this.type == 4) NPC.downedBoss1 = true; else if (this.type == 13 || this.type == 14 || this.type == 15) NPC.downedBoss2 = true; else if (this.type == 266) NPC.downedBoss2 = true; else if (this.type == 35) NPC.downedBoss3 = true; if (this.type == (int) sbyte.MaxValue) { NPC.downedMechBoss3 = true; NPC.downedMechBossAny = true; } if (this.type == 134) { NPC.downedMechBoss1 = true; NPC.downedMechBossAny = true; } string typeName = this.TypeName; int Stack = Main.rand.Next(5, 16); int Type = 28; if (this.type == 113) Type = 188; else if (this.type == 222) Type = 1134; else if (this.type > 113 && this.type < 222) Type = 499; else if (this.type == 245 || this.type == 262) Type = 499; else if (this.type == 370) Type = 499; else if (this.type == 395) Type = 499; else if (this.type == 439) Type = 499; else if (this.type == 398) Type = 499; Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, Type, Stack); int num17 = Main.rand.Next(5) + 5; for (int index15 = 0; index15 < num17; ++index15) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 58); if (this.type == 125 || this.type == 126) { NPC.downedMechBoss2 = true; NPC.downedMechBossAny = true; switch (Main.netMode) { case 0: Main.NewText(Language.GetTextValue("Announcement.HasBeenDefeated_Plural", (object) Language.GetTextValue("Enemies.TheTwins")), (byte) 175, (byte) 75); break; case 2: NetMessage.BroadcastChatMessage(NetworkText.FromKey("Announcement.HasBeenDefeated_Plural", (object) NetworkText.FromKey("Enemies.TheTwins")), new Color(175, 75, (int) byte.MaxValue)); break; } } else if (this.type == 398) { switch (Main.netMode) { case 0: Main.NewText(Language.GetTextValue("Announcement.HasBeenDefeated_Single", (object) Language.GetTextValue("Enemies.MoonLord")), (byte) 175, (byte) 75); break; case 2: NetMessage.BroadcastChatMessage(NetworkText.FromKey("Announcement.HasBeenDefeated_Single", (object) NetworkText.FromKey("Enemies.MoonLord")), new Color(175, 75, (int) byte.MaxValue)); break; } } else { switch (Main.netMode) { case 0: Main.NewText(Language.GetTextValue("Announcement.HasBeenDefeated_Single", (object) typeName), (byte) 175, (byte) 75); break; case 2: NetMessage.BroadcastChatMessage(NetworkText.FromKey("Announcement.HasBeenDefeated_Single", (object) this.GetTypeNetName()), new Color(175, 75, (int) byte.MaxValue)); break; } } if (this.type == 113 && Main.netMode != 1) { bool hardMode = Main.hardMode; WorldGen.StartHardmode(); if (NPC.downedMechBoss1 && NPC.downedMechBoss2 && NPC.downedMechBoss3 && !hardMode) { if (Main.netMode == 0) Main.NewText(Lang.misc[32].Value, (byte) 50, B: (byte) 130); else if (Main.netMode == 2) NetMessage.BroadcastChatMessage(NetworkText.FromKey(Lang.misc[32].Key), new Color(50, (int) byte.MaxValue, 130)); } } if (Main.netMode == 2) NetMessage.SendData(7); } if (!flag1 && NPC.downedMechBoss1 && NPC.downedMechBoss2 && NPC.downedMechBoss3 && Main.hardMode) { switch (Main.netMode) { case 0: Main.NewText(Lang.misc[32].Value, (byte) 50, B: (byte) 130); break; case 2: NetMessage.BroadcastChatMessage(NetworkText.FromKey(Lang.misc[32].Key), new Color(50, (int) byte.MaxValue, 130)); break; } } if (this.type != 16 && this.type != 81 && this.type != 121 && Main.rand.Next(6) == 0 && this.lifeMax > 1 && this.damage > 0) { int closest = (int) Player.FindClosest(this.position, this.width, this.height); if (Main.rand.Next(2) == 0 && Main.player[closest].statMana < Main.player[closest].statManaMax2) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 184); else if (Main.rand.Next(2) == 0 && Main.player[closest].statLife < Main.player[closest].statLifeMax2) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 58); } if (this.type != 16 && this.type != 81 && this.type != 121 && Main.rand.Next(2) == 0 && this.lifeMax > 1 && this.damage > 0) { int closest = (int) Player.FindClosest(this.position, this.width, this.height); if (Main.player[closest].statMana < Main.player[closest].statManaMax2) Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 184); } float num18 = this.value; if (this.midas) num18 *= (float) (1.0 + (double) Main.rand.Next(10, 50) * 0.00999999977648258); float num19 = num18 * (float) (1.0 + (double) Main.rand.Next(-20, 21) * 0.00999999977648258); if (Main.rand.Next(5) == 0) num19 *= (float) (1.0 + (double) Main.rand.Next(5, 11) * 0.00999999977648258); if (Main.rand.Next(10) == 0) num19 *= (float) (1.0 + (double) Main.rand.Next(10, 21) * 0.00999999977648258); if (Main.rand.Next(15) == 0) num19 *= (float) (1.0 + (double) Main.rand.Next(15, 31) * 0.00999999977648258); if (Main.rand.Next(20) == 0) num19 *= (float) (1.0 + (double) Main.rand.Next(20, 41) * 0.00999999977648258); float num20 = num19 + this.extraValue; while ((int) num20 > 0) { if ((double) num20 > 1000000.0) { int Stack = (int) ((double) num20 / 1000000.0); if (Stack > 50 && Main.rand.Next(5) == 0) Stack /= Main.rand.Next(3) + 1; if (Main.rand.Next(5) == 0) Stack /= Main.rand.Next(3) + 1; num20 -= (float) (1000000 * Stack); Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 74, Stack); } else if ((double) num20 > 10000.0) { int Stack = (int) ((double) num20 / 10000.0); if (Stack > 50 && Main.rand.Next(5) == 0) Stack /= Main.rand.Next(3) + 1; if (Main.rand.Next(5) == 0) Stack /= Main.rand.Next(3) + 1; num20 -= (float) (10000 * Stack); Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 73, Stack); } else if ((double) num20 > 100.0) { int Stack = (int) ((double) num20 / 100.0); if (Stack > 50 && Main.rand.Next(5) == 0) Stack /= Main.rand.Next(3) + 1; if (Main.rand.Next(5) == 0) Stack /= Main.rand.Next(3) + 1; num20 -= (float) (100 * Stack); Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 72, Stack); } else { int Stack = (int) num20; if (Stack > 50 && Main.rand.Next(5) == 0) Stack /= Main.rand.Next(3) + 1; if (Main.rand.Next(5) == 0) Stack /= Main.rand.Next(4) + 1; if (Stack < 1) Stack = 1; num20 -= (float) Stack; Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, 71, Stack); } } } public static void CatchNPC(int i, int who = -1) { if (!Main.npc[i].active) return; if (Main.netMode == 1) { Main.npc[i].active = false; NetMessage.SendData(70, number: i, number2: ((float) who)); } else { if (Main.npc[i].catchItem <= (short) 0) return; if (Main.npc[i].SpawnedFromStatue) { Vector2 position = Main.npc[i].Center - new Vector2(20f); Utils.PoofOfSmoke(position); Main.npc[i].active = false; NetMessage.SendData(23, number: i); NetMessage.SendData(106, number: ((int) position.X), number2: position.Y); } else { new Item().SetDefaults((int) Main.npc[i].catchItem); Item.NewItem((int) Main.player[who].Center.X, (int) Main.player[who].Center.Y, 0, 0, (int) Main.npc[i].catchItem, noGrabDelay: true); Main.npc[i].active = false; NetMessage.SendData(23, number: i); } } } public void DropBossBags() { int itemType = -1; if (this.type == 50) itemType = 3318; if (this.type == 4) itemType = 3319; if (this.type >= 13 && this.type <= 15) itemType = 3320; if (this.type == 266) itemType = 3321; if (this.type == 222) itemType = 3322; if (this.type == 35) itemType = 3323; if (this.type == 113) itemType = 3324; if (this.type == 134) itemType = 3325; if (this.type == 125 || this.type == 126) itemType = 3326; if (this.type == (int) sbyte.MaxValue) itemType = 3327; if (this.type == 262) itemType = 3328; if (this.type == 245) itemType = 3329; if (this.type == 370) itemType = 3330; if (this.type == 439) itemType = 3331; if (this.type == 398) itemType = 3332; if (this.type == 551) itemType = 3860; this.DropItemInstanced(this.position, this.Size, itemType); } public void DropItemInstanced( Vector2 Position, Vector2 HitboxSize, int itemType, int itemStack = 1, bool interactionRequired = true) { if (itemType <= 0) return; switch (Main.netMode) { case 0: Item.NewItem((int) Position.X, (int) Position.Y, (int) HitboxSize.X, (int) HitboxSize.Y, itemType, itemStack); break; case 2: int number = Item.NewItem((int) Position.X, (int) Position.Y, (int) HitboxSize.X, (int) HitboxSize.Y, itemType, itemStack, true); Main.itemLockoutTime[number] = 54000; for (int remoteClient = 0; remoteClient < (int) byte.MaxValue; ++remoteClient) { if ((this.playerInteraction[remoteClient] || !interactionRequired) && Main.player[remoteClient].active) NetMessage.SendData(90, remoteClient, number: number); } Main.item[number].active = false; break; } this.value = 0.0f; } public void PlayerInteraction(int player) { if (this.realLife < 0 ? this.playerInteraction[player] : Main.npc[this.realLife].playerInteraction[player]) return; if (this.type == 13 || this.type == 14 || this.type == 15) { for (int index = 0; index < 200; ++index) { if (index != this.whoAmI && Main.npc[index].active && (Main.npc[index].type == 13 || Main.npc[index].type == 14 || Main.npc[index].type == 15)) Main.npc[index].ApplyInteraction(player); } } if (this.type == 134 || this.type == 135 || this.type == 136) { for (int index = 0; index < 200; ++index) { if (index != this.whoAmI && Main.npc[index].active && (Main.npc[index].type == 134 || Main.npc[index].type == 135 || Main.npc[index].type == 136)) Main.npc[index].ApplyInteraction(player); } } if (this.type == 35 || this.type == 36) { for (int index = 0; index < 200; ++index) { if (index != this.whoAmI && Main.npc[index].active && (Main.npc[index].type == 35 || Main.npc[index].type == 36)) Main.npc[index].ApplyInteraction(player); } } if (this.type == 113 || this.type == 114) { for (int index = 0; index < 200; ++index) { if (index != this.whoAmI && Main.npc[index].active && (Main.npc[index].type == 113 || Main.npc[index].type == 114)) Main.npc[index].ApplyInteraction(player); } } if (this.type >= (int) sbyte.MaxValue && this.type <= 131) { for (int index = 0; index < 200; ++index) { if (index != this.whoAmI && Main.npc[index].active && Main.npc[index].type >= (int) sbyte.MaxValue && Main.npc[index].type <= 131) Main.npc[index].ApplyInteraction(player); } } if (this.type >= 245 && this.type <= 249) { for (int index = 0; index < 200; ++index) { if (index != this.whoAmI && Main.npc[index].active && Main.npc[index].type >= 245 && Main.npc[index].type <= 249) Main.npc[index].ApplyInteraction(player); } } if ((this.type == 396 || this.type == 397) && Main.npc[(int) this.ai[3]].active && Main.npc[(int) this.ai[3]].type == 398) Main.npc[(int) this.ai[3]].ApplyInteraction(player); if ((this.type == 393 || this.type == 394) && Main.npc[(int) this.ai[0]].active && Main.npc[(int) this.ai[0]].type == 395) Main.npc[(int) this.ai[0]].ApplyInteraction(player); if (this.type == 492 && Main.npc[(int) this.ai[0]].active && Main.npc[(int) this.ai[0]].type == 491) Main.npc[(int) this.ai[0]].ApplyInteraction(player); this.ApplyInteraction(player); } public void ApplyInteraction(int player) { if (this.realLife >= 0) Main.npc[this.realLife].playerInteraction[player] = true; else this.playerInteraction[player] = true; if (player >= (int) byte.MaxValue) return; if (this.realLife >= 0) Main.npc[this.realLife].lastInteraction = player; else this.lastInteraction = player; } public static bool CanReleaseNPCs(int who) { float num1 = 0.7f; if (Main.netMode != 1) num1 += 0.05f; int num2 = 0; int num3 = 0; for (int index = 0; index < 200; ++index) { if (Main.npc[index].active) { ++num3; if ((int) Main.npc[index].releaseOwner == who) ++num2; } } int num4 = 0; for (int index = 0; index < (int) byte.MaxValue; ++index) { if (Main.player[index].active) ++num4; } int num5 = (int) (200.0 * (double) num1 / (double) num4); return (double) num3 < 200.0 * (double) num1 && num2 < num5; } public static void ReleaseNPC(int x, int y, int Type, int Style, int who) { if (Main.netMode == 1) { NetMessage.SendData(71, number: x, number2: ((float) y), number3: ((float) Type), number4: ((float) Style)); } else { if (Type < 0 || Type >= 580 || !Main.npcCatchable[Type] || !NPC.CanReleaseNPCs(who)) return; if (Type == 148) { int Type1 = Type + Main.rand.Next(2); int index = NPC.NewNPC(x, y, Type1); Main.npc[index].releaseOwner = (short) who; } else { int index = NPC.NewNPC(x, y, Type); if (Type == 356) Main.npc[index].ai[2] = (float) Style; Main.npc[index].releaseOwner = (short) who; } } } public static void SlimeRainSpawns(int plr) { int checkScreenHeight = Main.LogicCheckScreenHeight; int checkScreenWidth = Main.LogicCheckScreenWidth; float num1 = 15f; Player player = Main.player[plr]; if ((double) player.position.Y > Main.worldSurface * 16.0 + (double) (checkScreenHeight / 2) || (double) player.activeNPCs > (double) num1) return; int maxValue1 = 45 + (int) (450.0 * (double) (player.activeNPCs / num1)); if (Main.expertMode) maxValue1 = (int) ((double) maxValue1 * 0.85); if (Main.rand.Next(maxValue1) != 0) return; int minValue1 = (int) ((double) player.Center.X - (double) checkScreenWidth); int maxValue2 = minValue1 + checkScreenWidth * 2; int minValue2 = (int) ((double) player.Center.Y - (double) checkScreenHeight * 1.5); int maxValue3 = (int) ((double) player.Center.Y - (double) checkScreenHeight * 0.75); int num2 = Main.rand.Next(minValue1, maxValue2); int num3 = Main.rand.Next(minValue2, maxValue3); int index1 = num2 / 16; int index2 = num3 / 16; if (index1 < 10 || index1 > Main.maxTilesX + 10 || (double) index2 < Main.worldSurface * 0.3 || (double) index2 > Main.worldSurface || Collision.SolidTiles(index1 - 3, index1 + 3, index2 - 5, index2 + 2) || Main.wallHouse[(int) Main.tile[index1, index2].wall]) return; int index3 = NPC.NewNPC(index1 * 16 + 8, index2 * 16, 1); if (Main.rand.Next(200) == 0) Main.npc[index3].SetDefaults(-4); else if (Main.expertMode) { if (Main.rand.Next(7) == 0) { Main.npc[index3].SetDefaults(-7); } else { if (Main.rand.Next(3) != 0) return; Main.npc[index3].SetDefaults(-3); } } else if (Main.rand.Next(10) == 0) { Main.npc[index3].SetDefaults(-7); } else { if (Main.rand.Next(5) >= 2) return; Main.npc[index3].SetDefaults(-3); } } public static bool Spawning_SandstoneCheck(int x, int y) { if (!WorldGen.InWorld(x, y, 10)) return false; int num = 0; for (int index1 = 0; index1 < 8; ++index1) { Tile tile1 = Main.tile[x, y + index1]; if (tile1.active() && TileID.Sets.Conversion.Sand[(int) tile1.type]) { ++num; for (int index2 = 1; index2 <= 4; ++index2) { Tile tile2 = Main.tile[x + index2, y + index1]; if (tile2.active() && TileID.Sets.Conversion.Sand[(int) tile2.type]) ++num; else break; } for (int index3 = 1; index3 <= 4; ++index3) { Tile tile3 = Main.tile[x - index3, y + index1]; if (tile3.active() && TileID.Sets.Conversion.Sand[(int) tile3.type]) ++num; else break; } } else break; } return num >= 40; } public static void SpawnNPC() { if (NPC.noSpawnCycle) { NPC.noSpawnCycle = false; } else { bool flag1 = false; bool flag2 = false; int index1 = 0; int y = 0; int num1 = 0; int num2 = 0; for (int index2 = 0; index2 < (int) byte.MaxValue; ++index2) { if (Main.player[index2].active) ++num2; } for (int plr = 0; plr < (int) byte.MaxValue; ++plr) { if (Main.player[plr].active && !Main.player[plr].dead) { if (Main.slimeRain) NPC.SlimeRainSpawns(plr); bool flag3 = false; bool flag4 = false; bool flag5 = false; bool flag6 = false; bool flag7 = false; bool flag8 = false; bool flag9 = false; bool flag10 = false; bool flag11 = false; bool flag12 = false; bool flag13 = NPC.downedPlantBoss && Main.hardMode; if (Main.player[plr].active && Main.invasionType > 0 && Main.invasionDelay == 0 && Main.invasionSize > 0 && (double) Main.player[plr].position.Y < Main.worldSurface * 16.0 + (double) NPC.sHeight) { int num3 = 3000; if ((double) Main.player[plr].position.X > Main.invasionX * 16.0 - (double) num3 && (double) Main.player[plr].position.X < Main.invasionX * 16.0 + (double) num3) flag5 = true; else if (Main.invasionX >= (double) (Main.maxTilesX / 2 - 5) && Main.invasionX <= (double) (Main.maxTilesX / 2 + 5)) { for (int index3 = 0; index3 < 200; ++index3) { if (Main.npc[index3].townNPC && (double) Math.Abs(Main.player[plr].position.X - Main.npc[index3].Center.X) < (double) num3) { if (Main.rand.Next(3) == 0) { flag5 = true; break; } break; } } } } if (Main.player[plr].ZoneTowerSolar || Main.player[plr].ZoneTowerNebula || Main.player[plr].ZoneTowerVortex || Main.player[plr].ZoneTowerStardust) flag5 = true; bool flag14 = false; NPC.spawnRate = NPC.defaultSpawnRate; NPC.maxSpawns = NPC.defaultMaxSpawns; if (Main.hardMode) { NPC.spawnRate = (int) ((double) NPC.defaultSpawnRate * 0.9); NPC.maxSpawns = NPC.defaultMaxSpawns + 1; } if ((double) Main.player[plr].position.Y > (double) ((Main.maxTilesY - 200) * 16)) NPC.maxSpawns = (int) ((double) NPC.maxSpawns * 2.0); else if ((double) Main.player[plr].position.Y > Main.rockLayer * 16.0 + (double) NPC.sHeight) { NPC.spawnRate = (int) ((double) NPC.spawnRate * 0.4); NPC.maxSpawns = (int) ((double) NPC.maxSpawns * 1.89999997615814); } else if ((double) Main.player[plr].position.Y > Main.worldSurface * 16.0 + (double) NPC.sHeight) { if (Main.hardMode) { NPC.spawnRate = (int) ((double) NPC.spawnRate * 0.45); NPC.maxSpawns = (int) ((double) NPC.maxSpawns * 1.79999995231628); } else { NPC.spawnRate = (int) ((double) NPC.spawnRate * 0.5); NPC.maxSpawns = (int) ((double) NPC.maxSpawns * 1.70000004768372); } } else if (!Main.dayTime) { NPC.spawnRate = (int) ((double) NPC.spawnRate * 0.6); NPC.maxSpawns = (int) ((double) NPC.maxSpawns * 1.29999995231628); if (Main.bloodMoon) { NPC.spawnRate = (int) ((double) NPC.spawnRate * 0.3); NPC.maxSpawns = (int) ((double) NPC.maxSpawns * 1.79999995231628); } if ((Main.pumpkinMoon || Main.snowMoon) && (double) Main.player[plr].position.Y < Main.worldSurface * 16.0) { NPC.spawnRate = (int) ((double) NPC.spawnRate * 0.2); NPC.maxSpawns *= 2; } } else if (Main.dayTime && Main.eclipse) { NPC.spawnRate = (int) ((double) NPC.spawnRate * 0.2); NPC.maxSpawns = (int) ((double) NPC.maxSpawns * 1.89999997615814); } if (Main.player[plr].ZoneSnow && (double) Main.player[plr].position.Y / 16.0 < Main.worldSurface) { NPC.maxSpawns = (int) ((double) NPC.maxSpawns + (double) NPC.maxSpawns * (double) Main.cloudAlpha); NPC.spawnRate = (int) ((double) NPC.spawnRate * (1.0 - (double) Main.cloudAlpha + 1.0) / 2.0); } if (Main.player[plr].ZoneDungeon) { NPC.spawnRate = (int) ((double) NPC.spawnRate * 0.4); NPC.maxSpawns = (int) ((double) NPC.maxSpawns * 1.70000004768372); } else if (Main.player[plr].ZoneSandstorm) { NPC.spawnRate = (int) ((double) NPC.spawnRate * (Main.hardMode ? 0.400000005960464 : 0.899999976158142)); NPC.maxSpawns = (int) ((double) NPC.maxSpawns * (Main.hardMode ? 1.5 : 1.20000004768372)); } else if (Main.player[plr].ZoneUndergroundDesert) { NPC.spawnRate = (int) ((double) NPC.spawnRate * (Main.hardMode ? 0.200000002980232 : 0.300000011920929)); NPC.maxSpawns = (int) ((double) NPC.maxSpawns * 2.0); } else if (Main.player[plr].ZoneJungle) { NPC.spawnRate = (int) ((double) NPC.spawnRate * 0.4); NPC.maxSpawns = (int) ((double) NPC.maxSpawns * 1.5); } else if (Main.player[plr].ZoneCorrupt || Main.player[plr].ZoneCrimson) { NPC.spawnRate = (int) ((double) NPC.spawnRate * 0.65); NPC.maxSpawns = (int) ((double) NPC.maxSpawns * 1.29999995231628); } else if (Main.player[plr].ZoneMeteor) { NPC.spawnRate = (int) ((double) NPC.spawnRate * 0.4); NPC.maxSpawns = (int) ((double) NPC.maxSpawns * 1.10000002384186); } if (Main.player[plr].ZoneHoly && (double) Main.player[plr].position.Y > Main.rockLayer * 16.0 + (double) NPC.sHeight) { NPC.spawnRate = (int) ((double) NPC.spawnRate * 0.65); NPC.maxSpawns = (int) ((double) NPC.maxSpawns * 1.29999995231628); } if (Main.wof >= 0 && (double) Main.player[plr].position.Y > (double) ((Main.maxTilesY - 200) * 16)) { NPC.maxSpawns = (int) ((double) NPC.maxSpawns * 0.300000011920929); NPC.spawnRate *= 3; } if ((double) Main.player[plr].activeNPCs < (double) NPC.maxSpawns * 0.2) NPC.spawnRate = (int) ((double) NPC.spawnRate * 0.600000023841858); else if ((double) Main.player[plr].activeNPCs < (double) NPC.maxSpawns * 0.4) NPC.spawnRate = (int) ((double) NPC.spawnRate * 0.699999988079071); else if ((double) Main.player[plr].activeNPCs < (double) NPC.maxSpawns * 0.6) NPC.spawnRate = (int) ((double) NPC.spawnRate * 0.800000011920929); else if ((double) Main.player[plr].activeNPCs < (double) NPC.maxSpawns * 0.8) NPC.spawnRate = (int) ((double) NPC.spawnRate * 0.899999976158142); if ((double) Main.player[plr].position.Y / 16.0 > (Main.worldSurface + Main.rockLayer) / 2.0 || Main.player[plr].ZoneCorrupt || Main.player[plr].ZoneCrimson) { if ((double) Main.player[plr].activeNPCs < (double) NPC.maxSpawns * 0.2) NPC.spawnRate = (int) ((double) NPC.spawnRate * 0.699999988079071); else if ((double) Main.player[plr].activeNPCs < (double) NPC.maxSpawns * 0.4) NPC.spawnRate = (int) ((double) NPC.spawnRate * 0.899999976158142); } if (Main.player[plr].calmed) { NPC.spawnRate = (int) ((double) NPC.spawnRate * 1.29999995231628); NPC.maxSpawns = (int) ((double) NPC.maxSpawns * 0.699999988079071); } if (Main.player[plr].sunflower) { NPC.spawnRate = (int) ((double) NPC.spawnRate * 1.20000004768372); NPC.maxSpawns = (int) ((double) NPC.maxSpawns * 0.800000011920929); } if (Main.player[plr].enemySpawns) { NPC.spawnRate = (int) ((double) NPC.spawnRate * 0.5); NPC.maxSpawns = (int) ((double) NPC.maxSpawns * 2.0); } if (Main.player[plr].ZoneWaterCandle || Main.player[plr].inventory[Main.player[plr].selectedItem].type == 148) { if (!Main.player[plr].ZonePeaceCandle && Main.player[plr].inventory[Main.player[plr].selectedItem].type != 3117) { NPC.spawnRate = (int) ((double) NPC.spawnRate * 0.75); NPC.maxSpawns = (int) ((double) NPC.maxSpawns * 1.5); } } else if (Main.player[plr].ZonePeaceCandle || Main.player[plr].inventory[Main.player[plr].selectedItem].type == 3117) { NPC.spawnRate = (int) ((double) NPC.spawnRate * 1.3); NPC.maxSpawns = (int) ((double) NPC.maxSpawns * 0.699999988079071); } if (Main.player[plr].ZoneWaterCandle && (double) Main.player[plr].position.Y / 16.0 < Main.worldSurface * 0.349999994039536) NPC.spawnRate = (int) ((double) NPC.spawnRate * 0.5); if ((double) NPC.spawnRate < (double) NPC.defaultSpawnRate * 0.1) NPC.spawnRate = (int) ((double) NPC.defaultSpawnRate * 0.1); if (NPC.maxSpawns > NPC.defaultMaxSpawns * 3) NPC.maxSpawns = NPC.defaultMaxSpawns * 3; if ((Main.pumpkinMoon || Main.snowMoon) && (double) Main.player[plr].position.Y < Main.worldSurface * 16.0) { NPC.maxSpawns = (int) ((double) NPC.defaultMaxSpawns * (2.0 + 0.3 * (double) num2)); NPC.spawnRate = 20; } if (DD2Event.Ongoing && Main.player[plr].ZoneOldOneArmy) { NPC.maxSpawns = NPC.defaultMaxSpawns; NPC.spawnRate = NPC.defaultSpawnRate; } if (flag5) { NPC.maxSpawns = (int) ((double) NPC.defaultMaxSpawns * (2.0 + 0.3 * (double) num2)); NPC.spawnRate = 20; } if (Main.player[plr].ZoneDungeon && !NPC.downedBoss3) NPC.spawnRate = 10; if (!flag5 && (!Main.bloodMoon && !Main.pumpkinMoon && !Main.snowMoon || Main.dayTime) && (!Main.eclipse || !Main.dayTime) && !Main.player[plr].ZoneDungeon && !Main.player[plr].ZoneCorrupt && !Main.player[plr].ZoneCrimson && !Main.player[plr].ZoneMeteor && !Main.player[plr].ZoneOldOneArmy) { if ((double) Main.player[plr].Center.Y / 16.0 > (double) (Main.maxTilesY - 200)) { if ((double) Main.player[plr].townNPCs == 1.0) { if (Main.rand.Next(2) == 0) flag4 = true; if (Main.rand.Next(10) == 0) { flag11 = true; NPC.maxSpawns = (int) ((double) NPC.maxSpawns * 0.5); } else NPC.spawnRate = (int) ((double) NPC.spawnRate * 1.25); } else if ((double) Main.player[plr].townNPCs == 2.0) { if (Main.rand.Next(4) != 0) flag4 = true; if (Main.rand.Next(5) == 0) { flag11 = true; NPC.maxSpawns = (int) ((double) NPC.maxSpawns * 0.5); } else NPC.spawnRate = (int) ((double) NPC.spawnRate * 1.5); } else if ((double) Main.player[plr].townNPCs >= 3.0) { if (Main.rand.Next(10) != 0) flag4 = true; if (Main.rand.Next(3) == 0) { flag11 = true; NPC.maxSpawns = (int) ((double) NPC.maxSpawns * 0.5); } else NPC.spawnRate = (int) ((double) NPC.spawnRate * 2.0); } } else if ((double) Main.player[plr].townNPCs == 1.0) { flag4 = true; if (Main.rand.Next(3) == 1) { flag11 = true; NPC.maxSpawns = (int) ((double) NPC.maxSpawns * 0.6); } else NPC.spawnRate = (int) ((double) NPC.spawnRate * 2.0); } else if ((double) Main.player[plr].townNPCs == 2.0) { flag4 = true; if (Main.rand.Next(3) != 0) { flag11 = true; NPC.maxSpawns = (int) ((double) NPC.maxSpawns * 0.6); } else NPC.spawnRate = (int) ((double) NPC.spawnRate * 3.0); } else if ((double) Main.player[plr].townNPCs >= 3.0) { flag4 = true; if (!Main.expertMode || Main.rand.Next(30) != 0) flag11 = true; NPC.maxSpawns = (int) ((double) NPC.maxSpawns * 0.6); } } int index4 = (int) ((double) Main.player[plr].position.X + (double) (Main.player[plr].width / 2)) / 16; int index5 = (int) ((double) Main.player[plr].position.Y + (double) (Main.player[plr].height / 2)) / 16; if (Main.wallHouse[(int) Main.tile[index4, index5].wall]) flag4 = true; if (Main.tile[index4, index5].wall == (byte) 87) flag3 = true; bool flag15 = false; if (Main.player[plr].active && !Main.player[plr].dead && (double) Main.player[plr].activeNPCs < (double) NPC.maxSpawns && Main.rand.Next(NPC.spawnRate) == 0) { NPC.spawnRangeX = (int) ((double) (NPC.sWidth / 16) * 0.7); NPC.spawnRangeY = (int) ((double) (NPC.sHeight / 16) * 0.7); NPC.safeRangeX = (int) ((double) (NPC.sWidth / 16) * 0.52); NPC.safeRangeY = (int) ((double) (NPC.sHeight / 16) * 0.52); if (Main.player[plr].inventory[Main.player[plr].selectedItem].type == 1254 || Main.player[plr].inventory[Main.player[plr].selectedItem].type == 1299 || Main.player[plr].scope) { float num4 = 1.5f; if (Main.player[plr].inventory[Main.player[plr].selectedItem].type == 1254 && Main.player[plr].scope) num4 = 1.25f; else if (Main.player[plr].inventory[Main.player[plr].selectedItem].type == 1254) num4 = 1.5f; else if (Main.player[plr].inventory[Main.player[plr].selectedItem].type == 1299) num4 = 1.5f; else if (Main.player[plr].scope) num4 = 2f; NPC.spawnRangeX += (int) ((double) (NPC.sWidth / 16) * 0.5 / (double) num4); NPC.spawnRangeY += (int) ((double) (NPC.sHeight / 16) * 0.5 / (double) num4); NPC.safeRangeX += (int) ((double) (NPC.sWidth / 16) * 0.5 / (double) num4); NPC.safeRangeY += (int) ((double) (NPC.sHeight / 16) * 0.5 / (double) num4); } int minValue1 = (int) ((double) Main.player[plr].position.X / 16.0) - NPC.spawnRangeX; int maxValue1 = (int) ((double) Main.player[plr].position.X / 16.0) + NPC.spawnRangeX; int minValue2 = (int) ((double) Main.player[plr].position.Y / 16.0) - NPC.spawnRangeY; int maxValue2 = (int) ((double) Main.player[plr].position.Y / 16.0) + NPC.spawnRangeY; int num5 = (int) ((double) Main.player[plr].position.X / 16.0) - NPC.safeRangeX; int num6 = (int) ((double) Main.player[plr].position.X / 16.0) + NPC.safeRangeX; int num7 = (int) ((double) Main.player[plr].position.Y / 16.0) - NPC.safeRangeY; int num8 = (int) ((double) Main.player[plr].position.Y / 16.0) + NPC.safeRangeY; if (minValue1 < 0) minValue1 = 0; if (maxValue1 > Main.maxTilesX) maxValue1 = Main.maxTilesX; if (minValue2 < 0) minValue2 = 0; if (maxValue2 > Main.maxTilesY) maxValue2 = Main.maxTilesY; for (int index6 = 0; index6 < 50; ++index6) { int index7 = Main.rand.Next(minValue1, maxValue1); int index8 = Main.rand.Next(minValue2, maxValue2); if (!Main.tile[index7, index8].nactive() || !Main.tileSolid[(int) Main.tile[index7, index8].type]) { if (!Main.wallHouse[(int) Main.tile[index7, index8].wall]) { if (!flag5 && (double) index8 < Main.worldSurface * 0.349999994039536 && !flag11 && ((double) index7 < (double) Main.maxTilesX * 0.45 || (double) index7 > (double) Main.maxTilesX * 0.55 || Main.hardMode)) { num1 = (int) Main.tile[index7, index8].type; index1 = index7; y = index8; flag14 = true; flag2 = true; } else if (!flag5 && (double) index8 < Main.worldSurface * 0.449999988079071 && !flag11 && Main.hardMode && Main.rand.Next(10) == 0) { num1 = (int) Main.tile[index7, index8].type; index1 = index7; y = index8; flag14 = true; flag2 = true; } else { for (int index9 = index8; index9 < Main.maxTilesY; ++index9) { if (Main.tile[index7, index9].nactive() && Main.tileSolid[(int) Main.tile[index7, index9].type]) { if (index7 < num5 || index7 > num6 || index9 < num7 || index9 > num8) { num1 = (int) Main.tile[index7, index9].type; index1 = index7; y = index9; flag14 = true; break; } break; } } } if (flag14) { int num9 = index1 - NPC.spawnSpaceX / 2; int num10 = index1 + NPC.spawnSpaceX / 2; int num11 = y - NPC.spawnSpaceY; int num12 = y; if (num9 < 0) flag14 = false; if (num10 > Main.maxTilesX) flag14 = false; if (num11 < 0) flag14 = false; if (num12 > Main.maxTilesY) flag14 = false; if (flag14) { for (int index10 = num9; index10 < num10; ++index10) { for (int index11 = num11; index11 < num12; ++index11) { if (Main.tile[index10, index11].nactive() && Main.tileSolid[(int) Main.tile[index10, index11].type]) { flag14 = false; break; } if (Main.tile[index10, index11].lava()) { flag14 = false; break; } } } } if (index1 >= num5 && index1 <= num6) flag15 = true; } } else continue; } if (flag14 || flag14) break; } } if (flag14) { Microsoft.Xna.Framework.Rectangle rectangle1 = new Microsoft.Xna.Framework.Rectangle(index1 * 16, y * 16, 16, 16); for (int index12 = 0; index12 < (int) byte.MaxValue; ++index12) { if (Main.player[index12].active) { Microsoft.Xna.Framework.Rectangle rectangle2 = new Microsoft.Xna.Framework.Rectangle((int) ((double) Main.player[index12].position.X + (double) (Main.player[index12].width / 2) - (double) (NPC.sWidth / 2) - (double) NPC.safeRangeX), (int) ((double) Main.player[index12].position.Y + (double) (Main.player[index12].height / 2) - (double) (NPC.sHeight / 2) - (double) NPC.safeRangeY), NPC.sWidth + NPC.safeRangeX * 2, NPC.sHeight + NPC.safeRangeY * 2); if (rectangle1.Intersects(rectangle2)) flag14 = false; } } } if (flag14) { if (Main.player[plr].ZoneDungeon && (!Main.tileDungeon[(int) Main.tile[index1, y].type] || Main.tile[index1, y - 1].wall == (byte) 0)) flag14 = false; if (Main.tile[index1, y - 1].liquid > (byte) 0 && Main.tile[index1, y - 2].liquid > (byte) 0 && !Main.tile[index1, y - 1].lava()) { if (Main.tile[index1, y - 1].honey()) flag7 = true; else flag6 = true; } int index13 = (int) Main.player[plr].Center.X / 16; int index14 = (int) ((double) Main.player[plr].Bottom.Y + 8.0) / 16; if (Main.tile[index1, y].type == (ushort) 367) flag9 = true; else if (Main.tile[index1, y].type == (ushort) 368) flag8 = true; else if (Main.tile[index13, index14].type == (ushort) 367) flag9 = true; else if (Main.tile[index13, index14].type == (ushort) 368) { flag8 = true; } else { int num13 = Main.rand.Next(20, 31); int num14 = Main.rand.Next(1, 4); if (index1 - num13 < 0) num13 = index1; if (y - num13 < 0) num13 = y; if (index1 + num13 >= Main.maxTilesX) num13 = Main.maxTilesX - index1 - 1; if (y + num13 >= Main.maxTilesY) num13 = Main.maxTilesY - y - 1; for (int index15 = index1 - num13; index15 <= index1 + num13; index15 += num14) { int num15 = Main.rand.Next(1, 4); for (int index16 = y - num13; index16 <= y + num13; index16 += num15) { if (Main.tile[index15, index16].type == (ushort) 367) flag9 = true; if (Main.tile[index15, index16].type == (ushort) 368) flag8 = true; } } int num16 = Main.rand.Next(30, 61); int num17 = Main.rand.Next(3, 7); if (index13 - num16 < 0) num16 = index13; if (index14 - num16 < 0) num16 = index14; if (index13 + num16 >= Main.maxTilesX) num16 = Main.maxTilesX - index13 - 2; if (index14 + num16 >= Main.maxTilesY) num16 = Main.maxTilesY - index14 - 2; for (int index17 = index13 - num16; index17 <= index13 + num16; index17 += num17) { int num18 = Main.rand.Next(3, 7); for (int index18 = index14 - num16; index18 <= index14 + num16; index18 += num18) { if (Main.tile[index17, index18].type == (ushort) 367) flag9 = true; if (Main.tile[index17, index18].type == (ushort) 368) flag8 = true; } } } } if (flag7) flag14 = false; if (flag14) { if ((double) y > Main.rockLayer && y < Main.maxTilesY - 200 && !Main.player[plr].ZoneDungeon && !flag5) { if (Main.rand.Next(3) == 0) { int num19 = Main.rand.Next(5, 15); if (index1 - num19 >= 0 && index1 + num19 < Main.maxTilesX) { for (int index19 = index1 - num19; index19 < index1 + num19; ++index19) { for (int index20 = y - num19; index20 < y + num19; ++index20) { if (Main.tile[index19, index20].wall == (byte) 62) flag10 = true; } } } } else { int index21 = (int) Main.player[plr].position.X / 16; int index22 = (int) Main.player[plr].position.Y / 16; if (Main.tile[index21, index22].wall == (byte) 62) flag10 = true; } } if ((double) y < Main.rockLayer && y > 200 && !Main.player[plr].ZoneDungeon && !flag5) { if (Main.rand.Next(3) == 0) { int num20 = Main.rand.Next(5, 15); if (index1 - num20 >= 0 && index1 + num20 < Main.maxTilesX) { for (int index23 = index1 - num20; index23 < index1 + num20; ++index23) { for (int index24 = y - num20; index24 < y + num20; ++index24) { if (WallID.Sets.Conversion.Sandstone[(int) Main.tile[index23, index24].wall] || WallID.Sets.Conversion.HardenedSand[(int) Main.tile[index23, index24].wall]) flag12 = true; } } } } else { int index25 = (int) Main.player[plr].position.X / 16; int index26 = (int) Main.player[plr].position.Y / 16; if (WallID.Sets.Conversion.Sandstone[(int) Main.tile[index25, index26].wall] || WallID.Sets.Conversion.HardenedSand[(int) Main.tile[index25, index26].wall]) flag12 = true; } } flag1 = false; int type = (int) Main.tile[index1, y].type; int newNPC = 200; if (Main.player[plr].ZoneTowerNebula) { bool flag16 = true; int Type = 0; while (flag16) { Type = Utils.SelectRandom(Main.rand, 424, 424, 424, 423, 423, 423, 421, 421, 421, 421, 421, 420); flag16 = false; if (Type == 424 && NPC.CountNPCS(Type) >= 2) flag16 = true; if (Type == 423 && NPC.CountNPCS(Type) >= 3) flag16 = true; if (Type == 420 && NPC.CountNPCS(Type) >= 2) flag16 = true; } if (Type != 0) newNPC = NPC.NewNPC(index1 * 16 + 8, y * 16, Type, 1); } else if (Main.player[plr].ZoneTowerVortex) { bool flag17 = true; int Type = 0; while (flag17) { Type = Utils.SelectRandom(Main.rand, 429, 429, 429, 429, 427, 427, 425, 425, 426); flag17 = false; if (Type == 425 && NPC.CountNPCS(Type) >= 3) flag17 = true; if (Type == 426 && NPC.CountNPCS(Type) >= 3) flag17 = true; if (Type == 429 && NPC.CountNPCS(Type) >= 4) flag17 = true; } if (Type != 0) newNPC = NPC.NewNPC(index1 * 16 + 8, y * 16, Type, 1); } else if (Main.player[plr].ZoneTowerStardust) { int Type = Utils.SelectRandom(Main.rand, 411, 411, 411, 409, 409, 407, 402, 405); if (Type != 0) newNPC = NPC.NewNPC(index1 * 16 + 8, y * 16, Type, 1); } else if (Main.player[plr].ZoneTowerSolar) { bool flag18 = true; int Type = 0; while (flag18) { Type = Utils.SelectRandom(Main.rand, 518, 419, 418, 412, 417, 416, 415); flag18 = false; if (Type == 415 && NPC.CountNPCS(Type) >= 2) flag18 = true; if (Type == 416 && NPC.CountNPCS(Type) >= 1) flag18 = true; if (Type == 518 && NPC.CountNPCS(Type) >= 2) flag18 = true; if (Type == 412 && NPC.CountNPCS(Type) >= 1) flag18 = true; } if (Type != 0) newNPC = NPC.NewNPC(index1 * 16 + 8, y * 16, Type, 1); } else if (flag2) { int maxValue3 = 8; int maxValue4 = 30; bool flag19 = (double) Math.Abs(index1 - Main.maxTilesX / 2) / (double) (Main.maxTilesX / 2) > 0.330000013113022 && (Main.wallLight[(int) Main.tile[index4, index5].wall] || Main.tile[index4, index5].wall == (byte) 73); if (flag19 && NPC.AnyDanger()) flag19 = false; if (Main.player[plr].ZoneWaterCandle) { maxValue3 = 3; maxValue4 = 10; } if (flag5 && Main.invasionType == 4) newNPC = NPC.NewNPC(index1 * 16 + 8, y * 16, 388); else if (flag19 && Main.hardMode && NPC.downedGolemBoss && (!NPC.downedMartians && Main.rand.Next(maxValue3) == 0 || Main.rand.Next(maxValue4) == 0) && !NPC.AnyNPCs(399)) NPC.NewNPC(index1 * 16 + 8, y * 16, 399); else if (flag19 && Main.hardMode && NPC.downedGolemBoss && (!NPC.downedMartians && Main.rand.Next(maxValue3) == 0 || Main.rand.Next(maxValue4) == 0) && !NPC.AnyNPCs(399) && (Main.player[plr].inventory[Main.player[plr].selectedItem].type == 148 || Main.player[plr].ZoneWaterCandle)) NPC.NewNPC(index1 * 16 + 8, y * 16, 399); else if (Main.hardMode && !NPC.AnyNPCs(87) && !flag4 && Main.rand.Next(10) == 0) NPC.NewNPC(index1 * 16 + 8, y * 16, 87, 1); else if (Main.hardMode && !NPC.AnyNPCs(87) && !flag4 && Main.rand.Next(10) == 0 && (Main.player[plr].inventory[Main.player[plr].selectedItem].type == 148 || Main.player[plr].ZoneWaterCandle)) NPC.NewNPC(index1 * 16 + 8, y * 16, 87, 1); else NPC.NewNPC(index1 * 16 + 8, y * 16, 48); } else if (flag5) { switch (Main.invasionType) { case 1: if (Main.hardMode && !NPC.AnyNPCs(471) && Main.rand.Next(30) == 0) { NPC.NewNPC(index1 * 16 + 8, y * 16, 471); break; } if (Main.rand.Next(9) == 0) { NPC.NewNPC(index1 * 16 + 8, y * 16, 29); break; } if (Main.rand.Next(5) == 0) { NPC.NewNPC(index1 * 16 + 8, y * 16, 26); break; } if (Main.rand.Next(3) == 0) { NPC.NewNPC(index1 * 16 + 8, y * 16, 111); break; } if (Main.rand.Next(3) == 0) { NPC.NewNPC(index1 * 16 + 8, y * 16, 27); break; } NPC.NewNPC(index1 * 16 + 8, y * 16, 28); break; case 2: if (Main.rand.Next(7) == 0) { NPC.NewNPC(index1 * 16 + 8, y * 16, 145); break; } if (Main.rand.Next(3) == 0) { NPC.NewNPC(index1 * 16 + 8, y * 16, 143); break; } NPC.NewNPC(index1 * 16 + 8, y * 16, 144); break; case 3: if (Main.invasionSize < Main.invasionSizeStart / 2 && Main.rand.Next(20) == 0 && !NPC.AnyNPCs(491) && !Collision.SolidTiles(index1 - 20, index1 + 20, y - 40, y - 10)) { NPC.NewNPC(index1 * 16 + 8, (y - 10) * 16, 491); break; } if (Main.rand.Next(30) == 0 && !NPC.AnyNPCs(216)) { NPC.NewNPC(index1 * 16 + 8, y * 16, 216); break; } if (Main.rand.Next(11) == 0) { NPC.NewNPC(index1 * 16 + 8, y * 16, 215); break; } if (Main.rand.Next(9) == 0) { NPC.NewNPC(index1 * 16 + 8, y * 16, 252); break; } if (Main.rand.Next(7) == 0) { NPC.NewNPC(index1 * 16 + 8, y * 16, 214); break; } if (Main.rand.Next(3) == 0) { NPC.NewNPC(index1 * 16 + 8, y * 16, 213); break; } NPC.NewNPC(index1 * 16 + 8, y * 16, 212); break; case 4: int Type1 = 0; int num21 = Main.rand.Next(7); if (Main.invasionSize <= 100 && Main.rand.Next(10) == 0 && !NPC.AnyNPCs(395)) Type1 = 395; else if (num21 >= 6) { if (Main.rand.Next(10) == 0 && !NPC.AnyNPCs(395)) { Type1 = 395; } else { int num22 = Main.rand.Next(2); if (num22 == 0) Type1 = 390; if (num22 == 1) Type1 = 386; } } else if (num21 >= 4) { int num23 = Main.rand.Next(5); Type1 = num23 >= 2 ? (num23 >= 4 ? 388 : 381) : 382; } else { int num24 = Main.rand.Next(4); if (num24 == 3) { if (!NPC.AnyNPCs(520)) Type1 = 520; else num24 = Main.rand.Next(3); } if (num24 == 0) Type1 = 385; if (num24 == 1) Type1 = 389; if (num24 == 2) Type1 = 383; } if (Type1 != 0) { newNPC = NPC.NewNPC(index1 * 16 + 8, y * 16, Type1, 1); break; } break; } } else if (!NPC.savedBartender && DD2Event.ReadyToFindBartender && !NPC.AnyNPCs(579) && Main.rand.Next(80) == 0 && !flag6) NPC.NewNPC(index1 * 16 + 8, y * 16, 579); else if (Main.tile[index1, y].wall == (byte) 62 | flag10) { if (Main.tile[index1, y].wall == (byte) 62 && Main.rand.Next(8) == 0 && !flag6 && (double) y >= Main.rockLayer && y < Main.maxTilesY - 210 && !NPC.savedStylist && !NPC.AnyNPCs(354)) NPC.NewNPC(index1 * 16 + 8, y * 16, 354); else if (Main.hardMode) NPC.NewNPC(index1 * 16 + 8, y * 16, 163); else NPC.NewNPC(index1 * 16 + 8, y * 16, 164); } else if (((WallID.Sets.Conversion.HardenedSand[(int) Main.tile[index1, y].wall] ? 1 : (WallID.Sets.Conversion.Sandstone[(int) Main.tile[index1, y].wall] ? 1 : 0)) | (flag12 ? 1 : 0)) != 0 && WorldGen.checkUnderground(index1, y)) { if (Main.hardMode && Main.rand.Next(33) == 0 && !flag4 && (double) y > Main.worldSurface + 100.0) NPC.NewNPC(index1 * 16 + 8, y * 16, 510); else if (Main.rand.Next(22) == 0 && !flag4 && (double) y > Main.worldSurface + 100.0) NPC.NewNPC(index1 * 16 + 8, y * 16, 513); else if (Main.hardMode && Main.rand.Next(5) != 0) { List intList = new List(); if (Main.player[plr].ZoneCorrupt) { intList.Add(525); intList.Add(525); } if (Main.player[plr].ZoneCrimson) { intList.Add(526); intList.Add(526); } if (Main.player[plr].ZoneHoly) { intList.Add(527); intList.Add(527); } if (intList.Count == 0) { intList.Add(524); intList.Add(524); } if (Main.player[plr].ZoneCorrupt || Main.player[plr].ZoneCrimson) { intList.Add(533); intList.Add(529); } else { intList.Add(530); intList.Add(528); } intList.Add(532); int Type2 = Utils.SelectRandom(Main.rand, intList.ToArray()); NPC.NewNPC(index1 * 16 + 8, y * 16, Type2); intList.Clear(); } else { int Type3 = Utils.SelectRandom(Main.rand, 69, 508, 508, 508, 509); NPC.NewNPC(index1 * 16 + 8, y * 16, Type3); } } else if (Main.hardMode & flag6 && Main.player[plr].ZoneJungle && Main.rand.Next(3) != 0) NPC.NewNPC(index1 * 16 + 8, y * 16, 157); else if (Main.hardMode & flag6 && Main.player[plr].ZoneCrimson && Main.rand.Next(3) != 0) NPC.NewNPC(index1 * 16 + 8, y * 16, 242); else if (Main.hardMode & flag6 && Main.player[plr].ZoneCrimson && Main.rand.Next(3) != 0) NPC.NewNPC(index1 * 16 + 8, y * 16, 241); else if (flag6 && (index1 < 250 || index1 > Main.maxTilesX - 250) && Main.tileSand[type] && (double) y < Main.rockLayer) { bool flag20 = false; if (!NPC.savedAngler && !NPC.AnyNPCs(376)) { int num25 = -1; for (int j = y - 1; j > y - 50; --j) { if (Main.tile[index1, j].liquid == (byte) 0 && !WorldGen.SolidTile(index1, j) && !WorldGen.SolidTile(index1, j + 1) && !WorldGen.SolidTile(index1, j + 2)) { num25 = j + 2; break; } } if (num25 > y) num25 = y; if (num25 > 0 && !flag15) { NPC.NewNPC(index1 * 16 + 8, num25 * 16, 376); flag20 = true; } } if (!flag20) { if (Main.rand.Next(60) == 0) NPC.NewNPC(index1 * 16 + 8, y * 16, 220); else if (Main.rand.Next(25) == 0) NPC.NewNPC(index1 * 16 + 8, y * 16, 221); else if (Main.rand.Next(8) == 0) NPC.NewNPC(index1 * 16 + 8, y * 16, 65); else if (Main.rand.Next(3) == 0) NPC.NewNPC(index1 * 16 + 8, y * 16, 67); else NPC.NewNPC(index1 * 16 + 8, y * 16, 64); } } else if (!flag6 && !NPC.savedAngler && !NPC.AnyNPCs(376) && (index1 < 340 || index1 > Main.maxTilesX - 340) && Main.tileSand[type] && (double) y < Main.worldSurface) NPC.NewNPC(index1 * 16 + 8, y * 16, 376); else if (flag6 && ((double) y > Main.rockLayer && Main.rand.Next(2) == 0 || type == 60)) { if (Main.hardMode && Main.rand.Next(3) > 0) NPC.NewNPC(index1 * 16 + 8, y * 16, 102); else NPC.NewNPC(index1 * 16 + 8, y * 16, 58); } else if (flag6 && (double) y > Main.worldSurface && Main.rand.Next(3) == 0) { if (Main.hardMode) NPC.NewNPC(index1 * 16 + 8, y * 16, 103); else NPC.NewNPC(index1 * 16 + 8, y * 16, 63); } else if (flag6 && Main.rand.Next(4) == 0) { if (Main.player[plr].ZoneCorrupt) NPC.NewNPC(index1 * 16 + 8, y * 16, 57); else if ((double) y < Main.worldSurface && y > 50 && Main.rand.Next(3) != 0 && Main.dayTime) { int num26 = -1; for (int j = y - 1; j > y - 50; --j) { if (Main.tile[index1, j].liquid == (byte) 0 && !WorldGen.SolidTile(index1, j) && !WorldGen.SolidTile(index1, j + 1) && !WorldGen.SolidTile(index1, j + 2)) { num26 = j + 2; break; } } if (num26 > y) num26 = y; if (num26 > 0 && !flag15) { if (Main.rand.Next(2) == 0) NPC.NewNPC(index1 * 16 + 8, num26 * 16, 362); else NPC.NewNPC(index1 * 16 + 8, num26 * 16, 364); } else NPC.NewNPC(index1 * 16 + 8, y * 16, 55); } else NPC.NewNPC(index1 * 16 + 8, y * 16, 55); } else if (NPC.downedGoblins && Main.rand.Next(20) == 0 && !flag6 && (double) y >= Main.rockLayer && y < Main.maxTilesY - 210 && !NPC.savedGoblin && !NPC.AnyNPCs(105)) NPC.NewNPC(index1 * 16 + 8, y * 16, 105); else if (Main.hardMode && Main.rand.Next(20) == 0 && !flag6 && (double) y >= Main.rockLayer && y < Main.maxTilesY - 210 && !NPC.savedWizard && !NPC.AnyNPCs(106)) NPC.NewNPC(index1 * 16 + 8, y * 16, 106); else if (flag11) { if (flag6) { if ((double) y < Main.worldSurface && y > 50 && Main.rand.Next(3) != 0 && Main.dayTime) { int num27 = -1; for (int j = y - 1; j > y - 50; --j) { if (Main.tile[index1, j].liquid == (byte) 0 && !WorldGen.SolidTile(index1, j) && !WorldGen.SolidTile(index1, j + 1) && !WorldGen.SolidTile(index1, j + 2)) { num27 = j + 2; break; } } if (num27 > y) num27 = y; if (num27 > 0 && !flag15) { if (Main.rand.Next(2) == 0) NPC.NewNPC(index1 * 16 + 8, num27 * 16, 362); else NPC.NewNPC(index1 * 16 + 8, num27 * 16, 364); } else NPC.NewNPC(index1 * 16 + 8, y * 16, 55); } else NPC.NewNPC(index1 * 16 + 8, y * 16, 55); } else { switch (type) { case 2: case 109: if (Main.raining) { if (Main.rand.Next(NPC.goldCritterChance) == 0) { NPC.NewNPC(index1 * 16 + 8, y * 16, 448); break; } if (Main.rand.Next(3) != 0) { NPC.NewNPC(index1 * 16 + 8, y * 16, 357); break; } NPC.NewNPC(index1 * 16 + 8, y * 16, 230); break; } if (!Main.dayTime && Main.rand.Next(NPC.fireFlyFriendly) == 0 && (double) y <= Main.worldSurface) { int Type4 = 355; if (type == 109) Type4 = 358; NPC.NewNPC(index1 * 16 + 8, y * 16, Type4); if (Main.rand.Next(NPC.fireFlyMultiple) == 0) NPC.NewNPC(index1 * 16 + 8 - 16, y * 16, Type4); if (Main.rand.Next(NPC.fireFlyMultiple) == 0) NPC.NewNPC(index1 * 16 + 8 + 16, y * 16, Type4); if (Main.rand.Next(NPC.fireFlyMultiple) == 0) NPC.NewNPC(index1 * 16 + 8, y * 16 - 16, Type4); if (Main.rand.Next(NPC.fireFlyMultiple) == 0) { NPC.NewNPC(index1 * 16 + 8, y * 16 + 16, Type4); break; } break; } if (Main.dayTime && Main.time < 18000.0 && Main.rand.Next(3) != 0 && (double) y <= Main.worldSurface) { int num28 = Main.rand.Next(4); if (Main.rand.Next(NPC.goldCritterChance) == 0) { NPC.NewNPC(index1 * 16 + 8, y * 16, 442); break; } switch (num28) { case 0: NPC.NewNPC(index1 * 16 + 8, y * 16, 297); break; case 1: NPC.NewNPC(index1 * 16 + 8, y * 16, 298); break; default: NPC.NewNPC(index1 * 16 + 8, y * 16, 74); break; } } else { if (Main.dayTime && Main.rand.Next(NPC.butterflyChance) == 0 && (double) y <= Main.worldSurface) { if (Main.rand.Next(NPC.goldCritterChance) == 0) NPC.NewNPC(index1 * 16 + 8, y * 16, 444); else NPC.NewNPC(index1 * 16 + 8, y * 16, 356); if (Main.rand.Next(4) == 0) NPC.NewNPC(index1 * 16 + 8 - 16, y * 16, 356); if (Main.rand.Next(4) == 0) { NPC.NewNPC(index1 * 16 + 8 + 16, y * 16, 356); break; } break; } if (Main.rand.Next(2) == 0 && (double) y <= Main.worldSurface) { int num29 = Main.rand.Next(4); if (Main.rand.Next(NPC.goldCritterChance) == 0) { NPC.NewNPC(index1 * 16 + 8, y * 16, 442); break; } switch (num29) { case 0: NPC.NewNPC(index1 * 16 + 8, y * 16, 297); break; case 1: NPC.NewNPC(index1 * 16 + 8, y * 16, 298); break; default: NPC.NewNPC(index1 * 16 + 8, y * 16, 74); break; } } else { if (type == 53) { NPC.NewNPC(index1 * 16 + 8, y * 16, Main.rand.Next(366, 368)); break; } if (Main.rand.Next(NPC.goldCritterChance) == 0) { NPC.NewNPC(index1 * 16 + 8, y * 16, 443); break; } if (Main.rand.Next(NPC.goldCritterChance) == 0 && (double) y <= Main.worldSurface) { NPC.NewNPC(index1 * 16 + 8, y * 16, 539); break; } if (Main.halloween && Main.rand.Next(3) != 0) { NPC.NewNPC(index1 * 16 + 8, y * 16, 303); break; } if (Main.xMas && Main.rand.Next(3) != 0) { NPC.NewNPC(index1 * 16 + 8, y * 16, 337); break; } if (BirthdayParty.PartyIsUp && Main.rand.Next(3) != 0) { NPC.NewNPC(index1 * 16 + 8, y * 16, 540); break; } if (Main.rand.Next(3) == 0 && (double) y <= Main.worldSurface) { NPC.NewNPC(index1 * 16 + 8, y * 16, (int) Utils.SelectRandom(Main.rand, (short) 299, (short) 538)); break; } NPC.NewNPC(index1 * 16 + 8, y * 16, 46); break; } } break; case 60: if (Main.rand.Next(NPC.goldCritterChance) == 0) { NPC.NewNPC(index1 * 16 + 8, y * 16, 445); break; } NPC.NewNPC(index1 * 16 + 8, y * 16, 361); break; case 147: case 161: if (Main.rand.Next(2) == 0) { NPC.NewNPC(index1 * 16 + 8, y * 16, 148); break; } NPC.NewNPC(index1 * 16 + 8, y * 16, 149); break; default: if ((double) y <= Main.worldSurface) return; goto case 2; } } } else if (Main.player[plr].ZoneDungeon) { int num30 = 0; if (Main.tile[index1, y].wall == (byte) 94 || Main.tile[index1, y].wall == (byte) 96 || Main.tile[index1, y].wall == (byte) 98) num30 = 1; if (Main.tile[index1, y].wall == (byte) 95 || Main.tile[index1, y].wall == (byte) 97 || Main.tile[index1, y].wall == (byte) 99) num30 = 2; if (Main.rand.Next(7) == 0) num30 = Main.rand.Next(3); if (!NPC.downedBoss3) newNPC = NPC.NewNPC(index1 * 16 + 8, y * 16, 68); else if (!NPC.savedMech && Main.rand.Next(5) == 0 && !flag6 && !NPC.AnyNPCs(123) && (double) y > Main.rockLayer) NPC.NewNPC(index1 * 16 + 8, y * 16, 123); else if (flag13 && Main.rand.Next(30) == 0) newNPC = NPC.NewNPC(index1 * 16 + 8, y * 16, 287); else if (flag13 && num30 == 0 && Main.rand.Next(15) == 0) newNPC = NPC.NewNPC(index1 * 16 + 8, y * 16, 293); else if (flag13 && num30 == 1 && Main.rand.Next(15) == 0) newNPC = NPC.NewNPC(index1 * 16 + 8, y * 16, 291); else if (flag13 && num30 == 2 && Main.rand.Next(15) == 0) newNPC = NPC.NewNPC(index1 * 16 + 8, y * 16, 292); else if (flag13 && !NPC.AnyNPCs(290) && num30 == 0 && Main.rand.Next(35) == 0) newNPC = NPC.NewNPC(index1 * 16 + 8, y * 16, 290); else if (flag13 && (num30 == 1 || num30 == 2) && Main.rand.Next(30) == 0) newNPC = NPC.NewNPC(index1 * 16 + 8, y * 16, 289); else if (flag13 && Main.rand.Next(20) == 0) { int num31 = 281; if (num30 == 0) num31 += 2; if (num30 == 2) num31 += 4; int Type5 = num31 + Main.rand.Next(2); if (!NPC.AnyNPCs(Type5)) newNPC = NPC.NewNPC(index1 * 16 + 8, y * 16, Type5); } else if (flag13 && Main.rand.Next(3) != 0) { int num32 = 269; if (num30 == 0) num32 += 4; if (num30 == 2) num32 += 8; newNPC = NPC.NewNPC(index1 * 16 + 8, y * 16, num32 + Main.rand.Next(4)); } else if (Main.rand.Next(37) == 0) newNPC = NPC.NewNPC(index1 * 16 + 8, y * 16, 71); else if (num30 == 1 && Main.rand.Next(4) == 0 && !NPC.NearSpikeBall(index1, y)) newNPC = NPC.NewNPC(index1 * 16 + 8, y * 16, 70); else if (num30 == 2 && Main.rand.Next(15) == 0) newNPC = NPC.NewNPC(index1 * 16 + 8, y * 16, 72); else if (num30 == 0 && Main.rand.Next(9) == 0) newNPC = NPC.NewNPC(index1 * 16 + 8, y * 16, 34); else if (Main.rand.Next(7) == 0) { newNPC = NPC.NewNPC(index1 * 16 + 8, y * 16, 32); } else { switch (Main.rand.Next(5)) { case 0: newNPC = NPC.NewNPC(index1 * 16 + 8, y * 16, 294); break; case 1: newNPC = NPC.NewNPC(index1 * 16 + 8, y * 16, 295); break; case 2: newNPC = NPC.NewNPC(index1 * 16 + 8, y * 16, 296); break; default: newNPC = NPC.NewNPC(index1 * 16 + 8, y * 16, 31); if (Main.rand.Next(4) == 0) { Main.npc[newNPC].SetDefaults(-14); break; } if (Main.rand.Next(5) == 0) { Main.npc[newNPC].SetDefaults(-13); break; } break; } } } else if (Main.player[plr].ZoneMeteor) newNPC = NPC.NewNPC(index1 * 16 + 8, y * 16, 23); else if (DD2Event.Ongoing && Main.player[plr].ZoneOldOneArmy) DD2Event.SpawnNPC(ref newNPC); else if ((double) y <= Main.worldSurface && !Main.dayTime && Main.snowMoon) { int waveNumber = NPC.waveNumber; if (Main.rand.Next(30) == 0 && NPC.CountNPCS(341) < 4) newNPC = NPC.NewNPC(index1 * 16 + 8, y * 16, 341); else if (waveNumber >= 20) { switch (Main.rand.Next(3)) { case 0: newNPC = NPC.NewNPC(index1 * 16 + 8, y * 16, 345); break; case 1: newNPC = NPC.NewNPC(index1 * 16 + 8, y * 16, 346); break; default: newNPC = NPC.NewNPC(index1 * 16 + 8, y * 16, 344); break; } } else if (waveNumber >= 19) newNPC = Main.rand.Next(10) != 0 || NPC.CountNPCS(345) >= 4 ? (Main.rand.Next(10) != 0 || NPC.CountNPCS(346) >= 5 ? (Main.rand.Next(10) != 0 || NPC.CountNPCS(344) >= 7 ? NPC.NewNPC(index1 * 16 + 8, y * 16, 343) : NPC.NewNPC(index1 * 16 + 8, y * 16, 344)) : NPC.NewNPC(index1 * 16 + 8, y * 16, 346)) : NPC.NewNPC(index1 * 16 + 8, y * 16, 345); else if (waveNumber >= 18) newNPC = Main.rand.Next(10) != 0 || NPC.CountNPCS(345) >= 3 ? (Main.rand.Next(10) != 0 || NPC.CountNPCS(346) >= 4 ? (Main.rand.Next(10) != 0 || NPC.CountNPCS(344) >= 6 ? (Main.rand.Next(3) != 0 ? (Main.rand.Next(3) != 0 ? NPC.NewNPC(index1 * 16 + 8, y * 16, 343) : NPC.NewNPC(index1 * 16 + 8, y * 16, 351)) : NPC.NewNPC(index1 * 16 + 8, y * 16, 348)) : NPC.NewNPC(index1 * 16 + 8, y * 16, 344)) : NPC.NewNPC(index1 * 16 + 8, y * 16, 346)) : NPC.NewNPC(index1 * 16 + 8, y * 16, 345); else if (waveNumber >= 17) newNPC = Main.rand.Next(10) != 0 || NPC.CountNPCS(345) >= 2 ? (Main.rand.Next(10) != 0 || NPC.CountNPCS(346) >= 3 ? (Main.rand.Next(10) != 0 || NPC.CountNPCS(344) >= 5 ? (Main.rand.Next(4) != 0 ? (Main.rand.Next(2) != 0 ? NPC.NewNPC(index1 * 16 + 8, y * 16, 343) : NPC.NewNPC(index1 * 16 + 8, y * 16, 351)) : NPC.NewNPC(index1 * 16 + 8, y * 16, 347)) : NPC.NewNPC(index1 * 16 + 8, y * 16, 344)) : NPC.NewNPC(index1 * 16 + 8, y * 16, 346)) : NPC.NewNPC(index1 * 16 + 8, y * 16, 345); else if (waveNumber >= 16) newNPC = Main.rand.Next(10) != 0 || NPC.CountNPCS(345) >= 2 ? (Main.rand.Next(10) != 0 || NPC.CountNPCS(346) >= 2 ? (Main.rand.Next(10) != 0 || NPC.CountNPCS(344) >= 4 ? (Main.rand.Next(2) != 0 ? NPC.NewNPC(index1 * 16 + 8, y * 16, 343) : NPC.NewNPC(index1 * 16 + 8, y * 16, 352)) : NPC.NewNPC(index1 * 16 + 8, y * 16, 344)) : NPC.NewNPC(index1 * 16 + 8, y * 16, 346)) : NPC.NewNPC(index1 * 16 + 8, y * 16, 345); else if (waveNumber >= 15) newNPC = Main.rand.Next(10) != 0 || NPC.AnyNPCs(345) ? (Main.rand.Next(10) != 0 || NPC.CountNPCS(346) >= 2 ? (Main.rand.Next(10) != 0 || NPC.CountNPCS(344) >= 3 ? (Main.rand.Next(3) != 0 ? NPC.NewNPC(index1 * 16 + 8, y * 16, 343) : NPC.NewNPC(index1 * 16 + 8, y * 16, 347)) : NPC.NewNPC(index1 * 16 + 8, y * 16, 344)) : NPC.NewNPC(index1 * 16 + 8, y * 16, 346)) : NPC.NewNPC(index1 * 16 + 8, y * 16, 345); else if (waveNumber == 14) { if (Main.rand.Next(10) == 0 && !NPC.AnyNPCs(345)) newNPC = NPC.NewNPC(index1 * 16 + 8, y * 16, 345); else if (Main.rand.Next(10) == 0 && !NPC.AnyNPCs(346)) newNPC = NPC.NewNPC(index1 * 16 + 8, y * 16, 346); else if (Main.rand.Next(10) == 0 && !NPC.AnyNPCs(344)) newNPC = NPC.NewNPC(index1 * 16 + 8, y * 16, 344); else if (Main.rand.Next(3) == 0) newNPC = NPC.NewNPC(index1 * 16 + 8, y * 16, 343); } else newNPC = waveNumber != 13 ? (waveNumber != 12 ? (waveNumber != 11 ? (waveNumber != 10 ? (waveNumber != 9 ? (waveNumber != 8 ? (waveNumber != 7 ? (waveNumber != 6 ? (waveNumber != 5 ? (waveNumber != 4 ? (waveNumber != 3 ? (waveNumber != 2 ? (Main.rand.Next(3) != 0 ? NPC.NewNPC(index1 * 16 + 8, y * 16, Main.rand.Next(338, 341)) : NPC.NewNPC(index1 * 16 + 8, y * 16, 342)) : (Main.rand.Next(3) != 0 ? NPC.NewNPC(index1 * 16 + 8, y * 16, Main.rand.Next(338, 341)) : NPC.NewNPC(index1 * 16 + 8, y * 16, 350))) : (Main.rand.Next(8) != 0 ? (Main.rand.Next(4) != 0 ? (Main.rand.Next(3) != 0 ? NPC.NewNPC(index1 * 16 + 8, y * 16, Main.rand.Next(338, 341)) : NPC.NewNPC(index1 * 16 + 8, y * 16, 342)) : NPC.NewNPC(index1 * 16 + 8, y * 16, 350)) : NPC.NewNPC(index1 * 16 + 8, y * 16, 348))) : (Main.rand.Next(10) != 0 || NPC.AnyNPCs(344) ? (Main.rand.Next(4) != 0 ? (Main.rand.Next(3) != 0 ? NPC.NewNPC(index1 * 16 + 8, y * 16, Main.rand.Next(338, 341)) : NPC.NewNPC(index1 * 16 + 8, y * 16, 342)) : NPC.NewNPC(index1 * 16 + 8, y * 16, 350)) : NPC.NewNPC(index1 * 16 + 8, y * 16, 344))) : (Main.rand.Next(10) != 0 || NPC.AnyNPCs(344) ? (Main.rand.Next(4) != 0 ? (Main.rand.Next(8) != 0 ? NPC.NewNPC(index1 * 16 + 8, y * 16, Main.rand.Next(338, 341)) : NPC.NewNPC(index1 * 16 + 8, y * 16, 348)) : NPC.NewNPC(index1 * 16 + 8, y * 16, 350)) : NPC.NewNPC(index1 * 16 + 8, y * 16, 344))) : (Main.rand.Next(10) != 0 || NPC.CountNPCS(344) >= 2 ? (Main.rand.Next(4) != 0 ? (Main.rand.Next(2) != 0 ? NPC.NewNPC(index1 * 16 + 8, y * 16, 350) : NPC.NewNPC(index1 * 16 + 8, y * 16, 348)) : NPC.NewNPC(index1 * 16 + 8, y * 16, 347)) : NPC.NewNPC(index1 * 16 + 8, y * 16, 344))) : (Main.rand.Next(10) != 0 || NPC.AnyNPCs(346) ? (Main.rand.Next(3) != 0 ? (Main.rand.Next(4) != 0 ? NPC.NewNPC(index1 * 16 + 8, y * 16, Main.rand.Next(338, 341)) : NPC.NewNPC(index1 * 16 + 8, y * 16, 350)) : NPC.NewNPC(index1 * 16 + 8, y * 16, 342)) : NPC.NewNPC(index1 * 16 + 8, y * 16, 346))) : (Main.rand.Next(10) != 0 || NPC.AnyNPCs(346) ? (Main.rand.Next(8) != 0 ? (Main.rand.Next(3) != 0 ? (Main.rand.Next(3) != 0 ? NPC.NewNPC(index1 * 16 + 8, y * 16, 350) : NPC.NewNPC(index1 * 16 + 8, y * 16, 347)) : NPC.NewNPC(index1 * 16 + 8, y * 16, 348)) : NPC.NewNPC(index1 * 16 + 8, y * 16, 351)) : NPC.NewNPC(index1 * 16 + 8, y * 16, 346))) : (Main.rand.Next(10) != 0 || NPC.AnyNPCs(346) ? (Main.rand.Next(10) != 0 || NPC.AnyNPCs(344) ? (Main.rand.Next(2) != 0 ? (Main.rand.Next(3) != 0 ? NPC.NewNPC(index1 * 16 + 8, y * 16, 342) : NPC.NewNPC(index1 * 16 + 8, y * 16, 347)) : NPC.NewNPC(index1 * 16 + 8, y * 16, 348)) : NPC.NewNPC(index1 * 16 + 8, y * 16, 344)) : NPC.NewNPC(index1 * 16 + 8, y * 16, 346))) : (Main.rand.Next(10) != 0 || NPC.AnyNPCs(346) ? (Main.rand.Next(10) != 0 || NPC.CountNPCS(344) >= 2 ? (Main.rand.Next(6) != 0 ? (Main.rand.Next(3) != 0 ? (Main.rand.Next(3) != 0 ? NPC.NewNPC(index1 * 16 + 8, y * 16, Main.rand.Next(338, 341)) : NPC.NewNPC(index1 * 16 + 8, y * 16, 347)) : NPC.NewNPC(index1 * 16 + 8, y * 16, 348)) : NPC.NewNPC(index1 * 16 + 8, y * 16, 351)) : NPC.NewNPC(index1 * 16 + 8, y * 16, 344)) : NPC.NewNPC(index1 * 16 + 8, y * 16, 346))) : (Main.rand.Next(10) != 0 || NPC.AnyNPCs(345) ? (Main.rand.Next(6) != 0 ? (Main.rand.Next(2) != 0 ? NPC.NewNPC(index1 * 16 + 8, y * 16, Main.rand.Next(338, 341)) : NPC.NewNPC(index1 * 16 + 8, y * 16, 342)) : NPC.NewNPC(index1 * 16 + 8, y * 16, 352)) : NPC.NewNPC(index1 * 16 + 8, y * 16, 345))) : (Main.rand.Next(10) != 0 || NPC.AnyNPCs(345) ? (Main.rand.Next(10) != 0 || NPC.AnyNPCs(344) ? (Main.rand.Next(8) != 0 ? (Main.rand.Next(3) != 0 ? NPC.NewNPC(index1 * 16 + 8, y * 16, Main.rand.Next(338, 341)) : NPC.NewNPC(index1 * 16 + 8, y * 16, 342)) : NPC.NewNPC(index1 * 16 + 8, y * 16, 343)) : NPC.NewNPC(index1 * 16 + 8, y * 16, 344)) : NPC.NewNPC(index1 * 16 + 8, y * 16, 345))) : (Main.rand.Next(10) != 0 || NPC.AnyNPCs(345) ? (Main.rand.Next(10) != 0 || NPC.AnyNPCs(346) ? (Main.rand.Next(3) != 0 ? (Main.rand.Next(6) != 0 ? (Main.rand.Next(3) != 0 ? NPC.NewNPC(index1 * 16 + 8, y * 16, 347) : NPC.NewNPC(index1 * 16 + 8, y * 16, 342)) : NPC.NewNPC(index1 * 16 + 8, y * 16, 343)) : NPC.NewNPC(index1 * 16 + 8, y * 16, 352)) : NPC.NewNPC(index1 * 16 + 8, y * 16, 346)) : NPC.NewNPC(index1 * 16 + 8, y * 16, 345)); } else if ((double) y <= Main.worldSurface && !Main.dayTime && Main.pumpkinMoon) { int waveNumber = NPC.waveNumber; int num33; if (NPC.waveNumber >= 15) { newNPC = Main.rand.Next(2) != 0 ? NPC.NewNPC(index1 * 16 + 8, y * 16, 325) : NPC.NewNPC(index1 * 16 + 8, y * 16, 327); } else { switch (waveNumber) { case 2: newNPC = Main.rand.Next(3) != 0 ? NPC.NewNPC(index1 * 16 + 8, y * 16, Main.rand.Next(305, 315)) : NPC.NewNPC(index1 * 16 + 8, y * 16, 326); break; case 3: newNPC = Main.rand.Next(6) != 0 ? (Main.rand.Next(3) != 0 ? NPC.NewNPC(index1 * 16 + 8, y * 16, Main.rand.Next(305, 315)) : NPC.NewNPC(index1 * 16 + 8, y * 16, 326)) : NPC.NewNPC(index1 * 16 + 8, y * 16, 329); break; case 4: newNPC = Main.rand.Next(10) != 0 || NPC.AnyNPCs(325) ? (Main.rand.Next(10) != 0 ? (Main.rand.Next(2) != 0 ? NPC.NewNPC(index1 * 16 + 8, y * 16, Main.rand.Next(305, 315)) : NPC.NewNPC(index1 * 16 + 8, y * 16, 326)) : NPC.NewNPC(index1 * 16 + 8, y * 16, 329)) : NPC.NewNPC(index1 * 16 + 8, y * 16, 325); break; case 5: newNPC = Main.rand.Next(10) != 0 || NPC.AnyNPCs(325) ? (Main.rand.Next(8) != 0 ? (Main.rand.Next(5) != 0 ? (Main.rand.Next(2) != 0 ? NPC.NewNPC(index1 * 16 + 8, y * 16, Main.rand.Next(305, 315)) : NPC.NewNPC(index1 * 16 + 8, y * 16, 326)) : NPC.NewNPC(index1 * 16 + 8, y * 16, 329)) : NPC.NewNPC(index1 * 16 + 8, y * 16, 330)) : NPC.NewNPC(index1 * 16 + 8, y * 16, 325); break; case 6: newNPC = Main.rand.Next(7) != 0 || NPC.CountNPCS(325) >= 2 ? (Main.rand.Next(6) != 0 ? (Main.rand.Next(3) != 0 ? NPC.NewNPC(index1 * 16 + 8, y * 16, 326) : NPC.NewNPC(index1 * 16 + 8, y * 16, 329)) : NPC.NewNPC(index1 * 16 + 8, y * 16, 330)) : NPC.NewNPC(index1 * 16 + 8, y * 16, 325); break; case 7: newNPC = Main.rand.Next(10) != 0 || NPC.AnyNPCs(327) ? (Main.rand.Next(8) != 0 ? (Main.rand.Next(5) != 0 ? NPC.NewNPC(index1 * 16 + 8, y * 16, Main.rand.Next(305, 315)) : NPC.NewNPC(index1 * 16 + 8, y * 16, 329)) : NPC.NewNPC(index1 * 16 + 8, y * 16, 330)) : NPC.NewNPC(index1 * 16 + 8, y * 16, 327); break; case 8: newNPC = Main.rand.Next(10) != 0 || NPC.AnyNPCs(327) ? (Main.rand.Next(5) != 0 ? (Main.rand.Next(3) != 0 ? NPC.NewNPC(index1 * 16 + 8, y * 16, 326) : NPC.NewNPC(index1 * 16 + 8, y * 16, 329)) : NPC.NewNPC(index1 * 16 + 8, y * 16, 330)) : NPC.NewNPC(index1 * 16 + 8, y * 16, 327); break; case 9: newNPC = Main.rand.Next(8) != 0 || NPC.AnyNPCs(327) ? (Main.rand.Next(8) != 0 || NPC.AnyNPCs(325) ? (Main.rand.Next(10) != 0 || NPC.AnyNPCs(315) ? NPC.NewNPC(index1 * 16 + 8, y * 16, Main.rand.Next(305, 315)) : NPC.NewNPC(index1 * 16 + 8, y * 16, 315)) : NPC.NewNPC(index1 * 16 + 8, y * 16, 325)) : NPC.NewNPC(index1 * 16 + 8, y * 16, 327); break; case 10: newNPC = Main.rand.Next(10) != 0 || NPC.AnyNPCs(327) ? (Main.rand.Next(10) != 0 || NPC.AnyNPCs(325) ? (Main.rand.Next(10) != 0 || NPC.AnyNPCs(315) ? (Main.rand.Next(8) != 0 ? (Main.rand.Next(5) != 0 ? NPC.NewNPC(index1 * 16 + 8, y * 16, 326) : NPC.NewNPC(index1 * 16 + 8, y * 16, 329)) : NPC.NewNPC(index1 * 16 + 8, y * 16, 330)) : NPC.NewNPC(index1 * 16 + 8, y * 16, 315)) : NPC.NewNPC(index1 * 16 + 8, y * 16, 325)) : NPC.NewNPC(index1 * 16 + 8, y * 16, 327); break; case 11: if (Main.rand.Next(10) == 0 && !NPC.AnyNPCs(327)) num33 = NPC.NewNPC(index1 * 16 + 8, y * 16, 327); newNPC = Main.rand.Next(7) != 0 || NPC.CountNPCS(325) >= 2 ? (Main.rand.Next(10) != 0 || NPC.AnyNPCs(315) ? (Main.rand.Next(10) != 0 ? (Main.rand.Next(7) != 0 ? (Main.rand.Next(3) != 0 ? NPC.NewNPC(index1 * 16 + 8, y * 16, Main.rand.Next(305, 315)) : NPC.NewNPC(index1 * 16 + 8, y * 16, 326)) : NPC.NewNPC(index1 * 16 + 8, y * 16, 329)) : NPC.NewNPC(index1 * 16 + 8, y * 16, 330)) : NPC.NewNPC(index1 * 16 + 8, y * 16, 315)) : NPC.NewNPC(index1 * 16 + 8, y * 16, 325); break; case 12: if (Main.rand.Next(7) == 0 && NPC.CountNPCS(327) < 2) num33 = NPC.NewNPC(index1 * 16 + 8, y * 16, 327); newNPC = Main.rand.Next(7) != 0 || NPC.CountNPCS(325) >= 2 ? (Main.rand.Next(7) != 0 || NPC.CountNPCS(315) >= 2 ? (Main.rand.Next(7) != 0 ? (Main.rand.Next(5) != 0 ? NPC.NewNPC(index1 * 16 + 8, y * 16, 326) : NPC.NewNPC(index1 * 16 + 8, y * 16, 329)) : NPC.NewNPC(index1 * 16 + 8, y * 16, 330)) : NPC.NewNPC(index1 * 16 + 8, y * 16, 315)) : NPC.NewNPC(index1 * 16 + 8, y * 16, 325); break; case 13: if (Main.rand.Next(7) == 0 && NPC.CountNPCS(327) < 2) num33 = NPC.NewNPC(index1 * 16 + 8, y * 16, 327); newNPC = Main.rand.Next(5) != 0 || NPC.CountNPCS(325) >= 3 ? (Main.rand.Next(5) != 0 || NPC.CountNPCS(315) >= 3 ? (Main.rand.Next(3) != 0 ? NPC.NewNPC(index1 * 16 + 8, y * 16, 329) : NPC.NewNPC(index1 * 16 + 8, y * 16, 330)) : NPC.NewNPC(index1 * 16 + 8, y * 16, 315)) : NPC.NewNPC(index1 * 16 + 8, y * 16, 325); break; case 14: newNPC = Main.rand.Next(5) != 0 || NPC.CountNPCS(327) >= 3 ? (Main.rand.Next(5) != 0 || NPC.CountNPCS(325) >= 3 ? NPC.NewNPC(index1 * 16 + 8, y * 16, 315) : NPC.NewNPC(index1 * 16 + 8, y * 16, 325)) : NPC.NewNPC(index1 * 16 + 8, y * 16, 327); break; default: newNPC = NPC.NewNPC(index1 * 16 + 8, y * 16, Main.rand.Next(305, 315)); break; } } } else if ((double) y <= Main.worldSurface && Main.dayTime && Main.eclipse) { bool flag21 = false; if (NPC.downedMechBoss1 && NPC.downedMechBoss2 && NPC.downedMechBoss3) flag21 = true; newNPC = !flag21 || Main.rand.Next(80) != 0 || NPC.AnyNPCs(477) ? (Main.rand.Next(50) != 0 || NPC.AnyNPCs(251) ? (!NPC.downedPlantBoss || Main.rand.Next(5) != 0 || NPC.AnyNPCs(466) ? (!NPC.downedPlantBoss || Main.rand.Next(20) != 0 || NPC.AnyNPCs(463) ? (!NPC.downedPlantBoss || Main.rand.Next(20) != 0 || NPC.CountNPCS(467) >= 2 ? (Main.rand.Next(15) != 0 ? (!flag21 || Main.rand.Next(13) != 0 ? (Main.rand.Next(8) != 0 ? (!NPC.downedPlantBoss || Main.rand.Next(7) != 0 ? (!NPC.downedPlantBoss || Main.rand.Next(5) != 0 ? (Main.rand.Next(4) != 0 ? (Main.rand.Next(3) != 0 ? (Main.rand.Next(2) != 0 ? NPC.NewNPC(index1 * 16 + 8, y * 16, 166) : NPC.NewNPC(index1 * 16 + 8, y * 16, 462)) : NPC.NewNPC(index1 * 16 + 8, y * 16, 461)) : NPC.NewNPC(index1 * 16 + 8, y * 16, 162)) : NPC.NewNPC(index1 * 16 + 8, y * 16, 460)) : NPC.NewNPC(index1 * 16 + 8, y * 16, 468)) : NPC.NewNPC(index1 * 16 + 8, y * 16, 469)) : NPC.NewNPC(index1 * 16 + 8, y * 16, 253)) : NPC.NewNPC(index1 * 16 + 8, y * 16, 159)) : NPC.NewNPC(index1 * 16 + 8, y * 16, 467)) : NPC.NewNPC(index1 * 16 + 8, y * 16, 463)) : NPC.NewNPC(index1 * 16 + 8, y * 16, 466)) : NPC.NewNPC(index1 * 16 + 8, y * 16, 251)) : NPC.NewNPC(index1 * 16 + 8, y * 16, 477); } else if (((!Main.hardMode ? 0 : (num1 == 70 ? 1 : 0)) & (flag6 ? 1 : 0)) != 0) newNPC = NPC.NewNPC(index1 * 16 + 8, y * 16, 256); else if (num1 == 70 && (double) y <= Main.worldSurface && Main.rand.Next(3) != 0) { if (!Main.hardMode && Main.rand.Next(6) == 0 || Main.rand.Next(12) == 0) newNPC = NPC.NewNPC(index1 * 16 + 8, y * 16, 360); else if (Main.rand.Next(3) == 0) { if (Main.rand.Next(4) == 0) { if (Main.hardMode && Main.rand.Next(3) != 0) { newNPC = NPC.NewNPC(index1 * 16 + 8, y * 16, 260); Main.npc[newNPC].ai[0] = (float) index1; Main.npc[newNPC].ai[1] = (float) y; Main.npc[newNPC].netUpdate = true; } else { newNPC = NPC.NewNPC(index1 * 16 + 8, y * 16, 259); Main.npc[newNPC].ai[0] = (float) index1; Main.npc[newNPC].ai[1] = (float) y; Main.npc[newNPC].netUpdate = true; } } else newNPC = Main.rand.Next(2) != 0 ? NPC.NewNPC(index1 * 16 + 8, y * 16, 258) : NPC.NewNPC(index1 * 16 + 8, y * 16, 257); } else newNPC = Main.rand.Next(2) != 0 ? NPC.NewNPC(index1 * 16 + 8, y * 16, (int) byte.MaxValue) : NPC.NewNPC(index1 * 16 + 8, y * 16, 254); } else if (num1 == 70 && Main.hardMode && (double) y >= Main.worldSurface && Main.rand.Next(3) != 0) { if (Main.hardMode && Main.rand.Next(5) == 0) newNPC = NPC.NewNPC(index1 * 16 + 8, y * 16, 374); else if (!Main.hardMode && Main.rand.Next(4) == 0 || Main.rand.Next(8) == 0) newNPC = NPC.NewNPC(index1 * 16 + 8, y * 16, 360); else if (Main.rand.Next(4) == 0) { if (Main.hardMode && Main.rand.Next(3) != 0) { newNPC = NPC.NewNPC(index1 * 16 + 8, y * 16, 260); Main.npc[newNPC].ai[0] = (float) index1; Main.npc[newNPC].ai[1] = (float) y; Main.npc[newNPC].netUpdate = true; } else { newNPC = NPC.NewNPC(index1 * 16 + 8, y * 16, 259); Main.npc[newNPC].ai[0] = (float) index1; Main.npc[newNPC].ai[1] = (float) y; Main.npc[newNPC].netUpdate = true; } } else newNPC = Main.rand.Next(2) != 0 ? NPC.NewNPC(index1 * 16 + 8, y * 16, 258) : NPC.NewNPC(index1 * 16 + 8, y * 16, 257); } else if (Main.player[plr].ZoneCorrupt && Main.rand.Next(65) == 0 && !flag4) newNPC = !Main.hardMode || Main.rand.Next(4) == 0 ? NPC.NewNPC(index1 * 16 + 8, y * 16, 7, 1) : NPC.NewNPC(index1 * 16 + 8, y * 16, 98, 1); else if (Main.hardMode && (double) y > Main.worldSurface && Main.rand.Next(75) == 0) newNPC = Main.rand.Next(2) != 0 || !Main.player[plr].ZoneCorrupt || NPC.AnyNPCs(473) ? (Main.rand.Next(2) != 0 || !Main.player[plr].ZoneCrimson || NPC.AnyNPCs(474) ? (Main.rand.Next(2) != 0 || !Main.player[plr].ZoneHoly || NPC.AnyNPCs(475) ? NPC.NewNPC(index1 * 16 + 8, y * 16, 85) : NPC.NewNPC(index1 * 16 + 8, y * 16, 475)) : NPC.NewNPC(index1 * 16 + 8, y * 16, 474)) : NPC.NewNPC(index1 * 16 + 8, y * 16, 473); else if (Main.hardMode && Main.tile[index1, y - 1].wall == (byte) 2 && Main.rand.Next(20) == 0) newNPC = NPC.NewNPC(index1 * 16 + 8, y * 16, 85); else if (Main.hardMode && (double) y <= Main.worldSurface && !Main.dayTime && (Main.rand.Next(20) == 0 || Main.rand.Next(5) == 0 && Main.moonPhase == 4)) newNPC = NPC.NewNPC(index1 * 16 + 8, y * 16, 82); else if (Main.hardMode && Main.halloween && (double) y <= Main.worldSurface && !Main.dayTime && Main.rand.Next(10) == 0) newNPC = NPC.NewNPC(index1 * 16 + 8, y * 16, 304); else if (type == 60 && Main.rand.Next(500) == 0 && !Main.dayTime) newNPC = NPC.NewNPC(index1 * 16 + 8, y * 16, 52); else if (type == 60 && (double) y > Main.worldSurface && Main.rand.Next(60) == 0) newNPC = NPC.NewNPC(index1 * 16 + 8, y * 16, 219); else if ((double) y > Main.worldSurface && y < Main.maxTilesY - 210 && !Main.player[plr].ZoneSnow && !Main.player[plr].ZoneCrimson && !Main.player[plr].ZoneCorrupt && !Main.player[plr].ZoneJungle && !Main.player[plr].ZoneHoly && Main.rand.Next(8) == 0) { if (Main.rand.Next(NPC.goldCritterChance) == 0) NPC.NewNPC(index1 * 16 + 8, y * 16, 448); else newNPC = NPC.NewNPC(index1 * 16 + 8, y * 16, 357); } else if ((double) y > Main.worldSurface && y < Main.maxTilesY - 210 && !Main.player[plr].ZoneSnow && !Main.player[plr].ZoneCrimson && !Main.player[plr].ZoneCorrupt && !Main.player[plr].ZoneJungle && !Main.player[plr].ZoneHoly && Main.rand.Next(13) == 0) { if (Main.rand.Next(NPC.goldCritterChance) == 0) NPC.NewNPC(index1 * 16 + 8, y * 16, 447); else newNPC = NPC.NewNPC(index1 * 16 + 8, y * 16, 300); } else if ((double) y > Main.worldSurface && (double) y < (Main.rockLayer + (double) Main.maxTilesY) / 2.0 && !Main.player[plr].ZoneSnow && !Main.player[plr].ZoneCrimson && !Main.player[plr].ZoneCorrupt && !Main.player[plr].ZoneHoly && Main.rand.Next(13) == 0) newNPC = NPC.NewNPC(index1 * 16 + 8, y * 16, 359); else if ((double) y < Main.worldSurface && Main.player[plr].ZoneJungle && Main.rand.Next(9) == 0) { if (Main.rand.Next(NPC.goldCritterChance) == 0) NPC.NewNPC(index1 * 16 + 8, y * 16, 445); else NPC.NewNPC(index1 * 16 + 8, y * 16, 361); } else if (type == 60 && Main.hardMode && Main.rand.Next(3) != 0) { if ((double) y < Main.worldSurface && !Main.dayTime && Main.rand.Next(3) == 0) newNPC = NPC.NewNPC(index1 * 16 + 8, y * 16, 152); else if ((double) y < Main.worldSurface && Main.dayTime && Main.rand.Next(4) != 0) newNPC = NPC.NewNPC(index1 * 16 + 8, y * 16, 177); else if ((double) y > Main.worldSurface && Main.rand.Next(100) == 0) newNPC = NPC.NewNPC(index1 * 16 + 8, y * 16, 205); else if ((double) y > Main.worldSurface && Main.rand.Next(5) == 0) newNPC = NPC.NewNPC(index1 * 16 + 8, y * 16, 236); else if ((double) y > Main.worldSurface && Main.rand.Next(4) != 0) { newNPC = NPC.NewNPC(index1 * 16 + 8, y * 16, 176); if (Main.rand.Next(10) == 0) Main.npc[newNPC].SetDefaults(-18); if (Main.rand.Next(10) == 0) Main.npc[newNPC].SetDefaults(-19); if (Main.rand.Next(10) == 0) Main.npc[newNPC].SetDefaults(-20); if (Main.rand.Next(10) == 0) Main.npc[newNPC].SetDefaults(-21); } else if (Main.rand.Next(3) == 0) { newNPC = NPC.NewNPC(index1 * 16 + 8, y * 16, 175); Main.npc[newNPC].ai[0] = (float) index1; Main.npc[newNPC].ai[1] = (float) y; Main.npc[newNPC].netUpdate = true; } else newNPC = NPC.NewNPC(index1 * 16 + 8, y * 16, 153); } else if (type == 226 & flag3) newNPC = Main.rand.Next(3) != 0 ? NPC.NewNPC(index1 * 16 + 8, y * 16, 198) : NPC.NewNPC(index1 * 16 + 8, y * 16, 226); else if (type == 60 && (double) y > (Main.worldSurface + Main.rockLayer) / 2.0) { if (Main.rand.Next(4) == 0) newNPC = NPC.NewNPC(index1 * 16 + 8, y * 16, 204); else if (Main.rand.Next(4) == 0) { newNPC = NPC.NewNPC(index1 * 16 + 8, y * 16, 43); Main.npc[newNPC].ai[0] = (float) index1; Main.npc[newNPC].ai[1] = (float) y; Main.npc[newNPC].netUpdate = true; } else { switch (Main.rand.Next(8)) { case 0: newNPC = NPC.NewNPC(index1 * 16 + 8, y * 16, 231); if (Main.rand.Next(4) == 0) { Main.npc[newNPC].SetDefaults(-56); break; } if (Main.rand.Next(4) == 0) { Main.npc[newNPC].SetDefaults(-57); break; } break; case 1: newNPC = NPC.NewNPC(index1 * 16 + 8, y * 16, 232); if (Main.rand.Next(4) == 0) { Main.npc[newNPC].SetDefaults(-58); break; } if (Main.rand.Next(4) == 0) { Main.npc[newNPC].SetDefaults(-59); break; } break; case 2: newNPC = NPC.NewNPC(index1 * 16 + 8, y * 16, 233); if (Main.rand.Next(4) == 0) { Main.npc[newNPC].SetDefaults(-60); break; } if (Main.rand.Next(4) == 0) { Main.npc[newNPC].SetDefaults(-61); break; } break; case 3: newNPC = NPC.NewNPC(index1 * 16 + 8, y * 16, 234); if (Main.rand.Next(4) == 0) { Main.npc[newNPC].SetDefaults(-62); break; } if (Main.rand.Next(4) == 0) { Main.npc[newNPC].SetDefaults(-63); break; } break; case 4: newNPC = NPC.NewNPC(index1 * 16 + 8, y * 16, 235); if (Main.rand.Next(4) == 0) { Main.npc[newNPC].SetDefaults(-64); break; } if (Main.rand.Next(4) == 0) { Main.npc[newNPC].SetDefaults(-65); break; } break; default: newNPC = NPC.NewNPC(index1 * 16 + 8, y * 16, 42); if (Main.rand.Next(4) == 0) { Main.npc[newNPC].SetDefaults(-16); break; } if (Main.rand.Next(4) == 0) { Main.npc[newNPC].SetDefaults(-17); break; } break; } } } else if (type == 60 && Main.rand.Next(4) == 0) newNPC = NPC.NewNPC(index1 * 16 + 8, y * 16, 51); else if (type == 60 && Main.rand.Next(8) == 0) { newNPC = NPC.NewNPC(index1 * 16 + 8, y * 16, 56); Main.npc[newNPC].ai[0] = (float) index1; Main.npc[newNPC].ai[1] = (float) y; Main.npc[newNPC].netUpdate = true; } else if (Sandstorm.Happening && Main.player[plr].ZoneSandstorm && TileID.Sets.Conversion.Sand[type] && NPC.Spawning_SandstoneCheck(index1, y)) { if (!NPC.downedBoss1 && !Main.hardMode) newNPC = Main.rand.Next(2) != 0 ? (Main.rand.Next(2) != 0 ? (Main.rand.Next(2) != 0 ? NPC.NewNPC(index1 * 16 + 8, y * 16, 69) : NPC.NewNPC(index1 * 16 + 8, y * 16, 61)) : NPC.NewNPC(index1 * 16 + 8, y * 16, 508)) : NPC.NewNPC(index1 * 16 + 8, y * 16, 546); else if (Main.hardMode && Main.rand.Next(20) == 0 && !NPC.AnyNPCs(541)) newNPC = NPC.NewNPC(index1 * 16 + 8, y * 16, 541); else if (Main.hardMode && !flag4 && Main.rand.Next(3) == 0 && NPC.CountNPCS(510) < 4) newNPC = NPC.NewNPC(index1 * 16 + 8, (y + 10) * 16, 510); else if (Main.hardMode && !flag4 && Main.rand.Next(2) == 0) { int Type6 = 542; if (TileID.Sets.Corrupt[type]) Type6 = 543; if (TileID.Sets.Crimson[type]) Type6 = 544; if (TileID.Sets.Hallow[type]) Type6 = 545; newNPC = NPC.NewNPC(index1 * 16 + 8, y * 16, Type6); } else newNPC = !Main.hardMode || type != 53 || Main.rand.Next(3) != 0 ? (!Main.hardMode || type != 112 && type != 234 || Main.rand.Next(3) != 0 ? (!Main.hardMode || type != 116 || Main.rand.Next(3) != 0 ? (Main.rand.Next(2) != 0 ? (Main.rand.Next(2) != 0 ? NPC.NewNPC(index1 * 16 + 8, y * 16, 509) : NPC.NewNPC(index1 * 16 + 8, y * 16, 508)) : NPC.NewNPC(index1 * 16 + 8, y * 16, 546)) : NPC.NewNPC(index1 * 16 + 8, y * 16, 80)) : NPC.NewNPC(index1 * 16 + 8, y * 16, 79)) : NPC.NewNPC(index1 * 16 + 8, y * 16, 78); } else if (Main.hardMode && type == 53 && Main.rand.Next(3) == 0) newNPC = NPC.NewNPC(index1 * 16 + 8, y * 16, 78); else if (Main.hardMode && (type == 112 || type == 234) && Main.rand.Next(2) == 0) newNPC = NPC.NewNPC(index1 * 16 + 8, y * 16, 79); else if (Main.hardMode && type == 116 && Main.rand.Next(2) == 0) newNPC = NPC.NewNPC(index1 * 16 + 8, y * 16, 80); else if (Main.hardMode && !flag6 && (double) y < Main.rockLayer && (type == 116 || type == 117 || type == 109 || type == 164)) newNPC = Main.dayTime || Main.rand.Next(2) != 0 ? (Main.rand.Next(10) == 0 || Main.player[plr].ZoneWaterCandle && Main.rand.Next(10) == 0 ? NPC.NewNPC(index1 * 16 + 8, y * 16, 86) : NPC.NewNPC(index1 * 16 + 8, y * 16, 75)) : NPC.NewNPC(index1 * 16 + 8, y * 16, 122); else if (!flag4 && Main.hardMode && Main.rand.Next(50) == 0 && !flag6 && (double) y >= Main.rockLayer && (type == 116 || type == 117 || type == 109 || type == 164)) newNPC = NPC.NewNPC(index1 * 16 + 8, y * 16, 84); else if (type == 204 && Main.player[plr].ZoneCrimson || type == 199 || type == 200 || type == 203 || type == 234) { if (Main.hardMode && (double) y >= Main.rockLayer && Main.rand.Next(5) == 0 && !flag4) newNPC = NPC.NewNPC(index1 * 16 + 8, y * 16, 182); else if (Main.hardMode && (double) y >= Main.rockLayer && Main.rand.Next(2) == 0) newNPC = NPC.NewNPC(index1 * 16 + 8, y * 16, 268); else if (Main.hardMode && Main.rand.Next(3) == 0) { newNPC = NPC.NewNPC(index1 * 16 + 8, y * 16, 183); if (Main.rand.Next(3) == 0) Main.npc[newNPC].SetDefaults(-24); else if (Main.rand.Next(3) == 0) Main.npc[newNPC].SetDefaults(-25); } else if (Main.hardMode && (double) y >= Main.rockLayer && Main.rand.Next(40) == 0 && !flag4) newNPC = NPC.NewNPC(index1 * 16 + 8, y * 16, 179); else if (Main.hardMode && (Main.rand.Next(2) == 0 || (double) y > Main.worldSurface)) newNPC = NPC.NewNPC(index1 * 16 + 8, y * 16, 174); else if (Main.tile[index1, y].wall > (byte) 0 && Main.rand.Next(4) != 0 || Main.rand.Next(8) == 0) newNPC = NPC.NewNPC(index1 * 16 + 8, y * 16, 239); else if (Main.rand.Next(2) == 0) { newNPC = NPC.NewNPC(index1 * 16 + 8, y * 16, 181); } else { newNPC = NPC.NewNPC(index1 * 16 + 8, y * 16, 173); if (Main.rand.Next(3) == 0) Main.npc[newNPC].SetDefaults(-22); else if (Main.rand.Next(3) == 0) Main.npc[newNPC].SetDefaults(-23); } } else if (type == 22 && Main.player[plr].ZoneCorrupt || type == 23 || type == 25 || type == 112 || type == 163) { if (Main.hardMode && (double) y >= Main.rockLayer && Main.rand.Next(3) == 0) { newNPC = NPC.NewNPC(index1 * 16 + 8, y * 16, 101); Main.npc[newNPC].ai[0] = (float) index1; Main.npc[newNPC].ai[1] = (float) y; Main.npc[newNPC].netUpdate = true; } else if (Main.hardMode && Main.rand.Next(3) == 0) newNPC = Main.rand.Next(3) != 0 ? NPC.NewNPC(index1 * 16 + 8, y * 16, 81) : NPC.NewNPC(index1 * 16 + 8, y * 16, 121); else if (Main.hardMode && (double) y >= Main.rockLayer && Main.rand.Next(40) == 0 && !flag4) newNPC = NPC.NewNPC(index1 * 16 + 8, y * 16, 83); else if (Main.hardMode && (Main.rand.Next(2) == 0 || (double) y > Main.rockLayer)) { newNPC = NPC.NewNPC(index1 * 16 + 8, y * 16, 94); } else { newNPC = NPC.NewNPC(index1 * 16 + 8, y * 16, 6); if (Main.rand.Next(3) == 0) Main.npc[newNPC].SetDefaults(-11); else if (Main.rand.Next(3) == 0) Main.npc[newNPC].SetDefaults(-12); } } else if ((double) y <= Main.worldSurface) { bool flag22 = (double) Math.Abs(index1 - Main.maxTilesX / 2) / (double) (Main.maxTilesX / 2) > 0.330000013113022; if (flag22 && NPC.AnyDanger()) flag22 = false; if (Main.player[plr].ZoneSnow && Main.hardMode && (double) Main.cloudAlpha > 0.0 && !NPC.AnyNPCs(243) && Main.rand.Next(20) == 0) NPC.NewNPC(index1 * 16 + 8, y * 16, 243); else if (Main.player[plr].ZoneHoly && Main.hardMode && (double) Main.cloudAlpha > 0.0 && !NPC.AnyNPCs(244) && Main.rand.Next(20) == 0) NPC.NewNPC(index1 * 16 + 8, y * 16, 244); else if (!Main.player[plr].ZoneSnow && Main.hardMode && (double) Main.cloudAlpha > 0.0 && NPC.CountNPCS(250) < 2 && Main.rand.Next(10) == 0) NPC.NewNPC(index1 * 16 + 8, y * 16, 250); else if (flag22 && Main.hardMode && NPC.downedGolemBoss && (!NPC.downedMartians && Main.rand.Next(100) == 0 || Main.rand.Next(400) == 0) && !NPC.AnyNPCs(399)) NPC.NewNPC(index1 * 16 + 8, y * 16, 399); else if (Main.dayTime) { int num34 = Math.Abs(index1 - Main.spawnTileX); if (num34 < Main.maxTilesX / 3 && Main.rand.Next(15) == 0 && (type == 2 || type == 109 || type == 147 || type == 161)) { if (type == 147 || type == 161) { if (Main.rand.Next(2) == 0) NPC.NewNPC(index1 * 16 + 8, y * 16, 148); else NPC.NewNPC(index1 * 16 + 8, y * 16, 149); } else if (Main.dayTime && Main.rand.Next(NPC.butterflyChance) == 0 && (double) y <= Main.worldSurface) { if (Main.rand.Next(NPC.goldCritterChance) == 0) NPC.NewNPC(index1 * 16 + 8, y * 16, 444); else NPC.NewNPC(index1 * 16 + 8, y * 16, 356); if (Main.rand.Next(4) == 0) NPC.NewNPC(index1 * 16 + 8 - 16, y * 16, 356); if (Main.rand.Next(4) == 0) NPC.NewNPC(index1 * 16 + 8 + 16, y * 16, 356); } else if (Main.rand.Next(NPC.goldCritterChance) == 0) NPC.NewNPC(index1 * 16 + 8, y * 16, 443); else if (Main.rand.Next(NPC.goldCritterChance) == 0 && (double) y <= Main.worldSurface) NPC.NewNPC(index1 * 16 + 8, y * 16, 539); else if (Main.halloween && Main.rand.Next(3) != 0) NPC.NewNPC(index1 * 16 + 8, y * 16, 303); else if (Main.xMas && Main.rand.Next(3) != 0) NPC.NewNPC(index1 * 16 + 8, y * 16, 337); else if (BirthdayParty.PartyIsUp && Main.rand.Next(3) != 0) NPC.NewNPC(index1 * 16 + 8, y * 16, 540); else if (Main.rand.Next(3) == 0 && (double) y <= Main.worldSurface) NPC.NewNPC(index1 * 16 + 8, y * 16, (int) Utils.SelectRandom(Main.rand, (short) 299, (short) 538)); else NPC.NewNPC(index1 * 16 + 8, y * 16, 46); } else if (num34 < Main.maxTilesX / 3 && Main.rand.Next(15) == 0 && type == 53) NPC.NewNPC(index1 * 16 + 8, y * 16, Main.rand.Next(366, 368)); else if (num34 < Main.maxTilesX / 3 && Main.dayTime && Main.time < 18000.0 && (type == 2 || type == 109) && Main.rand.Next(4) == 0 && (double) y <= Main.worldSurface && NPC.CountNPCS(74) + NPC.CountNPCS(297) + NPC.CountNPCS(298) < 6) { int num35 = Main.rand.Next(4); if (Main.rand.Next(NPC.goldCritterChance) == 0) { NPC.NewNPC(index1 * 16 + 8, y * 16, 442); } else { switch (num35) { case 0: NPC.NewNPC(index1 * 16 + 8, y * 16, 297); break; case 1: NPC.NewNPC(index1 * 16 + 8, y * 16, 298); break; default: NPC.NewNPC(index1 * 16 + 8, y * 16, 74); break; } } } else if (num34 < Main.maxTilesX / 3 && Main.rand.Next(15) == 0 && (type == 2 || type == 109 || type == 147)) { int num36 = Main.rand.Next(4); if (Main.rand.Next(NPC.goldCritterChance) == 0) { NPC.NewNPC(index1 * 16 + 8, y * 16, 442); } else { switch (num36) { case 0: NPC.NewNPC(index1 * 16 + 8, y * 16, 297); break; case 1: NPC.NewNPC(index1 * 16 + 8, y * 16, 298); break; default: NPC.NewNPC(index1 * 16 + 8, y * 16, 74); break; } } } else if (num34 > Main.maxTilesX / 3 && type == 2 && Main.rand.Next(300) == 0 && !NPC.AnyNPCs(50)) NPC.SpawnOnPlayer(plr, 50); else if (type == 53 && Main.rand.Next(5) == 0 && NPC.Spawning_SandstoneCheck(index1, y) && !flag6) newNPC = NPC.NewNPC(index1 * 16 + 8, y * 16, 69); else if (type == 53 && Main.rand.Next(3) == 0 && !flag6) newNPC = NPC.NewNPC(index1 * 16 + 8, y * 16, 537); else if (type == 53 && !flag6) newNPC = NPC.NewNPC(index1 * 16 + 8, y * 16, 61); else if (num34 > Main.maxTilesX / 3 && (Main.rand.Next(15) == 0 || !NPC.downedGoblins && WorldGen.shadowOrbSmashed && Main.rand.Next(7) == 0)) newNPC = NPC.NewNPC(index1 * 16 + 8, y * 16, 73); else if (Main.raining && Main.rand.Next(3) == 0) newNPC = NPC.NewNPC(index1 * 16 + 8, y * 16, 224); else if (Main.raining && Main.rand.Next(2) == 0) { newNPC = NPC.NewNPC(index1 * 16 + 8, y * 16, 225); } else { newNPC = NPC.NewNPC(index1 * 16 + 8, y * 16, 1); switch (type) { case 60: Main.npc[newNPC].SetDefaults(-10); break; case 147: case 161: Main.npc[newNPC].SetDefaults(147); break; default: if (Main.halloween && Main.rand.Next(3) != 0) { Main.npc[newNPC].SetDefaults(302); break; } if (Main.xMas && Main.rand.Next(3) != 0) { Main.npc[newNPC].SetDefaults(Main.rand.Next(333, 337)); break; } if (Main.rand.Next(3) == 0 || num34 < 200 && !Main.expertMode) { Main.npc[newNPC].SetDefaults(-3); break; } if (Main.rand.Next(10) == 0 && (num34 > 400 || Main.expertMode)) { Main.npc[newNPC].SetDefaults(-7); break; } break; } } } else if ((num1 == 2 || num1 == 109) && Main.rand.Next(NPC.fireFlyChance) == 0 && (double) y <= Main.worldSurface) { int Type7 = 355; if (type == 109) Type7 = 358; NPC.NewNPC(index1 * 16 + 8, y * 16, Type7); if (Main.rand.Next(NPC.fireFlyMultiple) == 0) NPC.NewNPC(index1 * 16 + 8 - 16, y * 16, Type7); if (Main.rand.Next(NPC.fireFlyMultiple) == 0) NPC.NewNPC(index1 * 16 + 8 + 16, y * 16, Type7); if (Main.rand.Next(NPC.fireFlyMultiple) == 0) NPC.NewNPC(index1 * 16 + 8, y * 16 - 16, Type7); if (Main.rand.Next(NPC.fireFlyMultiple) == 0) NPC.NewNPC(index1 * 16 + 8, y * 16 + 16, Type7); } else if (Main.rand.Next(10) == 0 && Main.halloween) newNPC = NPC.NewNPC(index1 * 16 + 8, y * 16, 301); else if (Main.rand.Next(6) == 0 || Main.moonPhase == 4 && Main.rand.Next(2) == 0) { if (Main.hardMode && Main.rand.Next(3) == 0) newNPC = NPC.NewNPC(index1 * 16 + 8, y * 16, 133); else if (Main.halloween && Main.rand.Next(2) == 0) newNPC = NPC.NewNPC(index1 * 16 + 8, y * 16, Main.rand.Next(317, 319)); else if (Main.rand.Next(2) == 0) { newNPC = NPC.NewNPC(index1 * 16 + 8, y * 16, 2); if (Main.rand.Next(4) == 0) Main.npc[newNPC].SetDefaults(-43); } else { switch (Main.rand.Next(5)) { case 0: newNPC = NPC.NewNPC(index1 * 16 + 8, y * 16, 190); if (Main.rand.Next(3) == 0) { Main.npc[newNPC].SetDefaults(-38); break; } break; case 1: newNPC = NPC.NewNPC(index1 * 16 + 8, y * 16, 191); if (Main.rand.Next(3) == 0) { Main.npc[newNPC].SetDefaults(-39); break; } break; case 2: newNPC = NPC.NewNPC(index1 * 16 + 8, y * 16, 192); if (Main.rand.Next(3) == 0) { Main.npc[newNPC].SetDefaults(-40); break; } break; case 3: newNPC = NPC.NewNPC(index1 * 16 + 8, y * 16, 193); if (Main.rand.Next(3) == 0) { Main.npc[newNPC].SetDefaults(-41); break; } break; case 4: newNPC = NPC.NewNPC(index1 * 16 + 8, y * 16, 194); if (Main.rand.Next(3) == 0) { Main.npc[newNPC].SetDefaults(-42); break; } break; } } } else if (Main.hardMode && Main.rand.Next(50) == 0 && Main.bloodMoon && !NPC.AnyNPCs(109)) NPC.NewNPC(index1 * 16 + 8, y * 16, 109); else if (Main.rand.Next(250) == 0 && Main.bloodMoon) NPC.NewNPC(index1 * 16 + 8, y * 16, 53); else if (Main.rand.Next(250) == 0 && Main.bloodMoon) NPC.NewNPC(index1 * 16 + 8, y * 16, 536); else if (Main.moonPhase == 0 && Main.hardMode && Main.rand.Next(3) != 0) newNPC = NPC.NewNPC(index1 * 16 + 8, y * 16, 104); else if (Main.hardMode && Main.rand.Next(3) == 0) newNPC = NPC.NewNPC(index1 * 16 + 8, y * 16, 140); else if (Main.bloodMoon && Main.rand.Next(5) < 2) newNPC = Main.rand.Next(2) != 0 ? NPC.NewNPC(index1 * 16 + 8, y * 16, 490) : NPC.NewNPC(index1 * 16 + 8, y * 16, 489); else if (num1 == 147 || num1 == 161 || num1 == 163 || num1 == 164 || num1 == 162) newNPC = !Main.hardMode || Main.rand.Next(4) != 0 ? (!Main.hardMode || Main.rand.Next(3) != 0 ? (!Main.expertMode || Main.rand.Next(2) != 0 ? NPC.NewNPC(index1 * 16 + 8, y * 16, 161) : NPC.NewNPC(index1 * 16 + 8, y * 16, 431)) : NPC.NewNPC(index1 * 16 + 8, y * 16, 155)) : NPC.NewNPC(index1 * 16 + 8, y * 16, 169); else if (Main.raining && Main.rand.Next(2) == 0) { newNPC = NPC.NewNPC(index1 * 16 + 8, y * 16, 223); if (Main.rand.Next(3) == 0) { if (Main.rand.Next(2) == 0) Main.npc[newNPC].SetDefaults(-54); else Main.npc[newNPC].SetDefaults(-55); } } else { int num37 = Main.rand.Next(7); if (Main.halloween && Main.rand.Next(2) == 0) newNPC = NPC.NewNPC(index1 * 16 + 8, y * 16, Main.rand.Next(319, 322)); else if (Main.xMas && Main.rand.Next(2) == 0) newNPC = NPC.NewNPC(index1 * 16 + 8, y * 16, Main.rand.Next(331, 333)); else if (num37 == 0 && Main.expertMode && Main.rand.Next(3) == 0) newNPC = NPC.NewNPC(index1 * 16 + 8, y * 16, 430); else if (num37 == 2 && Main.expertMode && Main.rand.Next(3) == 0) newNPC = NPC.NewNPC(index1 * 16 + 8, y * 16, 432); else if (num37 == 3 && Main.expertMode && Main.rand.Next(3) == 0) newNPC = NPC.NewNPC(index1 * 16 + 8, y * 16, 433); else if (num37 == 4 && Main.expertMode && Main.rand.Next(3) == 0) newNPC = NPC.NewNPC(index1 * 16 + 8, y * 16, 434); else if (num37 == 5 && Main.expertMode && Main.rand.Next(3) == 0) newNPC = NPC.NewNPC(index1 * 16 + 8, y * 16, 435); else if (num37 == 6 && Main.expertMode && Main.rand.Next(3) == 0) { newNPC = NPC.NewNPC(index1 * 16 + 8, y * 16, 436); } else { switch (num37) { case 0: newNPC = NPC.NewNPC(index1 * 16 + 8, y * 16, 3); if (Main.rand.Next(3) == 0) { if (Main.rand.Next(2) == 0) { Main.npc[newNPC].SetDefaults(-26); break; } Main.npc[newNPC].SetDefaults(-27); break; } break; case 1: newNPC = NPC.NewNPC(index1 * 16 + 8, y * 16, 132); if (Main.rand.Next(3) == 0) { if (Main.rand.Next(2) == 0) { Main.npc[newNPC].SetDefaults(-28); break; } Main.npc[newNPC].SetDefaults(-29); break; } break; case 2: newNPC = NPC.NewNPC(index1 * 16 + 8, y * 16, 186); if (Main.rand.Next(3) == 0) { if (Main.rand.Next(2) == 0) { Main.npc[newNPC].SetDefaults(-30); break; } Main.npc[newNPC].SetDefaults(-31); break; } break; case 3: newNPC = NPC.NewNPC(index1 * 16 + 8, y * 16, 187); if (Main.rand.Next(3) == 0) { if (Main.rand.Next(2) == 0) { Main.npc[newNPC].SetDefaults(-32); break; } Main.npc[newNPC].SetDefaults(-33); break; } break; case 4: newNPC = NPC.NewNPC(index1 * 16 + 8, y * 16, 188); if (Main.rand.Next(3) == 0) { if (Main.rand.Next(2) == 0) { Main.npc[newNPC].SetDefaults(-34); break; } Main.npc[newNPC].SetDefaults(-35); break; } break; case 5: newNPC = NPC.NewNPC(index1 * 16 + 8, y * 16, 189); if (Main.rand.Next(3) == 0) { if (Main.rand.Next(2) == 0) { Main.npc[newNPC].SetDefaults(-36); break; } Main.npc[newNPC].SetDefaults(-37); break; } break; case 6: newNPC = NPC.NewNPC(index1 * 16 + 8, y * 16, 200); if (Main.rand.Next(3) == 0) { if (Main.rand.Next(2) == 0) { Main.npc[newNPC].SetDefaults(-44); break; } Main.npc[newNPC].SetDefaults(-45); break; } break; } } } } else if ((double) y <= Main.rockLayer) { if (!flag4 && Main.rand.Next(50) == 0 && !Main.player[plr].ZoneSnow) newNPC = !Main.hardMode ? (!Main.player[plr].ZoneSnow ? NPC.NewNPC(index1 * 16 + 8, y * 16, 10, 1) : NPC.NewNPC(index1 * 16 + 8, y * 16, 185)) : NPC.NewNPC(index1 * 16 + 8, y * 16, 95, 1); else if (Main.hardMode && Main.rand.Next(3) == 0) newNPC = NPC.NewNPC(index1 * 16 + 8, y * 16, 140); else if (Main.hardMode && Main.rand.Next(4) != 0) newNPC = NPC.NewNPC(index1 * 16 + 8, y * 16, 141); else if (type == 147 || type == 161 || Main.player[plr].ZoneSnow) { newNPC = NPC.NewNPC(index1 * 16 + 8, y * 16, 147); } else { newNPC = NPC.NewNPC(index1 * 16 + 8, y * 16, 1); if (Main.rand.Next(5) == 0) Main.npc[newNPC].SetDefaults(-9); else if (Main.rand.Next(2) == 0) Main.npc[newNPC].SetDefaults(1); else Main.npc[newNPC].SetDefaults(-8); } } else if (y > Main.maxTilesY - 190) newNPC = !Main.hardMode || NPC.savedTaxCollector || Main.rand.Next(20) != 0 || NPC.AnyNPCs(534) ? (Main.rand.Next(40) != 0 || NPC.AnyNPCs(39) ? (Main.rand.Next(14) != 0 ? (Main.rand.Next(7) != 0 ? (Main.rand.Next(3) != 0 ? (!Main.hardMode || !NPC.downedMechBossAny || Main.rand.Next(5) == 0 ? NPC.NewNPC(index1 * 16 + 8, y * 16, 60) : NPC.NewNPC(index1 * 16 + 8, y * 16, 151)) : NPC.NewNPC(index1 * 16 + 8, y * 16, 59)) : (Main.rand.Next(7) != 0 ? (!Main.hardMode || !NPC.downedMechBossAny || Main.rand.Next(5) == 0 ? NPC.NewNPC(index1 * 16 + 8, y * 16, 62) : NPC.NewNPC(index1 * 16 + 8, y * 16, 156)) : NPC.NewNPC(index1 * 16 + 8, y * 16, 66))) : NPC.NewNPC(index1 * 16 + 8, y * 16, 24)) : NPC.NewNPC(index1 * 16 + 8, y * 16, 39, 1)) : NPC.NewNPC(index1 * 16 + 8, y * 16, 534); else if (Main.rand.Next(60) == 0) newNPC = !Main.player[plr].ZoneSnow ? NPC.NewNPC(index1 * 16 + 8, y * 16, 217) : NPC.NewNPC(index1 * 16 + 8, y * 16, 218); else if ((type == 116 || type == 117 || type == 164) && Main.hardMode && !flag4 && Main.rand.Next(8) == 0) newNPC = NPC.NewNPC(index1 * 16 + 8, y * 16, 120); else if ((num1 == 147 || num1 == 161 || num1 == 162 || num1 == 163 || num1 == 164) && !flag4 && Main.hardMode && Main.player[plr].ZoneCorrupt && Main.rand.Next(30) == 0) newNPC = NPC.NewNPC(index1 * 16 + 8, y * 16, 170); else if ((num1 == 147 || num1 == 161 || num1 == 162 || num1 == 163 || num1 == 164) && !flag4 && Main.hardMode && Main.player[plr].ZoneHoly && Main.rand.Next(30) == 0) newNPC = NPC.NewNPC(index1 * 16 + 8, y * 16, 171); else if ((num1 == 147 || num1 == 161 || num1 == 162 || num1 == 163 || num1 == 164) && !flag4 && Main.hardMode && Main.player[plr].ZoneCrimson && Main.rand.Next(30) == 0) newNPC = NPC.NewNPC(index1 * 16 + 8, y * 16, 180); else if (Main.hardMode && Main.player[plr].ZoneSnow && Main.rand.Next(10) == 0) newNPC = NPC.NewNPC(index1 * 16 + 8, y * 16, 154); else if (!flag4 && Main.rand.Next(100) == 0 && !Main.player[plr].ZoneHoly) newNPC = !Main.hardMode ? (!Main.player[plr].ZoneSnow ? NPC.NewNPC(index1 * 16 + 8, y * 16, 10, 1) : NPC.NewNPC(index1 * 16 + 8, y * 16, 185)) : NPC.NewNPC(index1 * 16 + 8, y * 16, 95, 1); else if (Main.player[plr].ZoneSnow && Main.rand.Next(20) == 0) newNPC = NPC.NewNPC(index1 * 16 + 8, y * 16, 185); else if (!Main.hardMode && Main.rand.Next(10) == 0) { if (Main.player[plr].ZoneSnow) Main.npc[newNPC].SetDefaults(184); else newNPC = NPC.NewNPC(index1 * 16 + 8, y * 16, 16); } else if (!Main.hardMode && Main.rand.Next(4) == 0) { newNPC = NPC.NewNPC(index1 * 16 + 8, y * 16, 1); if (Main.player[plr].ZoneJungle) Main.npc[newNPC].SetDefaults(-10); else if (Main.player[plr].ZoneSnow) Main.npc[newNPC].SetDefaults(184); else Main.npc[newNPC].SetDefaults(-6); } else if (Main.rand.Next(2) == 0) { if (Main.rand.Next(35) == 0 && NPC.CountNPCS(453) == 0) newNPC = NPC.NewNPC(index1 * 16 + 8, y * 16, 453); else if (!Main.hardMode && Main.rand.Next(80) == 0 || Main.rand.Next(200) == 0) newNPC = NPC.NewNPC(index1 * 16 + 8, y * 16, 195); else if (Main.hardMode && (double) y > (Main.rockLayer + (double) Main.maxTilesY) / 2.0 && Main.rand.Next(300) == 0) newNPC = NPC.NewNPC(index1 * 16 + 8, y * 16, 172); else if ((double) y > (Main.rockLayer + (double) Main.maxTilesY) / 2.0 && (Main.rand.Next(200) == 0 || Main.rand.Next(50) == 0 && Main.player[plr].armor[1].type >= 1282 && Main.player[plr].armor[1].type <= 1287 && Main.player[plr].armor[0].type != 238)) newNPC = NPC.NewNPC(index1 * 16 + 8, y * 16, 45); else if (flag9 && Main.rand.Next(4) != 0) newNPC = Main.rand.Next(6) == 0 || NPC.AnyNPCs(480) || !Main.hardMode ? NPC.NewNPC(index1 * 16 + 8, y * 16, 481) : NPC.NewNPC(index1 * 16 + 8, y * 16, 480); else if (flag8 && Main.rand.Next(5) != 0) newNPC = Main.rand.Next(6) == 0 || NPC.AnyNPCs(483) ? NPC.NewNPC(index1 * 16 + 8, y * 16, 482) : NPC.NewNPC(index1 * 16 + 8, y * 16, 483); else if (Main.hardMode && Main.rand.Next(10) != 0) { if (Main.rand.Next(2) == 0) { if (Main.player[plr].ZoneSnow) newNPC = NPC.NewNPC(index1 * 16 + 8, y * 16, 197); else if (Main.halloween && Main.rand.Next(5) == 0) { newNPC = NPC.NewNPC(index1 * 16 + 8, y * 16, 316); } else { newNPC = NPC.NewNPC(index1 * 16 + 8, y * 16, 77); if ((double) y > (Main.rockLayer + (double) Main.maxTilesY) / 2.0 && Main.rand.Next(5) == 0) Main.npc[newNPC].SetDefaults(-15); } } else newNPC = !Main.player[plr].ZoneSnow ? NPC.NewNPC(index1 * 16 + 8, y * 16, 110) : NPC.NewNPC(index1 * 16 + 8, y * 16, 206); } else if (Main.rand.Next(20) == 0) newNPC = NPC.NewNPC(index1 * 16 + 8, y * 16, 44); else if (num1 == 147 || num1 == 161 || num1 == 162) newNPC = NPC.NewNPC(index1 * 16 + 8, y * 16, 167); else if (Main.player[plr].ZoneSnow) newNPC = NPC.NewNPC(index1 * 16 + 8, y * 16, 185); else if (Main.rand.Next(3) == 0) newNPC = NPC.NewNPC(index1 * 16 + 8, y * 16, NPC.cavernMonsterType[Main.rand.Next(2), Main.rand.Next(3)]); else if (Main.halloween && Main.rand.Next(2) == 0) newNPC = NPC.NewNPC(index1 * 16 + 8, y * 16, Main.rand.Next(322, 325)); else if (Main.expertMode && Main.rand.Next(3) == 0) { int num38 = Main.rand.Next(4); newNPC = num38 != 0 ? (num38 != 0 ? (num38 != 0 ? NPC.NewNPC(index1 * 16 + 8, y * 16, 452) : NPC.NewNPC(index1 * 16 + 8, y * 16, 451)) : NPC.NewNPC(index1 * 16 + 8, y * 16, 450)) : NPC.NewNPC(index1 * 16 + 8, y * 16, 449); } else { switch (Main.rand.Next(4)) { case 0: newNPC = NPC.NewNPC(index1 * 16 + 8, y * 16, 21); if (Main.rand.Next(3) == 0) { if (Main.rand.Next(2) == 0) { Main.npc[newNPC].SetDefaults(-47); break; } Main.npc[newNPC].SetDefaults(-46); break; } break; case 1: newNPC = NPC.NewNPC(index1 * 16 + 8, y * 16, 201); if (Main.rand.Next(3) == 0) { if (Main.rand.Next(2) == 0) { Main.npc[newNPC].SetDefaults(-49); break; } Main.npc[newNPC].SetDefaults(-48); break; } break; case 2: newNPC = NPC.NewNPC(index1 * 16 + 8, y * 16, 202); if (Main.rand.Next(3) == 0) { if (Main.rand.Next(2) == 0) { Main.npc[newNPC].SetDefaults(-51); break; } Main.npc[newNPC].SetDefaults(-50); break; } break; case 3: newNPC = NPC.NewNPC(index1 * 16 + 8, y * 16, 203); if (Main.rand.Next(3) == 0) { if (Main.rand.Next(2) == 0) { Main.npc[newNPC].SetDefaults(-53); break; } Main.npc[newNPC].SetDefaults(-52); break; } break; } } } else newNPC = !Main.hardMode || !(Main.player[plr].ZoneHoly & Main.rand.Next(2) == 0) ? (!Main.player[plr].ZoneJungle ? (!Main.hardMode || !Main.player[plr].ZoneHoly ? (!Main.hardMode || Main.rand.Next(6) <= 0 ? (num1 == 147 || num1 == 161 || num1 == 162 ? (!Main.hardMode ? NPC.NewNPC(index1 * 16 + 8, y * 16, 150) : NPC.NewNPC(index1 * 16 + 8, y * 16, 169)) : NPC.NewNPC(index1 * 16 + 8, y * 16, 49)) : NPC.NewNPC(index1 * 16 + 8, y * 16, 93)) : NPC.NewNPC(index1 * 16 + 8, y * 16, 137)) : NPC.NewNPC(index1 * 16 + 8, y * 16, 51)) : NPC.NewNPC(index1 * 16 + 8, y * 16, 138); if (Main.npc[newNPC].type == 1 && Main.rand.Next(180) == 0) Main.npc[newNPC].SetDefaults(-4); if (Main.netMode != 2 || newNPC >= 200) break; NetMessage.SendData(23, number: newNPC); break; } } } } } public static bool AnyDanger() { bool flag = false; if (NPC.MoonLordCountdown > 0) flag = true; if (Main.invasionType > 0) flag = true; if (!flag) { for (int index = 0; index < 200; ++index) { if (Main.npc[index].active && (Main.npc[index].boss || NPCID.Sets.TechnicallyABoss[Main.npc[index].type])) flag = true; } } return flag; } public static bool AnyoneNearCultists() { int firstNpc = NPC.FindFirstNPC(437); if (firstNpc == -1) return false; Microsoft.Xna.Framework.Rectangle rectangle = Utils.CenteredRectangle(Main.npc[firstNpc].Center, new Vector2(2500f, 1500f)); Microsoft.Xna.Framework.Rectangle r = new Microsoft.Xna.Framework.Rectangle(0, 0, 2500, 1500); Vector2 vector2 = r.Size() / 2f; for (int index = 0; index < (int) byte.MaxValue; ++index) { if (Main.player[index].active) { r.X = (int) Main.player[index].Center.X - (int) vector2.X; r.Y = (int) Main.player[index].Center.Y - (int) vector2.Y; if (rectangle.Intersects(r)) return true; } } return false; } public static void SpawnWOF(Vector2 pos) { if ((double) pos.Y / 16.0 < (double) (Main.maxTilesY - 205) || Main.wof >= 0 || Main.netMode == 1) return; int closest = (int) Player.FindClosest(pos, 16, 16); int num1 = 1; if ((double) pos.X / 16.0 > (double) (Main.maxTilesX / 2)) num1 = -1; bool flag = false; int x = (int) pos.X; while (!flag) { flag = true; for (int index = 0; index < (int) byte.MaxValue; ++index) { if (Main.player[index].active && (double) Main.player[index].position.X > (double) (x - 1200) && (double) Main.player[index].position.X < (double) (x + 1200)) { x -= num1 * 16; flag = false; } } if (x / 16 < 20 || x / 16 > Main.maxTilesX - 20) flag = true; } int y = (int) pos.Y; int i = x / 16; int num2 = y / 16; int num3 = 0; while (true) { try { if (!WorldGen.SolidTile(i, num2 - num3) && Main.tile[i, num2 - num3].liquid < (byte) 100) { num2 -= num3; break; } if (!WorldGen.SolidTile(i, num2 + num3) && Main.tile[i, num2 + num3].liquid < (byte) 100) { num2 += num3; break; } ++num3; } catch { break; } } if (num2 < Main.maxTilesY - 180) num2 = Main.maxTilesY - 180; int Y = num2 * 16; int index1 = NPC.NewNPC(x, Y, 113); if (Main.netMode == 0) { Main.NewText(Language.GetTextValue("Announcement.HasAwoken", (object) Main.npc[index1].TypeName), (byte) 175, (byte) 75); } else { if (Main.netMode != 2) return; NetMessage.BroadcastChatMessage(NetworkText.FromKey("Announcement.HasAwoken", (object) Main.npc[index1].GetTypeNetName()), new Color(175, 75, (int) byte.MaxValue)); } } public static void SpawnSkeletron() { bool flag1 = true; bool flag2 = false; Vector2 vector2 = Vector2.Zero; int num1 = 0; int num2 = 0; for (int index = 0; index < 200; ++index) { if (Main.npc[index].active && Main.npc[index].type == 35) { flag1 = false; break; } } for (int number = 0; number < 200; ++number) { if (Main.npc[number].active) { if (Main.npc[number].type == 37) { flag2 = true; Main.npc[number].ai[3] = 1f; vector2 = Main.npc[number].position; num1 = Main.npc[number].width; num2 = Main.npc[number].height; if (Main.netMode == 2) NetMessage.SendData(23, number: number); } else if (Main.npc[number].type == 54) { flag2 = true; vector2 = Main.npc[number].position; num1 = Main.npc[number].width; num2 = Main.npc[number].height; } } } if (!(flag1 & flag2)) return; int index1 = NPC.NewNPC((int) vector2.X + num1 / 2, (int) vector2.Y + num2 / 2, 35); Main.npc[index1].netUpdate = true; string npcNameValue = Lang.GetNPCNameValue(35); if (Main.netMode == 0) { Main.NewText(Language.GetTextValue("Announcement.HasAwoken", (object) npcNameValue), (byte) 175, (byte) 75); } else { if (Main.netMode != 2) return; NetMessage.BroadcastChatMessage(NetworkText.FromKey("Announcement.HasAwoken", (object) Lang.GetNPCName(35).ToNetworkText()), new Color(175, 75, (int) byte.MaxValue)); } } public static void SpawnOnPlayer(int plr, int Type) { if (Main.netMode == 1 || Type == 262 && NPC.AnyNPCs(262)) return; switch (Type) { case 245: if (NPC.AnyNPCs(245)) break; try { int num1 = (int) Main.player[plr].Center.X / 16; int num2 = (int) Main.player[plr].Center.Y / 16; int i = 0; int num3 = 0; for (int index1 = num1 - 20; index1 < num1 + 20; ++index1) { for (int index2 = num2 - 20; index2 < num2 + 20; ++index2) { if (Main.tile[index1, index2].active() && Main.tile[index1, index2].type == (ushort) 237 && Main.tile[index1, index2].frameX == (short) 18 && Main.tile[index1, index2].frameY == (short) 0) { i = index1; num3 = index2; } } } if (i <= 0 || num3 <= 0) break; int num4 = num3 - 15; int num5 = num3 - 15; for (int j = num3; j > num3 - 100; --j) { if (WorldGen.SolidTile(i, j)) { num4 = j; break; } } for (int j = num3; j < num3 + 100; ++j) { if (WorldGen.SolidTile(i, j)) { num5 = j; break; } } int num6 = (num4 + num4 + num5) / 3; int index = NPC.NewNPC(i * 16 + 8, num6 * 16, 245, 100); Main.npc[index].target = plr; string typeName = Main.npc[index].TypeName; if (Main.netMode == 0) { Main.NewText(Language.GetTextValue("Announcement.HasAwoken", (object) typeName), (byte) 175, (byte) 75); break; } if (Main.netMode != 2) break; NetMessage.BroadcastChatMessage(NetworkText.FromKey("Announcement.HasAwoken", (object) Main.npc[index].GetTypeNetName()), new Color(175, 75, (int) byte.MaxValue)); break; } catch { break; } case 370: Player player1 = Main.player[plr]; if (!player1.active || player1.dead) break; for (int index3 = 0; index3 < 1000; ++index3) { Projectile projectile = Main.projectile[index3]; if (projectile.active && projectile.bobber && projectile.owner == plr) { int index4 = NPC.NewNPC((int) projectile.Center.X, (int) projectile.Center.Y + 100, 370); string typeName = Main.npc[index4].TypeName; if (Main.netMode == 0) { Main.NewText(Language.GetTextValue("Announcement.HasAwoken", (object) typeName), (byte) 175, (byte) 75); break; } if (Main.netMode != 2) break; NetMessage.BroadcastChatMessage(NetworkText.FromKey("Announcement.HasAwoken", (object) Main.npc[index4].GetTypeNetName()), new Color(175, 75, (int) byte.MaxValue)); break; } } break; case 398: if (NPC.AnyNPCs(Type)) break; Player player2 = Main.player[plr]; NPC.NewNPC((int) player2.Center.X, (int) player2.Center.Y - 150, Type); if (Main.netMode == 0) { Main.NewText(Language.GetTextValue("Announcement.HasAwoken", (object) Language.GetTextValue("Enemies.MoonLord")), (byte) 175, (byte) 75); break; } if (Main.netMode != 2) break; NetMessage.BroadcastChatMessage(NetworkText.FromKey("Announcement.HasAwoken", (object) NetworkText.FromKey("Enemies.MoonLord")), new Color(175, 75, (int) byte.MaxValue)); break; default: bool flag = false; int num7 = 0; int num8 = 0; int minValue1 = (int) ((double) Main.player[plr].position.X / 16.0) - NPC.spawnRangeX * 2; int maxValue1 = (int) ((double) Main.player[plr].position.X / 16.0) + NPC.spawnRangeX * 2; int minValue2 = (int) ((double) Main.player[plr].position.Y / 16.0) - NPC.spawnRangeY * 2; int maxValue2 = (int) ((double) Main.player[plr].position.Y / 16.0) + NPC.spawnRangeY * 2; int num9 = (int) ((double) Main.player[plr].position.X / 16.0) - NPC.safeRangeX; int num10 = (int) ((double) Main.player[plr].position.X / 16.0) + NPC.safeRangeX; int num11 = (int) ((double) Main.player[plr].position.Y / 16.0) - NPC.safeRangeY; int num12 = (int) ((double) Main.player[plr].position.Y / 16.0) + NPC.safeRangeY; if (minValue1 < 0) minValue1 = 0; if (maxValue1 > Main.maxTilesX) maxValue1 = Main.maxTilesX; if (minValue2 < 0) minValue2 = 0; if (maxValue2 > Main.maxTilesY) maxValue2 = Main.maxTilesY; for (int index5 = 0; index5 < 1000; ++index5) { for (int index6 = 0; index6 < 100; ++index6) { int index7 = Main.rand.Next(minValue1, maxValue1); int index8 = Main.rand.Next(minValue2, maxValue2); if (!Main.tile[index7, index8].nactive() || !Main.tileSolid[(int) Main.tile[index7, index8].type]) { if ((!Main.wallHouse[(int) Main.tile[index7, index8].wall] || index5 >= 999) && (Type != 50 || index5 >= 500 || Main.tile[index8, index8].wall <= (byte) 0)) { for (int index9 = index8; index9 < Main.maxTilesY; ++index9) { if (Main.tile[index7, index9].nactive() && Main.tileSolid[(int) Main.tile[index7, index9].type]) { if (index7 < num9 || index7 > num10 || index9 < num11 || index9 > num12 || index5 == 999) { int type = (int) Main.tile[index7, index9].type; num7 = index7; num8 = index9; flag = true; break; } break; } } if (flag && Type == 50 && index5 < 900) { int num13 = 20; if (!Collision.CanHit(new Vector2((float) num7, (float) (num8 - 1)) * 16f, 16, 16, new Vector2((float) num7, (float) (num8 - 1 - num13)) * 16f, 16, 16) || !Collision.CanHit(new Vector2((float) num7, (float) (num8 - 1 - num13)) * 16f, 16, 16, Main.player[plr].Center, 0, 0)) { num7 = 0; num8 = 0; flag = false; } } if (flag && index5 < 999) { int num14 = num7 - NPC.spawnSpaceX / 2; int num15 = num7 + NPC.spawnSpaceX / 2; int num16 = num8 - NPC.spawnSpaceY; int num17 = num8; if (num14 < 0) flag = false; if (num15 > Main.maxTilesX) flag = false; if (num16 < 0) flag = false; if (num17 > Main.maxTilesY) flag = false; if (flag) { for (int index10 = num14; index10 < num15; ++index10) { for (int index11 = num16; index11 < num17; ++index11) { if (Main.tile[index10, index11].nactive() && Main.tileSolid[(int) Main.tile[index10, index11].type]) { flag = false; break; } } } } } } else continue; } if (flag || flag) break; } if (flag && index5 < 999) { Microsoft.Xna.Framework.Rectangle rectangle1 = new Microsoft.Xna.Framework.Rectangle(num7 * 16, num8 * 16, 16, 16); for (int index12 = 0; index12 < (int) byte.MaxValue; ++index12) { if (Main.player[index12].active) { Microsoft.Xna.Framework.Rectangle rectangle2 = new Microsoft.Xna.Framework.Rectangle((int) ((double) Main.player[index12].position.X + (double) (Main.player[index12].width / 2) - (double) (NPC.sWidth / 2) - (double) NPC.safeRangeX), (int) ((double) Main.player[index12].position.Y + (double) (Main.player[index12].height / 2) - (double) (NPC.sHeight / 2) - (double) NPC.safeRangeY), NPC.sWidth + NPC.safeRangeX * 2, NPC.sHeight + NPC.safeRangeY * 2); if (rectangle1.Intersects(rectangle2)) flag = false; } } } if (flag) break; } if (!flag) break; int number = NPC.NewNPC(num7 * 16 + 8, num8 * 16, Type, 1); if (number == 200) break; Main.npc[number].target = plr; Main.npc[number].timeLeft *= 20; string typeName1 = Main.npc[number].TypeName; if (Main.netMode == 2 && number < 200) NetMessage.SendData(23, number: number); if (Type == 134 || Type == (int) sbyte.MaxValue || Type == 126 || Type == 125) AchievementsHelper.CheckMechaMayhem(); if (Type == 125) { if (Main.netMode == 0) { Main.NewText(Lang.misc[48].Value, (byte) 175, (byte) 75); break; } if (Main.netMode != 2) break; NetMessage.BroadcastChatMessage(Lang.misc[48].ToNetworkText(), new Color(175, 75, (int) byte.MaxValue)); break; } if (Type == 82 || Type == 126 || Type == 50 || Type == 398 || Type == 551) break; if (Main.netMode == 0) { Main.NewText(Language.GetTextValue("Announcement.HasAwoken", (object) typeName1), (byte) 175, (byte) 75); break; } if (Main.netMode != 2) break; NetMessage.BroadcastChatMessage(NetworkText.FromKey("Announcement.HasAwoken", (object) Main.npc[number].GetTypeNetName()), new Color(175, 75, (int) byte.MaxValue)); break; } } public static int NewNPC( int X, int Y, int Type, int Start = 0, float ai0 = 0.0f, float ai1 = 0.0f, float ai2 = 0.0f, float ai3 = 0.0f, int Target = 255) { int index1 = -1; if (Type == 222) { for (int index2 = 199; index2 >= 0; --index2) { if (!Main.npc[index2].active) { index1 = index2; break; } } } else { for (int index3 = Start; index3 < 200; ++index3) { if (!Main.npc[index3].active) { index1 = index3; break; } } } if (index1 < 0) return 200; Main.npc[index1] = new NPC(); Main.npc[index1].SetDefaults(Type); if (NPC.TypeToHeadIndex(Type) != -1 || Type == 453) Main.npc[index1].GivenName = NPC.getNewNPCName(Type); Main.npc[index1].position.X = (float) (X - Main.npc[index1].width / 2); Main.npc[index1].position.Y = (float) (Y - Main.npc[index1].height); Main.npc[index1].active = true; Main.npc[index1].timeLeft = (int) ((double) NPC.activeTime * 1.25); Main.npc[index1].wet = Collision.WetCollision(Main.npc[index1].position, Main.npc[index1].width, Main.npc[index1].height); Main.npc[index1].ai[0] = ai0; Main.npc[index1].ai[1] = ai1; Main.npc[index1].ai[2] = ai2; Main.npc[index1].ai[3] = ai3; Main.npc[index1].target = Target; if (Type == 50) { switch (Main.netMode) { case 0: Main.NewText(Language.GetTextValue("Announcement.HasAwoken", (object) Main.npc[index1].TypeName), (byte) 175, (byte) 75); break; case 2: NetMessage.BroadcastChatMessage(NetworkText.FromKey("Announcement.HasAwoken", (object) Main.npc[index1].GetTypeNetName()), new Color(175, 75, (int) byte.MaxValue)); break; } } return index1; } public void TransformVisuals(int oldType, int newType) { if (oldType == 158 && newType == 159 || oldType == 159 && newType == 158) { Main.PlaySound(SoundID.Item8, this.position); int index1 = Gore.NewGore(new Vector2(this.position.X, this.position.Y - 10f), this.velocity, 99, this.scale); Main.gore[index1].velocity *= 0.3f; int index2 = Gore.NewGore(new Vector2(this.position.X, (float) ((double) this.position.Y + (double) (this.height / 2) - 10.0)), this.velocity, 99, this.scale); Main.gore[index2].velocity *= 0.3f; int index3 = Gore.NewGore(new Vector2(this.position.X, (float) ((double) this.position.Y + (double) this.height - 10.0)), this.velocity, 99, this.scale); Main.gore[index3].velocity *= 0.3f; } else if (oldType == 478 && newType == 479) { for (int index4 = 0; index4 < 30; ++index4) { int index5 = Dust.NewDust(this.position, this.width, this.height, 238, SpeedY: -2f); if (Main.rand.Next(2) == 0) Main.dust[index5].noGravity = true; } Gore.NewGore(this.position, this.velocity, 684, this.scale); Gore.NewGore(this.position, this.velocity, 685, this.scale); Gore.NewGore(this.position, this.velocity, 686, this.scale); Gore.NewGore(this.position, this.velocity, 684 + Main.rand.Next(3), this.scale); } else if (oldType == 406 && newType == 405) { float num1 = (float) Main.rand.Next(10, 21); float num2 = 6.283185f * Main.rand.NextFloat(); Vector2 vector2_1 = new Vector2(22f, 22f); for (float num3 = 0.0f; (double) num3 < (double) num1; ++num3) { Dust dust = Main.dust[Dust.NewDust(this.Center, 0, 0, 229)]; Vector2 vector2_2 = Vector2.UnitY.RotatedBy((double) num3 * 6.28318548202515 / (double) num1 + (double) num2); dust.position = this.Center + vector2_2 * vector2_1 / 2f; dust.velocity = vector2_2; dust.noGravity = true; dust.scale = (float) (0.600000023841858 + (double) Main.rand.NextFloat() * 1.79999995231628); dust.velocity *= dust.scale; dust.fadeIn = Main.rand.NextFloat() * 2f; } } if (oldType == 428 && newType == 427) { for (int index = 0; index < 20; ++index) { int Type = Utils.SelectRandom(Main.rand, 229, 240); Dust dust = Main.dust[Dust.NewDust(this.position, this.width, this.height, Type)]; dust.noGravity = true; dust.scale = (float) (0.600000023841858 + (double) Main.rand.NextFloat() * 1.79999995231628); dust.fadeIn = 0.25f; dust.velocity *= dust.scale / 2f; } } if (oldType != 427 || newType != 426) return; for (int index = 0; index < 30; ++index) { int Type = Utils.SelectRandom(Main.rand, 229, 240, 240); Dust dust = Main.dust[Dust.NewDust(this.position, this.width, this.height, Type)]; dust.noGravity = true; dust.scale = (float) (0.600000023841858 + (double) Main.rand.NextFloat() * 1.79999995231628); dust.fadeIn = 0.25f; dust.velocity *= dust.scale * 0.75f; } } public void Teleport(Vector2 newPos, int Style = 0, int extraInfo = 0) { int extraInfo1 = 0; if (Style == 4) extraInfo1 = this.lastPortalColorIndex; float dustCountMult = (double) this.teleportTime > 0.0 ? 0.3f : 1f; Main.TeleportEffect(this.getRect(), Style, extraInfo1, dustCountMult); this.position = newPos; if (Style == 4) { this.lastPortalColorIndex = extraInfo; extraInfo1 = this.lastPortalColorIndex; } Main.TeleportEffect(this.getRect(), Style, extraInfo1, dustCountMult); this.teleportTime = 1f; this.teleportStyle = Style; if (Main.netMode != 2 || Style == 4) return; NetMessage.SendData(65, number: 1, number2: ((float) this.whoAmI), number3: newPos.X, number4: newPos.Y, number5: Style); } public void Transform(int newType) { if (Main.netMode == 1) return; bool flag = false; if ((double) this.value == 0.0) flag = true; int[] numArray1 = new int[5]; int[] numArray2 = new int[5]; for (int index = 0; index < 5; ++index) { numArray1[index] = this.buffType[index]; numArray2[index] = this.buffTime[index]; } int height = this.height; int type = this.type; int life = this.life; int lifeMax = this.lifeMax; Vector2 velocity = this.velocity; this.position.Y += (float) this.height; int spriteDirection = this.spriteDirection; bool spawnedFromStatue = this.SpawnedFromStatue; this.SetDefaults(newType); this.SpawnedFromStatue = spawnedFromStatue; this.spriteDirection = spriteDirection; this.TargetClosest(); this.velocity = velocity; this.position.Y -= (float) this.height; if (flag) this.value = 0.0f; if (this.lifeMax == lifeMax) this.life = life; if (newType == 107 || newType == 108) { this.homeTileX = (int) ((double) this.position.X + (double) (this.width / 2)) / 16; this.homeTileY = (int) ((double) this.position.Y + (double) this.height) / 16; this.homeless = true; } for (int index = 0; index < 5; ++index) { this.buffType[index] = numArray1[index]; this.buffTime[index] = numArray2[index]; } if (Main.netMode == 2) { this.netUpdate = true; NetMessage.SendData(23, number: this.whoAmI); NetMessage.SendData(54, number: this.whoAmI); } this.TransformVisuals(type, newType); if (NPC.TypeToHeadIndex(this.type) != -1) Main.npc[this.whoAmI].GivenName = NPC.getNewNPCName(this.type); this.npcNameLookup = (byte) 0; if (this.townNPC) this.homeless = true; this.altTexture = 0; } public int checkArmorPenetration(int armorPenetration) { if (armorPenetration <= 0) return 0; return armorPenetration > this.defense && this.defense >= 0 ? this.defense / 2 : armorPenetration / 2; } public double StrikeNPCNoInteraction( int Damage, float knockBack, int hitDirection, bool crit = false, bool noEffect = false, bool fromNet = false) { if (Main.netMode == 0) ++NPC.ignorePlayerInteractions; return this.StrikeNPC(Damage, knockBack, hitDirection, crit, noEffect, fromNet); } public double StrikeNPC( int Damage, float knockBack, int hitDirection, bool crit = false, bool noEffect = false, bool fromNet = false) { bool flag = Main.netMode == 0; if (flag && NPC.ignorePlayerInteractions > 0) { --NPC.ignorePlayerInteractions; flag = false; } if (!this.active || this.life <= 0) return 0.0; double num1 = (double) Damage; int Defense = this.defense; if (this.ichor) Defense -= 20; if (this.betsysCurse) Defense -= 40; if (Defense < 0) Defense = 0; double dmg = Main.CalculateDamage((int) num1, Defense); if (crit) dmg *= 2.0; if ((double) this.takenDamageMultiplier > 1.0) dmg *= (double) this.takenDamageMultiplier; if (((double) this.takenDamageMultiplier > 1.0 || Damage != 9999) && this.lifeMax > 1) { if (this.friendly) { CombatText.NewText(new Microsoft.Xna.Framework.Rectangle((int) this.position.X, (int) this.position.Y, this.width, this.height), crit ? CombatText.DamagedFriendlyCrit : CombatText.DamagedFriendly, (int) dmg, crit); } else { Color color = crit ? CombatText.DamagedHostileCrit : CombatText.DamagedHostile; if (fromNet) color = crit ? CombatText.OthersDamagedHostileCrit : CombatText.OthersDamagedHostile; CombatText.NewText(new Microsoft.Xna.Framework.Rectangle((int) this.position.X, (int) this.position.Y, this.width, this.height), color, (int) dmg, crit); } } if (dmg < 1.0) return 0.0; if (flag) this.PlayerInteraction(Main.myPlayer); this.justHit = true; if (this.townNPC) { if ((this.aiStyle != 7 ? 0 : ((double) this.ai[0] == 3.0 || (double) this.ai[0] == 4.0 || (double) this.ai[0] == 16.0 ? 1 : ((double) this.ai[0] == 17.0 ? 1 : 0))) != 0) { NPC npc = Main.npc[(int) this.ai[2]]; if (npc.active) { npc.ai[0] = 1f; npc.ai[1] = (float) (300 + Main.rand.Next(300)); npc.ai[2] = 0.0f; npc.localAI[3] = 0.0f; npc.direction = hitDirection; npc.netUpdate = true; } } this.ai[0] = 1f; this.ai[1] = (float) (300 + Main.rand.Next(300)); this.ai[2] = 0.0f; this.localAI[3] = 0.0f; this.direction = hitDirection; this.netUpdate = true; } if (this.aiStyle == 8 && Main.netMode != 1) { if (this.type == 172) this.ai[0] = 450f; else if (this.type == 283 || this.type == 284) { if (Main.rand.Next(2) == 0) { this.ai[0] = 390f; this.netUpdate = true; } } else if (this.type == 533) { if (Main.rand.Next(3) != 0) { this.ai[0] = 181f; this.netUpdate = true; } } else this.ai[0] = 400f; this.TargetClosest(); } if (this.aiStyle == 97 && Main.netMode != 1) { this.localAI[1] = 1f; this.TargetClosest(); } if (this.type == 371) { dmg = 0.0; this.ai[0] = 1f; this.ai[1] = 4f; this.dontTakeDamage = true; } if (this.type == 346 && (double) this.life >= (double) this.lifeMax * 0.5 && (double) this.life - dmg < (double) this.lifeMax * 0.5) Gore.NewGore(this.position, this.velocity, 517); if (this.type == 184) this.localAI[0] = 60f; if (this.type == 535) this.localAI[0] = 60f; if (this.type == 185) this.localAI[0] = 1f; if (!this.immortal) { if (this.realLife >= 0) { Main.npc[this.realLife].life -= (int) dmg; this.life = Main.npc[this.realLife].life; this.lifeMax = Main.npc[this.realLife].lifeMax; } else this.life -= (int) dmg; } if ((double) knockBack > 0.0 && (double) this.knockBackResist > 0.0) { float num2 = knockBack * this.knockBackResist; if ((double) num2 > 8.0) num2 = 8f + (num2 - 8f) * 0.9f; if ((double) num2 > 10.0) num2 = 10f + (num2 - 10f) * 0.8f; if ((double) num2 > 12.0) num2 = 12f + (num2 - 12f) * 0.7f; if ((double) num2 > 14.0) num2 = 14f + (num2 - 14f) * 0.6f; if ((double) num2 > 16.0) num2 = 16f; if (crit) num2 *= 1.4f; int num3 = (int) dmg * 10; if (Main.expertMode) num3 = (int) dmg * 15; if (num3 > this.lifeMax) { if (hitDirection < 0 && (double) this.velocity.X > -(double) num2) { if ((double) this.velocity.X > 0.0) this.velocity.X -= num2; this.velocity.X -= num2; if ((double) this.velocity.X < -(double) num2) this.velocity.X = -num2; } else if (hitDirection > 0 && (double) this.velocity.X < (double) num2) { if ((double) this.velocity.X < 0.0) this.velocity.X += num2; this.velocity.X += num2; if ((double) this.velocity.X > (double) num2) this.velocity.X = num2; } if (this.type == 185) num2 *= 1.5f; float num4 = this.noGravity ? num2 * -0.5f : num2 * -0.75f; if ((double) this.velocity.Y > (double) num4) { this.velocity.Y += num4; if ((double) this.velocity.Y < (double) num4) this.velocity.Y = num4; } } else { if (!this.noGravity) this.velocity.Y = (float) (-(double) num2 * 0.75) * this.knockBackResist; else this.velocity.Y = (float) (-(double) num2 * 0.5) * this.knockBackResist; this.velocity.X = num2 * (float) hitDirection * this.knockBackResist; } } if ((this.type == 113 || this.type == 114) && this.life <= 0) { for (int index = 0; index < 200; ++index) { if (Main.npc[index].active && (Main.npc[index].type == 113 || Main.npc[index].type == 114)) Main.npc[index].HitEffect(hitDirection, dmg); } } else this.HitEffect(hitDirection, dmg); if (this.HitSound != null) Main.PlaySound(this.HitSound, this.position); if (this.realLife >= 0) Main.npc[this.realLife].checkDead(); else this.checkDead(); return dmg; } public void HitEffect(int hitDirection = 0, double dmg = 10.0) { // ISSUE: unable to decompile the method. } public static int CountNPCS(int Type) { int num = 0; for (int index = 0; index < 200; ++index) { if (Main.npc[index].active && Main.npc[index].type == Type) ++num; } return num; } public static bool AnyNPCs(int Type) { for (int index = 0; index < 200; ++index) { if (Main.npc[index].active && Main.npc[index].type == Type) return true; } return false; } public static int FindFirstNPC(int Type) { for (int index = 0; index < 200; ++index) { if (Main.npc[index].active && Main.npc[index].type == Type) return index; } return -1; } public static bool NearSpikeBall(int x, int y) { Microsoft.Xna.Framework.Rectangle rectangle1 = new Microsoft.Xna.Framework.Rectangle(x * 16 - 300, y * 16 - 300, 600, 600); for (int index = 0; index < 200; ++index) { if (Main.npc[index].active && Main.npc[index].aiStyle == 20) { Microsoft.Xna.Framework.Rectangle rectangle2 = new Microsoft.Xna.Framework.Rectangle((int) Main.npc[index].ai[1], (int) Main.npc[index].ai[2], 20, 20); if (rectangle1.Intersects(rectangle2)) return true; } } return false; } public int FindBuffIndex(int type) { if (this.buffImmune[type]) return -1; for (int index = 0; index < 5; ++index) { if (this.buffTime[index] >= 1 && this.buffType[index] == type) return index; } return -1; } public void AddBuff(int type, int time, bool quiet = false) { if (this.buffImmune[type]) return; if (!quiet) { switch (Main.netMode) { case 1: NetMessage.SendData(53, number: this.whoAmI, number2: ((float) type), number3: ((float) time)); break; case 2: NetMessage.SendData(54, number: this.whoAmI); break; } } int index1 = -1; for (int index2 = 0; index2 < 5; ++index2) { if (this.buffType[index2] == type) { if (this.buffTime[index2] >= time) return; this.buffTime[index2] = time; return; } } while (index1 == -1) { int b = -1; for (int index3 = 0; index3 < 5; ++index3) { if (!Main.debuff[this.buffType[index3]]) { b = index3; break; } } if (b == -1) return; for (int index4 = b; index4 < 5; ++index4) { if (this.buffType[index4] == 0) { index1 = index4; break; } } if (index1 == -1) this.DelBuff(b); } this.buffType[index1] = type; this.buffTime[index1] = time; } public void DelBuff(int b) { this.buffTime[b] = 0; this.buffType[b] = 0; for (int index1 = 0; index1 < 4; ++index1) { if (this.buffTime[index1] == 0 || this.buffType[index1] == 0) { for (int index2 = index1 + 1; index2 < 5; ++index2) { this.buffTime[index2 - 1] = this.buffTime[index2]; this.buffType[index2 - 1] = this.buffType[index2]; this.buffTime[index2] = 0; this.buffType[index2] = 0; } } } if (Main.netMode != 2) return; NetMessage.SendData(54, number: this.whoAmI); } public Microsoft.Xna.Framework.Rectangle getRect() => new Microsoft.Xna.Framework.Rectangle((int) this.position.X, (int) this.position.Y, this.width, this.height); public bool CanBeChasedBy(object attacker = null, bool ignoreDontTakeDamage = false) => this.active && this.chaseable && this.lifeMax > 5 && !this.dontTakeDamage | ignoreDontTakeDamage && !this.friendly && !this.immortal; public void moneyPing(Vector2 pos) { Main.PlaySound(38, pos); int Type = 244; if ((double) this.extraValue >= 1000000.0) Type = 247; else if ((double) this.extraValue >= 10000.0) Type = 246; else if ((double) this.extraValue >= 100.0) Type = 245; for (int index1 = 0; index1 < 20; ++index1) { int index2 = Dust.NewDust(pos - new Vector2(1f, 2f), 10, 14, Type, Alpha: 254, Scale: 0.25f); Main.dust[index2].velocity *= 0.2f; } } public void IdleSounds() { if ((this.type == 239 || this.type == 240) && Main.rand.Next(900) == 0) Main.PlaySound(29, (int) this.position.X, (int) this.position.Y, Main.rand.Next(24, 26)); else if ((this.type == 62 || this.type == 156) && Main.rand.Next(700) == 0) Main.PlaySound(29, (int) this.position.X, (int) this.position.Y, Main.rand.Next(26, 30)); else if (this.type == 177 && Main.rand.Next(600) == 0) Main.PlaySound(29, (int) this.position.X, (int) this.position.Y, Main.rand.Next(30, 32)); else if (this.type == 226 && Main.rand.Next(800) == 0) Main.PlaySound(29, (int) this.position.X, (int) this.position.Y, 32); else if (this.type == 153 && Main.rand.Next(1000) == 0) Main.PlaySound(29, (int) this.position.X, (int) this.position.Y, 33); else if (this.wet && (this.type == 63 || this.type == 64 || this.type == 103) && Main.rand.Next(1000) == 0) Main.PlaySound(29, (int) this.position.X, (int) this.position.Y, Main.rand.Next(34, 36)); else if ((this.type == 198 || this.type == 199) && Main.rand.Next(1000) == 0) Main.PlaySound(29, (int) this.position.X, (int) this.position.Y, Main.rand.Next(36, 38)); else if ((this.type == 170 || this.type == 180 || this.type == 171) && Main.rand.Next(600) == 0) Main.PlaySound(29, (int) this.position.X, (int) this.position.Y, Main.rand.Next(38, 41)); else if (this.type == 250 && Main.rand.Next(700) == 0) Main.PlaySound(29, (int) this.position.X, (int) this.position.Y, Main.rand.Next(41, 44)); else if (this.type == 508 && Main.rand.Next(800) == 0) Main.PlaySound(29, (int) this.position.X, (int) this.position.Y, 44); else if (this.type == 509 && Main.rand.Next(800) == 0) Main.PlaySound(29, (int) this.position.X, (int) this.position.Y, Main.rand.Next(44, 47)); else if (this.type == 494 && Main.rand.Next(600) == 0) Main.PlaySound(29, (int) this.position.X, (int) this.position.Y, 47); else if (this.type == 467 && Main.rand.Next(700) == 0) Main.PlaySound(29, (int) this.position.X, (int) this.position.Y, Main.rand.Next(48, 50)); else if (this.type == 468 && Main.rand.Next(700) == 0) Main.PlaySound(29, (int) this.position.X, (int) this.position.Y, Main.rand.Next(50, 53)); else if (this.type == 288 && Main.rand.Next(400) == 0) Main.PlaySound(29, (int) this.position.X, (int) this.position.Y, Main.rand.Next(53, 55)); else if ((this.type == 524 || this.type == 525 || this.type == 526 || this.type == 527) && Main.rand.Next(700) == 0) Main.PlaySound(29, (int) this.position.X, (int) this.position.Y, Main.rand.Next(55, 57)); else if ((this.type == 496 || this.type == 497) && Main.rand.Next(600) == 0) Main.PlaySound(29, (int) this.position.X, (int) this.position.Y, Main.rand.Next(57, 59)); else if (this.type == 389 && Main.rand.Next(800) == 0) Main.PlaySound(29, (int) this.position.X, (int) this.position.Y, Main.rand.Next(59, 61)); else if (this.type == 471 && Main.rand.Next(600) == 0) Main.PlaySound(29, (int) this.position.X, (int) this.position.Y, Main.rand.Next(61, 63)); else if (this.type == 482 && Main.rand.Next(600) == 0) Main.PlaySound(29, (int) this.position.X, (int) this.position.Y, Main.rand.Next(63, 66)); else if (this.type == 388 && Main.rand.Next(700) == 0) Main.PlaySound(29, (int) this.position.X, (int) this.position.Y, Main.rand.Next(66, 69)); else if (this.type == 520 && Main.rand.Next(800) == 0) Main.PlaySound(29, (int) this.position.X, (int) this.position.Y, Main.rand.Next(69, 73)); else if (this.type == 477 && Main.rand.Next(600) == 0) Main.PlaySound(29, (int) this.position.X, (int) this.position.Y, 73); else if (this.type == 258 && Main.rand.Next(700) == 0) Main.PlaySound(29, (int) this.position.X, (int) this.position.Y, Main.rand.Next(74, 78)); else if (this.type == 252 && Main.rand.Next(700) == 0) Main.PlaySound(29, (int) this.position.X, (int) this.position.Y, 78); else if (this.type == 469 && Main.rand.Next(700) == 0) Main.PlaySound(29, (int) this.position.X, (int) this.position.Y, Main.rand.Next(79, 81)); else if ((this.type == 253 || this.type == 82) && Main.rand.Next(700) == 0) Main.PlaySound(29, (int) this.position.X, (int) this.position.Y, Main.rand.Next(81, 84)); else if (this.type >= 498 && this.type <= 506 && Main.rand.Next(600) == 0) { Main.PlaySound(29, (int) this.position.X, (int) this.position.Y, Main.rand.Next(84, 86)); } else { if (this.type != 391 || Main.rand.Next(700) != 0) return; Main.PlaySound(29, (int) this.position.X, (int) this.position.Y, Main.rand.Next(86, 87)); } } private void UpdateAltTexture() { if (!this.townNPC) return; int altTexture = this.altTexture; this.altTexture = !BirthdayParty.PartyIsUp ? 0 : 1; if (this.type == 441 || this.type == 453) this.altTexture = 0; if (altTexture == 0 && this.altTexture == 1) { for (int index = 0; index < 20; ++index) Dust.NewDust(this.position, this.width, this.height / 4, 139 + Main.rand.Next(4), SpeedY: -2f); } if (altTexture != 1 || this.altTexture != 0) return; for (int index = 0; index < 4; ++index) Utils.PoofOfSmoke(this.position); } public void UpdateNPC(int i) { this.whoAmI = i; if (!this.active) return; this.UpdateAltTexture(); if (this.type == 368) NPC.travelNPC = true; this.UpdateNPC_CastLights(); this.UpdateNPC_TeleportVisuals(); this.UpdateNPC_CritterSounds(); if (Main.netMode == 1 && (this.townNPC || this.type == 453) && this.type != 37 && this.npcNameLookup == (byte) 0) { this.npcNameLookup = (byte) 1; int number = -1; for (int index = 0; index < 200; ++index) { if (Main.npc[index] == this) { number = index; break; } } NetMessage.SendData(56, number: number); } if (Main.netMode == 1) { bool flag = false; int index1 = (int) ((double) this.position.X + (double) (this.width / 2)) / 16; int index2 = (int) ((double) this.position.Y + (double) (this.height / 2)) / 16; try { if (index1 >= 4) { if (index1 <= Main.maxTilesX - 4) { if (index2 >= 4) { if (index2 <= Main.maxTilesY - 4) { if (Main.tile[index1, index2] == null) flag = true; else if (Main.tile[index1 - 3, index2] == null) flag = true; else if (Main.tile[index1 + 3, index2] == null) flag = true; else if (Main.tile[index1, index2 - 3] == null) flag = true; else if (Main.tile[index1, index2 + 3] == null) flag = true; } } } } } catch { flag = true; } if (flag) return; } this.UpdateNPC_BuffFlagsReset(); this.UpdateNPC_BuffSetFlags(); this.UpdateNPC_SoulDrainDebuff(); this.UpdateNPC_BuffClearExpiredBuffs(); this.UpdateNPC_BuffApplyDOTs(); this.UpdateNPC_BloodMoonTransformations(); float maxFallSpeed; this.UpdateNPC_UpdateGravity(out maxFallSpeed); if (this.soundDelay > 0) --this.soundDelay; if (this.life <= 0) this.active = false; this.oldTarget = this.target; this.oldDirection = this.direction; this.oldDirectionY = this.directionY; float num1 = (float) (1.0 + (double) Math.Abs(this.velocity.X) / 3.0); if ((double) this.gfxOffY > 0.0) { this.gfxOffY -= num1 * this.stepSpeed; if ((double) this.gfxOffY < 0.0) this.gfxOffY = 0.0f; } else if ((double) this.gfxOffY < 0.0) { this.gfxOffY += num1 * this.stepSpeed; if ((double) this.gfxOffY > 0.0) this.gfxOffY = 0.0f; } if ((double) this.gfxOffY > 16.0) this.gfxOffY = 16f; if ((double) this.gfxOffY < -16.0) this.gfxOffY = -16f; this.TryPortalJumping(); this.IdleSounds(); this.AI(); if (Main.netMode != 2 && (double) this.extraValue > 0.0) { int Type = 244; float num2 = 30f; if ((double) this.extraValue >= 1000000.0) { Type = 247; num2 *= 0.25f; } else if ((double) this.extraValue >= 10000.0) { Type = 246; num2 *= 0.5f; } else if ((double) this.extraValue >= 100.0) { Type = 245; num2 *= 0.75f; } if (Main.rand.Next((int) num2) == 0) { int index = Dust.NewDust(this.position, this.width, this.height, Type, Alpha: 254, Scale: 0.25f); Main.dust[index].velocity *= 0.1f; } } for (int index = 0; index < 256; ++index) { if (this.immune[index] > 0) --this.immune[index]; } if (!this.noGravity && !this.noTileCollide) { int x = (int) ((double) this.position.X + (double) (this.width / 2)) / 16; int y = (int) ((double) this.position.Y + (double) (this.height / 2)) / 16; if (WorldGen.InWorld(x, y) && Main.tile[x, y] == null) { NPC.gravity = 0.0f; this.velocity.X = 0.0f; this.velocity.Y = 0.0f; } } if (!this.noGravity) { this.velocity.Y += NPC.gravity; if ((double) this.velocity.Y > (double) maxFallSpeed) this.velocity.Y = maxFallSpeed; } if ((double) this.velocity.X < 0.005 && (double) this.velocity.X > -0.005) this.velocity.X = 0.0f; if (Main.netMode != 1 && this.type != 37 && (this.friendly || this.type == 46 || this.type == 55 || this.type == 74 || this.type == 148 || this.type == 149 || this.type == 230 || this.type == 297 || this.type == 298 || this.type == 299 || this.type == 303 || this.type == 355 || this.type == 356 || this.type == 358 || this.type == 359 || this.type == 360 || this.type == 361 || this.type == 362 || this.type == 363 || this.type == 364 || this.type == 365 || this.type == 366 || this.type == 367 || this.type == 377 || this.type == 357 || this.type == 374 || this.type >= 442 && this.type <= 448 && this.type != 447) || this.type == 538 || this.type == 539 || this.type == 337 || this.type == 540 || this.type >= 484 && this.type <= 487) { if (this.townNPC) this.CheckDrowning(); this.CheckLifeRegen(); this.CheckMeleeCollision(); } if (!this.noTileCollide) { this.UpdateCollision(); } else { this.oldPosition = this.position; this.oldDirection = this.direction; this.position = this.position + this.velocity; if (this.onFire && this.boss && Main.netMode != 1 && Collision.WetCollision(this.position, this.width, this.height)) { for (int b = 0; b < 5; ++b) { if (this.buffType[b] == 24) this.DelBuff(b); } } } if (Main.netMode != 1 && !this.noTileCollide && this.lifeMax > 1 && Collision.SwitchTiles(this.position, this.width, this.height, this.oldPosition, 2) && (this.type == 46 || this.type == 148 || this.type == 149 || this.type == 303 || this.type == 361 || this.type == 362 || this.type == 364 || this.type == 366 || this.type == 367 || this.type >= 442 && this.type <= 448)) { this.ai[0] = 1f; this.ai[1] = 400f; this.ai[2] = 0.0f; } this.FindFrame(); this.UpdateNPC_UpdateTrails(); if (!this.active) this.netUpdate = true; if (Main.netMode == 2) { if (Main.npcStreamSpeed > 0 && !this.townNPC && (double) Math.Abs(this.velocity.X) + (double) Math.Abs(this.velocity.Y) > 1.0) { ++this.netStream; if ((int) this.netStream > Main.npcStreamSpeed) { for (int remoteClient = 0; remoteClient < (int) byte.MaxValue; ++remoteClient) { if (Main.player[remoteClient].active) { float num3 = Math.Abs(this.Center.X - Main.player[remoteClient].Center.X) + Math.Abs(this.Center.Y - Main.player[remoteClient].Center.Y); if ((double) num3 < 250.0) this.streamPlayer[remoteClient] -= (byte) 8; else if ((double) num3 < 500.0) this.streamPlayer[remoteClient] -= (byte) 4; else if ((double) num3 < 1000.0) this.streamPlayer[remoteClient] -= (byte) 2; else if ((double) num3 < 1500.0) --this.streamPlayer[remoteClient]; if (this.streamPlayer[remoteClient] <= (byte) 0) { this.streamPlayer[remoteClient] = (byte) 8; NetMessage.SendData(23, remoteClient, number: i); } } } } } if (this.townNPC) this.netSpam = 0; if (this.netUpdate2) this.netUpdate = true; if (!this.active) this.netSpam = 0; if (this.netUpdate) { if (this.boss) { Vector2 vector2 = this.oldPosition - this.position; if (this.netSpam <= 15) { this.netSpam += 5; NetMessage.SendData(23, number: i); this.netUpdate2 = false; } else this.netUpdate2 = true; } else if (this.netSpam <= 90) { this.netSpam += 30; NetMessage.SendData(23, number: i); this.netUpdate2 = false; } else this.netUpdate2 = true; } if (this.netSpam > 0) --this.netSpam; if (this.active && this.townNPC && NPC.TypeToHeadIndex(this.type) != -1) { if (this.homeless != this.oldHomeless || this.homeTileX != this.oldHomeTileX || this.homeTileY != this.oldHomeTileY) { byte householdStatus = WorldGen.TownManager.GetHouseholdStatus(this); NetMessage.SendData(60, number: i, number2: ((float) Main.npc[i].homeTileX), number3: ((float) Main.npc[i].homeTileY), number4: ((float) householdStatus)); } this.oldHomeless = this.homeless; this.oldHomeTileX = this.homeTileX; this.oldHomeTileY = this.homeTileY; } } this.CheckActive(); this.netUpdate = false; this.justHit = false; } private void UpdateNPC_UpdateTrails() { int num = NPCID.Sets.TrailingMode[this.type]; if (num == 0) { if ((double) this.localAI[3] <= 0.0) { this.localAI[3] = 2f; for (int index = this.oldPos.Length - 1; index > 0; --index) this.oldPos[index] = this.oldPos[index - 1]; this.oldPos[0] = this.position; } --this.localAI[3]; } if (num == 1) { for (int index = this.oldPos.Length - 1; index > 0; --index) this.oldPos[index] = this.oldPos[index - 1]; this.oldPos[0] = this.position; } if (num == 2) { if ((int) this.ai[0] == 4 || (double) this.ai[0] == 5.0 || (double) this.ai[0] == 6.0) { for (int index = this.oldPos.Length - 1; index > 0; --index) { this.oldPos[index] = this.oldPos[index - 1]; this.oldRot[index] = this.oldRot[index - 1]; } this.oldPos[0] = this.position; this.oldRot[0] = this.rotation; } else { for (int index = this.oldPos.Length - 1; index >= 0; --index) { this.oldPos[index] = this.position; this.oldRot[index] = this.rotation; } } } if (num == 3) { for (int index = this.oldPos.Length - 1; index > 0; --index) { this.oldPos[index] = this.oldPos[index - 1]; this.oldRot[index] = this.oldRot[index - 1]; } this.oldPos[0] = this.position; this.oldRot[0] = this.rotation; } if (num == 4) { for (int index = this.oldPos.Length - 1; index > 0; --index) { this.oldPos[index] = this.oldPos[index - 1]; Lighting.AddLight((int) this.position.X / 16, (int) this.position.Y / 16, 0.3f, 0.0f, 0.2f); } this.oldPos[0] = this.position; } else if (num == 5) { for (int index = this.oldPos.Length - 1; index > 0; --index) this.oldPos[index] = this.oldPos[index - 1]; this.oldPos[0] = this.position; } else if (num == 6) { for (int index = this.oldPos.Length - 1; index > 0; --index) this.oldPos[index] = this.oldPos[index - 1]; this.oldPos[0] = this.position; } else { if (num != 7) return; for (int index = this.oldPos.Length - 1; index > 0; --index) { this.oldPos[index] = this.oldPos[index - 1]; this.oldRot[index] = this.oldRot[index - 1]; } this.oldPos[0] = this.position; this.oldRot[0] = this.rotation; } } private void UpdateNPC_UpdateGravity(out float maxFallSpeed) { maxFallSpeed = 10f; NPC.gravity = 0.3f; if (this.type == 258) { NPC.gravity = 0.1f; if ((double) this.velocity.Y > 3.0) this.velocity.Y = 3f; } else if (this.type == 425 && (double) this.ai[2] == 1.0) { NPC.gravity = 0.1f; if ((double) this.velocity.Y > 2.0) this.velocity.Y = 2f; } else if ((this.type == 576 || this.type == 577) && (double) this.ai[0] > 0.0 && (double) this.ai[1] == 2.0) { NPC.gravity = 0.45f; if ((double) this.velocity.Y > 32.0) this.velocity.Y = 32f; } else if (this.type == 427 && (double) this.ai[2] == 1.0) { NPC.gravity = 0.1f; if ((double) this.velocity.Y > 4.0) this.velocity.Y = 4f; } else if (this.type == 426) { NPC.gravity = 0.1f; if ((double) this.velocity.Y > 3.0) this.velocity.Y = 3f; } else if (this.type == 541) NPC.gravity = 0.0f; float num1 = (float) (Main.maxTilesX / 4200); float num2 = (float) (((double) this.position.Y / 16.0 - (60.0 + 10.0 * (double) (num1 * num1))) / (Main.worldSurface / 6.0)); if ((double) num2 < 0.25) num2 = 0.25f; if ((double) num2 > 1.0) num2 = 1f; NPC.gravity *= num2; if (!this.wet) return; if (this.honeyWet) { NPC.gravity = 0.1f; maxFallSpeed = 4f; } else { NPC.gravity = 0.2f; maxFallSpeed = 7f; } } private void UpdateNPC_SoulDrainDebuff() { if (!this.soulDrain) return; int num = 1100; for (int index1 = 0; index1 < (int) byte.MaxValue; ++index1) { if (Main.player[index1].active && !Main.player[index1].dead && (double) (this.Center - Main.player[index1].position).Length() < (double) num && Main.player[index1].inventory[Main.player[index1].selectedItem].type == 3006 && Main.player[index1].itemAnimation > 0) { if (index1 == Main.myPlayer) ++Main.player[index1].soulDrain; if (Main.rand.Next(3) != 0) { Vector2 center = this.Center; center.X += (float) Main.rand.Next(-100, 100) * 0.05f; center.Y += (float) Main.rand.Next(-100, 100) * 0.05f; int index2 = Dust.NewDust(center + this.velocity, 1, 1, 235); Main.dust[index2].velocity *= 0.0f; Main.dust[index2].scale = (float) Main.rand.Next(70, 85) * 0.01f; Main.dust[index2].fadeIn = (float) (index1 + 1); } } } } private void UpdateNPC_BuffApplyDOTs() { if (this.dontTakeDamage) return; int amount = this.lifeRegenExpectedLossPerSecond; if (this.poisoned) { if (this.lifeRegen > 0) this.lifeRegen = 0; this.lifeRegen -= 4; } if (this.onFire) { if (this.lifeRegen > 0) this.lifeRegen = 0; this.lifeRegen -= 8; } if (this.onFrostBurn) { if (this.lifeRegen > 0) this.lifeRegen = 0; this.lifeRegen -= 16; if (amount < 2) amount = 2; } if (this.onFire2) { if (this.lifeRegen > 0) this.lifeRegen = 0; this.lifeRegen -= 12; } if (this.venom) { if (this.lifeRegen > 0) this.lifeRegen = 0; this.lifeRegen -= 12; if (amount < 2) amount = 2; } if (this.shadowFlame) { if (this.lifeRegen > 0) this.lifeRegen = 0; this.lifeRegen -= 30; if (amount < 5) amount = 5; } if (this.oiled) { int num1 = (this.onFire ? 2 : 0) + (this.onFrostBurn ? 4 : 0) + (this.onFire2 ? 3 : 0) + (this.shadowFlame ? 8 : 0); if (num1 > 0) { int num2 = num1 * 4 + 12; this.lifeRegen -= num2; int num3 = num2 / 6; if (amount < num3) amount = num3; } } if (this.javelined) { if (this.lifeRegen > 0) this.lifeRegen = 0; int num4 = 0; int num5 = 1; for (int index = 0; index < 1000; ++index) { if (Main.projectile[index].active && Main.projectile[index].type == 598 && (double) Main.projectile[index].ai[0] == 1.0 && (double) Main.projectile[index].ai[1] == (double) this.whoAmI) ++num4; } this.lifeRegen -= num4 * 2 * 3; if (amount < num4 * 3 / num5) amount = num4 * 3 / num5; } if (this.daybreak) { if (this.lifeRegen > 0) this.lifeRegen = 0; int num6 = 0; int num7 = 4; for (int index = 0; index < 1000; ++index) { if (Main.projectile[index].active && Main.projectile[index].type == 636 && (double) Main.projectile[index].ai[0] == 1.0 && (double) Main.projectile[index].ai[1] == (double) this.whoAmI) ++num6; } if (num6 == 0) num6 = 1; this.lifeRegen -= num6 * 2 * 100; if (amount < num6 * 100 / num7) amount = num6 * 100 / num7; } if (this.celled) { if (this.lifeRegen > 0) this.lifeRegen = 0; int num = 0; for (int index = 0; index < 1000; ++index) { if (Main.projectile[index].active && Main.projectile[index].type == 614 && (double) Main.projectile[index].ai[0] == 1.0 && (double) Main.projectile[index].ai[1] == (double) this.whoAmI) ++num; } this.lifeRegen -= num * 2 * 20; if (amount < num * 20) amount = num * 20 / 2; } if (this.dryadBane) { int num8 = 4; float num9 = 1f; if (this.lifeRegen > 0) this.lifeRegen = 0; if (NPC.downedBoss1) num9 += 0.1f; if (NPC.downedBoss2) num9 += 0.1f; if (NPC.downedBoss3) num9 += 0.1f; if (NPC.downedQueenBee) num9 += 0.1f; if (Main.hardMode) num9 += 0.4f; if (NPC.downedMechBoss1) num9 += 0.15f; if (NPC.downedMechBoss2) num9 += 0.15f; if (NPC.downedMechBoss3) num9 += 0.15f; if (NPC.downedPlantBoss) num9 += 0.15f; if (NPC.downedGolemBoss) num9 += 0.15f; if (NPC.downedAncientCultist) num9 += 0.15f; if (Main.expertMode) num9 *= Main.expertNPCDamage; int num10 = (int) ((double) num8 * (double) num9); this.lifeRegen -= 2 * num10; if (amount < num10) amount = num10 / 3; } if (this.soulDrain && this.realLife == -1) { if (this.lifeRegen > 0) this.lifeRegen = 0; this.lifeRegen -= 50; if (amount < 5) amount = 5; } if (this.lifeRegen <= -240 && amount < 2) amount = 2; this.lifeRegenCount += this.lifeRegen; while (this.lifeRegenCount >= 120) { this.lifeRegenCount -= 120; if (!this.immortal) { if (this.life < this.lifeMax) ++this.life; if (this.life > this.lifeMax) this.life = this.lifeMax; } } if (amount > 0) { while (this.lifeRegenCount <= -120 * amount) { this.lifeRegenCount += 120 * amount; int number = this.whoAmI; if (this.realLife >= 0) number = this.realLife; if (!Main.npc[number].immortal) Main.npc[number].life -= amount; CombatText.NewText(new Microsoft.Xna.Framework.Rectangle((int) this.position.X, (int) this.position.Y, this.width, this.height), CombatText.LifeRegenNegative, amount, dot: true); if (Main.npc[number].life <= 0 && !Main.npc[number].immortal) { Main.npc[number].life = 1; if (Main.netMode != 1) { Main.npc[number].StrikeNPCNoInteraction(9999, 0.0f, 0); if (Main.netMode == 2) NetMessage.SendData(28, number: number, number2: 9999f); } } } } else { while (this.lifeRegenCount <= -120) { this.lifeRegenCount += 120; int number = this.whoAmI; if (this.realLife >= 0) number = this.realLife; if (!Main.npc[number].immortal) --Main.npc[number].life; CombatText.NewText(new Microsoft.Xna.Framework.Rectangle((int) this.position.X, (int) this.position.Y, this.width, this.height), CombatText.LifeRegenNegative, 1, dot: true); if (Main.npc[number].life <= 0 && !Main.npc[number].immortal) { Main.npc[number].life = 1; if (Main.netMode != 1) { Main.npc[number].StrikeNPCNoInteraction(9999, 0.0f, 0); if (Main.netMode == 2) NetMessage.SendData(28, number: number, number2: 9999f); } } } } } private void UpdateNPC_BuffClearExpiredBuffs() { if (Main.netMode == 1) return; for (int b = 0; b < 5; ++b) { if (this.buffType[b] > 0 && this.buffTime[b] <= 0) { this.DelBuff(b); if (Main.netMode == 2) NetMessage.SendData(54, number: this.whoAmI); } } } private void UpdateNPC_BloodMoonTransformations() { if (Main.netMode == 1 || !Main.bloodMoon) return; bool flag = false; if ((double) this.value == 0.0) flag = true; if (this.type == 46 || this.type == 303 || this.type == 337 || this.type == 443 || this.type == 540) { if (WorldGen.crimson) this.Transform(464); else this.Transform(47); } else if (this.type == 55 || this.type == 230) { if (WorldGen.crimson) this.Transform(465); else this.Transform(57); } else if (this.type == 148 || this.type == 149) { if (WorldGen.crimson) this.Transform(470); else this.Transform(168); } if (!flag) return; this.value = 0.0f; } private void UpdateNPC_BuffSetFlags() { for (int index = 0; index < 5; ++index) { if (this.buffType[index] > 0 && this.buffTime[index] > 0) { --this.buffTime[index]; if (this.buffType[index] == 20) this.poisoned = true; if (this.buffType[index] == 70) this.venom = true; if (this.buffType[index] == 24) this.onFire = true; if (this.buffType[index] == 72) this.midas = true; if (this.buffType[index] == 69) this.ichor = true; if (this.buffType[index] == 31) this.confused = true; if (this.buffType[index] == 39) this.onFire2 = true; if (this.buffType[index] == 44) this.onFrostBurn = true; if (this.buffType[index] == 103) this.dripping = true; if (this.buffType[index] == 137) this.drippingSlime = true; if (this.buffType[index] == 119) this.loveStruck = true; if (this.buffType[index] == 120) this.stinky = true; if (this.buffType[index] == 151) this.soulDrain = true; if (this.buffType[index] == 153) this.shadowFlame = true; if (this.buffType[index] == 165) this.dryadWard = true; if (this.buffType[index] == 169) this.javelined = true; if (this.buffType[index] == 183) this.celled = true; if (this.buffType[index] == 186) this.dryadBane = true; if (this.buffType[index] == 189) this.daybreak = true; if (this.buffType[index] == 203) this.betsysCurse = true; if (this.buffType[index] == 204) this.oiled = true; } } } private void UpdateNPC_BuffFlagsReset() { this.lifeRegen = 0; this.soulDrain = false; this.poisoned = false; this.venom = false; this.shadowFlame = false; this.onFire = false; this.midas = false; this.ichor = false; this.onFrostBurn = false; this.onFire2 = false; this.confused = false; this.loveStruck = false; this.dryadWard = false; this.stinky = false; this.dripping = false; this.drippingSlime = false; this.daybreak = false; this.javelined = false; this.celled = false; this.dryadBane = false; this.betsysCurse = false; this.oiled = false; this.lifeRegenExpectedLossPerSecond = -1; } private void UpdateNPC_TeleportVisuals() { if ((double) this.teleportTime <= 0.0) return; if (this.teleportStyle == 0) { if ((double) Main.rand.Next(100) <= 100.0 * (double) this.teleportTime * 2.0) { int index = Dust.NewDust(new Vector2((float) this.getRect().X, (float) this.getRect().Y), this.getRect().Width, this.getRect().Height, 159); Main.dust[index].scale = this.teleportTime * 1.5f; Main.dust[index].noGravity = true; Main.dust[index].velocity *= 1.1f; } } else if (this.teleportStyle == 4) { this.teleportTime -= 0.02f; if ((double) Main.rand.Next(100) <= 100.0 * (double) this.teleportTime) { Dust dust = Main.dust[Dust.NewDust(this.position, this.width, this.height, 263)]; dust.color = PortalHelper.GetPortalColor(this.lastPortalColorIndex); dust.noLight = true; dust.noGravity = true; dust.scale = 1.2f; dust.fadeIn = 0.4f; } } this.teleportTime -= 0.005f; } private void UpdateNPC_CritterSounds() { if (Main.netMode == 2) return; if (this.type >= 362 && this.type <= 365) { if (!Main.dayTime || Main.rand.Next(200) != 0) return; Main.PlaySound(30, (int) this.position.X, (int) this.position.Y); } else if (this.type == 361 || this.type == 445) { if ((double) Math.Abs(this.velocity.X) >= 0.5 || Main.dayTime && (double) this.position.Y <= Main.worldSurface * 16.0 || Main.rand.Next(200) != 0) return; Main.PlaySound(31, (int) this.position.X, (int) this.position.Y); } else if (this.type == 74 || this.type == 297 || this.type == 298 || this.type == 442) { if (!Main.dayTime || Main.time >= 18000.0 || Main.rand.Next(400) != 0) return; if (this.type == 74) { if (Main.rand.Next(3) != 0) Main.PlaySound(32, (int) this.position.X, (int) this.position.Y, 14); else Main.PlaySound(32, (int) this.position.X, (int) this.position.Y, 18); } if (this.type == 297) Main.PlaySound(32, (int) this.position.X, (int) this.position.Y, 16); if (this.type == 298) { if (Main.rand.Next(3) != 0) Main.PlaySound(32, (int) this.position.X, (int) this.position.Y, 17); else Main.PlaySound(32, (int) this.position.X, (int) this.position.Y, 19); } if (this.type != 442) return; switch (Main.rand.Next(5)) { case 0: Main.PlaySound(32, (int) this.position.X, (int) this.position.Y, 16); break; case 1: Main.PlaySound(32, (int) this.position.X, (int) this.position.Y, 17); break; case 2: Main.PlaySound(32, (int) this.position.X, (int) this.position.Y, 19); break; case 3: Main.PlaySound(32, (int) this.position.X, (int) this.position.Y, 14); break; default: Main.PlaySound(32, (int) this.position.X, (int) this.position.Y, 18); break; } } else { if (this.type != 300 && this.type != 447 || Main.rand.Next(1800) != 0) return; Main.PlaySound(33, (int) this.position.X, (int) this.position.Y); } } private void UpdateNPC_CastLights() { if (this.type >= 442 && this.type <= 448 || this.type == 539) { Color color = Lighting.GetColor((int) this.Center.X / 16, (int) this.Center.Y / 16); if (color.R > (byte) 20 || color.B > (byte) 20 || color.G > (byte) 20) { int num1 = (int) color.R; if ((int) color.G > num1) num1 = (int) color.G; if ((int) color.B > num1) num1 = (int) color.B; int num2 = num1 / 30; if (Main.rand.Next(300) < num2) { int index = Dust.NewDust(this.position, this.width, this.height, 43, Alpha: 254, newColor: new Color((int) byte.MaxValue, (int) byte.MaxValue, 0), Scale: 0.5f); Main.dust[index].velocity *= 0.0f; } } } if (this.type >= 254 && this.type <= 261 || this.type == 160) { float num3 = (float) Main.rand.Next(28, 42) * 0.005f + (float) (270 - (int) Main.mouseTextColor) / 500f; float num4 = 0.1f; float num5 = (float) (0.300000011920929 + (double) num3 / 2.0); float num6 = 0.6f + num3; float num7 = 0.35f; Lighting.AddLight((int) this.Center.X / 16, (int) this.Center.Y / 16, num4 * num7, num5 * num7, num6 * num7); } if (this.type == 209) { float num8 = (float) Main.rand.Next(28, 42) * 0.005f + (float) (270 - (int) Main.mouseTextColor) / 500f; float num9 = 0.1f; float num10 = (float) (0.300000011920929 + (double) num8 / 2.0); float num11 = (float) (0.400000005960464 + (double) num8 / 2.0); float num12 = 0.35f; Lighting.AddLight((int) this.Center.X / 16, (int) this.Center.Y / 16, num9 * num12, num10 * num12, num11 * num12); if ((double) this.ai[0] == 12.0) Lighting.AddLight(this.Top, 0.3f, 0.1f, 0.1f); } if (this.type != 44) return; Lighting.AddLight((int) ((double) this.position.X + (double) (this.width / 2)) / 16, (int) ((double) this.position.Y + 4.0) / 16, 0.9f, 0.75f, 0.5f); } private void CheckMeleeCollision() { if (this.dontTakeDamageFromHostiles) return; int specialHitSetter = 1; if (this.immune[(int) byte.MaxValue] != 0) return; int num1 = 30; if (this.type == 548) num1 = 20; Microsoft.Xna.Framework.Rectangle hitbox1 = this.Hitbox; for (int index = 0; index < 200; ++index) { NPC npc = Main.npc[index]; if (npc.active && !npc.friendly && npc.damage > 0) { Microsoft.Xna.Framework.Rectangle hitbox2 = npc.Hitbox; float damageMultiplier = 1f; NPC.GetMeleeCollisionData(hitbox1, index, ref specialHitSetter, ref damageMultiplier, ref hitbox2); if (hitbox1.Intersects(hitbox2) && (this.type != 453 || !NPCID.Sets.Skeletons.Contains(npc.netID))) { int damage = npc.damage; int num2 = 6; int hitDirection1 = 1; if ((double) npc.position.X + (double) (npc.width / 2) > (double) this.position.X + (double) (this.width / 2)) hitDirection1 = -1; double num3 = this.StrikeNPCNoInteraction(damage, (float) num2, hitDirection1); if (Main.netMode != 0) NetMessage.SendData(28, number: this.whoAmI, number2: ((float) damage), number3: ((float) num2), number4: ((float) hitDirection1)); this.netUpdate = true; this.immune[(int) byte.MaxValue] = num1; if (this.dryadWard) { int Damage = (int) num3 / 3; int num4 = 6; int hitDirection2 = hitDirection1 * -1; npc.StrikeNPCNoInteraction(Damage, (float) num4, hitDirection2); if (Main.netMode != 0) NetMessage.SendData(28, number: index, number2: ((float) Damage), number3: ((float) num4), number4: ((float) hitDirection2)); npc.netUpdate = true; npc.immune[(int) byte.MaxValue] = num1; } } } } } private void CheckLifeRegen() { if (this.life >= this.lifeMax) return; ++this.friendlyRegen; if (this.dryadWard) this.friendlyRegen += 10; if (this.friendlyRegen <= 180) return; this.friendlyRegen = 0; ++this.life; this.netUpdate = true; } private void UpdateCollision() { this.Collision_WalkDownSlopes(); this.Collision_WaterCollision(this.Collision_LavaCollision()); if (!this.wet) { this.lavaWet = false; this.honeyWet = false; } if (this.wetCount > (byte) 0) --this.wetCount; bool fall = this.Collision_DecideFallThroughPlatforms(); this.oldVelocity = this.velocity; this.collideX = false; this.collideY = false; this.FishTransformationDuringRain(); Vector2 cPosition; int cWidth; int cHeight; this.GetTileCollisionParameters(out cPosition, out cWidth, out cHeight); Vector2 velocity = this.velocity; this.ApplyTileCollision(fall, cPosition, cWidth, cHeight); if (this.wet) { if (this.honeyWet) this.Collision_MoveWhileWet(velocity, this.honeyMovementSpeed); else if (this.lavaWet) this.Collision_MoveWhileWet(velocity, this.lavaMovementSpeed); else this.Collision_MoveWhileWet(velocity, this.waterMovementSpeed); } else this.Collision_MoveWhileDry(); if (this.aiStyle == 67) { this.Collision_MoveSnailOnSlopes(); } else { if (this.type == 72 || this.type == 247 || this.type == 248 || this.type >= 542 && this.type <= 545 || NPCID.Sets.BelongsToInvasionOldOnesArmy[this.type] && this.noGravity) return; this.Collision_MoveSlopesAndStairFall(fall); if (!this.townNPC) return; Collision.StepConveyorBelt((Entity) this, 1f); } } private void Collision_MoveWhileDry() { if (Collision.up) this.velocity.Y = 0.01f; if ((double) this.oldVelocity.X != (double) this.velocity.X) this.collideX = true; if ((double) this.oldVelocity.Y != (double) this.velocity.Y) this.collideY = true; this.oldPosition = this.position; this.oldDirection = this.direction; this.position = this.position + this.velocity; } private void ApplyTileCollision(bool fall, Vector2 cPosition, int cWidth, int cHeight) { if (this.type == 72) this.Collision_MoveBlazingWheel(); else if (this.type >= 542 && this.type <= 545) this.Collision_MoveSandshark(fall, cPosition, cWidth, cHeight); else if (this.type == 405 || this.type == 406) this.Collision_MoveStardustCell(fall, cPosition, cWidth, cHeight); else if (this.type == 417) this.Collision_MoveSolarSroller(fall, cPosition, cWidth, cHeight); else this.Collision_MoveNormal(fall, cPosition, cWidth, cHeight); } private void Collision_MoveSlopesAndStairFall(bool fall) { if (fall) this.stairFall = true; if (this.aiStyle == 7) { int x = (int) this.Center.X / 16; int y = (int) this.position.Y / 16; if (WorldGen.InWorld(x, y)) { int num = 16; bool flag = false; if (Main.tile[x, y] != null && Main.tile[x, y].active() && Main.tileSolid[(int) Main.tile[x, y].type]) flag = true; if (!Main.dayTime || Main.eclipse) flag = true; else if (this.homeTileY - (int) ((double) this.position.Y + (double) this.height) / 16 > num) flag = true; if (flag) this.stairFall = ((double) this.position.Y + (double) this.height - 8.0) / 16.0 < (double) this.homeTileY; } } Vector2 cPosition; int cWidth; int cHeight; this.GetTileCollisionParameters(out cPosition, out cWidth, out cHeight); Vector2 vector2 = this.position - cPosition; Vector4 vector4 = Collision.SlopeCollision(cPosition, this.velocity, cWidth, cHeight, NPC.gravity, this.stairFall); if (Collision.stairFall) this.stairFall = true; else if (!fall) this.stairFall = false; if (Collision.stair && (double) Math.Abs(vector4.Y - this.position.Y) > 8.0) { this.gfxOffY -= vector4.Y - this.position.Y; this.stepSpeed = 2f; } this.position.X = vector4.X; this.position.Y = vector4.Y; this.velocity.X = vector4.Z; this.velocity.Y = vector4.W; this.position = this.position + vector2; } private void Collision_MoveSnailOnSlopes() { Vector4 vector4 = Collision.SlopeCollision(this.position, this.velocity, this.width, this.height, NPC.gravity); if ((double) this.position.X != (double) vector4.X || (double) this.position.Y != (double) vector4.Y) { if ((double) this.ai[2] == 0.0 && (double) this.velocity.Y > 0.0 && (this.direction < 0 && (double) this.rotation == 1.57000005245209 && this.spriteDirection == 1 || this.direction > 0 && (double) this.rotation == 4.71000003814697 && this.spriteDirection == -1)) this.direction *= -this.direction; this.ai[2] = 2f; this.directionY = 1; this.rotation = 0.0f; } this.position.X = vector4.X; this.position.Y = vector4.Y; this.velocity.X = vector4.Z; this.velocity.Y = vector4.W; } private void Collision_MoveNormal(bool fall, Vector2 cPosition, int cWidth, int cHeight) => this.velocity = Collision.TileCollision(cPosition, this.velocity, cWidth, cHeight, fall, fall); private void Collision_MoveSandshark(bool fall, Vector2 cPosition, int cWidth, int cHeight) => this.velocity = Collision.AdvancedTileCollision(TileID.Sets.ForAdvancedCollision.ForSandshark, cPosition, this.velocity, cWidth, cHeight, fall, fall); private void Collision_MoveSolarSroller(bool fall, Vector2 cPosition, int cWidth, int cHeight) { this.velocity = Collision.TileCollision(cPosition, this.velocity, cWidth, cHeight, fall, fall); if ((double) this.ai[0] != 6.0 || !(this.velocity != this.oldVelocity)) return; --this.ai[2]; this.ai[3] = 1f; if ((double) this.ai[2] <= 0.0) return; if ((double) this.velocity.X != 0.0 && (double) this.velocity.X != (double) this.oldVelocity.X) { this.velocity.X = (float) (-(double) this.oldVelocity.X * 0.899999976158142); this.direction *= -1; } if ((double) this.velocity.Y == 0.0 || (double) this.velocity.Y == (double) this.oldVelocity.Y) return; this.velocity.Y = (float) (-(double) this.oldVelocity.Y * 0.899999976158142); } private void Collision_MoveStardustCell(bool fall, Vector2 cPosition, int cWidth, int cHeight) { this.velocity = Collision.TileCollision(cPosition, this.velocity, cWidth, cHeight, fall, fall); if (!(this.velocity != this.oldVelocity)) return; if ((double) this.velocity.X != 0.0 && (double) this.velocity.X != (double) this.oldVelocity.X) this.velocity.X = (float) (-(double) this.oldVelocity.X * 0.800000011920929); if ((double) this.velocity.Y == 0.0 || (double) this.velocity.Y == (double) this.oldVelocity.Y) return; this.velocity.Y = (float) (-(double) this.oldVelocity.Y * 0.800000011920929); } private void Collision_MoveBlazingWheel() { Vector2 Position = new Vector2(this.position.X + (float) (this.width / 2), this.position.Y + (float) (this.height / 2)); int Width = 12; int Height = 12; Position.X -= (float) (Width / 2); Position.Y -= (float) (Height / 2); this.velocity = Collision.noSlopeCollision(Position, this.velocity, Width, Height, true, true); } private void Collision_MoveWaterOrLavaOld( bool fall, Vector2 cPosition, int cWidth, int cHeight) { Vector2 velocity = this.velocity; this.velocity = Collision.TileCollision(cPosition, this.velocity, cWidth, cHeight, fall, fall); if (Collision.up) this.velocity.Y = 0.01f; Vector2 vector2 = this.velocity * 0.5f; if ((double) this.velocity.X != (double) velocity.X) { vector2.X = this.velocity.X; this.collideX = true; } if ((double) this.velocity.Y != (double) velocity.Y) { vector2.Y = this.velocity.Y; this.collideY = true; } this.oldPosition = this.position; this.oldDirection = this.direction; this.position = this.position + vector2; } private void Collision_MoveHoneyOld(bool fall, Vector2 cPosition, int cWidth, int cHeight) { Vector2 velocity = this.velocity; this.velocity = Collision.TileCollision(cPosition, this.velocity, cWidth, cHeight, fall, fall); if (Collision.up) this.velocity.Y = 0.01f; Vector2 vector2 = this.velocity * 0.25f; if ((double) this.velocity.X != (double) velocity.X) { vector2.X = this.velocity.X; this.collideX = true; } if ((double) this.velocity.Y != (double) velocity.Y) { vector2.Y = this.velocity.Y; this.collideY = true; } this.oldPosition = this.position; this.oldDirection = this.direction; this.position = this.position + vector2; } private void Collision_MoveWhileWet(Vector2 oldDryVelocity, float Slowdown = 0.5f) { if (Collision.up) this.velocity.Y = 0.01f; Vector2 vector2 = this.velocity * Slowdown; if ((double) this.velocity.X != (double) oldDryVelocity.X) { vector2.X = this.velocity.X; this.collideX = true; } if ((double) this.velocity.Y != (double) oldDryVelocity.Y) { vector2.Y = this.velocity.Y; this.collideY = true; } this.oldPosition = this.position; this.oldDirection = this.direction; this.position = this.position + vector2; } private void GetTileCollisionParameters(out Vector2 cPosition, out int cWidth, out int cHeight) { cPosition = this.position; cWidth = this.width; cHeight = this.height; if (this.type == 243) cHeight = 90; if (this.type == 290) cHeight = 40; if (this.type == 351) cHeight = 40; if (this.type == 482) cHeight = 40; if (this.type == 351 || this.type == 343 || this.type == 348 || this.type == 349) cHeight = 40; if (this.type == 391) { for (int index = 0; index < 200; ++index) { if (Main.npc[index].active && Main.npc[index].type == 390 && (double) Main.npc[index].ai[0] == (double) this.whoAmI) { cHeight = 62; break; } } } if (this.type == 415) { for (int index = 0; index < 200; ++index) { if (Main.npc[index].active && Main.npc[index].type == 416 && (double) Main.npc[index].ai[0] == (double) this.whoAmI) { cHeight = 62; break; } } } if (this.type == 576 || this.type == 577) { cPosition.X += 32f; cWidth -= 64; } if (cHeight == this.height) return; cPosition.Y += (float) (this.height - cHeight); } private void FishTransformationDuringRain() { if (Main.netMode == 1) return; if (this.type == 230 && this.wet) { int direction = this.direction; Vector2 velocity = this.velocity; this.Transform(55); this.direction = direction; this.velocity = velocity; this.wet = true; if ((double) this.velocity.Y >= 0.0) return; this.velocity.Y = 0.0f; } else { if (this.type != 55 || this.wet || !Main.raining) return; int direction = this.direction; Vector2 velocity = this.velocity; this.Transform(230); this.direction = direction; this.velocity = velocity; this.homeTileX = (int) ((double) this.position.X / 16.0) + 10 * this.direction; } } private bool Collision_DecideFallThroughPlatforms() { bool flag1 = false; if (this.type == 2 || this.type == -43 || this.type == 317 || this.type == 318 || this.type == 133) flag1 = true; if (this.aiStyle == 10) flag1 = true; if (this.aiStyle == 40) flag1 = true; if (this.type == 467) flag1 = true; if (this.type == 477) flag1 = true; if (this.aiStyle == 14) flag1 = true; if (this.type == 173) flag1 = true; if (this.type == 469 && (double) this.ai[2] == 1.0) flag1 = true; if (this.aiStyle == 3 && this.directionY == 1) flag1 = true; if (this.type == 210 || this.type == 211) flag1 = true; if (this.type == 50 && this.target >= 0 && (double) Main.player[this.target].position.Y > (double) this.position.Y + (double) this.height) flag1 = true; if (this.type == 247 || this.type == 248) flag1 = true; if (this.type == 245 && this.target >= 0 && (double) Main.player[this.target].position.Y > (double) this.position.Y + (double) this.height) flag1 = true; if (this.type >= 542 && this.type <= 545) flag1 = true; if (this.aiStyle == 107 && this.directionY == 1) flag1 = true; if (this.type == 418) flag1 = true; if (this.aiStyle == 87 && (double) Main.player[this.target].position.Y > (double) this.position.Y + (double) this.height) flag1 = true; if (this.aiStyle == 7) { int num = 16; bool flag2 = false; if (!Main.dayTime || Main.invasionType > 0 || Main.eclipse) flag2 = true; else if (this.homeTileY - (int) ((double) this.position.Y + (double) this.height) / 16 > num) flag1 = true; if (flag2 && ((double) this.position.Y + (double) this.height - 8.0) / 16.0 < (double) (this.homeTileY - 1)) flag1 = true; } return flag1; } private bool Collision_WaterCollision(bool lava) { bool flag; if (this.type == 72 || this.aiStyle == 21 || this.aiStyle == 67 || this.type == 376 || this.type == 579 || this.type == 541) { flag = false; this.wetCount = (byte) 0; lava = false; } else { flag = Collision.WetCollision(this.position, this.width, this.height); if (Collision.honey) this.honeyWet = true; } if (flag) { if (this.onFire && !this.lavaWet && Main.netMode != 1) { for (int b = 0; b < 5; ++b) { if (this.buffType[b] == 24) this.DelBuff(b); } } if (!this.wet && this.wetCount == (byte) 0) { this.wetCount = (byte) 10; if (!lava) { if (this.honeyWet) { for (int index1 = 0; index1 < 10; ++index1) { int index2 = Dust.NewDust(new Vector2(this.position.X - 6f, (float) ((double) this.position.Y + (double) (this.height / 2) - 8.0)), this.width + 12, 24, 152); --Main.dust[index2].velocity.Y; Main.dust[index2].velocity.X *= 2.5f; Main.dust[index2].scale = 1.3f; Main.dust[index2].alpha = 100; Main.dust[index2].noGravity = true; } if (this.aiStyle != 1 && this.type != 1 && this.type != 16 && this.type != 147 && this.type != 59 && this.type != 300 && this.aiStyle != 39 && !this.noGravity) Main.PlaySound(19, (int) this.position.X, (int) this.position.Y); } else { for (int index3 = 0; index3 < 30; ++index3) { int index4 = Dust.NewDust(new Vector2(this.position.X - 6f, (float) ((double) this.position.Y + (double) (this.height / 2) - 8.0)), this.width + 12, 24, Dust.dustWater()); Main.dust[index4].velocity.Y -= 4f; Main.dust[index4].velocity.X *= 2.5f; Main.dust[index4].scale *= 0.8f; Main.dust[index4].alpha = 100; Main.dust[index4].noGravity = true; } if (this.type != 376 && this.type != 579 && this.aiStyle != 1 && this.type != 1 && this.type != 16 && this.type != 147 && this.type != 59 && this.type != 300 && this.aiStyle != 39 && this.aiStyle != 68 && this.type != 362 && this.type != 364 && this.type != 361 && this.type != 445 && !this.noGravity) Main.PlaySound(19, (int) this.position.X, (int) this.position.Y, 0); } } else { for (int index5 = 0; index5 < 10; ++index5) { int index6 = Dust.NewDust(new Vector2(this.position.X - 6f, (float) ((double) this.position.Y + (double) (this.height / 2) - 8.0)), this.width + 12, 24, 35); Main.dust[index6].velocity.Y -= 1.5f; Main.dust[index6].velocity.X *= 2.5f; Main.dust[index6].scale = 1.3f; Main.dust[index6].alpha = 100; Main.dust[index6].noGravity = true; } if (this.aiStyle != 1 && this.type != 1 && this.type != 16 && this.type != 147 && this.type != 59 && this.type != 300 && this.aiStyle != 39 && !this.noGravity) Main.PlaySound(19, (int) this.position.X, (int) this.position.Y); } } this.wet = true; } else if (this.wet) { this.velocity.X *= 0.5f; this.wet = false; if (this.wetCount == (byte) 0) { this.wetCount = (byte) 10; if (!this.lavaWet) { if (this.honeyWet) { for (int index7 = 0; index7 < 10; ++index7) { int index8 = Dust.NewDust(new Vector2(this.position.X - 6f, (float) ((double) this.position.Y + (double) (this.height / 2) - 8.0)), this.width + 12, 24, 152); --Main.dust[index8].velocity.Y; Main.dust[index8].velocity.X *= 2.5f; Main.dust[index8].scale = 1.3f; Main.dust[index8].alpha = 100; Main.dust[index8].noGravity = true; } if (this.aiStyle != 1 && this.type != 1 && this.type != 16 && this.type != 147 && this.type != 300 && this.type != 59 && this.aiStyle != 39 && !this.noGravity) Main.PlaySound(19, (int) this.position.X, (int) this.position.Y); } else { for (int index9 = 0; index9 < 30; ++index9) { int index10 = Dust.NewDust(new Vector2(this.position.X - 6f, (float) ((double) this.position.Y + (double) (this.height / 2) - 8.0)), this.width + 12, 24, Dust.dustWater()); Main.dust[index10].velocity.Y -= 4f; Main.dust[index10].velocity.X *= 2.5f; Main.dust[index10].scale *= 0.8f; Main.dust[index10].alpha = 100; Main.dust[index10].noGravity = true; } if (this.type != 376 && this.type != 579 && this.aiStyle != 1 && this.type != 1 && this.type != 16 && this.type != 59 && this.type != 300 && this.aiStyle != 39 && this.aiStyle != 68 && this.type != 362 && this.type != 364 && this.type != 361 && this.type != 445 && !this.noGravity) Main.PlaySound(19, (int) this.position.X, (int) this.position.Y, 0); } } else { for (int index11 = 0; index11 < 10; ++index11) { int index12 = Dust.NewDust(new Vector2(this.position.X - 6f, (float) ((double) this.position.Y + (double) (this.height / 2) - 8.0)), this.width + 12, 24, 35); Main.dust[index12].velocity.Y -= 1.5f; Main.dust[index12].velocity.X *= 2.5f; Main.dust[index12].scale = 1.3f; Main.dust[index12].alpha = 100; Main.dust[index12].noGravity = true; } if (this.aiStyle != 1 && this.type != 1 && this.type != 16 && this.type != 59 && this.type != 300 && this.aiStyle != 39 && !this.noGravity) Main.PlaySound(19, (int) this.position.X, (int) this.position.Y); } } } return lava; } private bool Collision_LavaCollision() { int num = Collision.LavaCollision(this.position, this.width, this.height) ? 1 : 0; if (num == 0) return num != 0; this.lavaWet = true; if (this.lavaImmune) return num != 0; if (this.dontTakeDamage) return num != 0; if (Main.netMode == 1) return num != 0; if (this.immune[(int) byte.MaxValue] != 0) return num != 0; this.AddBuff(24, 420); this.immune[(int) byte.MaxValue] = 30; this.StrikeNPCNoInteraction(50, 0.0f, 0); if (Main.netMode != 2) return num != 0; if (Main.netMode == 0) return num != 0; NetMessage.SendData(28, number: this.whoAmI, number2: 50f); return num != 0; } private void Collision_WalkDownSlopes() { Vector2 velocity = this.velocity; Vector4 vector4 = Collision.WalkDownSlope(this.position, this.velocity, this.width, this.height, NPC.gravity); this.position.X = vector4.X; this.position.Y = vector4.Y; this.velocity.X = vector4.Z; this.velocity.Y = vector4.W; } public static void setFireFlyChance() { if (Main.rand == null) Main.rand = new UnifiedRandom((int) DateTime.Now.Ticks); if (WorldGen.genRand.Next(9) == 0) { NPC.fireFlyChance = Main.rand.Next(5, 10); NPC.fireFlyFriendly = Main.rand.Next(1, 4); NPC.fireFlyMultiple = Main.rand.Next(3, 8); } else if (WorldGen.genRand.Next(3) == 0) { NPC.fireFlyChance = 999999; NPC.fireFlyFriendly = 999999; NPC.fireFlyMultiple = 999999; } else { NPC.fireFlyChance = Main.rand.Next(10, 60); NPC.fireFlyFriendly = Main.rand.Next(2, 15); NPC.fireFlyMultiple = Main.rand.Next(6, 30); } NPC.butterflyChance = Main.rand.Next(1, 25); if (WorldGen.genRand.Next(3) != 0) return; NPC.butterflyChance = 999999; } public Color GetAlpha(Color newColor) { float num1 = (float) ((int) byte.MaxValue - this.alpha) / (float) byte.MaxValue; int r1 = (int) ((double) newColor.R * (double) num1); int g1 = (int) ((double) newColor.G * (double) num1); int b1 = (int) ((double) newColor.B * (double) num1); int a = (int) newColor.A - this.alpha; if (this.type == 402) return new Color((int) byte.MaxValue, (int) byte.MaxValue, (int) byte.MaxValue, (int) byte.MaxValue); if (this.type == 484) return new Color(250, 250, 250, 200); if (this.type >= 542 && this.type <= 545 && r1 + g1 + b1 > 10 && r1 + g1 + b1 >= 60) { r1 *= 2; g1 *= 2; b1 *= 2; if (r1 > (int) byte.MaxValue) r1 = (int) byte.MaxValue; if (g1 > (int) byte.MaxValue) g1 = (int) byte.MaxValue; if (b1 > (int) byte.MaxValue) b1 = (int) byte.MaxValue; } if (this.type >= 454 && this.type <= 459 || this.type == 521) { newColor = Color.Lerp(newColor, Color.White, 0.4f); newColor.A = (byte) 150; newColor *= (float) a / (float) byte.MaxValue; return newColor; } if (this.type == 440) { byte num2 = 180; if (Main.expertMode) num2 = (byte) 210; byte num3 = (byte) ((double) num2 * (double) num1); return new Color((int) num3, (int) num3, (int) num3, (int) num3); } if (this.type == 516) return new Color(this.alpha, this.alpha, this.alpha, this.alpha); if (this.type == 522) return new Color((int) byte.MaxValue - this.alpha, (int) byte.MaxValue - this.alpha, (int) byte.MaxValue - this.alpha, (int) byte.MaxValue - this.alpha); if (this.type == 523) return new Color((int) byte.MaxValue - this.alpha, (int) byte.MaxValue - this.alpha, (int) byte.MaxValue - this.alpha, (int) byte.MaxValue - this.alpha); if (this.type == 395 || this.type == 519) { newColor = Color.Lerp(newColor, Color.White, 0.4f); return newColor; } if (this.type == 370 && (double) this.ai[0] != -1.0 && (double) this.ai[0] < 9.0) { float num4 = MathHelper.Lerp(num1, 1f, 0.25f); if ((double) num4 > 1.0) num4 = 1f; b1 = (int) ((double) newColor.B * (double) num4); } if (this.type == 30) return new Color(250, 250, 250, 100); if (this.type == 25 || this.type == 30 || this.type == 59 || this.type == 60) return new Color(200, 200, 200, 0); if (this.type == 360) { int r2 = (int) newColor.R; int g2 = (int) newColor.G; int b2 = (int) newColor.B; if (r2 < 75) r2 = 75; if (g2 < 175) g2 = 175; if (b2 < (int) byte.MaxValue) b2 = (int) byte.MaxValue; return new Color(r2, g2, b2, (int) byte.MaxValue); } if (this.type == 352) return new Color((int) byte.MaxValue, (int) byte.MaxValue, (int) byte.MaxValue, 200); if (this.type == 72) { r1 = (int) newColor.R; g1 = (int) newColor.G; b1 = (int) newColor.B; } else { if (this.type == 288) return new Color(200, 200, 200, 0); if (this.type == 289) return new Color(250, 250, 250, 50); if (this.type >= 254 && this.type <= 261) { b1 = (int) byte.MaxValue; if (r1 < 100) r1 = 100; if (g1 < 150) g1 = 150; } else if (this.type == 374) { b1 = (int) byte.MaxValue; if (r1 < 100) r1 = 100; if (g1 < 150) g1 = 150; } else { if (this.type == 549) { newColor = Color.Lerp(newColor, Color.White, 0.4f); newColor *= (float) a / (float) byte.MaxValue; return newColor; } if (this.type == 64 || this.type == 63 || this.type == 75 || this.type == 103 || this.type == 400) { r1 = (int) ((double) newColor.R * 1.5); g1 = (int) ((double) newColor.G * 1.5); b1 = (int) ((double) newColor.B * 1.5); if (r1 > (int) byte.MaxValue) r1 = (int) byte.MaxValue; if (g1 > (int) byte.MaxValue) g1 = (int) byte.MaxValue; if (b1 > (int) byte.MaxValue) b1 = (int) byte.MaxValue; } } } if (a < 0) a = 0; if (a > (int) byte.MaxValue) a = (int) byte.MaxValue; return new Color(r1, g1, b1, a); } public Color GetColor(Color newColor) { int r = (int) this.color.R - ((int) byte.MaxValue - (int) newColor.R); int g = (int) this.color.G - ((int) byte.MaxValue - (int) newColor.G); int b = (int) this.color.B - ((int) byte.MaxValue - (int) newColor.B); int a = (int) this.color.A - ((int) byte.MaxValue - (int) newColor.A); if (r < 0) r = 0; if (r > (int) byte.MaxValue) r = (int) byte.MaxValue; if (g < 0) g = 0; if (g > (int) byte.MaxValue) g = (int) byte.MaxValue; if (b < 0) b = 0; if (b > (int) byte.MaxValue) b = (int) byte.MaxValue; if (a < 0) a = 0; if (a > (int) byte.MaxValue) a = (int) byte.MaxValue; return new Color(r, g, b, a); } private string GetBirthdayDialog() { switch (this.type) { case 17: return Language.SelectRandom(Lang.CreateDialogFilter("MerchantSpecialText.Party")).Value; case 18: return Language.SelectRandom(Lang.CreateDialogFilter("NurseSpecialText.Party")).Value; case 19: return Language.SelectRandom(Lang.CreateDialogFilter("ArmsDealerSpecialText.Party")).Value; case 20: return Language.SelectRandom(Lang.CreateDialogFilter("DryadSpecialText.Party")).Value; case 22: return Language.SelectRandom(Lang.CreateDialogFilter("GuideSpecialText.Party")).Value; case 38: return Language.SelectRandom(Lang.CreateDialogFilter("DemolitionistSpecialText.Party")).Value; case 54: return Language.SelectRandom(Lang.CreateDialogFilter("ClothierSpecialText.Party")).Value; case 107: return Language.SelectRandom(Lang.CreateDialogFilter("GoblinTinkererSpecialText.Party")).Value; case 108: return Language.SelectRandom(Lang.CreateDialogFilter("WizardSpecialText.Party")).Value; case 124: return Language.SelectRandom(Lang.CreateDialogFilter("MechanicSpecialText.Party")).Value; case 142: return Language.SelectRandom(Lang.CreateDialogFilter("SantaClausSpecialText.Party")).Value; case 160: return Language.SelectRandom(Lang.CreateDialogFilter("TruffleSpecialText.Party")).Value; case 178: return Language.SelectRandom(Lang.CreateDialogFilter("SteampunkerSpecialText.Party")).Value; case 207: return Language.SelectRandom(Lang.CreateDialogFilter("DyeTraderSpecialText.Party")).Value; case 208: return Language.SelectRandom(Lang.CreateDialogFilter("PartyGirlSpecialText.Party")).Value; case 209: return Language.SelectRandom(Lang.CreateDialogFilter("CyborgSpecialText.Party")).Value; case 227: return Language.SelectRandom(Lang.CreateDialogFilter("PainterSpecialText.Party")).Value; case 228: return Language.SelectRandom(Lang.CreateDialogFilter("WitchDoctorSpecialText.Party")).Value; case 229: return Language.SelectRandom(Lang.CreateDialogFilter("PirateSpecialText.Party")).Value; case 353: return Language.SelectRandom(Lang.CreateDialogFilter("StylistSpecialText.Party")).Value; case 368: return Language.SelectRandom(Lang.CreateDialogFilter("TravellingMerchantSpecialText.Party")).Value; case 369: return Language.SelectRandom(Lang.CreateDialogFilter("AnglerSpecialText.Party")).Value; case 550: return Language.SelectRandom(Lang.CreateDialogFilter("DD2BartenderSpecialText.Party")).Value; default: return ""; } } public string GetChat() { Recipe.FindRecipes(); bool flag1 = false; bool flag2 = false; bool flag3 = false; bool flag4 = false; bool flag5 = false; bool flag6 = false; bool flag7 = false; bool flag8 = false; bool flag9 = false; bool flag10 = false; bool flag11 = false; bool flag12 = false; bool flag13 = false; bool flag14 = false; bool flag15 = false; bool flag16 = false; object substitutionObject = Lang.CreateDialogSubstitutionObject(this); bool flag17 = false; for (int index = 0; index < 200; ++index) { if (Main.npc[index].active) { if (Main.npc[index].type == 17) flag1 = true; else if (Main.npc[index].type == 18) flag2 = true; else if (Main.npc[index].type == 19) flag3 = true; else if (Main.npc[index].type == 20) flag4 = true; else if (Main.npc[index].type == 37) flag5 = true; else if (Main.npc[index].type == 38) flag6 = true; else if (Main.npc[index].type == 124) flag7 = true; else if (Main.npc[index].type == 107) flag8 = true; else if (Main.npc[index].type == 54) flag9 = true; else if (Main.npc[index].type == 160) flag10 = true; else if (Main.npc[index].type == 178) flag11 = true; else if (Main.npc[index].type == 229) flag12 = true; else if (Main.npc[index].type == 209) flag13 = true; else if (Main.npc[index].type == 208) flag14 = true; else if (Main.npc[index].type == 353) flag15 = true; else if (Main.npc[index].type == 22) flag16 = true; else if (Main.npc[index].type == 2) { flag17 = true; } else { int type = Main.npc[index].type; } } } string str = ""; if (this.type == 17) { if (BirthdayParty.PartyIsUp && Main.rand.Next(3) == 0) str = this.GetBirthdayDialog(); else if (!NPC.downedBoss1 && Main.rand.Next(3) == 0) str = Main.player[Main.myPlayer].statLifeMax >= 200 ? (Main.player[Main.myPlayer].statDefense > 10 ? Lang.dialog(3) : Lang.dialog(2)) : Lang.dialog(1); else if (Main.dayTime) { if (Main.time < 16200.0) { switch (Main.rand.Next(3)) { case 0: str = Lang.dialog(4); break; case 1: str = Lang.dialog(5); break; default: str = Lang.dialog(6); break; } } else if (Main.time > 37800.0) { switch (Main.rand.Next(3)) { case 0: str = Lang.dialog(7); break; case 1: str = Lang.dialog(8); break; default: str = Lang.dialog(9); break; } } else { switch (Main.rand.Next(3)) { case 0: str = Lang.dialog(10); break; case 1: str = Lang.dialog(11); break; default: str = Lang.dialog(12); break; } } } else if (Main.bloodMoon) { if (flag2 & flag7 && Main.rand.Next(3) == 0) { str = Lang.dialog(13); } else { switch (Main.rand.Next(4)) { case 0: str = Lang.dialog(14); break; case 1: str = Lang.dialog(15); break; case 2: str = Lang.dialog(16); break; default: str = Lang.dialog(17); break; } } } else if (Main.time < 9720.0) str = Main.rand.Next(2) != 0 ? Lang.dialog(19) : Lang.dialog(18); else if (Main.time > 22680.0) { str = Main.rand.Next(2) != 0 ? Lang.dialog(21) : Lang.dialog(20); } else { switch (Main.rand.Next(3)) { case 0: str = Lang.dialog(22); break; case 1: str = Lang.dialog(23); break; default: str = Lang.dialog(24); break; } } } else if (this.type == 18) { if (BirthdayParty.PartyIsUp && Main.rand.Next(3) == 0) str = this.GetBirthdayDialog(); else if (Main.bloodMoon) { if ((double) Main.player[Main.myPlayer].statLife < (double) Main.player[Main.myPlayer].statLifeMax2 * 0.66) { switch (Main.rand.Next(3)) { case 0: str = Lang.dialog(25); break; case 1: str = Lang.dialog(26); break; default: str = Lang.dialog(27); break; } } else { switch (Main.rand.Next(4)) { case 0: str = Lang.dialog(28); break; case 1: str = Lang.dialog(29); break; case 2: str = Lang.dialog(30); break; default: str = Lang.dialog(31); break; } } } else if (Main.rand.Next(3) == 0 && !NPC.downedBoss3) str = Lang.dialog(32); else if (flag6 && Main.rand.Next(4) == 0) str = Lang.dialog(33); else if (flag3 && Main.rand.Next(4) == 0) str = Lang.dialog(34); else if (flag17 && Main.rand.Next(4) == 0) str = Lang.dialog(35); else if ((double) Main.player[Main.myPlayer].statLife < (double) Main.player[Main.myPlayer].statLifeMax2 * 0.33) { switch (Main.rand.Next(5)) { case 0: str = Lang.dialog(36); break; case 1: str = Lang.dialog(37); break; case 2: str = Lang.dialog(38); break; case 3: str = Lang.dialog(39); break; default: str = Lang.dialog(40); break; } } else if ((double) Main.player[Main.myPlayer].statLife < (double) Main.player[Main.myPlayer].statLifeMax2 * 0.66) { switch (Main.rand.Next(7)) { case 0: str = Lang.dialog(41); break; case 1: str = Lang.dialog(42); break; case 2: str = Lang.dialog(43); break; case 3: str = Lang.dialog(44); break; case 4: str = Lang.dialog(45); break; case 5: str = Lang.dialog(46); break; default: str = Lang.dialog(47); break; } } else { LocalizedText[] all = Language.FindAll(Lang.CreateDialogFilter("NurseChatter.", substitutionObject)); int num = Main.rand.Next(4 + all.Length); str = num < 4 ? (num != 0 ? (num != 1 ? (num != 2 ? Lang.dialog(51) : Lang.dialog(50)) : Lang.dialog(49)) : Lang.dialog(48)) : all[num - 4].FormatWith(substitutionObject); } } else if (this.type == 19) { if (BirthdayParty.PartyIsUp && Main.rand.Next(3) == 0) str = this.GetBirthdayDialog(); else if (NPC.downedBoss3 && !Main.hardMode) str = Lang.dialog(58); else if (flag2 && Main.rand.Next(5) == 0) str = Lang.dialog(59); else if (flag2 && Main.rand.Next(5) == 0) str = Lang.dialog(60); else if (flag4 && Main.rand.Next(5) == 0) str = Lang.dialog(61); else if (flag6 && Main.rand.Next(5) == 0) str = Lang.dialog(62); else if (flag6 && Main.rand.Next(5) == 0) str = Lang.dialog(63); else if (Main.bloodMoon) { str = Main.rand.Next(2) != 0 ? Lang.dialog(65) : Lang.dialog(64); } else { switch (Main.rand.Next(3)) { case 0: str = Lang.dialog(66); break; case 1: str = Lang.dialog(67); break; default: str = Lang.dialog(68); break; } } } else if (this.type == 20) { if (BirthdayParty.PartyIsUp && Main.rand.Next(3) == 0) str = this.GetBirthdayDialog(); else if (DD2Event.DownedInvasionT1 && Main.rand.Next(6) == 0) str = !DD2Event.DownedInvasionT2 ? Language.GetTextValueWith("DryadSpecialText.AfterDD2Tier1", substitutionObject) : Language.GetTextValueWith("DryadSpecialText.AfterDD2Tier2", substitutionObject); else if (!NPC.downedBoss2 && Main.rand.Next(3) == 0) str = !WorldGen.crimson ? Lang.dialog(69) : Lang.dialog(332); else if (flag3 && Main.rand.Next(6) == 0) str = Lang.dialog(70); else if (flag1 && Main.rand.Next(6) == 0) str = Lang.dialog(71); else if (flag5 && Main.rand.Next(6) == 0) str = Lang.dialog(72); else if (flag10 && Main.rand.Next(6) == 0) str = Lang.dialog(238); else if (Main.bloodMoon) { switch (Main.rand.Next(4)) { case 0: str = Lang.dialog(73); break; case 1: str = Lang.dialog(74); break; case 2: str = Lang.dialog(75); break; default: str = Lang.dialog(76); break; } } else { switch (Main.rand.Next(5)) { case 0: str = !WorldGen.crimson ? Lang.dialog(77) : Lang.dialog(333); break; case 1: str = Lang.dialog(78); break; case 2: str = Lang.dialog(79); break; case 3: str = Lang.dialog(80); break; default: str = Lang.dialog(81); break; } } } else if (this.type == 37) { if (Main.dayTime) { switch (Main.rand.Next(3)) { case 0: str = Lang.dialog(82); break; case 1: str = Lang.dialog(83); break; default: str = Lang.dialog(84); break; } } else if (Main.player[Main.myPlayer].statLifeMax < 300 || Main.player[Main.myPlayer].statDefense < 10) { switch (Main.rand.Next(4)) { case 0: str = Lang.dialog(85); break; case 1: str = Lang.dialog(86); break; case 2: str = Lang.dialog(87); break; default: str = Lang.dialog(88); break; } } else { switch (Main.rand.Next(4)) { case 0: str = Lang.dialog(89); break; case 1: str = Lang.dialog(90); break; case 2: str = Lang.dialog(91); break; default: str = Lang.dialog(92); break; } } } else if (this.type == 38) { if (BirthdayParty.PartyIsUp && Main.rand.Next(3) == 0) str = this.GetBirthdayDialog(); else if (!NPC.downedBoss2 && Main.rand.Next(3) == 0) str = Lang.dialog(93); else if (Main.bloodMoon) { switch (Main.rand.Next(3)) { case 0: str = Lang.dialog(94); break; case 1: str = Lang.dialog(95); break; default: str = Lang.dialog(96); break; } } else if ((DD2Event.DownedInvasionT1 || DD2Event.Ongoing) && Main.rand.Next(5) == 0) str = Language.GetTextValueWith("DemolitionistSpecialText.AfterDD2Start", substitutionObject); else if (flag3 && Main.rand.Next(5) == 0) str = Lang.dialog(97); else if (flag3 && Main.rand.Next(5) == 0) str = Lang.dialog(98); else if (flag2 && Main.rand.Next(4) == 0) str = Lang.dialog(99); else if (flag4 && Main.rand.Next(4) == 0) str = Lang.dialog(100); else if (!Main.dayTime) { switch (Main.rand.Next(4)) { case 0: str = Lang.dialog(101); break; case 1: str = Lang.dialog(102); break; case 2: str = Lang.dialog(103); break; default: str = Lang.dialog(104); break; } } else { switch (Main.rand.Next(5)) { case 0: str = Lang.dialog(105); break; case 1: str = Lang.dialog(106); break; case 2: str = Lang.dialog(107); break; case 3: str = Lang.dialog(108); break; default: str = Lang.dialog(109); break; } } } else if (this.type == 54) { if (BirthdayParty.PartyIsUp && Main.rand.Next(3) == 0) str = this.GetBirthdayDialog(); else if (!flag7 && Main.rand.Next(2) == 0) str = Lang.dialog(110); else if (flag10 && Main.rand.Next(6) == 0) str = Lang.dialog(237); else if (Main.bloodMoon) str = Lang.dialog(111); else if (flag2 && Main.rand.Next(4) == 0) str = Lang.dialog(112); else if (Main.player[Main.myPlayer].head == 24) { str = Lang.dialog(113); } else { switch (Main.rand.Next(6)) { case 0: str = Lang.dialog(114); break; case 1: str = Lang.dialog(115); break; case 2: str = Lang.dialog(116); break; case 3: str = Lang.dialog(117); break; case 4: str = Lang.dialog(118); break; default: str = Lang.dialog(119); break; } } } else if (this.type == 105) str = Lang.dialog(120); else if (this.type == 107) { if (this.homeless) { switch (Main.rand.Next(5)) { case 0: str = Lang.dialog(121); break; case 1: str = Lang.dialog(122); break; case 2: str = Lang.dialog(123); break; case 3: str = Lang.dialog(124); break; default: str = Lang.dialog(125); break; } } else if (BirthdayParty.PartyIsUp && Main.rand.Next(3) == 0) str = this.GetBirthdayDialog(); else if (flag7 && Main.rand.Next(5) == 0) str = Lang.dialog(126); else if (flag15 && Main.rand.Next(5) == 0) { str = Lang.dialog(309); } else { LocalizedText[] all = Language.FindAll(Lang.CreateDialogFilter("GoblinTinkererChatter.", substitutionObject)); int num = Main.rand.Next(all.Length + 5); if (num >= 5) str = all[num - 5].FormatWith(substitutionObject); else if (!Main.dayTime) { switch (num) { case 0: str = Lang.dialog((int) sbyte.MaxValue); break; case 1: str = Lang.dialog(128); break; case 2: str = Lang.dialog(129); break; case 3: str = Lang.dialog(130); break; default: str = Lang.dialog(131); break; } } else { switch (num) { case 0: str = Lang.dialog(132); break; case 1: str = Lang.dialog(133); break; case 2: str = Lang.dialog(134); break; case 3: str = Lang.dialog(135); break; default: str = Lang.dialog(136); break; } } } } else if (this.type == 106) str = Lang.dialog(137); else if (this.type == 108) { if (this.homeless) { int num = Main.rand.Next(3); if (num == 0) str = Lang.dialog(138); else if (num == 1 && !Main.player[Main.myPlayer].Male) { str = Lang.dialog(139); } else { switch (num) { case 1: str = Lang.dialog(140); break; case 2: str = Lang.dialog(141); break; } } } else if (BirthdayParty.PartyIsUp && Main.rand.Next(3) == 0) str = this.GetBirthdayDialog(); else if (DD2Event.DownedInvasionT1 && Main.rand.Next(6) == 0) str = Language.GetTextValueWith("WizardSpecialText.AfterDD2Tier1", substitutionObject); else if (Main.player[Main.myPlayer].Male & flag17 && Main.rand.Next(6) == 0) str = Lang.dialog(142); else if (Main.player[Main.myPlayer].Male & flag6 && Main.rand.Next(6) == 0) str = Lang.dialog(143); else if (Main.player[Main.myPlayer].Male & flag8 && Main.rand.Next(6) == 0) str = Lang.dialog(144); else if (!Main.player[Main.myPlayer].Male & flag2 && Main.rand.Next(6) == 0) str = Lang.dialog(145); else if (!Main.player[Main.myPlayer].Male & flag7 && Main.rand.Next(6) == 0) str = Lang.dialog(146); else if (!Main.player[Main.myPlayer].Male & flag4 && Main.rand.Next(6) == 0) str = Lang.dialog(147); else if (!Main.dayTime) { switch (Main.rand.Next(3)) { case 0: str = Lang.dialog(148); break; case 1: str = Lang.dialog(149); break; case 2: str = Lang.dialog(150); break; } } else { switch (Main.rand.Next(5)) { case 0: str = Lang.dialog(151); break; case 1: str = Lang.dialog(152); break; case 2: str = Lang.dialog(153); break; case 3: str = Lang.dialog(154); break; default: str = Lang.dialog(155); break; } } } else if (this.type == 123) str = Lang.dialog(156); else if (this.type == 124) { if (this.homeless) { switch (Main.rand.Next(4)) { case 0: str = Lang.dialog(157); break; case 1: str = Lang.dialog(158); break; case 2: str = Lang.dialog(159); break; default: str = Lang.dialog(160); break; } } else if (BirthdayParty.PartyIsUp && Main.rand.Next(3) == 0) str = this.GetBirthdayDialog(); else if (Main.bloodMoon) { switch (Main.rand.Next(4)) { case 0: str = Lang.dialog(161); break; case 1: str = Lang.dialog(162); break; case 2: str = Lang.dialog(163); break; default: str = Lang.dialog(164); break; } } else if (flag8 && Main.rand.Next(6) == 0) str = Lang.dialog(165); else if (flag3 && Main.rand.Next(6) == 0) { str = Lang.dialog(166); } else { LocalizedText[] all = Language.FindAll(Lang.CreateDialogFilter("MechanicChatter.", substitutionObject)); int num = Main.rand.Next(3 + all.Length); str = num < 3 ? (num != 0 ? (num != 1 ? Lang.dialog(169) : Lang.dialog(168)) : Lang.dialog(167)) : all[num - 3].FormatWith(substitutionObject); } } else if (this.type == 22) { if (BirthdayParty.PartyIsUp && Main.rand.Next(3) == 0) str = this.GetBirthdayDialog(); else if (Main.bloodMoon) { switch (Main.rand.Next(3)) { case 0: str = Lang.dialog(170); break; case 1: str = Lang.dialog(171); break; default: str = Lang.dialog(172); break; } } else if (!Main.dayTime) { str = Lang.dialog(173); } else { switch (Main.rand.Next(3)) { case 0: str = Lang.dialog(174); break; case 1: str = Lang.dialog(175); break; default: str = Lang.dialog(176); break; } } } else if (this.type == 142) { int num = Main.rand.Next(3); if (BirthdayParty.PartyIsUp && Main.rand.Next(3) == 0) { str = this.GetBirthdayDialog(); } else { switch (num) { case 0: str = Lang.dialog(224); break; case 1: str = Lang.dialog(225); break; case 2: str = Lang.dialog(226); break; } } } else if (this.type == 160) { int num = Main.rand.Next(6); if (BirthdayParty.PartyIsUp && Main.rand.Next(3) == 0) str = this.GetBirthdayDialog(); else if (flag4 && Main.rand.Next(6) == 0) str = Lang.dialog(232); else if (flag9 && Main.rand.Next(6) == 0) { str = Lang.dialog(236); } else { switch (num) { case 0: str = Lang.dialog(231); break; case 1: str = Lang.dialog(233); break; case 2: str = Lang.dialog(234); break; case 3: str = Lang.dialog(235); break; case 4: str = Lang.dialog(240); break; case 5: str = Lang.dialog(241); break; } } } else if (this.type == 178) { int num = Main.rand.Next(5); if (BirthdayParty.PartyIsUp && Main.rand.Next(3) == 0) str = this.GetBirthdayDialog(); else if (Main.bloodMoon && Main.rand.Next(3) == 0) str = Lang.dialog(245); else if (flag13 && Main.rand.Next(6) == 0) str = Lang.dialog(246); else if (flag12 && Main.rand.Next(6) == 0) { str = Lang.dialog(247); } else { switch (num) { case 0: str = Lang.dialog(242); break; case 1: str = Lang.dialog(243); break; case 2: str = Lang.dialog(244); break; case 3: str = Lang.dialog(248); break; case 4: str = Lang.dialog(249); break; } } } else if (this.type == 207) { int num = Main.rand.Next(3); if (BirthdayParty.PartyIsUp && Main.rand.Next(3) == 0) str = this.GetBirthdayDialog(); else if (flag12 && Main.rand.Next(6) == 0) { str = Lang.dialog(260); } else { switch (num) { case 0: str = Lang.dialog(257); break; case 1: str = Lang.dialog(258); break; case 2: str = Lang.dialog(259); break; } } } else if (this.type == 208) { int num = Main.rand.Next(7); if (BirthdayParty.PartyIsUp && Main.rand.Next(3) == 0) str = this.GetBirthdayDialog(); else if (DD2Event.DownedInvasionT1 && Main.rand.Next(5) == 0) str = Language.GetTextValueWith("PartyGirlSpecialText.AfterDD2Tier1", substitutionObject); else if (Main.player[Main.myPlayer].Male && Main.rand.Next(5) == 0) str = Lang.dialog(268); else if (flag15 && Main.rand.Next(5) == 0) { str = Lang.dialog(310); } else { switch (num) { case 0: str = Lang.dialog(265); break; case 1: str = Lang.dialog(266); break; case 2: str = Lang.dialog(267); break; case 3: str = Lang.dialog(269); break; case 4: str = Lang.dialog(270); break; case 5: str = Lang.dialog(271); break; case 6: str = Lang.dialog(272); break; } } } else if (this.type == 209) { if (BirthdayParty.PartyIsUp && Main.rand.Next(3) == 0) str = this.GetBirthdayDialog(); else if (flag12 && Main.rand.Next(6) == 0) str = Lang.dialog(284); else if (flag11 && Main.rand.Next(6) == 0) { str = Lang.dialog(283); } else { LocalizedText[] all = Language.FindAll(Lang.CreateDialogFilter("CyborgChatter.", substitutionObject)); int num = Main.rand.Next(5 + all.Length); if (num >= 5) str = all[num - 5].FormatWith(substitutionObject); else if (num == 0) str = Lang.dialog(280); else if (num == 1) str = Lang.dialog(281); else if (num == 2) str = Lang.dialog(282); else if (num == 3) str = Lang.dialog(285); else if (num == 4) str = Lang.dialog(286); } } else if (this.type == 227) { int num = Main.rand.Next(5); if (BirthdayParty.PartyIsUp && Main.rand.Next(3) == 0) str = this.GetBirthdayDialog(); else if (Main.hardMode && Main.rand.Next(7) == 0) str = Lang.dialog(250); else if (flag14 && Main.rand.Next(6) == 0) { str = Lang.dialog(251); } else { switch (num) { case 0: str = Lang.dialog(252); break; case 1: str = Lang.dialog(253); break; case 2: str = Lang.dialog(254); break; case 3: str = Lang.dialog((int) byte.MaxValue); break; case 4: str = Lang.dialog(256); break; } } } else if (this.type == 228) { int num = Main.rand.Next(4); if (BirthdayParty.PartyIsUp && Main.rand.Next(3) == 0) str = this.GetBirthdayDialog(); else if (flag2 && Main.rand.Next(6) == 0) { str = Lang.dialog(263); } else { switch (num) { case 0: str = Lang.dialog(261); break; case 1: str = Lang.dialog(262); break; case 2: str = Lang.dialog(264); break; case 3: str = Language.GetTextValueWith("WitchDoctorSpecialText.AfterDD2Tier1", substitutionObject); break; } } } else if (this.type == 229) { LocalizedText[] all = Language.FindAll(Lang.CreateDialogFilter("PirateChatter.", substitutionObject)); int num = Main.rand.Next(6 + all.Length); if (num >= 6) str = all[num - 6].FormatWith(substitutionObject); else if (BirthdayParty.PartyIsUp && Main.rand.Next(3) == 0) str = this.GetBirthdayDialog(); else if (!Main.player[Main.myPlayer].Male && Main.rand.Next(5) == 0) { str = Lang.dialog(276); } else { switch (num) { case 0: str = Lang.dialog(273); break; case 1: str = Lang.dialog(274); break; case 2: str = Lang.dialog(275); break; case 3: str = Lang.dialog(277); break; case 4: str = Lang.dialog(278); break; case 5: str = Lang.dialog(279); break; } } } else if (this.type == 354) str = Lang.dialog(Main.rand.Next(315, 319)); else if (this.type == 353) { if (BirthdayParty.PartyIsUp && Main.rand.Next(3) == 0) str = this.GetBirthdayDialog(); else if (Main.bloodMoon) { switch (Main.rand.Next(3)) { case 0: str = Lang.dialog(304); break; case 1: str = Lang.dialog(305); break; case 2: str = Lang.dialog(306); break; } } else if (Main.dayTime && Main.time < 16200.0 && Main.rand.Next(3) == 0) str = Lang.dialog(311); else if (Main.player[Main.myPlayer].Male && Main.rand.Next(3) == 0) { switch (Main.rand.Next(2)) { case 0: str = Lang.dialog(293); break; case 1: str = Lang.dialog(300); break; } } else if (!Main.player[Main.myPlayer].Male && Main.rand.Next(3) == 0) { switch (Main.rand.Next(3)) { case 0: str = Lang.dialog(291); break; case 1: str = Lang.dialog(292); break; case 2: str = Lang.dialog(312); break; } } else if (flag14 & flag7 & flag2 & flag3 && Main.rand.Next(5) == 0) str = Lang.dialog(307); else if (flag14 && Main.rand.Next(5) == 0) str = Lang.dialog(302); else if (flag6 && Main.rand.Next(5) == 0) str = Lang.dialog(303); else if (flag13 && Main.rand.Next(5) == 0) { str = Lang.dialog(308); } else { LocalizedText[] all = Language.FindAll(Lang.CreateDialogFilter("StylistChatter.", substitutionObject)); int num1 = Main.moonPhase < 3 ? 5 : 4; int num2 = Main.rand.Next(num1 + all.Length); if (num2 >= num1) str = all[num2 - num1].FormatWith(substitutionObject); else if (Main.moonPhase < 3) { switch (num2) { case 0: str = Lang.dialog(287); break; case 1: str = Lang.dialog(288); break; case 2: str = Lang.dialog(289); break; case 3: str = Lang.dialog(290); break; case 4: str = Lang.dialog(294); break; } } else if (Main.moonPhase < 6) { switch (num2) { case 0: str = Lang.dialog(295); break; case 1: str = Lang.dialog(296); break; case 2: str = Lang.dialog(297); break; case 3: str = Lang.dialog(298); break; } } else { switch (num2) { case 0: str = Lang.dialog(299); break; case 1: str = Lang.dialog(301); break; case 2: str = Lang.dialog(313); break; case 3: str = Lang.dialog(314); break; } } } } else if (this.type == 368) str = !BirthdayParty.PartyIsUp || Main.rand.Next(3) != 0 ? (!flag16 || Main.rand.Next(5) != 0 ? (!flag1 || Main.rand.Next(5) != 0 ? (!flag9 || Main.rand.Next(5) != 0 ? Lang.dialog(Main.rand.Next(322, 331)) : Lang.dialog(321)) : Lang.dialog(320)) : Lang.dialog(319)) : this.GetBirthdayDialog(); else if (this.type == 376) str = Lang.dialog(Main.rand.Next(353, 356)); else if (this.type == 369) { if (BirthdayParty.PartyIsUp && Main.rand.Next(3) == 0) str = this.GetBirthdayDialog(); else if (Main.bloodMoon) str = Main.anglerQuestFinished ? Lang.dialog(Main.rand.Next(350, 353)) : Lang.dialog(Main.rand.Next(348, 350)); else if (!Main.anglerQuestFinished) str = Lang.dialog(Main.rand.Next(334, 338)); else if (flag4 && Main.rand.Next(5) == 0) { str = Lang.dialog(347); } else { LocalizedText[] all = Language.FindAll(Lang.CreateDialogFilter("AnglerChatter.", substitutionObject)); int num = Main.rand.Next(all.Length + 9); str = num < 9 ? Lang.dialog(338 + num) : all[num - 9].FormatWith(substitutionObject); } } else if (this.type == 453) str = Lang.dialog(Main.rand.Next(356, 364)); else if (this.type == 441) str = !(Main.rand.Next(6) == 0 & flag4) ? (!(Main.rand.Next(6) == 0 & flag3) ? (!(Main.rand.Next(6) == 0 & flag6) ? (!(Main.rand.Next(6) == 0 & flag1) ? Lang.dialog(Main.rand.Next(364, 370)) : Lang.dialog(374)) : Lang.dialog(373)) : Lang.dialog(372)) : Lang.dialog(371); else if (this.type == 579) str = Language.GetTextValue("BartenderSpecialText.FirstMeeting"); else if (this.type == 550) str = Lang.BartenderChat(this); return str; } public object Clone() => this.MemberwiseClone(); public void CheckDrowning() { bool flag = Collision.DrownCollision(this.position, this.width, this.height, 1f); if (Main.netMode != 1) { if (flag) { if (++this.breathCounter >= 7) { this.breathCounter = 0; --this.breath; if (this.breath <= 0) { this.friendlyRegen = 0; this.breath = 0; this.life -= 2; if (this.life % 24 < 2) this.netUpdate = true; if (this.life <= 0) { this.life = 1; this.StrikeNPCNoInteraction(2, 0.0f, 0); if (Main.netMode != 0) NetMessage.SendData(28, number: this.whoAmI, number2: 2f); } } } } else { this.breath += 3; if (this.breath > 200) this.breath = 200; this.breathCounter = 0; } } if (!flag || Main.rand.Next(20) != 0 || this.lavaWet || this.honeyWet) return; int num1 = 0; int num2 = 0; if (this.type == 369) num2 = 8; Dust.NewDust(new Vector2(this.position.X + (float) ((10 + num1) * this.direction), (float) ((double) this.position.Y + (double) num2 + 4.0)), this.width - 8, 8, 34, Scale: 1.2f); } public void TryPortalJumping() { if (!this.townNPC || Main.netMode == 1) return; PortalHelper.TryGoingThroughPortals((Entity) this); } public static void GetMeleeCollisionData( Microsoft.Xna.Framework.Rectangle victimHitbox, int enemyIndex, ref int specialHitSetter, ref float damageMultiplier, ref Microsoft.Xna.Framework.Rectangle npcRect) { NPC npc1 = Main.npc[enemyIndex]; if (npc1.type >= 430 && npc1.type <= 436 && (double) npc1.ai[2] > 5.0) { int num = 34; if (npc1.spriteDirection < 0) { npcRect.X -= num; npcRect.Width += num; } else npcRect.Width += num; damageMultiplier *= 1.25f; } else if (npc1.type >= 494 && npc1.type <= 495 && (double) npc1.ai[2] > 5.0) { int num = 18; if (npc1.spriteDirection < 0) { npcRect.X -= num; npcRect.Width += num; } else npcRect.Width += num; damageMultiplier *= 1.25f; } else if (npc1.type == 460) { Microsoft.Xna.Framework.Rectangle rectangle = new Microsoft.Xna.Framework.Rectangle(0, 0, 30, 14); rectangle.X = (int) npc1.Center.X; if (npc1.direction < 0) rectangle.X -= rectangle.Width; rectangle.Y = (int) npc1.position.Y + npc1.height - 20; if (!victimHitbox.Intersects(rectangle)) return; npcRect = rectangle; damageMultiplier *= 1.35f; } else if (npc1.type == 417 && (double) npc1.ai[0] == 6.0 && (double) npc1.ai[3] > 0.0 && (double) npc1.ai[3] < 4.0) { Microsoft.Xna.Framework.Rectangle rectangle = Utils.CenteredRectangle(npc1.Center, new Vector2(100f)); if (!victimHitbox.Intersects(rectangle)) return; npcRect = rectangle; damageMultiplier *= 1.35f; } else if (npc1.type == 466) { Microsoft.Xna.Framework.Rectangle rectangle = new Microsoft.Xna.Framework.Rectangle(0, 0, 30, 8); rectangle.X = (int) npc1.Center.X; if (npc1.direction < 0) rectangle.X -= rectangle.Width; rectangle.Y = (int) npc1.position.Y + npc1.height - 32; if (!victimHitbox.Intersects(rectangle)) return; npcRect = rectangle; damageMultiplier *= 1.75f; } else if (npc1.type == 576 || npc1.type == 577) { NPC npc2 = npc1; bool flag = true; int y = npc2.frame.Y; int num1 = 0; int num2 = 0; Microsoft.Xna.Framework.Rectangle rectangle = new Microsoft.Xna.Framework.Rectangle(0, 0, 30, 8); switch (y) { case 15: specialHitSetter = 2; rectangle.Width = 120; rectangle.Height = 30; num2 = 24; break; case 16: specialHitSetter = 2; rectangle.Width = 120; rectangle.Height = 60; num1 = 10; break; case 17: specialHitSetter = 2; rectangle.Width = 100; rectangle.Height = 90; num1 = 50; break; case 18: specialHitSetter = 2; rectangle.Width = 100; rectangle.Height = 50; num1 = 90; num2 = 10; break; default: flag = false; break; } if (!flag) return; rectangle.X = (int) npc2.Center.X - num1 * npc2.direction; if (npc2.direction < 0) rectangle.X -= rectangle.Width; rectangle.Y = (int) npc2.Center.Y - rectangle.Height + num2; if (!victimHitbox.Intersects(rectangle)) return; npcRect = rectangle; damageMultiplier *= 1.75f; } else { if (npc1.type != 552 && npc1.type != 553 && npc1.type != 554 || (double) npc1.ai[0] <= 0.0 || (double) npc1.ai[0] >= 24.0) return; Microsoft.Xna.Framework.Rectangle rectangle = new Microsoft.Xna.Framework.Rectangle(0, 0, 34, 14); rectangle.X = (int) npc1.Center.X; if (npc1.direction < 0) rectangle.X -= rectangle.Width; rectangle.Y = (int) npc1.position.Y + npc1.height - 20; if (!victimHitbox.Intersects(rectangle)) return; npcRect = rectangle; damageMultiplier *= 1.35f; } } public override string ToString() => "name:" + this.TypeName + ", active:" + this.active.ToString() + ", whoAmI:" + (object) this.whoAmI; } }