// Decompiled with JetBrains decompiler // Type: Terraria.Player // Assembly: Terraria, Version=1.0.4.0, Culture=neutral, PublicKeyToken=null // MVID: FF258283-FE37-4E8A-A035-CB1E6DC74C3C // Assembly location: C:\Users\mikeyisbaeyt\Downloads\depotdownloader-2.4.5\depots\105601\6707058\Terraria.exe using Microsoft.Xna.Framework; using Microsoft.Xna.Framework.Input; using System; using System.IO; using System.Security.Cryptography; using System.Text; namespace Terraria { public class Player { public const int maxBuffs = 10; public bool flapSound; public int wingTime; public int wings; public int wingFrame; public int wingFrameCounter; public bool male = true; public bool ghost; public int ghostFrame; public int ghostFrameCounter; public bool pvpDeath; public bool zoneDungeon; public bool zoneEvil; public bool zoneHoly; public bool zoneMeteor; public bool zoneJungle; public bool boneArmor; public float townNPCs; public Vector2 position; public Vector2 oldPosition; public Vector2 velocity; public Vector2 oldVelocity; public double headFrameCounter; public double bodyFrameCounter; public double legFrameCounter; public int netSkip; public int oldSelectItem; public bool immune; public int immuneTime; public int immuneAlphaDirection; public int immuneAlpha; public int team; public bool hbLocked; public static int nameLen = 20; private float maxRegenDelay; public string chatText = ""; public int sign = -1; public int chatShowTime; public int reuseDelay; public float activeNPCs; public bool mouseInterface; public int noThrow; public int changeItem = -1; public int selectedItem; public Item[] armor = new Item[11]; public int itemAnimation; public int itemAnimationMax; public int itemTime; public int toolTime; public float itemRotation; public int itemWidth; public int itemHeight; public Vector2 itemLocation; public float ghostFade; public float ghostDir = 1f; public int[] buffType = new int[10]; public int[] buffTime = new int[10]; public int heldProj = -1; public int breathCD; public int breathMax = 200; public int breath = 200; public bool socialShadow; public string setBonus = ""; public Item[] inventory = new Item[49]; public Item[] bank = new Item[Chest.maxItems]; public Item[] bank2 = new Item[Chest.maxItems]; public float headRotation; public float bodyRotation; public float legRotation; public Vector2 headPosition; public Vector2 bodyPosition; public Vector2 legPosition; public Vector2 headVelocity; public Vector2 bodyVelocity; public Vector2 legVelocity; public int nonTorch = -1; public static bool deadForGood = false; public bool dead; public int respawnTimer; public string name = ""; public int attackCD; public int potionDelay; public byte difficulty; public bool wet; public byte wetCount; public bool lavaWet; public int hitTile; public int hitTileX; public int hitTileY; public int jump; public int head = -1; public int body = -1; public int legs = -1; public Rectangle headFrame; public Rectangle bodyFrame; public Rectangle legFrame; public Rectangle hairFrame; public bool controlLeft; public bool controlRight; public bool controlUp; public bool controlDown; public bool controlJump; public bool controlUseItem; public bool controlUseTile; public bool controlThrow; public bool controlInv; public bool controlHook; public bool controlTorch; public bool releaseJump; public bool releaseUseItem; public bool releaseUseTile; public bool releaseInventory; public bool releaseHook; public bool releaseThrow; public bool releaseQuickMana; public bool releaseQuickHeal; public bool delayUseItem; public bool active; public int width = 20; public int height = 42; public int direction = 1; public bool showItemIcon; public int showItemIcon2; public int whoAmi; public int runSoundDelay; public float shadow; public float manaCost = 1f; public bool fireWalk; public Vector2[] shadowPos = new Vector2[3]; public int shadowCount; public bool channel; public int step = -1; public int statDefense; public int statAttack; public int statLifeMax = 100; public int statLife = 100; public int statMana; public int statManaMax; public int statManaMax2; public int lifeRegen; public int lifeRegenCount; public int lifeRegenTime; public int manaRegen; public int manaRegenCount; public int manaRegenDelay; public bool manaRegenBuff; public bool noKnockback; public bool spaceGun; public float gravDir = 1f; public bool ammoCost80; public bool ammoCost75; public int stickyBreak; public bool lightOrb; public bool fairy; public bool bunny; public bool archery; public bool poisoned; public bool blind; public bool onFire; public bool onFire2; public bool noItems; public bool wereWolf; public bool wolfAcc; public bool rulerAcc; public bool bleed; public bool confused; public bool accMerman; public bool merman; public bool brokenArmor; public bool silence; public bool slow; public bool gross; public bool tongued; public bool kbGlove; public bool starCloak; public bool longInvince; public bool pStone; public bool manaFlower; public int meleeCrit = 4; public int rangedCrit = 4; public int magicCrit = 4; public float meleeDamage = 1f; public float rangedDamage = 1f; public float magicDamage = 1f; public float meleeSpeed = 1f; public float moveSpeed = 1f; public float pickSpeed = 1f; public int SpawnX = -1; public int SpawnY = -1; public int[] spX = new int[200]; public int[] spY = new int[200]; public string[] spN = new string[200]; public int[] spI = new int[200]; public static int tileRangeX = 5; public static int tileRangeY = 4; private static int tileTargetX; private static int tileTargetY; private static int jumpHeight = 15; private static float jumpSpeed = 5.01f; public bool adjWater; public bool oldAdjWater; public bool[] adjTile = new bool[150]; public bool[] oldAdjTile = new bool[150]; private static int itemGrabRange = 38; private static float itemGrabSpeed = 0.45f; private static float itemGrabSpeedMax = 4f; public Color hairColor = new Color(215, 90, 55); public Color skinColor = new Color((int) byte.MaxValue, 125, 90); public Color eyeColor = new Color(105, 90, 75); public Color shirtColor = new Color(175, 165, 140); public Color underShirtColor = new Color(160, 180, 215); public Color pantsColor = new Color((int) byte.MaxValue, 230, 175); public Color shoeColor = new Color(160, 105, 60); public int hair; public bool hostile; public int accCompass; public int accWatch; public int accDepthMeter; public bool accDivingHelm; public bool accFlipper; public bool doubleJump; public bool jumpAgain; public bool spawnMax; public int blockRange; public int[] grappling = new int[20]; public int grapCount; public int rocketTime; public int rocketTimeMax = 7; public int rocketDelay; public int rocketDelay2; public bool rocketRelease; public bool rocketFrame; public int rocketBoots; public bool canRocket; public bool jumpBoost; public bool noFallDmg; public int swimTime; public bool killGuide; public bool lavaImmune; public bool gills; public bool slowFall; public bool findTreasure; public bool invis; public bool detectCreature; public bool nightVision; public bool enemySpawns; public bool thorns; public bool waterWalk; public bool gravControl; public int chest = -1; public int chestX; public int chestY; public int talkNPC = -1; public int fallStart; public int slowCount; public int potionDelayTime = Item.potionDelay; public void HealEffect(int healAmount) { CombatText.NewText(new Rectangle((int) this.position.X, (int) this.position.Y, this.width, this.height), new Color(100, (int) byte.MaxValue, 100, (int) byte.MaxValue), string.Concat((object) healAmount)); if (Main.netMode != 1 || this.whoAmi != Main.myPlayer) return; NetMessage.SendData(35, number: this.whoAmi, number2: ((float) healAmount)); } public void ManaEffect(int manaAmount) { CombatText.NewText(new Rectangle((int) this.position.X, (int) this.position.Y, this.width, this.height), new Color(100, 100, (int) byte.MaxValue, (int) byte.MaxValue), string.Concat((object) manaAmount)); if (Main.netMode != 1 || this.whoAmi != Main.myPlayer) return; NetMessage.SendData(43, number: this.whoAmi, number2: ((float) manaAmount)); } public static byte FindClosest(Vector2 Position, int Width, int Height) { byte num1 = 0; for (int index = 0; index < (int) byte.MaxValue; ++index) { if (Main.player[index].active) { num1 = (byte) index; break; } } float num2 = -1f; for (int index = 0; index < (int) byte.MaxValue; ++index) { if (Main.player[index].active && !Main.player[index].dead && ((double) num2 == -1.0 || (double) Math.Abs(Main.player[index].position.X + (float) (Main.player[index].width / 2) - Position.X + (float) (Width / 2)) + (double) Math.Abs(Main.player[index].position.Y + (float) (Main.player[index].height / 2) - Position.Y + (float) (Height / 2)) < (double) num2)) { num2 = Math.Abs(Main.player[index].position.X + (float) (Main.player[index].width / 2) - Position.X + (float) (Width / 2)) + Math.Abs(Main.player[index].position.Y + (float) (Main.player[index].height / 2) - Position.Y + (float) (Height / 2)); num1 = (byte) index; } } return num1; } public void checkArmor() { } public void toggleInv() { if (this.talkNPC >= 0) { this.talkNPC = -1; Main.npcChatText = ""; Main.PlaySound(11); } else if (this.sign >= 0) { this.sign = -1; Main.editSign = false; Main.npcChatText = ""; Main.PlaySound(11); } else if (!Main.playerInventory) { Recipe.FindRecipes(); Main.playerInventory = true; Main.PlaySound(10); } else { Main.playerInventory = false; Main.PlaySound(11); } } public void dropItemCheck() { if (!Main.playerInventory) this.noThrow = 0; if (this.noThrow > 0) --this.noThrow; if (!Main.craftGuide && Main.guideItem.type > 0) { int number = Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, Main.guideItem.type); Main.guideItem.position = Main.item[number].position; Main.item[number] = Main.guideItem; Main.guideItem = new Item(); if (Main.netMode == 0) Main.item[number].noGrabDelay = 100; Main.item[number].velocity.Y = -2f; Main.item[number].velocity.X = (float) (4 * this.direction) + this.velocity.X; if (Main.netMode == 1) NetMessage.SendData(21, number: number); } if (!Main.reforge && Main.reforgeItem.type > 0) { int number = Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, Main.reforgeItem.type); Main.reforgeItem.position = Main.item[number].position; Main.item[number] = Main.reforgeItem; Main.reforgeItem = new Item(); if (Main.netMode == 0) Main.item[number].noGrabDelay = 100; Main.item[number].velocity.Y = -2f; Main.item[number].velocity.X = (float) (4 * this.direction) + this.velocity.X; if (Main.netMode == 1) NetMessage.SendData(21, number: number); } if (Main.myPlayer == this.whoAmi) this.inventory[48] = (Item) Main.mouseItem.Clone(); bool flag1 = true; if (Main.mouseItem.type > 0 && Main.mouseItem.stack > 0) { Player.tileTargetX = (int) (((double) Main.mouseX + (double) Main.screenPosition.X) / 16.0); Player.tileTargetY = (int) (((double) Main.mouseY + (double) Main.screenPosition.Y) / 16.0); if (this.selectedItem != 48) this.oldSelectItem = this.selectedItem; this.selectedItem = 48; flag1 = false; } if (flag1 && this.selectedItem == 48) this.selectedItem = this.oldSelectItem; if ((!this.controlThrow || !this.releaseThrow || this.inventory[this.selectedItem].type <= 0 || Main.chatMode) && ((!Main.mouseRight || this.mouseInterface || !Main.mouseRightRelease) && Main.playerInventory || Main.mouseItem.type <= 0 || Main.mouseItem.stack <= 0) || this.noThrow > 0) return; Item obj = new Item(); bool flag2 = false; if ((Main.mouseRight && !this.mouseInterface && Main.mouseRightRelease || !Main.playerInventory) && Main.mouseItem.type > 0 && Main.mouseItem.stack > 0) { obj = this.inventory[this.selectedItem]; this.inventory[this.selectedItem] = Main.mouseItem; this.delayUseItem = true; this.controlUseItem = false; flag2 = true; } int number1 = Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, this.inventory[this.selectedItem].type); if (!flag2 && this.inventory[this.selectedItem].type == 8 && this.inventory[this.selectedItem].stack > 1) { --this.inventory[this.selectedItem].stack; } else { this.inventory[this.selectedItem].position = Main.item[number1].position; Main.item[number1] = this.inventory[this.selectedItem]; this.inventory[this.selectedItem] = new Item(); } if (Main.netMode == 0) Main.item[number1].noGrabDelay = 100; Main.item[number1].velocity.Y = -2f; Main.item[number1].velocity.X = (float) (4 * this.direction) + this.velocity.X; if ((Main.mouseRight && !this.mouseInterface || !Main.playerInventory) && Main.mouseItem.type > 0) { this.inventory[this.selectedItem] = obj; Main.mouseItem = new Item(); } else { this.itemAnimation = 10; this.itemAnimationMax = 10; } Recipe.FindRecipes(); if (Main.netMode != 1) return; NetMessage.SendData(21, number: number1); } public void AddBuff(int type, int time, bool quiet = true) { if (!quiet && Main.netMode == 1) NetMessage.SendData(55, number: this.whoAmi, number2: ((float) type), number3: ((float) time)); int index1 = -1; for (int index2 = 0; index2 < 10; ++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 < 10; ++index3) { if (!Main.debuff[this.buffType[index3]]) { b = index3; break; } } if (b == -1) return; for (int index4 = b; index4 < 10; ++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 < 9; ++index1) { if (this.buffTime[index1] == 0 || this.buffType[index1] == 0) { for (int index2 = index1 + 1; index2 < 10; ++index2) { this.buffTime[index2 - 1] = this.buffTime[index2]; this.buffType[index2 - 1] = this.buffType[index2]; this.buffTime[index2] = 0; this.buffType[index2] = 0; } } } } public void QuickHeal() { if (this.noItems || this.statLife == this.statLifeMax || this.potionDelay > 0) return; for (int index = 0; index < 48; ++index) { if (this.inventory[index].stack > 0 && this.inventory[index].type > 0 && this.inventory[index].potion && this.inventory[index].healLife > 0) { Main.PlaySound(2, (int) this.position.X, (int) this.position.Y, this.inventory[index].useSound); if (this.inventory[index].potion) { this.potionDelay = this.potionDelayTime; this.AddBuff(21, this.potionDelay); } this.statLife += this.inventory[index].healLife; this.statMana += this.inventory[index].healMana; if (this.statLife > this.statLifeMax) this.statLife = this.statLifeMax; if (this.statMana > this.statManaMax2) this.statMana = this.statManaMax2; if (this.inventory[index].healLife > 0 && Main.myPlayer == this.whoAmi) this.HealEffect(this.inventory[index].healLife); if (this.inventory[index].healMana > 0 && Main.myPlayer == this.whoAmi) this.ManaEffect(this.inventory[index].healMana); --this.inventory[index].stack; if (this.inventory[index].stack <= 0) { this.inventory[index].type = 0; this.inventory[index].name = ""; } Recipe.FindRecipes(); break; } } } public void QuickMana() { if (this.noItems || this.statMana == this.statManaMax2) return; for (int index = 0; index < 48; ++index) { if (this.inventory[index].stack > 0 && this.inventory[index].type > 0 && this.inventory[index].healMana > 0 && (this.potionDelay == 0 || !this.inventory[index].potion)) { Main.PlaySound(2, (int) this.position.X, (int) this.position.Y, this.inventory[index].useSound); if (this.inventory[index].potion) { this.potionDelay = this.potionDelayTime; this.AddBuff(21, this.potionDelay); } this.statLife += this.inventory[index].healLife; this.statMana += this.inventory[index].healMana; if (this.statLife > this.statLifeMax) this.statLife = this.statLifeMax; if (this.statMana > this.statManaMax2) this.statMana = this.statManaMax2; if (this.inventory[index].healLife > 0 && Main.myPlayer == this.whoAmi) this.HealEffect(this.inventory[index].healLife); if (this.inventory[index].healMana > 0 && Main.myPlayer == this.whoAmi) this.ManaEffect(this.inventory[index].healMana); --this.inventory[index].stack; if (this.inventory[index].stack <= 0) { this.inventory[index].type = 0; this.inventory[index].name = ""; } Recipe.FindRecipes(); break; } } } public int countBuffs() { int index1 = 0; for (int index2 = 0; index2 < 10; ++index2) { if (this.buffType[index1] > 0) ++index1; } return index1; } public void QuickBuff() { if (this.noItems) return; int Style = 0; for (int index1 = 0; index1 < 48; ++index1) { if (this.countBuffs() == 10) return; if (this.inventory[index1].stack > 0 && this.inventory[index1].type > 0 && this.inventory[index1].buffType > 0) { bool flag = true; for (int index2 = 0; index2 < 10; ++index2) { if (this.buffType[index2] == this.inventory[index1].buffType) { flag = false; break; } } if (this.inventory[index1].mana > 0 && flag) { if (this.statMana >= (int) ((double) this.inventory[index1].mana * (double) this.manaCost)) { this.manaRegenDelay = (int) this.maxRegenDelay; this.statMana -= (int) ((double) this.inventory[index1].mana * (double) this.manaCost); } else flag = false; } if (this.whoAmi == Main.myPlayer && this.inventory[index1].type == 603 && !Main.cEd) flag = false; if (flag) { Style = this.inventory[index1].useSound; int time = this.inventory[index1].buffTime; if (time == 0) time = 3600; this.AddBuff(this.inventory[index1].buffType, time); if (this.inventory[index1].consumable) { --this.inventory[index1].stack; if (this.inventory[index1].stack <= 0) { this.inventory[index1].type = 0; this.inventory[index1].name = ""; } } } } } if (Style <= 0) return; Main.PlaySound(2, (int) this.position.X, (int) this.position.Y, Style); Recipe.FindRecipes(); } public void StatusNPC(int type, int i) { switch (type) { case 121: if (Main.rand.Next(2) != 0) break; Main.npc[i].AddBuff(24, 180); break; case 122: if (Main.rand.Next(10) != 0) break; Main.npc[i].AddBuff(24, 180); break; case 190: if (Main.rand.Next(4) != 0) break; Main.npc[i].AddBuff(20, 420); break; case 217: if (Main.rand.Next(5) != 0) break; Main.npc[i].AddBuff(24, 180); break; } } public void StatusPvP(int type, int i) { switch (type) { case 121: if (Main.rand.Next(2) != 0) break; Main.player[i].AddBuff(24, 180, false); break; case 122: if (Main.rand.Next(10) != 0) break; Main.player[i].AddBuff(24, 180, false); break; case 190: if (Main.rand.Next(4) != 0) break; Main.player[i].AddBuff(20, 420, false); break; case 217: if (Main.rand.Next(5) != 0) break; Main.player[i].AddBuff(24, 180, false); break; } } public void Ghost() { this.immune = false; this.immuneAlpha = 0; this.controlUp = false; this.controlLeft = false; this.controlDown = false; this.controlRight = false; this.controlJump = false; if (Main.hasFocus && !Main.chatMode && !Main.editSign) { foreach (int pressedKey in Main.keyState.GetPressedKeys()) { string str = string.Concat((object) (Keys) pressedKey); if (str == Main.cUp) this.controlUp = true; if (str == Main.cLeft) this.controlLeft = true; if (str == Main.cDown) this.controlDown = true; if (str == Main.cRight) this.controlRight = true; if (str == Main.cJump) this.controlJump = true; } } if (this.controlUp || this.controlJump) { if ((double) this.velocity.Y > 0.0) this.velocity.Y *= 0.9f; this.velocity.Y -= 0.1f; if ((double) this.velocity.Y < -3.0) this.velocity.Y = -3f; } else if (this.controlDown) { if ((double) this.velocity.Y < 0.0) this.velocity.Y *= 0.9f; this.velocity.Y += 0.1f; if ((double) this.velocity.Y > 3.0) this.velocity.Y = 3f; } else if ((double) this.velocity.Y < -0.1 || (double) this.velocity.Y > 0.1) this.velocity.Y *= 0.9f; else this.velocity.Y = 0.0f; if (this.controlLeft && !this.controlRight) { if ((double) this.velocity.X > 0.0) this.velocity.X *= 0.9f; this.velocity.X -= 0.1f; if ((double) this.velocity.X < -3.0) this.velocity.X = -3f; } else if (this.controlRight && !this.controlLeft) { if ((double) this.velocity.X < 0.0) this.velocity.X *= 0.9f; this.velocity.X += 0.1f; if ((double) this.velocity.X > 3.0) this.velocity.X = 3f; } else if ((double) this.velocity.X < -0.1 || (double) this.velocity.X > 0.1) this.velocity.X *= 0.9f; else this.velocity.X = 0.0f; this.position += this.velocity; ++this.ghostFrameCounter; if ((double) this.velocity.X < 0.0) this.direction = -1; else if ((double) this.velocity.X > 0.0) this.direction = 1; if (this.ghostFrameCounter >= 8) { this.ghostFrameCounter = 0; ++this.ghostFrame; if (this.ghostFrame >= 4) this.ghostFrame = 0; } if ((double) this.position.X < (double) Main.leftWorld + (double) (Lighting.offScreenTiles * 16) + 16.0) { this.position.X = (float) ((double) Main.leftWorld + (double) (Lighting.offScreenTiles * 16) + 16.0); this.velocity.X = 0.0f; } if ((double) this.position.X + (double) this.width > (double) Main.rightWorld - (double) (Lighting.offScreenTiles * 16) - 32.0) { this.position.X = (float) ((double) Main.rightWorld - (double) (Lighting.offScreenTiles * 16) - 32.0) - (float) this.width; this.velocity.X = 0.0f; } if ((double) this.position.Y < (double) Main.topWorld + (double) (Lighting.offScreenTiles * 16) + 16.0) { this.position.Y = (float) ((double) Main.topWorld + (double) (Lighting.offScreenTiles * 16) + 16.0); if ((double) this.velocity.Y < -0.1) this.velocity.Y = -0.1f; } if ((double) this.position.Y <= (double) Main.bottomWorld - (double) (Lighting.offScreenTiles * 16) - 32.0 - (double) this.height) return; this.position.Y = (float) ((double) Main.bottomWorld - (double) (Lighting.offScreenTiles * 16) - 32.0) - (float) this.height; this.velocity.Y = 0.0f; } public void UpdatePlayer(int i) { // ISSUE: unable to decompile the method. } public bool SellItem(int price, int stack) { if (price <= 0) return false; Item[] objArray = new Item[48]; for (int index = 0; index < 48; ++index) { objArray[index] = new Item(); objArray[index] = (Item) this.inventory[index].Clone(); } int num = price / 5 * stack; if (num < 1) num = 1; bool flag = false; while (num >= 1000000 && !flag) { int index = -1; for (int i = 43; i >= 0; --i) { if (index == -1 && (this.inventory[i].type == 0 || this.inventory[i].stack == 0)) index = i; while (this.inventory[i].type == 74 && this.inventory[i].stack < this.inventory[i].maxStack && num >= 1000000) { ++this.inventory[i].stack; num -= 1000000; this.DoCoins(i); if (this.inventory[i].stack == 0 && index == -1) index = i; } } if (num >= 1000000) { if (index == -1) { flag = true; } else { this.inventory[index].SetDefaults(74); num -= 1000000; } } } while (num >= 10000 && !flag) { int index = -1; for (int i = 43; i >= 0; --i) { if (index == -1 && (this.inventory[i].type == 0 || this.inventory[i].stack == 0)) index = i; while (this.inventory[i].type == 73 && this.inventory[i].stack < this.inventory[i].maxStack && num >= 10000) { ++this.inventory[i].stack; num -= 10000; this.DoCoins(i); if (this.inventory[i].stack == 0 && index == -1) index = i; } } if (num >= 10000) { if (index == -1) { flag = true; } else { this.inventory[index].SetDefaults(73); num -= 10000; } } } while (num >= 100 && !flag) { int index = -1; for (int i = 43; i >= 0; --i) { if (index == -1 && (this.inventory[i].type == 0 || this.inventory[i].stack == 0)) index = i; while (this.inventory[i].type == 72 && this.inventory[i].stack < this.inventory[i].maxStack && num >= 100) { ++this.inventory[i].stack; num -= 100; this.DoCoins(i); if (this.inventory[i].stack == 0 && index == -1) index = i; } } if (num >= 100) { if (index == -1) { flag = true; } else { this.inventory[index].SetDefaults(72); num -= 100; } } } while (num >= 1 && !flag) { int index = -1; for (int i = 43; i >= 0; --i) { if (index == -1 && (this.inventory[i].type == 0 || this.inventory[i].stack == 0)) index = i; while (this.inventory[i].type == 71 && this.inventory[i].stack < this.inventory[i].maxStack && num >= 1) { ++this.inventory[i].stack; --num; this.DoCoins(i); if (this.inventory[i].stack == 0 && index == -1) index = i; } } if (num >= 1) { if (index == -1) { flag = true; } else { this.inventory[index].SetDefaults(71); --num; } } } if (!flag) return true; for (int index = 0; index < 48; ++index) this.inventory[index] = (Item) objArray[index].Clone(); return false; } public bool BuyItem(int price) { if (price == 0) return true; int num1 = 0; Item[] objArray = new Item[44]; for (int index = 0; index < 44; ++index) { objArray[index] = new Item(); objArray[index] = (Item) this.inventory[index].Clone(); if (this.inventory[index].type == 71) num1 += this.inventory[index].stack; if (this.inventory[index].type == 72) num1 += this.inventory[index].stack * 100; if (this.inventory[index].type == 73) num1 += this.inventory[index].stack * 10000; if (this.inventory[index].type == 74) num1 += this.inventory[index].stack * 1000000; } if (num1 < price) return false; int num2 = price; while (num2 > 0) { if (num2 >= 1000000) { for (int index = 0; index < 44; ++index) { if (this.inventory[index].type == 74) { while (this.inventory[index].stack > 0 && num2 >= 1000000) { num2 -= 1000000; --this.inventory[index].stack; if (this.inventory[index].stack == 0) this.inventory[index].type = 0; } } } } if (num2 >= 10000) { for (int index = 0; index < 44; ++index) { if (this.inventory[index].type == 73) { while (this.inventory[index].stack > 0 && num2 >= 10000) { num2 -= 10000; --this.inventory[index].stack; if (this.inventory[index].stack == 0) this.inventory[index].type = 0; } } } } if (num2 >= 100) { for (int index = 0; index < 44; ++index) { if (this.inventory[index].type == 72) { while (this.inventory[index].stack > 0 && num2 >= 100) { num2 -= 100; --this.inventory[index].stack; if (this.inventory[index].stack == 0) this.inventory[index].type = 0; } } } } if (num2 >= 1) { for (int index = 0; index < 44; ++index) { if (this.inventory[index].type == 71) { while (this.inventory[index].stack > 0 && num2 >= 1) { --num2; --this.inventory[index].stack; if (this.inventory[index].stack == 0) this.inventory[index].type = 0; } } } } if (num2 > 0) { int index1 = -1; for (int index2 = 43; index2 >= 0; --index2) { if (this.inventory[index2].type == 0 || this.inventory[index2].stack == 0) { index1 = index2; break; } } if (index1 >= 0) { bool flag = true; if (num2 >= 10000) { for (int index3 = 0; index3 < 48; ++index3) { if (this.inventory[index3].type == 74 && this.inventory[index3].stack >= 1) { --this.inventory[index3].stack; if (this.inventory[index3].stack == 0) this.inventory[index3].type = 0; this.inventory[index1].SetDefaults(73); this.inventory[index1].stack = 100; flag = false; break; } } } else if (num2 >= 100) { for (int index4 = 0; index4 < 44; ++index4) { if (this.inventory[index4].type == 73 && this.inventory[index4].stack >= 1) { --this.inventory[index4].stack; if (this.inventory[index4].stack == 0) this.inventory[index4].type = 0; this.inventory[index1].SetDefaults(72); this.inventory[index1].stack = 100; flag = false; break; } } } else if (num2 >= 1) { for (int index5 = 0; index5 < 44; ++index5) { if (this.inventory[index5].type == 72 && this.inventory[index5].stack >= 1) { --this.inventory[index5].stack; if (this.inventory[index5].stack == 0) this.inventory[index5].type = 0; this.inventory[index1].SetDefaults(71); this.inventory[index1].stack = 100; flag = false; break; } } } if (flag) { if (num2 < 10000) { for (int index6 = 0; index6 < 44; ++index6) { if (this.inventory[index6].type == 73 && this.inventory[index6].stack >= 1) { --this.inventory[index6].stack; if (this.inventory[index6].stack == 0) this.inventory[index6].type = 0; this.inventory[index1].SetDefaults(72); this.inventory[index1].stack = 100; flag = false; break; } } } if (flag && num2 < 1000000) { for (int index7 = 0; index7 < 44; ++index7) { if (this.inventory[index7].type == 74 && this.inventory[index7].stack >= 1) { --this.inventory[index7].stack; if (this.inventory[index7].stack == 0) this.inventory[index7].type = 0; this.inventory[index1].SetDefaults(73); this.inventory[index1].stack = 100; break; } } } } } else { for (int index8 = 0; index8 < 44; ++index8) this.inventory[index8] = (Item) objArray[index8].Clone(); return false; } } } return true; } public void AdjTiles() { int num1 = 4; int num2 = 3; for (int index = 0; index < 150; ++index) { this.oldAdjTile[index] = this.adjTile[index]; this.adjTile[index] = false; } this.oldAdjWater = this.adjWater; this.adjWater = false; int num3 = (int) (((double) this.position.X + (double) (this.width / 2)) / 16.0); int num4 = (int) (((double) this.position.Y + (double) this.height) / 16.0); for (int index1 = num3 - num1; index1 <= num3 + num1; ++index1) { for (int index2 = num4 - num2; index2 < num4 + num2; ++index2) { if (Main.tile[index1, index2].active) { this.adjTile[(int) Main.tile[index1, index2].type] = true; if (Main.tile[index1, index2].type == (byte) 77) this.adjTile[17] = true; if (Main.tile[index1, index2].type == (byte) 133) { this.adjTile[17] = true; this.adjTile[77] = true; } if (Main.tile[index1, index2].type == (byte) 134) this.adjTile[16] = true; } if (Main.tile[index1, index2].liquid > (byte) 200 && !Main.tile[index1, index2].lava) this.adjWater = true; } } if (!Main.playerInventory) return; bool flag = false; for (int index = 0; index < 150; ++index) { if (this.oldAdjTile[index] != this.adjTile[index]) { flag = true; break; } } if (this.adjWater != this.oldAdjWater) flag = true; if (!flag) return; Recipe.FindRecipes(); } public void PlayerFrame() { if (this.swimTime > 0) { --this.swimTime; if (!this.wet) this.swimTime = 0; } this.head = this.armor[0].headSlot; this.body = this.armor[1].bodySlot; this.legs = this.armor[2].legSlot; if (this.armor[8].headSlot >= 0) this.head = this.armor[8].headSlot; if (this.armor[9].bodySlot >= 0) this.body = this.armor[9].bodySlot; if (this.armor[10].legSlot >= 0) this.legs = this.armor[10].legSlot; if (this.wereWolf) { this.legs = 20; this.body = 21; this.head = 38; } if (this.merman) { this.head = 39; this.legs = 21; this.body = 22; } this.socialShadow = false; if (this.head == 5 && this.body == 5 && this.legs == 5) this.socialShadow = true; if (this.head == 5 && this.body == 5 && this.legs == 5 && Main.rand.Next(10) == 0) Dust.NewDust(new Vector2(this.position.X, this.position.Y), this.width, this.height, 14, Alpha: 200, Scale: 1.2f); if (this.head == 6 && this.body == 6 && this.legs == 6 && (double) Math.Abs(this.velocity.X) + (double) Math.Abs(this.velocity.Y) > 1.0 && !this.rocketFrame) { for (int index1 = 0; index1 < 2; ++index1) { int index2 = Dust.NewDust(new Vector2(this.position.X - this.velocity.X * 2f, (float) ((double) this.position.Y - 2.0 - (double) this.velocity.Y * 2.0)), this.width, this.height, 6, Alpha: 100, Scale: 2f); Main.dust[index2].noGravity = true; Main.dust[index2].noLight = true; Main.dust[index2].velocity.X -= this.velocity.X * 0.5f; Main.dust[index2].velocity.Y -= this.velocity.Y * 0.5f; } } if (this.head == 7 && this.body == 7 && this.legs == 7) this.boneArmor = true; if (this.head == 8 && this.body == 8 && this.legs == 8 && (double) Math.Abs(this.velocity.X) + (double) Math.Abs(this.velocity.Y) > 1.0) { int index = Dust.NewDust(new Vector2(this.position.X - this.velocity.X * 2f, (float) ((double) this.position.Y - 2.0 - (double) this.velocity.Y * 2.0)), this.width, this.height, 40, Alpha: 50, Scale: 1.4f); Main.dust[index].noGravity = true; Main.dust[index].velocity.X = this.velocity.X * 0.25f; Main.dust[index].velocity.Y = this.velocity.Y * 0.25f; } if (this.head == 9 && this.body == 9 && this.legs == 9 && (double) Math.Abs(this.velocity.X) + (double) Math.Abs(this.velocity.Y) > 1.0 && !this.rocketFrame) { for (int index3 = 0; index3 < 2; ++index3) { int index4 = Dust.NewDust(new Vector2(this.position.X - this.velocity.X * 2f, (float) ((double) this.position.Y - 2.0 - (double) this.velocity.Y * 2.0)), this.width, this.height, 6, Alpha: 100, Scale: 2f); Main.dust[index4].noGravity = true; Main.dust[index4].noLight = true; Main.dust[index4].velocity.X -= this.velocity.X * 0.5f; Main.dust[index4].velocity.Y -= this.velocity.Y * 0.5f; } } if (this.body == 18 && this.legs == 17 && (this.head == 32 || this.head == 33 || this.head == 34) && Main.rand.Next(10) == 0) { int index = Dust.NewDust(new Vector2(this.position.X - this.velocity.X * 2f, (float) ((double) this.position.Y - 2.0 - (double) this.velocity.Y * 2.0)), this.width, this.height, 43, Alpha: 100, Scale: 0.3f); Main.dust[index].fadeIn = 0.8f; Main.dust[index].velocity *= 0.0f; } if (this.body == 24 && this.legs == 23 && (this.head == 42 || this.head == 43 || this.head == 41) && (double) this.velocity.X != 0.0 && (double) this.velocity.Y != 0.0 && Main.rand.Next(10) == 0) { int index = Dust.NewDust(new Vector2(this.position.X - this.velocity.X * 2f, (float) ((double) this.position.Y - 2.0 - (double) this.velocity.Y * 2.0)), this.width, this.height, 43, Alpha: 100, Scale: 0.3f); Main.dust[index].fadeIn = 0.8f; Main.dust[index].velocity *= 0.0f; } this.bodyFrame.Width = 40; this.bodyFrame.Height = 56; this.legFrame.Width = 40; this.legFrame.Height = 56; this.bodyFrame.X = 0; this.legFrame.X = 0; if (this.itemAnimation > 0 && this.inventory[this.selectedItem].useStyle != 10) { if (this.inventory[this.selectedItem].useStyle == 1 || this.inventory[this.selectedItem].type == 0) this.bodyFrame.Y = (double) this.itemAnimation >= (double) this.itemAnimationMax * 0.333 ? ((double) this.itemAnimation >= (double) this.itemAnimationMax * 0.666 ? this.bodyFrame.Height : this.bodyFrame.Height * 2) : this.bodyFrame.Height * 3; else if (this.inventory[this.selectedItem].useStyle == 2) this.bodyFrame.Y = (double) this.itemAnimation <= (double) this.itemAnimationMax * 0.5 ? this.bodyFrame.Height * 2 : this.bodyFrame.Height * 3; else if (this.inventory[this.selectedItem].useStyle == 3) this.bodyFrame.Y = (double) this.itemAnimation <= (double) this.itemAnimationMax * 0.666 ? this.bodyFrame.Height * 3 : this.bodyFrame.Height * 3; else if (this.inventory[this.selectedItem].useStyle == 4) this.bodyFrame.Y = this.bodyFrame.Height * 2; else if (this.inventory[this.selectedItem].useStyle == 5) { if (this.inventory[this.selectedItem].type == 281) { this.bodyFrame.Y = this.bodyFrame.Height * 2; } else { float num = this.itemRotation * (float) this.direction; this.bodyFrame.Y = this.bodyFrame.Height * 3; if ((double) num < -0.75) { this.bodyFrame.Y = this.bodyFrame.Height * 2; if ((double) this.gravDir == -1.0) this.bodyFrame.Y = this.bodyFrame.Height * 4; } if ((double) num > 0.6) { this.bodyFrame.Y = this.bodyFrame.Height * 4; if ((double) this.gravDir == -1.0) this.bodyFrame.Y = this.bodyFrame.Height * 2; } } } } else if (this.inventory[this.selectedItem].holdStyle == 1 && (!this.wet || !this.inventory[this.selectedItem].noWet)) this.bodyFrame.Y = this.bodyFrame.Height * 3; else if (this.inventory[this.selectedItem].holdStyle == 2 && (!this.wet || !this.inventory[this.selectedItem].noWet)) this.bodyFrame.Y = this.bodyFrame.Height * 2; else if (this.inventory[this.selectedItem].holdStyle == 3) this.bodyFrame.Y = this.bodyFrame.Height * 3; else if (this.grappling[0] >= 0) { Vector2 vector2 = new Vector2(this.position.X + (float) this.width * 0.5f, this.position.Y + (float) this.height * 0.5f); float num1 = 0.0f; float num2 = 0.0f; for (int index = 0; index < this.grapCount; ++index) { num1 += Main.projectile[this.grappling[index]].position.X + (float) (Main.projectile[this.grappling[index]].width / 2); num2 += Main.projectile[this.grappling[index]].position.Y + (float) (Main.projectile[this.grappling[index]].height / 2); } float num3 = num1 / (float) this.grapCount; float num4 = num2 / (float) this.grapCount; float num5 = num3 - vector2.X; float num6 = num4 - vector2.Y; if ((double) num6 < 0.0 && (double) Math.Abs(num6) > (double) Math.Abs(num5)) { this.bodyFrame.Y = this.bodyFrame.Height * 2; if ((double) this.gravDir == -1.0) this.bodyFrame.Y = this.bodyFrame.Height * 4; } else if ((double) num6 > 0.0 && (double) Math.Abs(num6) > (double) Math.Abs(num5)) { this.bodyFrame.Y = this.bodyFrame.Height * 4; if ((double) this.gravDir == -1.0) this.bodyFrame.Y = this.bodyFrame.Height * 2; } else this.bodyFrame.Y = this.bodyFrame.Height * 3; } else if (this.swimTime > 0) this.bodyFrame.Y = this.swimTime <= 20 ? (this.swimTime <= 10 ? 0 : this.bodyFrame.Height * 5) : 0; else if ((double) this.velocity.Y != 0.0) { this.bodyFrame.Y = this.wings <= 0 ? this.bodyFrame.Height * 5 : ((double) this.velocity.Y <= 0.0 ? this.bodyFrame.Height * 6 : (!this.controlJump ? this.bodyFrame.Height * 5 : this.bodyFrame.Height * 6)); this.bodyFrameCounter = 0.0; } else if ((double) this.velocity.X != 0.0) { this.bodyFrameCounter += (double) Math.Abs(this.velocity.X) * 1.5; this.bodyFrame.Y = this.legFrame.Y; } else { this.bodyFrameCounter = 0.0; this.bodyFrame.Y = 0; } if (this.swimTime > 0) { this.legFrameCounter += 2.0; while (this.legFrameCounter > 8.0) { this.legFrameCounter -= 8.0; this.legFrame.Y += this.legFrame.Height; } if (this.legFrame.Y < this.legFrame.Height * 7) { this.legFrame.Y = this.legFrame.Height * 19; } else { if (this.legFrame.Y <= this.legFrame.Height * 19) return; this.legFrame.Y = this.legFrame.Height * 7; } } else if ((double) this.velocity.Y != 0.0 || this.grappling[0] > -1) { this.legFrameCounter = 0.0; this.legFrame.Y = this.legFrame.Height * 5; } else if ((double) this.velocity.X != 0.0) { this.legFrameCounter += (double) Math.Abs(this.velocity.X) * 1.3; while (this.legFrameCounter > 8.0) { this.legFrameCounter -= 8.0; this.legFrame.Y += this.legFrame.Height; } if (this.legFrame.Y < this.legFrame.Height * 7) { this.legFrame.Y = this.legFrame.Height * 19; } else { if (this.legFrame.Y <= this.legFrame.Height * 19) return; this.legFrame.Y = this.legFrame.Height * 7; } } else { this.legFrameCounter = 0.0; this.legFrame.Y = 0; } } public void Spawn() { if (this.whoAmi == Main.myPlayer) { Main.quickBG = 10; this.FindSpawn(); if (!Player.CheckSpawn(this.SpawnX, this.SpawnY)) { this.SpawnX = -1; this.SpawnY = -1; } Main.maxQ = true; } if (Main.netMode == 1 && this.whoAmi == Main.myPlayer) { NetMessage.SendData(12, number: Main.myPlayer); Main.gameMenu = false; } this.headPosition = new Vector2(); this.bodyPosition = new Vector2(); this.legPosition = new Vector2(); this.headRotation = 0.0f; this.bodyRotation = 0.0f; this.legRotation = 0.0f; if (this.statLife <= 0) { this.statLife = 100; this.breath = this.breathMax; if (this.spawnMax) { this.statLife = this.statLifeMax; this.statMana = this.statManaMax2; } } this.immune = true; this.dead = false; this.immuneTime = 0; this.active = true; if (this.SpawnX >= 0 && this.SpawnY >= 0) { this.position.X = (float) (this.SpawnX * 16 + 8 - this.width / 2); this.position.Y = (float) (this.SpawnY * 16 - this.height); } else { this.position.X = (float) (Main.spawnTileX * 16 + 8 - this.width / 2); this.position.Y = (float) (Main.spawnTileY * 16 - this.height); for (int i = Main.spawnTileX - 1; i < Main.spawnTileX + 2; ++i) { for (int j = Main.spawnTileY - 3; j < Main.spawnTileY; ++j) { if (Main.tileSolid[(int) Main.tile[i, j].type] && !Main.tileSolidTop[(int) Main.tile[i, j].type]) WorldGen.KillTile(i, j); if (Main.tile[i, j].liquid > (byte) 0) { Main.tile[i, j].lava = false; Main.tile[i, j].liquid = (byte) 0; WorldGen.SquareTileFrame(i, j); } } } } this.wet = false; this.wetCount = (byte) 0; this.lavaWet = false; this.fallStart = (int) ((double) this.position.Y / 16.0); this.velocity.X = 0.0f; this.velocity.Y = 0.0f; this.talkNPC = -1; if (this.pvpDeath) { this.pvpDeath = false; this.immuneTime = 300; this.statLife = this.statLifeMax; } else this.immuneTime = 60; if (this.whoAmi != Main.myPlayer) return; Main.renderNow = true; if (Main.netMode == 1) Netplay.newRecent(); Main.screenPosition.X = this.position.X + (float) (this.width / 2) - (float) (Main.screenWidth / 2); Main.screenPosition.Y = this.position.Y + (float) (this.height / 2) - (float) (Main.screenHeight / 2); } public double Hurt( int Damage, int hitDirection, bool pvp = false, bool quiet = false, string deathText = " was slain...", bool Crit = false) { if (this.immune) return 0.0; int Damage1 = Damage; if (pvp) Damage1 *= 2; double damage = Main.CalculateDamage(Damage1, this.statDefense); if (Crit) Damage1 *= 2; if (damage >= 1.0) { if (Main.netMode == 1 && this.whoAmi == Main.myPlayer && !quiet) { int num = 0; if (pvp) num = 1; NetMessage.SendData(13, number: this.whoAmi); NetMessage.SendData(16, number: this.whoAmi); NetMessage.SendData(26, number: this.whoAmi, number2: ((float) hitDirection), number3: ((float) Damage), number4: ((float) num)); } CombatText.NewText(new Rectangle((int) this.position.X, (int) this.position.Y, this.width, this.height), new Color((int) byte.MaxValue, 80, 90, (int) byte.MaxValue), string.Concat((object) (int) damage), Crit); this.statLife -= (int) damage; this.immune = true; this.immuneTime = 40; if (this.longInvince) this.immuneTime += 40; this.lifeRegenTime = 0; if (pvp) this.immuneTime = 8; if (this.whoAmi == Main.myPlayer && this.starCloak) { for (int index1 = 0; index1 < 3; ++index1) { float num1 = this.position.X + (float) Main.rand.Next(-400, 400); float num2 = this.position.Y - (float) Main.rand.Next(500, 800); Vector2 vector2 = new Vector2(num1, num2); float num3 = this.position.X + (float) (this.width / 2) - vector2.X; float num4 = this.position.Y + (float) (this.height / 2) - vector2.Y; float num5 = num3 + (float) Main.rand.Next(-100, 101); float num6 = 23f / (float) Math.Sqrt((double) num5 * (double) num5 + (double) num4 * (double) num4); float SpeedX = num5 * num6; float SpeedY = num4 * num6; int index2 = Projectile.NewProjectile(num1, num2, SpeedX, SpeedY, 92, 30, 5f, this.whoAmi); Main.projectile[index2].ai[1] = this.position.Y; } } if (!this.noKnockback && hitDirection != 0) { this.velocity.X = 4.5f * (float) hitDirection; this.velocity.Y = -3.5f; } if (this.wereWolf) Main.PlaySound(3, (int) this.position.X, (int) this.position.Y, 6); else if (this.boneArmor) Main.PlaySound(3, (int) this.position.X, (int) this.position.Y, 2); else if (!this.male) Main.PlaySound(20, (int) this.position.X, (int) this.position.Y); else Main.PlaySound(1, (int) this.position.X, (int) this.position.Y); if (this.statLife > 0) { for (int index = 0; (double) index < damage / (double) this.statLifeMax * 100.0; ++index) { if (this.boneArmor) Dust.NewDust(this.position, this.width, this.height, 26, (float) (2 * hitDirection), -2f); else Dust.NewDust(this.position, this.width, this.height, 5, (float) (2 * hitDirection), -2f); } } else { this.statLife = 0; if (this.whoAmi == Main.myPlayer) this.KillMe(damage, hitDirection, pvp, deathText); } } if (pvp) damage = Main.CalculateDamage(Damage1, this.statDefense); return damage; } public void KillMeForGood() { if (File.Exists(Main.playerPathName)) File.Delete(Main.playerPathName); if (File.Exists(Main.playerPathName + ".bak")) File.Delete(Main.playerPathName + ".bak"); if (File.Exists(Main.playerPathName + ".dat")) File.Delete(Main.playerPathName + ".dat"); Main.playerPathName = ""; } public void KillMe(double dmg, int hitDirection, bool pvp = false, string deathText = " was slain...") { if (this.dead) return; if (pvp) this.pvpDeath = true; if (this.difficulty == (byte) 0) { if (Main.netMode != 1) { float num = (float) Main.rand.Next(-35, 36) * 0.1f; while ((double) num < 2.0 && (double) num > -2.0) num += (float) Main.rand.Next(-30, 31) * 0.1f; int index = Projectile.NewProjectile(this.position.X + (float) (this.width / 2), this.position.Y + (float) (this.head / 2), (float) Main.rand.Next(10, 30) * 0.1f * (float) hitDirection + num, (float) Main.rand.Next(-40, -20) * 0.1f, 43, 0, 0.0f, Main.myPlayer); Main.projectile[index].miscText = this.name + deathText; } } else { if (Main.netMode != 1) { float num = (float) Main.rand.Next(-35, 36) * 0.1f; while ((double) num < 2.0 && (double) num > -2.0) num += (float) Main.rand.Next(-30, 31) * 0.1f; int index = Projectile.NewProjectile(this.position.X + (float) (this.width / 2), this.position.Y + (float) (this.head / 2), (float) Main.rand.Next(10, 30) * 0.1f * (float) hitDirection + num, (float) Main.rand.Next(-40, -20) * 0.1f, 43, 0, 0.0f, Main.myPlayer); Main.projectile[index].miscText = this.name + deathText; } if (Main.myPlayer == this.whoAmi) { Main.trashItem.SetDefaults(0); if (this.difficulty == (byte) 1) this.DropItems(); else if (this.difficulty == (byte) 2) { this.DropItems(); this.KillMeForGood(); } } } Main.PlaySound(5, (int) this.position.X, (int) this.position.Y); this.headVelocity.Y = (float) Main.rand.Next(-40, -10) * 0.1f; this.bodyVelocity.Y = (float) Main.rand.Next(-40, -10) * 0.1f; this.legVelocity.Y = (float) Main.rand.Next(-40, -10) * 0.1f; this.headVelocity.X = (float) Main.rand.Next(-20, 21) * 0.1f + (float) (2 * hitDirection); this.bodyVelocity.X = (float) Main.rand.Next(-20, 21) * 0.1f + (float) (2 * hitDirection); this.legVelocity.X = (float) Main.rand.Next(-20, 21) * 0.1f + (float) (2 * hitDirection); for (int index = 0; (double) index < 20.0 + dmg / (double) this.statLifeMax * 100.0; ++index) { if (this.boneArmor) Dust.NewDust(this.position, this.width, this.height, 26, (float) (2 * hitDirection), -2f); else Dust.NewDust(this.position, this.width, this.height, 5, (float) (2 * hitDirection), -2f); } this.dead = true; this.respawnTimer = 600; this.immuneAlpha = 0; switch (Main.netMode) { case 0: Main.NewText(this.name + deathText, (byte) 225, (byte) 25, (byte) 25); break; case 2: NetMessage.SendData(25, text: (this.name + deathText), number: ((int) byte.MaxValue), number2: 225f, number3: 25f, number4: 25f); break; } if (Main.netMode == 1 && this.whoAmi == Main.myPlayer) { int num = 0; if (pvp) num = 1; NetMessage.SendData(44, text: deathText, number: this.whoAmi, number2: ((float) hitDirection), number3: ((float) (int) dmg), number4: ((float) num)); } if (!pvp && this.whoAmi == Main.myPlayer && this.difficulty == (byte) 0) this.DropCoins(); if (this.whoAmi != Main.myPlayer) return; try { WorldGen.saveToonWhilePlaying(); } catch { } } public bool ItemSpace(Item newItem) { if (newItem.type == 58 || newItem.type == 184) return true; int num = 40; if (newItem.type == 71 || newItem.type == 72 || newItem.type == 73 || newItem.type == 74) num = 44; for (int index = 0; index < num; ++index) { if (this.inventory[index].type == 0) return true; } for (int index = 0; index < num; ++index) { if (this.inventory[index].type > 0 && this.inventory[index].stack < this.inventory[index].maxStack && newItem.IsTheSameAs(this.inventory[index])) return true; } if (newItem.ammo > 0) { if (newItem.type != 75 && newItem.type != 169 && newItem.type != 23 && newItem.type != 408 && newItem.type != 370) { for (int index = 44; index < 48; ++index) { if (this.inventory[index].type == 0) return true; } } for (int index = 44; index < 48; ++index) { if (this.inventory[index].type > 0 && this.inventory[index].stack < this.inventory[index].maxStack && newItem.IsTheSameAs(this.inventory[index])) return true; } } return false; } public void DoCoins(int i) { if (this.inventory[i].stack != 100 || this.inventory[i].type != 71 && this.inventory[i].type != 72 && this.inventory[i].type != 73) return; this.inventory[i].SetDefaults(this.inventory[i].type + 1); for (int i1 = 0; i1 < 44; ++i1) { if (this.inventory[i1].IsTheSameAs(this.inventory[i]) && i1 != i && this.inventory[i1].stack < this.inventory[i1].maxStack) { ++this.inventory[i1].stack; this.inventory[i].SetDefaults(0); this.inventory[i].active = false; this.inventory[i].name = ""; this.inventory[i].type = 0; this.inventory[i].stack = 0; this.DoCoins(i1); } } } public Item FillAmmo(int plr, Item newItem) { Item obj = newItem; for (int i = 44; i < 48; ++i) { if (this.inventory[i].type > 0 && this.inventory[i].stack < this.inventory[i].maxStack && obj.IsTheSameAs(this.inventory[i])) { Main.PlaySound(7, (int) this.position.X, (int) this.position.Y); if (obj.stack + this.inventory[i].stack <= this.inventory[i].maxStack) { this.inventory[i].stack += obj.stack; ItemText.NewText(newItem, obj.stack); this.DoCoins(i); if (plr == Main.myPlayer) Recipe.FindRecipes(); return new Item(); } obj.stack -= this.inventory[i].maxStack - this.inventory[i].stack; ItemText.NewText(newItem, this.inventory[i].maxStack - this.inventory[i].stack); this.inventory[i].stack = this.inventory[i].maxStack; this.DoCoins(i); if (plr == Main.myPlayer) Recipe.FindRecipes(); } } if (obj.type != 169 && obj.type != 75 && obj.type != 23 && obj.type != 408 && obj.type != 370) { for (int i = 44; i < 48; ++i) { if (this.inventory[i].type == 0) { this.inventory[i] = obj; ItemText.NewText(newItem, newItem.stack); this.DoCoins(i); Main.PlaySound(7, (int) this.position.X, (int) this.position.Y); if (plr == Main.myPlayer) Recipe.FindRecipes(); return new Item(); } } } return obj; } public Item GetItem(int plr, Item newItem) { Item newItem1 = newItem; int num1 = 40; if (newItem.noGrabDelay > 0) return newItem1; int num2 = 0; if (newItem.type == 71 || newItem.type == 72 || newItem.type == 73 || newItem.type == 74) { num2 = -4; num1 = 44; } if (newItem1.ammo > 0) { newItem1 = this.FillAmmo(plr, newItem1); if (newItem1.type == 0 || newItem1.stack == 0) return new Item(); } for (int index = num2; index < 40; ++index) { int i = index; if (i < 0) i = 44 + index; if (this.inventory[i].type > 0 && this.inventory[i].stack < this.inventory[i].maxStack && newItem1.IsTheSameAs(this.inventory[i])) { Main.PlaySound(7, (int) this.position.X, (int) this.position.Y); if (newItem1.stack + this.inventory[i].stack <= this.inventory[i].maxStack) { this.inventory[i].stack += newItem1.stack; ItemText.NewText(newItem, newItem1.stack); this.DoCoins(i); if (plr == Main.myPlayer) Recipe.FindRecipes(); return new Item(); } newItem1.stack -= this.inventory[i].maxStack - this.inventory[i].stack; ItemText.NewText(newItem, this.inventory[i].maxStack - this.inventory[i].stack); this.inventory[i].stack = this.inventory[i].maxStack; this.DoCoins(i); if (plr == Main.myPlayer) Recipe.FindRecipes(); } } if (newItem.type != 71 && newItem.type != 72 && newItem.type != 73 && newItem.type != 74 && newItem.useStyle > 0) { for (int i = 0; i < 10; ++i) { if (this.inventory[i].type == 0) { this.inventory[i] = newItem1; ItemText.NewText(newItem, newItem.stack); this.DoCoins(i); Main.PlaySound(7, (int) this.position.X, (int) this.position.Y); if (plr == Main.myPlayer) Recipe.FindRecipes(); return new Item(); } } } for (int i = num1 - 1; i >= 0; --i) { if (this.inventory[i].type == 0) { this.inventory[i] = newItem1; ItemText.NewText(newItem, newItem.stack); this.DoCoins(i); Main.PlaySound(7, (int) this.position.X, (int) this.position.Y); if (plr == Main.myPlayer) Recipe.FindRecipes(); return new Item(); } } return newItem1; } public void PlaceThing() { if (this.inventory[this.selectedItem].createTile >= 0 && (double) this.position.X / 16.0 - (double) Player.tileRangeX - (double) this.inventory[this.selectedItem].tileBoost - (double) this.blockRange <= (double) Player.tileTargetX && ((double) this.position.X + (double) this.width) / 16.0 + (double) Player.tileRangeX + (double) this.inventory[this.selectedItem].tileBoost - 1.0 + (double) this.blockRange >= (double) Player.tileTargetX && (double) this.position.Y / 16.0 - (double) Player.tileRangeY - (double) this.inventory[this.selectedItem].tileBoost - (double) this.blockRange <= (double) Player.tileTargetY && ((double) this.position.Y + (double) this.height) / 16.0 + (double) Player.tileRangeY + (double) this.inventory[this.selectedItem].tileBoost - 2.0 + (double) this.blockRange >= (double) Player.tileTargetY) { this.showItemIcon = true; bool flag1 = false; if (Main.tile[Player.tileTargetX, Player.tileTargetY].liquid > (byte) 0 && Main.tile[Player.tileTargetX, Player.tileTargetY].lava) { if (Main.tileSolid[this.inventory[this.selectedItem].createTile]) flag1 = true; else if (Main.tileLavaDeath[this.inventory[this.selectedItem].createTile]) flag1 = true; } if ((!Main.tile[Player.tileTargetX, Player.tileTargetY].active && !flag1 || Main.tileCut[(int) Main.tile[Player.tileTargetX, Player.tileTargetY].type] || this.inventory[this.selectedItem].createTile == 23 || this.inventory[this.selectedItem].createTile == 2 || this.inventory[this.selectedItem].createTile == 109 || this.inventory[this.selectedItem].createTile == 60 || this.inventory[this.selectedItem].createTile == 70) && this.itemTime == 0 && this.itemAnimation > 0 && this.controlUseItem) { bool flag2 = false; if (this.inventory[this.selectedItem].createTile == 23 || this.inventory[this.selectedItem].createTile == 2 || this.inventory[this.selectedItem].createTile == 109) { if (Main.tile[Player.tileTargetX, Player.tileTargetY].active && Main.tile[Player.tileTargetX, Player.tileTargetY].type == (byte) 0) flag2 = true; } else if (this.inventory[this.selectedItem].createTile == 60 || this.inventory[this.selectedItem].createTile == 70) { if (Main.tile[Player.tileTargetX, Player.tileTargetY].active && Main.tile[Player.tileTargetX, Player.tileTargetY].type == (byte) 59) flag2 = true; } else if (this.inventory[this.selectedItem].createTile == 4 || this.inventory[this.selectedItem].createTile == 136) { int index1 = (int) Main.tile[Player.tileTargetX, Player.tileTargetY + 1].type; int index2 = (int) Main.tile[Player.tileTargetX - 1, Player.tileTargetY].type; int index3 = (int) Main.tile[Player.tileTargetX + 1, Player.tileTargetY].type; int num1 = (int) Main.tile[Player.tileTargetX - 1, Player.tileTargetY - 1].type; int num2 = (int) Main.tile[Player.tileTargetX + 1, Player.tileTargetY - 1].type; int num3 = (int) Main.tile[Player.tileTargetX - 1, Player.tileTargetY - 1].type; int num4 = (int) Main.tile[Player.tileTargetX + 1, Player.tileTargetY + 1].type; if (!Main.tile[Player.tileTargetX, Player.tileTargetY + 1].active) index1 = -1; if (!Main.tile[Player.tileTargetX - 1, Player.tileTargetY].active) index2 = -1; if (!Main.tile[Player.tileTargetX + 1, Player.tileTargetY].active) index3 = -1; if (!Main.tile[Player.tileTargetX - 1, Player.tileTargetY - 1].active) num1 = -1; if (!Main.tile[Player.tileTargetX + 1, Player.tileTargetY - 1].active) num2 = -1; if (!Main.tile[Player.tileTargetX - 1, Player.tileTargetY + 1].active) num3 = -1; if (!Main.tile[Player.tileTargetX + 1, Player.tileTargetY + 1].active) num4 = -1; if (index1 >= 0 && Main.tileSolid[index1] && !Main.tileNoAttach[index1]) flag2 = true; else if (index2 >= 0 && Main.tileSolid[index2] && !Main.tileNoAttach[index2] || index2 == 5 && num1 == 5 && num3 == 5 || index2 == 124) flag2 = true; else if (index3 >= 0 && Main.tileSolid[index3] && !Main.tileNoAttach[index3] || index3 == 5 && num2 == 5 && num4 == 5 || index3 == 124) flag2 = true; } else if (this.inventory[this.selectedItem].createTile == 78 || this.inventory[this.selectedItem].createTile == 98 || this.inventory[this.selectedItem].createTile == 100) { if (Main.tile[Player.tileTargetX, Player.tileTargetY + 1].active && (Main.tileSolid[(int) Main.tile[Player.tileTargetX, Player.tileTargetY + 1].type] || Main.tileTable[(int) Main.tile[Player.tileTargetX, Player.tileTargetY + 1].type])) flag2 = true; } else if (this.inventory[this.selectedItem].createTile == 13 || this.inventory[this.selectedItem].createTile == 29 || this.inventory[this.selectedItem].createTile == 33 || this.inventory[this.selectedItem].createTile == 49 || this.inventory[this.selectedItem].createTile == 50 || this.inventory[this.selectedItem].createTile == 103) { if (Main.tile[Player.tileTargetX, Player.tileTargetY + 1].active && Main.tileTable[(int) Main.tile[Player.tileTargetX, Player.tileTargetY + 1].type]) flag2 = true; } else if (this.inventory[this.selectedItem].createTile == 51) { if (Main.tile[Player.tileTargetX + 1, Player.tileTargetY].active || Main.tile[Player.tileTargetX + 1, Player.tileTargetY].wall > (byte) 0 || Main.tile[Player.tileTargetX - 1, Player.tileTargetY].active || Main.tile[Player.tileTargetX - 1, Player.tileTargetY].wall > (byte) 0 || Main.tile[Player.tileTargetX, Player.tileTargetY + 1].active || Main.tile[Player.tileTargetX, Player.tileTargetY + 1].wall > (byte) 0 || Main.tile[Player.tileTargetX, Player.tileTargetY - 1].active || Main.tile[Player.tileTargetX, Player.tileTargetY - 1].wall > (byte) 0) flag2 = true; } else if (Main.tile[Player.tileTargetX + 1, Player.tileTargetY].active && Main.tileSolid[(int) Main.tile[Player.tileTargetX + 1, Player.tileTargetY].type] || Main.tile[Player.tileTargetX + 1, Player.tileTargetY].wall > (byte) 0 || Main.tile[Player.tileTargetX - 1, Player.tileTargetY].active && Main.tileSolid[(int) Main.tile[Player.tileTargetX - 1, Player.tileTargetY].type] || Main.tile[Player.tileTargetX - 1, Player.tileTargetY].wall > (byte) 0 || Main.tile[Player.tileTargetX, Player.tileTargetY + 1].active && (Main.tileSolid[(int) Main.tile[Player.tileTargetX, Player.tileTargetY + 1].type] || Main.tile[Player.tileTargetX, Player.tileTargetY + 1].type == (byte) 124) || Main.tile[Player.tileTargetX, Player.tileTargetY + 1].wall > (byte) 0 || Main.tile[Player.tileTargetX, Player.tileTargetY - 1].active && (Main.tileSolid[(int) Main.tile[Player.tileTargetX, Player.tileTargetY - 1].type] || Main.tile[Player.tileTargetX, Player.tileTargetY - 1].type == (byte) 124) || Main.tile[Player.tileTargetX, Player.tileTargetY - 1].wall > (byte) 0) flag2 = true; if (Main.tileAlch[this.inventory[this.selectedItem].createTile]) flag2 = true; if (Main.tile[Player.tileTargetX, Player.tileTargetY].active && Main.tileCut[(int) Main.tile[Player.tileTargetX, Player.tileTargetY].type]) { if (Main.tile[Player.tileTargetX, Player.tileTargetY + 1].type != (byte) 78) { WorldGen.KillTile(Player.tileTargetX, Player.tileTargetY); if (!Main.tile[Player.tileTargetX, Player.tileTargetY].active && Main.netMode == 1) NetMessage.SendData(17, number: 4, number2: ((float) Player.tileTargetX), number3: ((float) Player.tileTargetY)); } else flag2 = false; } if (flag2) { int num = this.inventory[this.selectedItem].placeStyle; if (this.inventory[this.selectedItem].createTile == 141) num = Main.rand.Next(2); if (this.inventory[this.selectedItem].createTile == 128 || this.inventory[this.selectedItem].createTile == 137) num = this.direction >= 0 ? 1 : -1; if (WorldGen.PlaceTile(Player.tileTargetX, Player.tileTargetY, this.inventory[this.selectedItem].createTile, plr: this.whoAmi, style: num)) { this.itemTime = this.inventory[this.selectedItem].useTime; if (Main.netMode == 1) NetMessage.SendData(17, number: 1, number2: ((float) Player.tileTargetX), number3: ((float) Player.tileTargetY), number4: ((float) this.inventory[this.selectedItem].createTile), number5: num); if (this.inventory[this.selectedItem].createTile == 15) { if (this.direction == 1) { Main.tile[Player.tileTargetX, Player.tileTargetY].frameX += (short) 18; Main.tile[Player.tileTargetX, Player.tileTargetY - 1].frameX += (short) 18; } if (Main.netMode == 1) NetMessage.SendTileSquare(-1, Player.tileTargetX - 1, Player.tileTargetY - 1, 3); } else if ((this.inventory[this.selectedItem].createTile == 79 || this.inventory[this.selectedItem].createTile == 90) && Main.netMode == 1) NetMessage.SendTileSquare(-1, Player.tileTargetX, Player.tileTargetY, 5); } } } } if (this.inventory[this.selectedItem].createWall < 0 || (double) this.position.X / 16.0 - (double) Player.tileRangeX - (double) this.inventory[this.selectedItem].tileBoost > (double) Player.tileTargetX || ((double) this.position.X + (double) this.width) / 16.0 + (double) Player.tileRangeX + (double) this.inventory[this.selectedItem].tileBoost - 1.0 < (double) Player.tileTargetX || (double) this.position.Y / 16.0 - (double) Player.tileRangeY - (double) this.inventory[this.selectedItem].tileBoost > (double) Player.tileTargetY || ((double) this.position.Y + (double) this.height) / 16.0 + (double) Player.tileRangeY + (double) this.inventory[this.selectedItem].tileBoost - 2.0 < (double) Player.tileTargetY) return; this.showItemIcon = true; if (this.itemTime != 0 || this.itemAnimation <= 0 || !this.controlUseItem || !Main.tile[Player.tileTargetX + 1, Player.tileTargetY].active && Main.tile[Player.tileTargetX + 1, Player.tileTargetY].wall <= (byte) 0 && !Main.tile[Player.tileTargetX - 1, Player.tileTargetY].active && Main.tile[Player.tileTargetX - 1, Player.tileTargetY].wall <= (byte) 0 && !Main.tile[Player.tileTargetX, Player.tileTargetY + 1].active && Main.tile[Player.tileTargetX, Player.tileTargetY + 1].wall <= (byte) 0 && !Main.tile[Player.tileTargetX, Player.tileTargetY - 1].active && Main.tile[Player.tileTargetX, Player.tileTargetY - 1].wall <= (byte) 0 || (int) Main.tile[Player.tileTargetX, Player.tileTargetY].wall == this.inventory[this.selectedItem].createWall) return; WorldGen.PlaceWall(Player.tileTargetX, Player.tileTargetY, this.inventory[this.selectedItem].createWall); if ((int) Main.tile[Player.tileTargetX, Player.tileTargetY].wall != this.inventory[this.selectedItem].createWall) return; this.itemTime = this.inventory[this.selectedItem].useTime; if (Main.netMode == 1) NetMessage.SendData(17, number: 3, number2: ((float) Player.tileTargetX), number3: ((float) Player.tileTargetY), number4: ((float) this.inventory[this.selectedItem].createWall)); if (this.inventory[this.selectedItem].stack <= 1) return; int createWall = this.inventory[this.selectedItem].createWall; for (int index4 = 0; index4 < 4; ++index4) { int tileTargetX = Player.tileTargetX; int tileTargetY = Player.tileTargetY; if (index4 == 0) --tileTargetX; if (index4 == 1) ++tileTargetX; if (index4 == 2) --tileTargetY; if (index4 == 3) ++tileTargetY; if (Main.tile[tileTargetX, tileTargetY].wall == (byte) 0) { int num = 0; for (int index5 = 0; index5 < 4; ++index5) { int index6 = tileTargetX; int index7 = tileTargetY; if (index5 == 0) --index6; if (index5 == 1) ++index6; if (index5 == 2) --index7; if (index5 == 3) ++index7; if ((int) Main.tile[index6, index7].wall == createWall) ++num; } if (num == 4) { WorldGen.PlaceWall(tileTargetX, tileTargetY, createWall); if ((int) Main.tile[tileTargetX, tileTargetY].wall == createWall) { --this.inventory[this.selectedItem].stack; if (this.inventory[this.selectedItem].stack == 0) this.inventory[this.selectedItem].SetDefaults(0); if (Main.netMode == 1) NetMessage.SendData(17, number: 3, number2: ((float) tileTargetX), number3: ((float) tileTargetY), number4: ((float) createWall)); } } } } } public void ItemCheck(int i) { int num1 = this.inventory[this.selectedItem].damage; if (num1 > 0) { if (this.inventory[this.selectedItem].melee) num1 = (int) ((double) num1 * (double) this.meleeDamage); else if (this.inventory[this.selectedItem].ranged) num1 = (int) ((double) num1 * (double) this.rangedDamage); else if (this.inventory[this.selectedItem].magic) num1 = (int) ((double) num1 * (double) this.magicDamage); } if (this.inventory[this.selectedItem].autoReuse && !this.noItems) { this.releaseUseItem = true; if (this.itemAnimation == 1 && this.inventory[this.selectedItem].stack > 0) this.itemAnimation = this.inventory[this.selectedItem].shoot <= 0 || this.whoAmi == Main.myPlayer || !this.controlUseItem ? 0 : 2; } if (this.itemAnimation == 0 && this.reuseDelay > 0) { this.itemAnimation = this.reuseDelay; this.itemTime = this.reuseDelay; this.reuseDelay = 0; } if (this.controlUseItem && this.releaseUseItem && (this.inventory[this.selectedItem].headSlot > 0 || this.inventory[this.selectedItem].bodySlot > 0 || this.inventory[this.selectedItem].legSlot > 0)) { if (this.inventory[this.selectedItem].useStyle == 0) this.releaseUseItem = false; if ((double) this.position.X / 16.0 - (double) Player.tileRangeX - (double) this.inventory[this.selectedItem].tileBoost <= (double) Player.tileTargetX && ((double) this.position.X + (double) this.width) / 16.0 + (double) Player.tileRangeX + (double) this.inventory[this.selectedItem].tileBoost - 1.0 >= (double) Player.tileTargetX && (double) this.position.Y / 16.0 - (double) Player.tileRangeY - (double) this.inventory[this.selectedItem].tileBoost <= (double) Player.tileTargetY && ((double) this.position.Y + (double) this.height) / 16.0 + (double) Player.tileRangeY + (double) this.inventory[this.selectedItem].tileBoost - 2.0 >= (double) Player.tileTargetY) { int tileTargetX = Player.tileTargetX; int tileTargetY = Player.tileTargetY; if (Main.tile[tileTargetX, tileTargetY].active && Main.tile[tileTargetX, tileTargetY].type == (byte) 128) { int frameY = (int) Main.tile[tileTargetX, tileTargetY].frameY; int num2 = 0; if (this.inventory[this.selectedItem].bodySlot >= 0) num2 = 1; if (this.inventory[this.selectedItem].legSlot >= 0) num2 = 2; int num3; for (num3 = frameY / 18; num2 > num3; num3 = (int) Main.tile[tileTargetX, tileTargetY].frameY / 18) ++tileTargetY; for (; num2 < num3; num3 = (int) Main.tile[tileTargetX, tileTargetY].frameY / 18) --tileTargetY; int frameX1 = (int) Main.tile[tileTargetX, tileTargetY].frameX; while (frameX1 >= 100) frameX1 -= 100; if (frameX1 >= 36) frameX1 -= 36; int index = tileTargetX - frameX1 / 18; int frameX2 = (int) Main.tile[index, tileTargetY].frameX; WorldGen.KillTile(index, tileTargetY, true); if (Main.netMode == 1) NetMessage.SendData(17, number2: ((float) index), number3: ((float) tileTargetY), number4: 1f); while (frameX2 >= 100) frameX2 -= 100; if (num3 == 0 && this.inventory[this.selectedItem].headSlot >= 0) { Main.tile[index, tileTargetY].frameX = (short) (frameX2 + this.inventory[this.selectedItem].headSlot * 100); if (Main.netMode == 1) NetMessage.SendTileSquare(-1, index, tileTargetY, 1); this.inventory[this.selectedItem].SetDefaults(0); Main.mouseItem.SetDefaults(0); this.releaseUseItem = false; this.mouseInterface = true; } else if (num3 == 1 && this.inventory[this.selectedItem].bodySlot >= 0) { Main.tile[index, tileTargetY].frameX = (short) (frameX2 + this.inventory[this.selectedItem].bodySlot * 100); if (Main.netMode == 1) NetMessage.SendTileSquare(-1, index, tileTargetY, 1); this.inventory[this.selectedItem].SetDefaults(0); Main.mouseItem.SetDefaults(0); this.releaseUseItem = false; this.mouseInterface = true; } else if (num3 == 2 && this.inventory[this.selectedItem].legSlot >= 0) { Main.tile[index, tileTargetY].frameX = (short) (frameX2 + this.inventory[this.selectedItem].legSlot * 100); if (Main.netMode == 1) NetMessage.SendTileSquare(-1, index, tileTargetY, 1); this.inventory[this.selectedItem].SetDefaults(0); Main.mouseItem.SetDefaults(0); this.releaseUseItem = false; this.mouseInterface = true; } } } } if (this.controlUseItem && this.itemAnimation == 0 && this.releaseUseItem && this.inventory[this.selectedItem].useStyle > 0) { bool flag = true; if (this.inventory[this.selectedItem].shoot == 0) this.itemRotation = 0.0f; if (this.wet && (this.inventory[this.selectedItem].shoot == 85 || this.inventory[this.selectedItem].shoot == 15 || this.inventory[this.selectedItem].shoot == 34)) flag = false; if (this.whoAmi == Main.myPlayer && this.inventory[this.selectedItem].type == 603 && !Main.cEd) flag = false; if (this.noItems) flag = false; if (this.inventory[this.selectedItem].shoot == 6 || this.inventory[this.selectedItem].shoot == 19 || this.inventory[this.selectedItem].shoot == 33 || this.inventory[this.selectedItem].shoot == 52) { for (int index = 0; index < 1000; ++index) { if (Main.projectile[index].active && Main.projectile[index].owner == Main.myPlayer && Main.projectile[index].type == this.inventory[this.selectedItem].shoot) flag = false; } } if (this.inventory[this.selectedItem].shoot == 106) { int num4 = 0; for (int index = 0; index < 1000; ++index) { if (Main.projectile[index].active && Main.projectile[index].owner == Main.myPlayer && Main.projectile[index].type == this.inventory[this.selectedItem].shoot) ++num4; } if (num4 >= this.inventory[this.selectedItem].stack) flag = false; } if (this.inventory[this.selectedItem].shoot == 13 || this.inventory[this.selectedItem].shoot == 32) { for (int index = 0; index < 1000; ++index) { if (Main.projectile[index].active && Main.projectile[index].owner == Main.myPlayer && Main.projectile[index].type == this.inventory[this.selectedItem].shoot && (double) Main.projectile[index].ai[0] != 2.0) flag = false; } } if (this.inventory[this.selectedItem].shoot == 73) { for (int index = 0; index < 1000; ++index) { if (Main.projectile[index].active && Main.projectile[index].owner == Main.myPlayer && Main.projectile[index].type == 74) flag = false; } } if (this.inventory[this.selectedItem].potion && flag) { if (this.potionDelay <= 0) { this.potionDelay = this.potionDelayTime; this.AddBuff(21, this.potionDelay); } else flag = false; } if (this.inventory[this.selectedItem].mana > 0 && this.silence) flag = false; if (this.inventory[this.selectedItem].mana > 0 && flag) { if (this.inventory[this.selectedItem].type != (int) sbyte.MaxValue || !this.spaceGun) { if (this.statMana >= (int) ((double) this.inventory[this.selectedItem].mana * (double) this.manaCost)) this.statMana -= (int) ((double) this.inventory[this.selectedItem].mana * (double) this.manaCost); else if (this.manaFlower) { this.QuickMana(); if (this.statMana >= (int) ((double) this.inventory[this.selectedItem].mana * (double) this.manaCost)) this.statMana -= (int) ((double) this.inventory[this.selectedItem].mana * (double) this.manaCost); else flag = false; } else flag = false; } if (this.whoAmi == Main.myPlayer && this.inventory[this.selectedItem].buffType != 0) this.AddBuff(this.inventory[this.selectedItem].buffType, this.inventory[this.selectedItem].buffTime); } if (this.whoAmi == Main.myPlayer && this.inventory[this.selectedItem].type == 603 && Main.cEd) this.AddBuff(this.inventory[this.selectedItem].buffType, 3600); if (this.inventory[this.selectedItem].type == 43 && Main.dayTime) flag = false; if (this.inventory[this.selectedItem].type == 544 && Main.dayTime) flag = false; if (this.inventory[this.selectedItem].type == 556 && Main.dayTime) flag = false; if (this.inventory[this.selectedItem].type == 557 && Main.dayTime) flag = false; if (this.inventory[this.selectedItem].type == 70 && !this.zoneEvil) flag = false; if (this.inventory[this.selectedItem].shoot == 17 && flag && i == Main.myPlayer) { int i1 = (int) ((double) Main.mouseX + (double) Main.screenPosition.X) / 16; int j = (int) ((double) Main.mouseY + (double) Main.screenPosition.Y) / 16; if (Main.tile[i1, j].active && (Main.tile[i1, j].type == (byte) 0 || Main.tile[i1, j].type == (byte) 2 || Main.tile[i1, j].type == (byte) 23)) { WorldGen.KillTile(i1, j, noItem: true); if (!Main.tile[i1, j].active) { if (Main.netMode == 1) NetMessage.SendData(17, number: 4, number2: ((float) i1), number3: ((float) j)); } else flag = false; } else flag = false; } if (flag && this.inventory[this.selectedItem].useAmmo > 0) { flag = false; for (int index = 0; index < 48; ++index) { if (this.inventory[index].ammo == this.inventory[this.selectedItem].useAmmo && this.inventory[index].stack > 0) { flag = true; break; } } } if (flag) { if (this.inventory[this.selectedItem].pick > 0 || this.inventory[this.selectedItem].axe > 0 || this.inventory[this.selectedItem].hammer > 0) this.toolTime = 1; if (this.grappling[0] > -1) { if (this.controlRight) this.direction = 1; else if (this.controlLeft) this.direction = -1; } this.channel = this.inventory[this.selectedItem].channel; this.attackCD = 0; if (this.inventory[this.selectedItem].melee) { this.itemAnimation = (int) ((double) this.inventory[this.selectedItem].useAnimation * (double) this.meleeSpeed); this.itemAnimationMax = (int) ((double) this.inventory[this.selectedItem].useAnimation * (double) this.meleeSpeed); } else { this.itemAnimation = this.inventory[this.selectedItem].useAnimation; this.itemAnimationMax = this.inventory[this.selectedItem].useAnimation; this.reuseDelay = this.inventory[this.selectedItem].reuseDelay; } if (this.inventory[this.selectedItem].useSound > 0) Main.PlaySound(2, (int) this.position.X, (int) this.position.Y, this.inventory[this.selectedItem].useSound); } if (flag && (this.inventory[this.selectedItem].shoot == 18 || this.inventory[this.selectedItem].shoot == 72 || this.inventory[this.selectedItem].shoot == 86 || this.inventory[this.selectedItem].shoot == 86 || this.inventory[this.selectedItem].shoot == 111)) { for (int index = 0; index < 1000; ++index) { if (Main.projectile[index].active && Main.projectile[index].owner == i && Main.projectile[index].type == this.inventory[this.selectedItem].shoot) Main.projectile[index].Kill(); if (this.inventory[this.selectedItem].shoot == 72) { if (Main.projectile[index].active && Main.projectile[index].owner == i && Main.projectile[index].type == 86) Main.projectile[index].Kill(); if (Main.projectile[index].active && Main.projectile[index].owner == i && Main.projectile[index].type == 87) Main.projectile[index].Kill(); } } } } if (!this.controlUseItem) { int num5 = this.channel ? 1 : 0; this.channel = false; } if (this.itemAnimation > 0) { this.itemAnimationMax = !this.inventory[this.selectedItem].melee ? this.inventory[this.selectedItem].useAnimation : (int) ((double) this.inventory[this.selectedItem].useAnimation * (double) this.meleeSpeed); if (this.inventory[this.selectedItem].mana > 0) this.manaRegenDelay = (int) this.maxRegenDelay; if (Main.dedServ) { this.itemHeight = this.inventory[this.selectedItem].height; this.itemWidth = this.inventory[this.selectedItem].width; } else { this.itemHeight = Main.itemTexture[this.inventory[this.selectedItem].type].Height; this.itemWidth = Main.itemTexture[this.inventory[this.selectedItem].type].Width; } --this.itemAnimation; if (!Main.dedServ) { if (this.inventory[this.selectedItem].useStyle == 1) { if ((double) this.itemAnimation < (double) this.itemAnimationMax * 0.333) { float num6 = 10f; if (Main.itemTexture[this.inventory[this.selectedItem].type].Width > 32) num6 = 14f; if (Main.itemTexture[this.inventory[this.selectedItem].type].Width > 64) num6 = 28f; this.itemLocation.X = (float) ((double) this.position.X + (double) this.width * 0.5 + ((double) Main.itemTexture[this.inventory[this.selectedItem].type].Width * 0.5 - (double) num6) * (double) this.direction); this.itemLocation.Y = this.position.Y + 24f; } else if ((double) this.itemAnimation < (double) this.itemAnimationMax * 0.666) { float num7 = 10f; if (Main.itemTexture[this.inventory[this.selectedItem].type].Width > 32) num7 = 18f; if (Main.itemTexture[this.inventory[this.selectedItem].type].Width > 64) num7 = 28f; this.itemLocation.X = (float) ((double) this.position.X + (double) this.width * 0.5 + ((double) Main.itemTexture[this.inventory[this.selectedItem].type].Width * 0.5 - (double) num7) * (double) this.direction); float num8 = 10f; if (Main.itemTexture[this.inventory[this.selectedItem].type].Height > 32) num8 = 8f; if (Main.itemTexture[this.inventory[this.selectedItem].type].Height > 64) num8 = 14f; this.itemLocation.Y = this.position.Y + num8; } else { float num9 = 6f; if (Main.itemTexture[this.inventory[this.selectedItem].type].Width > 32) num9 = 14f; if (Main.itemTexture[this.inventory[this.selectedItem].type].Width > 64) num9 = 28f; this.itemLocation.X = (float) ((double) this.position.X + (double) this.width * 0.5 - ((double) Main.itemTexture[this.inventory[this.selectedItem].type].Width * 0.5 - (double) num9) * (double) this.direction); float num10 = 10f; if (Main.itemTexture[this.inventory[this.selectedItem].type].Height > 32) num10 = 10f; if (Main.itemTexture[this.inventory[this.selectedItem].type].Height > 64) num10 = 14f; this.itemLocation.Y = this.position.Y + num10; } this.itemRotation = (float) (((double) this.itemAnimation / (double) this.itemAnimationMax - 0.5) * (double) -this.direction * 3.5 - (double) this.direction * 0.300000011920929); if ((double) this.gravDir == -1.0) { this.itemRotation = -this.itemRotation; this.itemLocation.Y = (float) ((double) this.position.Y + (double) this.height + ((double) this.position.Y - (double) this.itemLocation.Y)); } } else if (this.inventory[this.selectedItem].useStyle == 2) { this.itemRotation = (float) ((double) this.itemAnimation / (double) this.itemAnimationMax * (double) this.direction * 2.0 + -1.39999997615814 * (double) this.direction); if ((double) this.itemAnimation < (double) this.itemAnimationMax * 0.5) { this.itemLocation.X = (float) ((double) this.position.X + (double) this.width * 0.5 + ((double) Main.itemTexture[this.inventory[this.selectedItem].type].Width * 0.5 - 9.0 - (double) this.itemRotation * 12.0 * (double) this.direction) * (double) this.direction); this.itemLocation.Y = (float) ((double) this.position.Y + 38.0 + (double) this.itemRotation * (double) this.direction * 4.0); } else { this.itemLocation.X = (float) ((double) this.position.X + (double) this.width * 0.5 + ((double) Main.itemTexture[this.inventory[this.selectedItem].type].Width * 0.5 - 9.0 - (double) this.itemRotation * 16.0 * (double) this.direction) * (double) this.direction); this.itemLocation.Y = (float) ((double) this.position.Y + 38.0 + (double) this.itemRotation * (double) this.direction); } if ((double) this.gravDir == -1.0) { this.itemRotation = -this.itemRotation; this.itemLocation.Y = (float) ((double) this.position.Y + (double) this.height + ((double) this.position.Y - (double) this.itemLocation.Y)); } } else if (this.inventory[this.selectedItem].useStyle == 3) { if ((double) this.itemAnimation > (double) this.itemAnimationMax * 0.666) { this.itemLocation.X = -1000f; this.itemLocation.Y = -1000f; this.itemRotation = -1.3f * (float) this.direction; } else { this.itemLocation.X = (float) ((double) this.position.X + (double) this.width * 0.5 + ((double) Main.itemTexture[this.inventory[this.selectedItem].type].Width * 0.5 - 4.0) * (double) this.direction); this.itemLocation.Y = this.position.Y + 24f; float num11 = (float) ((double) this.itemAnimation / (double) this.itemAnimationMax * (double) Main.itemTexture[this.inventory[this.selectedItem].type].Width * (double) this.direction * (double) this.inventory[this.selectedItem].scale * 1.20000004768372) - (float) (10 * this.direction); if ((double) num11 > -4.0 && this.direction == -1) num11 = -8f; if ((double) num11 < 4.0 && this.direction == 1) num11 = 8f; this.itemLocation.X -= num11; this.itemRotation = 0.8f * (float) this.direction; } if ((double) this.gravDir == -1.0) { this.itemRotation = -this.itemRotation; this.itemLocation.Y = (float) ((double) this.position.Y + (double) this.height + ((double) this.position.Y - (double) this.itemLocation.Y)); } } else if (this.inventory[this.selectedItem].useStyle == 4) { this.itemRotation = 0.0f; this.itemLocation.X = (float) ((double) this.position.X + (double) this.width * 0.5 + ((double) Main.itemTexture[this.inventory[this.selectedItem].type].Width * 0.5 - 9.0 - (double) this.itemRotation * 14.0 * (double) this.direction - 4.0) * (double) this.direction); this.itemLocation.Y = (float) ((double) this.position.Y + (double) Main.itemTexture[this.inventory[this.selectedItem].type].Height * 0.5 + 4.0); if ((double) this.gravDir == -1.0) { this.itemRotation = -this.itemRotation; this.itemLocation.Y = (float) ((double) this.position.Y + (double) this.height + ((double) this.position.Y - (double) this.itemLocation.Y)); } } else if (this.inventory[this.selectedItem].useStyle == 5) { this.itemLocation.X = (float) ((double) this.position.X + (double) this.width * 0.5 - (double) Main.itemTexture[this.inventory[this.selectedItem].type].Width * 0.5) - (float) (this.direction * 2); this.itemLocation.Y = (float) ((double) this.position.Y + (double) this.height * 0.5 - (double) Main.itemTexture[this.inventory[this.selectedItem].type].Height * 0.5); } } } else if (this.inventory[this.selectedItem].holdStyle == 1) { if (Main.dedServ) { this.itemLocation.X = (float) ((double) this.position.X + (double) this.width * 0.5 + 20.0 * (double) this.direction); } else { this.itemLocation.X = (float) ((double) this.position.X + (double) this.width * 0.5 + ((double) Main.itemTexture[this.inventory[this.selectedItem].type].Width * 0.5 + 2.0) * (double) this.direction); if (this.inventory[this.selectedItem].type == 282 || this.inventory[this.selectedItem].type == 286) { this.itemLocation.X -= (float) (this.direction * 2); this.itemLocation.Y += 4f; } } this.itemLocation.Y = this.position.Y + 24f; this.itemRotation = 0.0f; if ((double) this.gravDir == -1.0) { this.itemRotation = -this.itemRotation; this.itemLocation.Y = (float) ((double) this.position.Y + (double) this.height + ((double) this.position.Y - (double) this.itemLocation.Y)); } } else if (this.inventory[this.selectedItem].holdStyle == 2) { this.itemLocation.X = this.position.X + (float) this.width * 0.5f + (float) (6 * this.direction); this.itemLocation.Y = this.position.Y + 16f; this.itemRotation = 0.79f * (float) -this.direction; if ((double) this.gravDir == -1.0) { this.itemRotation = -this.itemRotation; this.itemLocation.Y = (float) ((double) this.position.Y + (double) this.height + ((double) this.position.Y - (double) this.itemLocation.Y)); } } else if (this.inventory[this.selectedItem].holdStyle == 3 && !Main.dedServ) { this.itemLocation.X = (float) ((double) this.position.X + (double) this.width * 0.5 - (double) Main.itemTexture[this.inventory[this.selectedItem].type].Width * 0.5) - (float) (this.direction * 2); this.itemLocation.Y = (float) ((double) this.position.Y + (double) this.height * 0.5 - (double) Main.itemTexture[this.inventory[this.selectedItem].type].Height * 0.5); this.itemRotation = 0.0f; } if ((this.inventory[this.selectedItem].type == 8 || this.inventory[this.selectedItem].type >= 427 && this.inventory[this.selectedItem].type <= 433) && !this.wet || this.inventory[this.selectedItem].type == 523) { float R = 1f; float G = 0.95f; float B = 0.8f; int num12 = 0; if (this.inventory[this.selectedItem].type == 523) num12 = 8; else if (this.inventory[this.selectedItem].type >= 427) num12 = this.inventory[this.selectedItem].type - 426; switch (num12) { case 1: R = 0.0f; G = 0.1f; B = 1.3f; break; case 2: R = 1f; G = 0.1f; B = 0.1f; break; case 3: R = 0.0f; G = 1f; B = 0.1f; break; case 4: R = 0.9f; G = 0.0f; B = 0.9f; break; case 5: R = 1.3f; G = 1.3f; B = 1.3f; break; case 6: R = 0.9f; G = 0.9f; B = 0.0f; break; case 7: R = (float) (0.5 * (double) Main.demonTorch + 1.0 * (1.0 - (double) Main.demonTorch)); G = 0.3f; B = (float) (1.0 * (double) Main.demonTorch + 0.5 * (1.0 - (double) Main.demonTorch)); break; case 8: B = 0.7f; R = 0.85f; G = 1f; break; } int num13 = num12; int Type; switch (num13) { case 0: Type = 6; break; case 8: Type = 75; break; default: Type = 58 + num13; break; } int maxValue = 20; if (this.itemAnimation > 0) maxValue = 7; if (this.direction == -1) { if (Main.rand.Next(maxValue) == 0) Dust.NewDust(new Vector2(this.itemLocation.X - 16f, this.itemLocation.Y - 14f * this.gravDir), 4, 4, Type, Alpha: 100); Lighting.addLight((int) (((double) this.itemLocation.X - 12.0 + (double) this.velocity.X) / 16.0), (int) (((double) this.itemLocation.Y - 14.0 + (double) this.velocity.Y) / 16.0), R, G, B); } else { if (Main.rand.Next(maxValue) == 0) Dust.NewDust(new Vector2(this.itemLocation.X + 6f, this.itemLocation.Y - 14f * this.gravDir), 4, 4, Type, Alpha: 100); Lighting.addLight((int) (((double) this.itemLocation.X + 12.0 + (double) this.velocity.X) / 16.0), (int) (((double) this.itemLocation.Y - 14.0 + (double) this.velocity.Y) / 16.0), R, G, B); } } if (this.inventory[this.selectedItem].type == 105 && !this.wet) { int maxValue = 20; if (this.itemAnimation > 0) maxValue = 7; if (this.direction == -1) { if (Main.rand.Next(maxValue) == 0) Dust.NewDust(new Vector2(this.itemLocation.X - 12f, this.itemLocation.Y - 20f * this.gravDir), 4, 4, 6, Alpha: 100); Lighting.addLight((int) (((double) this.itemLocation.X - 16.0 + (double) this.velocity.X) / 16.0), (int) (((double) this.itemLocation.Y - 14.0) / 16.0), 1f, 0.95f, 0.8f); } else { if (Main.rand.Next(maxValue) == 0) Dust.NewDust(new Vector2(this.itemLocation.X + 4f, this.itemLocation.Y - 20f * this.gravDir), 4, 4, 6, Alpha: 100); Lighting.addLight((int) (((double) this.itemLocation.X + 6.0 + (double) this.velocity.X) / 16.0), (int) (((double) this.itemLocation.Y - 14.0) / 16.0), 1f, 0.95f, 0.8f); } } else if (this.inventory[this.selectedItem].type == 148 && !this.wet) { int maxValue = 10; if (this.itemAnimation > 0) maxValue = 7; if (this.direction == -1) { if (Main.rand.Next(maxValue) == 0) Dust.NewDust(new Vector2(this.itemLocation.X - 12f, this.itemLocation.Y - 20f * this.gravDir), 4, 4, 29, Alpha: 100); Lighting.addLight((int) (((double) this.itemLocation.X - 16.0 + (double) this.velocity.X) / 16.0), (int) (((double) this.itemLocation.Y - 14.0) / 16.0), 0.3f, 0.3f, 0.75f); } else { if (Main.rand.Next(maxValue) == 0) Dust.NewDust(new Vector2(this.itemLocation.X + 4f, this.itemLocation.Y - 20f * this.gravDir), 4, 4, 29, Alpha: 100); Lighting.addLight((int) (((double) this.itemLocation.X + 6.0 + (double) this.velocity.X) / 16.0), (int) (((double) this.itemLocation.Y - 14.0) / 16.0), 0.3f, 0.3f, 0.75f); } } if (this.inventory[this.selectedItem].type == 282) { if (this.direction == -1) Lighting.addLight((int) (((double) this.itemLocation.X - 16.0 + (double) this.velocity.X) / 16.0), (int) (((double) this.itemLocation.Y - 14.0) / 16.0), 0.7f, 1f, 0.8f); else Lighting.addLight((int) (((double) this.itemLocation.X + 6.0 + (double) this.velocity.X) / 16.0), (int) (((double) this.itemLocation.Y - 14.0) / 16.0), 0.7f, 1f, 0.8f); } if (this.inventory[this.selectedItem].type == 286) { if (this.direction == -1) Lighting.addLight((int) (((double) this.itemLocation.X - 16.0 + (double) this.velocity.X) / 16.0), (int) (((double) this.itemLocation.Y - 14.0) / 16.0), 0.7f, 0.8f, 1f); else Lighting.addLight((int) (((double) this.itemLocation.X + 6.0 + (double) this.velocity.X) / 16.0), (int) (((double) this.itemLocation.Y - 14.0) / 16.0), 0.7f, 0.8f, 1f); } this.releaseUseItem = !this.controlUseItem; if (this.itemTime > 0) --this.itemTime; if (i == Main.myPlayer) { if (this.inventory[this.selectedItem].shoot > 0 && this.itemAnimation > 0 && this.itemTime == 0) { int Type1 = this.inventory[this.selectedItem].shoot; float num14 = this.inventory[this.selectedItem].shootSpeed; if (this.inventory[this.selectedItem].melee && Type1 != 25 && Type1 != 26 && Type1 != 35) num14 /= this.meleeSpeed; bool flag1 = false; int Damage = num1; float KnockBack = this.inventory[this.selectedItem].knockBack; if (Type1 == 13 || Type1 == 32) { this.grappling[0] = -1; this.grapCount = 0; for (int index = 0; index < 1000; ++index) { if (Main.projectile[index].active && Main.projectile[index].owner == i && Main.projectile[index].type == 13) Main.projectile[index].Kill(); } } if (this.inventory[this.selectedItem].useAmmo > 0) { Item obj = new Item(); bool flag2 = false; for (int index = 44; index < 48; ++index) { if (this.inventory[index].ammo == this.inventory[this.selectedItem].useAmmo && this.inventory[index].stack > 0) { obj = this.inventory[index]; flag1 = true; flag2 = true; break; } } if (!flag2) { for (int index = 0; index < 44; ++index) { if (this.inventory[index].ammo == this.inventory[this.selectedItem].useAmmo && this.inventory[index].stack > 0) { obj = this.inventory[index]; flag1 = true; break; } } } if (flag1) { if (obj.shoot > 0) Type1 = obj.shoot; if (Type1 == 42) { if (obj.type == 370) { Type1 = 65; Damage += 5; } else if (obj.type == 408) { Type1 = 68; Damage += 5; } } num14 += obj.shootSpeed; if (obj.ranged) { if (obj.damage > 0) Damage += (int) ((double) obj.damage * (double) this.rangedDamage); } else Damage += obj.damage; if (this.inventory[this.selectedItem].useAmmo == 1 && this.archery) { if ((double) num14 < 20.0) { num14 *= 1.2f; if ((double) num14 > 20.0) num14 = 20f; } Damage = (int) ((double) Damage * 1.2); } KnockBack += obj.knockBack; bool flag3 = false; if (this.inventory[this.selectedItem].type == 98 && Main.rand.Next(3) == 0) flag3 = true; if (this.inventory[this.selectedItem].type == 533 && Main.rand.Next(2) == 0) flag3 = true; if (this.inventory[this.selectedItem].type == 434 && this.itemAnimation < this.inventory[this.selectedItem].useAnimation - 2) flag3 = true; if (this.ammoCost80 && Main.rand.Next(5) == 0) flag3 = true; if (this.ammoCost75 && Main.rand.Next(4) == 0) flag3 = true; if (Type1 == 85 && this.itemAnimation < this.itemAnimationMax - 6) flag3 = true; if (!flag3) { --obj.stack; if (obj.stack <= 0) { obj.active = false; obj.name = ""; obj.type = 0; } } } } else flag1 = true; if (Type1 == 72) { switch (Main.rand.Next(3)) { case 0: Type1 = 72; break; case 1: Type1 = 86; break; case 2: Type1 = 87; break; } } if (Type1 == 73) { for (int index = 0; index < 1000; ++index) { if (Main.projectile[index].active && Main.projectile[index].owner == i) { if (Main.projectile[index].type == 73) Type1 = 74; if (Main.projectile[index].type == 74) flag1 = false; } } } if (flag1) { if (this.inventory[this.selectedItem].mech && this.kbGlove) KnockBack *= 1.7f; if (Type1 == 1 && this.inventory[this.selectedItem].type == 120) Type1 = 2; this.itemTime = this.inventory[this.selectedItem].useTime; this.direction = (double) Main.mouseX + (double) Main.screenPosition.X <= (double) this.position.X + (double) this.width * 0.5 ? -1 : 1; Vector2 vector2 = new Vector2(this.position.X + (float) this.width * 0.5f, this.position.Y + (float) this.height * 0.5f); switch (Type1) { case 9: vector2 = new Vector2(this.position.X + (float) this.width * 0.5f + (float) (Main.rand.Next(601) * -this.direction), (float) ((double) this.position.Y + (double) this.height * 0.5 - 300.0) - (float) Main.rand.Next(100)); KnockBack = 0.0f; break; case 51: vector2.Y -= 6f * this.gravDir; break; } float num15 = (float) Main.mouseX + Main.screenPosition.X - vector2.X; float num16 = (float) Main.mouseY + Main.screenPosition.Y - vector2.Y; float num17 = (float) Math.Sqrt((double) num15 * (double) num15 + (double) num16 * (double) num16); float num18 = num17; float num19 = num14 / num17; float SpeedX1 = num15 * num19; float SpeedY1 = num16 * num19; if (Type1 == 12) { vector2.X += SpeedX1 * 3f; vector2.Y += SpeedY1 * 3f; } if (this.inventory[this.selectedItem].useStyle == 5) { this.itemRotation = (float) Math.Atan2((double) SpeedY1 * (double) this.direction, (double) SpeedX1 * (double) this.direction); NetMessage.SendData(13, number: this.whoAmi); NetMessage.SendData(41, number: this.whoAmi); } if (Type1 == 17) { vector2.X = (float) Main.mouseX + Main.screenPosition.X; vector2.Y = (float) Main.mouseY + Main.screenPosition.Y; } if (Type1 == 76) { int Type2 = Type1 + Main.rand.Next(3); float num20 = num18 / (float) (Main.screenHeight / 2); if ((double) num20 > 1.0) num20 = 1f; float num21 = SpeedX1 + (float) Main.rand.Next(-40, 41) * 0.01f; float num22 = SpeedY1 + (float) Main.rand.Next(-40, 41) * 0.01f; float SpeedX2 = num21 * (num20 + 0.25f); float SpeedY2 = num22 * (num20 + 0.25f); int number = Projectile.NewProjectile(vector2.X, vector2.Y, SpeedX2, SpeedY2, Type2, Damage, KnockBack, i); Main.projectile[number].ai[1] = 1f; float num23 = (float) ((double) num20 * 2.0 - 1.0); if ((double) num23 < -1.0) num23 = -1f; if ((double) num23 > 1.0) num23 = 1f; Main.projectile[number].ai[0] = num23; NetMessage.SendData(27, number: number); } else if (this.inventory[this.selectedItem].type == 98 || this.inventory[this.selectedItem].type == 533) { float SpeedX3 = SpeedX1 + (float) Main.rand.Next(-40, 41) * 0.01f; float SpeedY3 = SpeedY1 + (float) Main.rand.Next(-40, 41) * 0.01f; Projectile.NewProjectile(vector2.X, vector2.Y, SpeedX3, SpeedY3, Type1, Damage, KnockBack, i); } else if (this.inventory[this.selectedItem].type == 518) { float num24 = SpeedX1; float num25 = SpeedY1; float SpeedX4 = num24 + (float) Main.rand.Next(-40, 41) * 0.04f; float SpeedY4 = num25 + (float) Main.rand.Next(-40, 41) * 0.04f; Projectile.NewProjectile(vector2.X, vector2.Y, SpeedX4, SpeedY4, Type1, Damage, KnockBack, i); } else if (this.inventory[this.selectedItem].type == 534) { for (int index = 0; index < 4; ++index) { float num26 = SpeedX1; float num27 = SpeedY1; float SpeedX5 = num26 + (float) Main.rand.Next(-40, 41) * 0.05f; float SpeedY5 = num27 + (float) Main.rand.Next(-40, 41) * 0.05f; Projectile.NewProjectile(vector2.X, vector2.Y, SpeedX5, SpeedY5, Type1, Damage, KnockBack, i); } } else if (this.inventory[this.selectedItem].type == 434) { float SpeedX6 = SpeedX1; float SpeedY6 = SpeedY1; if (this.itemAnimation < 5) { float num28 = SpeedX6 + (float) Main.rand.Next(-40, 41) * 0.01f; float num29 = SpeedY6 + (float) Main.rand.Next(-40, 41) * 0.01f; SpeedX6 = num28 * 1.1f; SpeedY6 = num29 * 1.1f; } else if (this.itemAnimation < 10) { float num30 = SpeedX6 + (float) Main.rand.Next(-20, 21) * 0.01f; float num31 = SpeedY6 + (float) Main.rand.Next(-20, 21) * 0.01f; SpeedX6 = num30 * 1.05f; SpeedY6 = num31 * 1.05f; } Projectile.NewProjectile(vector2.X, vector2.Y, SpeedX6, SpeedY6, Type1, Damage, KnockBack, i); } else { int index = Projectile.NewProjectile(vector2.X, vector2.Y, SpeedX1, SpeedY1, Type1, Damage, KnockBack, i); if (Type1 == 80) { Main.projectile[index].ai[0] = (float) Player.tileTargetX; Main.projectile[index].ai[1] = (float) Player.tileTargetY; } } } else if (this.inventory[this.selectedItem].useStyle == 5) { this.itemRotation = 0.0f; NetMessage.SendData(41, number: this.whoAmi); } } if (this.whoAmi == Main.myPlayer && (this.inventory[this.selectedItem].type == 509 || this.inventory[this.selectedItem].type == 510) && (double) this.position.X / 16.0 - (double) Player.tileRangeX - (double) this.inventory[this.selectedItem].tileBoost - (double) this.blockRange <= (double) Player.tileTargetX && ((double) this.position.X + (double) this.width) / 16.0 + (double) Player.tileRangeX + (double) this.inventory[this.selectedItem].tileBoost - 1.0 + (double) this.blockRange >= (double) Player.tileTargetX && (double) this.position.Y / 16.0 - (double) Player.tileRangeY - (double) this.inventory[this.selectedItem].tileBoost - (double) this.blockRange <= (double) Player.tileTargetY && ((double) this.position.Y + (double) this.height) / 16.0 + (double) Player.tileRangeY + (double) this.inventory[this.selectedItem].tileBoost - 2.0 + (double) this.blockRange >= (double) Player.tileTargetY) { this.showItemIcon = true; if (this.itemAnimation > 0 && this.itemTime == 0 && this.controlUseItem) { int tileTargetX = Player.tileTargetX; int tileTargetY = Player.tileTargetY; if (this.inventory[this.selectedItem].type == 509) { int index1 = -1; for (int index2 = 0; index2 < 48; ++index2) { if (this.inventory[index2].stack > 0 && this.inventory[index2].type == 530) { index1 = index2; break; } } if (index1 >= 0 && WorldGen.PlaceWire(tileTargetX, tileTargetY)) { --this.inventory[index1].stack; if (this.inventory[index1].stack <= 0) this.inventory[index1].SetDefaults(0); this.itemTime = this.inventory[this.selectedItem].useTime; NetMessage.SendData(17, number: 5, number2: ((float) Player.tileTargetX), number3: ((float) Player.tileTargetY)); } } else if (WorldGen.KillWire(tileTargetX, tileTargetY)) { this.itemTime = this.inventory[this.selectedItem].useTime; NetMessage.SendData(17, number: 6, number2: ((float) Player.tileTargetX), number3: ((float) Player.tileTargetY)); } } } if (this.itemAnimation > 0 && this.itemTime == 0 && (this.inventory[this.selectedItem].type == 507 || this.inventory[this.selectedItem].type == 508)) { this.itemTime = this.inventory[this.selectedItem].useTime; Vector2 vector2 = new Vector2(this.position.X + (float) this.width * 0.5f, this.position.Y + (float) this.height * 0.5f); float num32 = (float) Main.mouseX + Main.screenPosition.X - vector2.X; float num33 = (float) Main.mouseY + Main.screenPosition.Y - vector2.Y; float num34 = (float) Math.Sqrt((double) num32 * (double) num32 + (double) num33 * (double) num33) / (float) (Main.screenHeight / 2); if ((double) num34 > 1.0) num34 = 1f; float number2 = (float) ((double) num34 * 2.0 - 1.0); if ((double) number2 < -1.0) number2 = -1f; if ((double) number2 > 1.0) number2 = 1f; Main.harpNote = number2; int Style = 26; if (this.inventory[this.selectedItem].type == 507) Style = 35; Main.PlaySound(2, (int) this.position.X, (int) this.position.Y, Style); NetMessage.SendData(58, number: this.whoAmi, number2: number2); } if (this.inventory[this.selectedItem].type >= 205 && this.inventory[this.selectedItem].type <= 207 && (double) this.position.X / 16.0 - (double) Player.tileRangeX - (double) this.inventory[this.selectedItem].tileBoost <= (double) Player.tileTargetX && ((double) this.position.X + (double) this.width) / 16.0 + (double) Player.tileRangeX + (double) this.inventory[this.selectedItem].tileBoost - 1.0 >= (double) Player.tileTargetX && (double) this.position.Y / 16.0 - (double) Player.tileRangeY - (double) this.inventory[this.selectedItem].tileBoost <= (double) Player.tileTargetY && ((double) this.position.Y + (double) this.height) / 16.0 + (double) Player.tileRangeY + (double) this.inventory[this.selectedItem].tileBoost - 2.0 >= (double) Player.tileTargetY) { this.showItemIcon = true; if (this.itemTime == 0 && this.itemAnimation > 0 && this.controlUseItem) { if (this.inventory[this.selectedItem].type == 205) { bool lava1 = Main.tile[Player.tileTargetX, Player.tileTargetY].lava; int num35 = 0; for (int index3 = Player.tileTargetX - 1; index3 <= Player.tileTargetX + 1; ++index3) { for (int index4 = Player.tileTargetY - 1; index4 <= Player.tileTargetY + 1; ++index4) { if (Main.tile[index3, index4].lava == lava1) num35 += (int) Main.tile[index3, index4].liquid; } } if (Main.tile[Player.tileTargetX, Player.tileTargetY].liquid > (byte) 0 && num35 > 100) { bool lava2 = Main.tile[Player.tileTargetX, Player.tileTargetY].lava; if (!Main.tile[Player.tileTargetX, Player.tileTargetY].lava) this.inventory[this.selectedItem].SetDefaults(206); else this.inventory[this.selectedItem].SetDefaults(207); Main.PlaySound(19, (int) this.position.X, (int) this.position.Y); this.itemTime = this.inventory[this.selectedItem].useTime; int liquid = (int) Main.tile[Player.tileTargetX, Player.tileTargetY].liquid; Main.tile[Player.tileTargetX, Player.tileTargetY].liquid = (byte) 0; Main.tile[Player.tileTargetX, Player.tileTargetY].lava = false; WorldGen.SquareTileFrame(Player.tileTargetX, Player.tileTargetY, false); if (Main.netMode == 1) NetMessage.sendWater(Player.tileTargetX, Player.tileTargetY); else Liquid.AddWater(Player.tileTargetX, Player.tileTargetY); for (int index5 = Player.tileTargetX - 1; index5 <= Player.tileTargetX + 1; ++index5) { for (int index6 = Player.tileTargetY - 1; index6 <= Player.tileTargetY + 1; ++index6) { if (liquid < 256 && Main.tile[index5, index6].lava == lava1) { int num36 = (int) Main.tile[index5, index6].liquid; if (num36 + liquid > (int) byte.MaxValue) num36 = (int) byte.MaxValue - liquid; liquid += num36; Main.tile[index5, index6].liquid -= (byte) num36; Main.tile[index5, index6].lava = lava2; if (Main.tile[index5, index6].liquid == (byte) 0) Main.tile[index5, index6].lava = false; WorldGen.SquareTileFrame(index5, index6, false); if (Main.netMode == 1) NetMessage.sendWater(index5, index6); else Liquid.AddWater(index5, index6); } } } } } else if (Main.tile[Player.tileTargetX, Player.tileTargetY].liquid < (byte) 200 && (!Main.tile[Player.tileTargetX, Player.tileTargetY].active || !Main.tileSolid[(int) Main.tile[Player.tileTargetX, Player.tileTargetY].type] || Main.tileSolidTop[(int) Main.tile[Player.tileTargetX, Player.tileTargetY].type])) { if (this.inventory[this.selectedItem].type == 207) { if (Main.tile[Player.tileTargetX, Player.tileTargetY].liquid == (byte) 0 || Main.tile[Player.tileTargetX, Player.tileTargetY].lava) { Main.PlaySound(19, (int) this.position.X, (int) this.position.Y); Main.tile[Player.tileTargetX, Player.tileTargetY].lava = true; Main.tile[Player.tileTargetX, Player.tileTargetY].liquid = byte.MaxValue; WorldGen.SquareTileFrame(Player.tileTargetX, Player.tileTargetY); this.inventory[this.selectedItem].SetDefaults(205); this.itemTime = this.inventory[this.selectedItem].useTime; if (Main.netMode == 1) NetMessage.sendWater(Player.tileTargetX, Player.tileTargetY); } } else if (Main.tile[Player.tileTargetX, Player.tileTargetY].liquid == (byte) 0 || !Main.tile[Player.tileTargetX, Player.tileTargetY].lava) { Main.PlaySound(19, (int) this.position.X, (int) this.position.Y); Main.tile[Player.tileTargetX, Player.tileTargetY].lava = false; Main.tile[Player.tileTargetX, Player.tileTargetY].liquid = byte.MaxValue; WorldGen.SquareTileFrame(Player.tileTargetX, Player.tileTargetY); this.inventory[this.selectedItem].SetDefaults(205); this.itemTime = this.inventory[this.selectedItem].useTime; if (Main.netMode == 1) NetMessage.sendWater(Player.tileTargetX, Player.tileTargetY); } } } } if (!this.channel) { this.toolTime = this.itemTime; } else { --this.toolTime; if (this.toolTime < 0) this.toolTime = this.inventory[this.selectedItem].pick <= 0 ? (int) ((double) this.inventory[this.selectedItem].useTime * (double) this.pickSpeed) : this.inventory[this.selectedItem].useTime; } if ((this.inventory[this.selectedItem].pick > 0 || this.inventory[this.selectedItem].axe > 0 || this.inventory[this.selectedItem].hammer > 0) && (double) this.position.X / 16.0 - (double) Player.tileRangeX - (double) this.inventory[this.selectedItem].tileBoost <= (double) Player.tileTargetX && ((double) this.position.X + (double) this.width) / 16.0 + (double) Player.tileRangeX + (double) this.inventory[this.selectedItem].tileBoost - 1.0 >= (double) Player.tileTargetX && (double) this.position.Y / 16.0 - (double) Player.tileRangeY - (double) this.inventory[this.selectedItem].tileBoost <= (double) Player.tileTargetY && ((double) this.position.Y + (double) this.height) / 16.0 + (double) Player.tileRangeY + (double) this.inventory[this.selectedItem].tileBoost - 2.0 >= (double) Player.tileTargetY) { bool flag4 = true; this.showItemIcon = true; if (Main.tile[Player.tileTargetX, Player.tileTargetY].active) { if (this.inventory[this.selectedItem].pick > 0 && !Main.tileAxe[(int) Main.tile[Player.tileTargetX, Player.tileTargetY].type] && !Main.tileHammer[(int) Main.tile[Player.tileTargetX, Player.tileTargetY].type] || this.inventory[this.selectedItem].axe > 0 && Main.tileAxe[(int) Main.tile[Player.tileTargetX, Player.tileTargetY].type] || this.inventory[this.selectedItem].hammer > 0 && Main.tileHammer[(int) Main.tile[Player.tileTargetX, Player.tileTargetY].type]) flag4 = false; if (this.toolTime == 0 && this.itemAnimation > 0 && this.controlUseItem) { if (this.hitTileX != Player.tileTargetX || this.hitTileY != Player.tileTargetY) { this.hitTile = 0; this.hitTileX = Player.tileTargetX; this.hitTileY = Player.tileTargetY; } if (Main.tileNoFail[(int) Main.tile[Player.tileTargetX, Player.tileTargetY].type]) this.hitTile = 100; if (Main.tile[Player.tileTargetX, Player.tileTargetY].type != (byte) 27) { if (Main.tileHammer[(int) Main.tile[Player.tileTargetX, Player.tileTargetY].type]) { flag4 = false; if (Main.tile[Player.tileTargetX, Player.tileTargetY].type == (byte) 48) this.hitTile += this.inventory[this.selectedItem].hammer / 2; else if (Main.tile[Player.tileTargetX, Player.tileTargetY].type == (byte) 129) this.hitTile += this.inventory[this.selectedItem].hammer * 2; else this.hitTile += this.inventory[this.selectedItem].hammer; if ((double) Player.tileTargetY > Main.rockLayer && Main.tile[Player.tileTargetX, Player.tileTargetY].type == (byte) 77 && this.inventory[this.selectedItem].hammer < 60) this.hitTile = 0; if (this.inventory[this.selectedItem].hammer > 0) { if (Main.tile[Player.tileTargetX, Player.tileTargetY].type == (byte) 26 && (this.inventory[this.selectedItem].hammer < 80 || !Main.hardMode)) { this.hitTile = 0; this.Hurt(this.statLife / 2, -this.direction, deathText: Lang.deathMsg(other: 4)); WorldGen.KillTile(Player.tileTargetX, Player.tileTargetY, true); if (Main.netMode == 1) NetMessage.SendData(17, number2: ((float) Player.tileTargetX), number3: ((float) Player.tileTargetY), number4: 1f); } if (this.hitTile >= 100) { if (Main.netMode == 1 && Main.tile[Player.tileTargetX, Player.tileTargetY].type == (byte) 21) { WorldGen.KillTile(Player.tileTargetX, Player.tileTargetY, true); NetMessage.SendData(17, number2: ((float) Player.tileTargetX), number3: ((float) Player.tileTargetY), number4: 1f); NetMessage.SendData(34, number: Player.tileTargetX, number2: ((float) Player.tileTargetY)); } else { this.hitTile = 0; WorldGen.KillTile(Player.tileTargetX, Player.tileTargetY); if (Main.netMode == 1) NetMessage.SendData(17, number2: ((float) Player.tileTargetX), number3: ((float) Player.tileTargetY)); } } else { WorldGen.KillTile(Player.tileTargetX, Player.tileTargetY, true); if (Main.netMode == 1) NetMessage.SendData(17, number2: ((float) Player.tileTargetX), number3: ((float) Player.tileTargetY), number4: 1f); } this.itemTime = this.inventory[this.selectedItem].useTime; } } else if (Main.tileAxe[(int) Main.tile[Player.tileTargetX, Player.tileTargetY].type]) { if (Main.tile[Player.tileTargetX, Player.tileTargetY].type == (byte) 30 || Main.tile[Player.tileTargetX, Player.tileTargetY].type == (byte) 124) this.hitTile += this.inventory[this.selectedItem].axe * 5; else if (Main.tile[Player.tileTargetX, Player.tileTargetY].type == (byte) 80) this.hitTile += this.inventory[this.selectedItem].axe * 3; else this.hitTile += this.inventory[this.selectedItem].axe; if (this.inventory[this.selectedItem].axe > 0) { if (this.hitTile >= 100) { this.hitTile = 0; WorldGen.KillTile(Player.tileTargetX, Player.tileTargetY); if (Main.netMode == 1) NetMessage.SendData(17, number2: ((float) Player.tileTargetX), number3: ((float) Player.tileTargetY)); } else { WorldGen.KillTile(Player.tileTargetX, Player.tileTargetY, true); if (Main.netMode == 1) NetMessage.SendData(17, number2: ((float) Player.tileTargetX), number3: ((float) Player.tileTargetY), number4: 1f); } this.itemTime = this.inventory[this.selectedItem].useTime; } } else if (this.inventory[this.selectedItem].pick > 0) { if (Main.tileDungeon[(int) Main.tile[Player.tileTargetX, Player.tileTargetY].type] || Main.tile[Player.tileTargetX, Player.tileTargetY].type == (byte) 37 || Main.tile[Player.tileTargetX, Player.tileTargetY].type == (byte) 25 || Main.tile[Player.tileTargetX, Player.tileTargetY].type == (byte) 58 || Main.tile[Player.tileTargetX, Player.tileTargetY].type == (byte) 117) this.hitTile += this.inventory[this.selectedItem].pick / 2; else if (Main.tile[Player.tileTargetX, Player.tileTargetY].type == (byte) 107) this.hitTile += this.inventory[this.selectedItem].pick / 2; else if (Main.tile[Player.tileTargetX, Player.tileTargetY].type == (byte) 108) this.hitTile += this.inventory[this.selectedItem].pick / 3; else if (Main.tile[Player.tileTargetX, Player.tileTargetY].type == (byte) 111) this.hitTile += this.inventory[this.selectedItem].pick / 4; else this.hitTile += this.inventory[this.selectedItem].pick; if (Main.tile[Player.tileTargetX, Player.tileTargetY].type == (byte) 25 && this.inventory[this.selectedItem].pick < 65) this.hitTile = 0; else if (Main.tile[Player.tileTargetX, Player.tileTargetY].type == (byte) 117 && this.inventory[this.selectedItem].pick < 65) this.hitTile = 0; else if (Main.tile[Player.tileTargetX, Player.tileTargetY].type == (byte) 37 && this.inventory[this.selectedItem].pick < 55) this.hitTile = 0; else if (Main.tile[Player.tileTargetX, Player.tileTargetY].type == (byte) 22 && (double) Player.tileTargetY > Main.worldSurface && this.inventory[this.selectedItem].pick < 55) this.hitTile = 0; else if (Main.tile[Player.tileTargetX, Player.tileTargetY].type == (byte) 56 && this.inventory[this.selectedItem].pick < 65) this.hitTile = 0; else if (Main.tile[Player.tileTargetX, Player.tileTargetY].type == (byte) 58 && this.inventory[this.selectedItem].pick < 65) this.hitTile = 0; else if (Main.tileDungeon[(int) Main.tile[Player.tileTargetX, Player.tileTargetY].type] && this.inventory[this.selectedItem].pick < 65) { if ((double) Player.tileTargetX < (double) Main.maxTilesX * 0.25 || (double) Player.tileTargetX > (double) Main.maxTilesX * 0.75) this.hitTile = 0; } else if (Main.tile[Player.tileTargetX, Player.tileTargetY].type == (byte) 107 && this.inventory[this.selectedItem].pick < 100) this.hitTile = 0; else if (Main.tile[Player.tileTargetX, Player.tileTargetY].type == (byte) 108 && this.inventory[this.selectedItem].pick < 110) this.hitTile = 0; else if (Main.tile[Player.tileTargetX, Player.tileTargetY].type == (byte) 111 && this.inventory[this.selectedItem].pick < 120) this.hitTile = 0; if (Main.tile[Player.tileTargetX, Player.tileTargetY].type == (byte) 0 || Main.tile[Player.tileTargetX, Player.tileTargetY].type == (byte) 40 || Main.tile[Player.tileTargetX, Player.tileTargetY].type == (byte) 53 || Main.tile[Player.tileTargetX, Player.tileTargetY].type == (byte) 57 || Main.tile[Player.tileTargetX, Player.tileTargetY].type == (byte) 59 || Main.tile[Player.tileTargetX, Player.tileTargetY].type == (byte) 123) this.hitTile += this.inventory[this.selectedItem].pick; if (this.hitTile >= 100 && (Main.tile[Player.tileTargetX, Player.tileTargetY].type == (byte) 2 || Main.tile[Player.tileTargetX, Player.tileTargetY].type == (byte) 23 || Main.tile[Player.tileTargetX, Player.tileTargetY].type == (byte) 60 || Main.tile[Player.tileTargetX, Player.tileTargetY].type == (byte) 70 || Main.tile[Player.tileTargetX, Player.tileTargetY].type == (byte) 109)) this.hitTile = 0; if (this.hitTile >= 100) { this.hitTile = 0; WorldGen.KillTile(Player.tileTargetX, Player.tileTargetY); if (Main.netMode == 1) NetMessage.SendData(17, number2: ((float) Player.tileTargetX), number3: ((float) Player.tileTargetY)); } else { WorldGen.KillTile(Player.tileTargetX, Player.tileTargetY, true); if (Main.netMode == 1) NetMessage.SendData(17, number2: ((float) Player.tileTargetX), number3: ((float) Player.tileTargetY), number4: 1f); } this.itemTime = (int) ((double) this.inventory[this.selectedItem].useTime * (double) this.pickSpeed); } } } } int i2 = Player.tileTargetX; int j = Player.tileTargetY; bool flag5 = true; if (Main.tile[i2, j].wall > (byte) 0) { if (!Main.wallHouse[(int) Main.tile[i2, j].wall]) { for (int index7 = i2 - 1; index7 < i2 + 2; ++index7) { for (int index8 = j - 1; index8 < j + 2; ++index8) { if ((int) Main.tile[index7, index8].wall != (int) Main.tile[i2, j].wall) { flag5 = false; break; } } } } else flag5 = false; } if (flag5 && !Main.tile[i2, j].active) { int num37 = -1; if (((double) Main.mouseX + (double) Main.screenPosition.X) / 16.0 < Math.Round(((double) Main.mouseX + (double) Main.screenPosition.X) / 16.0)) num37 = 0; int num38 = -1; if (((double) Main.mouseY + (double) Main.screenPosition.Y) / 16.0 < Math.Round(((double) Main.mouseY + (double) Main.screenPosition.Y) / 16.0)) num38 = 0; for (int index9 = Player.tileTargetX + num37; index9 <= Player.tileTargetX + num37 + 1; ++index9) { for (int index10 = Player.tileTargetY + num38; index10 <= Player.tileTargetY + num38 + 1; ++index10) { if (flag5) { i2 = index9; j = index10; if (Main.tile[i2, j].wall > (byte) 0) { if (!Main.wallHouse[(int) Main.tile[i2, j].wall]) { for (int index11 = i2 - 1; index11 < i2 + 2; ++index11) { for (int index12 = j - 1; index12 < j + 2; ++index12) { if ((int) Main.tile[index11, index12].wall != (int) Main.tile[i2, j].wall) { flag5 = false; break; } } } } else flag5 = false; } } } } } if (flag4 && Main.tile[i2, j].wall > (byte) 0 && this.toolTime == 0 && this.itemAnimation > 0 && this.controlUseItem && this.inventory[this.selectedItem].hammer > 0) { bool flag6 = true; if (!Main.wallHouse[(int) Main.tile[i2, j].wall]) { flag6 = false; for (int index13 = i2 - 1; index13 < i2 + 2; ++index13) { for (int index14 = j - 1; index14 < j + 2; ++index14) { if ((int) Main.tile[index13, index14].wall != (int) Main.tile[i2, j].wall) { flag6 = true; break; } } } } if (flag6) { if (this.hitTileX != i2 || this.hitTileY != j) { this.hitTile = 0; this.hitTileX = i2; this.hitTileY = j; } this.hitTile += (int) ((double) this.inventory[this.selectedItem].hammer * 1.5); if (this.hitTile >= 100) { this.hitTile = 0; WorldGen.KillWall(i2, j); if (Main.netMode == 1) NetMessage.SendData(17, number: 2, number2: ((float) i2), number3: ((float) j)); } else { WorldGen.KillWall(i2, j, true); if (Main.netMode == 1) NetMessage.SendData(17, number: 2, number2: ((float) i2), number3: ((float) j), number4: 1f); } this.itemTime = this.inventory[this.selectedItem].useTime / 2; } } } if (this.inventory[this.selectedItem].type == 29 && this.itemAnimation > 0 && this.statLifeMax < 400 && this.itemTime == 0) { this.itemTime = this.inventory[this.selectedItem].useTime; this.statLifeMax += 20; this.statLife += 20; if (Main.myPlayer == this.whoAmi) this.HealEffect(20); } if (this.inventory[this.selectedItem].type == 109 && this.itemAnimation > 0 && this.statManaMax < 200 && this.itemTime == 0) { this.itemTime = this.inventory[this.selectedItem].useTime; this.statManaMax += 20; this.statMana += 20; if (Main.myPlayer == this.whoAmi) this.ManaEffect(20); } this.PlaceThing(); } if (this.inventory[this.selectedItem].damage >= 0 && this.inventory[this.selectedItem].type > 0 && !this.inventory[this.selectedItem].noMelee && this.itemAnimation > 0) { bool flag = false; Rectangle rectangle1 = new Rectangle((int) this.itemLocation.X, (int) this.itemLocation.Y, 32, 32); if (!Main.dedServ) rectangle1 = new Rectangle((int) this.itemLocation.X, (int) this.itemLocation.Y, Main.itemTexture[this.inventory[this.selectedItem].type].Width, Main.itemTexture[this.inventory[this.selectedItem].type].Height); rectangle1.Width = (int) ((double) rectangle1.Width * (double) this.inventory[this.selectedItem].scale); rectangle1.Height = (int) ((double) rectangle1.Height * (double) this.inventory[this.selectedItem].scale); if (this.direction == -1) rectangle1.X -= rectangle1.Width; if ((double) this.gravDir == 1.0) rectangle1.Y -= rectangle1.Height; if (this.inventory[this.selectedItem].useStyle == 1) { if ((double) this.itemAnimation < (double) this.itemAnimationMax * 0.333) { if (this.direction == -1) rectangle1.X -= (int) ((double) rectangle1.Width * 1.4 - (double) rectangle1.Width); rectangle1.Width = (int) ((double) rectangle1.Width * 1.4); rectangle1.Y += (int) ((double) rectangle1.Height * 0.5 * (double) this.gravDir); rectangle1.Height = (int) ((double) rectangle1.Height * 1.1); } else if ((double) this.itemAnimation >= (double) this.itemAnimationMax * 0.666) { if (this.direction == 1) rectangle1.X -= (int) ((double) rectangle1.Width * 1.2); rectangle1.Width *= 2; rectangle1.Y -= (int) (((double) rectangle1.Height * 1.4 - (double) rectangle1.Height) * (double) this.gravDir); rectangle1.Height = (int) ((double) rectangle1.Height * 1.4); } } else if (this.inventory[this.selectedItem].useStyle == 3) { if ((double) this.itemAnimation > (double) this.itemAnimationMax * 0.666) { flag = true; } else { if (this.direction == -1) rectangle1.X -= (int) ((double) rectangle1.Width * 1.4 - (double) rectangle1.Width); rectangle1.Width = (int) ((double) rectangle1.Width * 1.4); rectangle1.Y += (int) ((double) rectangle1.Height * 0.6); rectangle1.Height = (int) ((double) rectangle1.Height * 0.6); } } double gravDir = (double) this.gravDir; if (!flag) { if ((this.inventory[this.selectedItem].type == 44 || this.inventory[this.selectedItem].type == 45 || this.inventory[this.selectedItem].type == 46 || this.inventory[this.selectedItem].type == 103 || this.inventory[this.selectedItem].type == 104) && Main.rand.Next(15) == 0) Dust.NewDust(new Vector2((float) rectangle1.X, (float) rectangle1.Y), rectangle1.Width, rectangle1.Height, 14, (float) (this.direction * 2), Alpha: 150, Scale: 1.3f); if (this.inventory[this.selectedItem].type == 273) { if (Main.rand.Next(5) == 0) Dust.NewDust(new Vector2((float) rectangle1.X, (float) rectangle1.Y), rectangle1.Width, rectangle1.Height, 14, (float) (this.direction * 2), Alpha: 150, Scale: 1.4f); int index = Dust.NewDust(new Vector2((float) rectangle1.X, (float) rectangle1.Y), rectangle1.Width, rectangle1.Height, 27, this.velocity.X * 0.2f + (float) (this.direction * 3), this.velocity.Y * 0.2f, 100, Scale: 1.2f); Main.dust[index].noGravity = true; Main.dust[index].velocity.X /= 2f; Main.dust[index].velocity.Y /= 2f; } if (this.inventory[this.selectedItem].type == 65) { if (Main.rand.Next(5) == 0) Dust.NewDust(new Vector2((float) rectangle1.X, (float) rectangle1.Y), rectangle1.Width, rectangle1.Height, 58, Alpha: 150, Scale: 1.2f); if (Main.rand.Next(10) == 0) Gore.NewGore(new Vector2((float) rectangle1.X, (float) rectangle1.Y), new Vector2(), Main.rand.Next(16, 18)); } if (this.inventory[this.selectedItem].type == 190 || this.inventory[this.selectedItem].type == 213) { int index = Dust.NewDust(new Vector2((float) rectangle1.X, (float) rectangle1.Y), rectangle1.Width, rectangle1.Height, 40, this.velocity.X * 0.2f + (float) (this.direction * 3), this.velocity.Y * 0.2f, Scale: 1.2f); Main.dust[index].noGravity = true; } if (this.inventory[this.selectedItem].type == 121) { for (int index15 = 0; index15 < 2; ++index15) { int index16 = Dust.NewDust(new Vector2((float) rectangle1.X, (float) rectangle1.Y), rectangle1.Width, rectangle1.Height, 6, this.velocity.X * 0.2f + (float) (this.direction * 3), this.velocity.Y * 0.2f, 100, Scale: 2.5f); Main.dust[index16].noGravity = true; Main.dust[index16].velocity.X *= 2f; Main.dust[index16].velocity.Y *= 2f; } } if (this.inventory[this.selectedItem].type == 122 || this.inventory[this.selectedItem].type == 217) { int index = Dust.NewDust(new Vector2((float) rectangle1.X, (float) rectangle1.Y), rectangle1.Width, rectangle1.Height, 6, this.velocity.X * 0.2f + (float) (this.direction * 3), this.velocity.Y * 0.2f, 100, Scale: 1.9f); Main.dust[index].noGravity = true; } if (this.inventory[this.selectedItem].type == 155) { int index = Dust.NewDust(new Vector2((float) rectangle1.X, (float) rectangle1.Y), rectangle1.Width, rectangle1.Height, 29, this.velocity.X * 0.2f + (float) (this.direction * 3), this.velocity.Y * 0.2f, 100, Scale: 2f); Main.dust[index].noGravity = true; Main.dust[index].velocity.X /= 2f; Main.dust[index].velocity.Y /= 2f; } if (this.inventory[this.selectedItem].type == 367 || this.inventory[this.selectedItem].type == 368) { if (Main.rand.Next(3) == 0) { int index = Dust.NewDust(new Vector2((float) rectangle1.X, (float) rectangle1.Y), rectangle1.Width, rectangle1.Height, 57, this.velocity.X * 0.2f + (float) (this.direction * 3), this.velocity.Y * 0.2f, 100, Scale: 1.1f); Main.dust[index].noGravity = true; Main.dust[index].velocity.X /= 2f; Main.dust[index].velocity.Y /= 2f; Main.dust[index].velocity.X += (float) (this.direction * 2); } if (Main.rand.Next(4) == 0) { int index = Dust.NewDust(new Vector2((float) rectangle1.X, (float) rectangle1.Y), rectangle1.Width, rectangle1.Height, 43, Alpha: 254, Scale: 0.3f); Main.dust[index].velocity *= 0.0f; } } if (this.inventory[this.selectedItem].type >= 198 && this.inventory[this.selectedItem].type <= 203) { float R = 0.5f; float G = 0.5f; float B = 0.5f; if (this.inventory[this.selectedItem].type == 198) { R *= 0.1f; G *= 0.5f; B *= 1.2f; } else if (this.inventory[this.selectedItem].type == 199) { R *= 1f; G *= 0.2f; B *= 0.1f; } else if (this.inventory[this.selectedItem].type == 200) { R *= 0.1f; G *= 1f; B *= 0.2f; } else if (this.inventory[this.selectedItem].type == 201) { R *= 0.8f; G *= 0.1f; B *= 1f; } else if (this.inventory[this.selectedItem].type == 202) { R *= 0.8f; G *= 0.9f; B *= 1f; } else if (this.inventory[this.selectedItem].type == 203) { R *= 0.9f; G *= 0.9f; B *= 0.1f; } Lighting.addLight((int) (((double) this.itemLocation.X + 6.0 + (double) this.velocity.X) / 16.0), (int) (((double) this.itemLocation.Y - 14.0) / 16.0), R, G, B); } if (Main.myPlayer == i) { int num39 = (int) ((double) this.inventory[this.selectedItem].damage * (double) this.meleeDamage); float knockBack = this.inventory[this.selectedItem].knockBack; if (this.kbGlove) knockBack *= 2f; int num40 = rectangle1.X / 16; int num41 = (rectangle1.X + rectangle1.Width) / 16 + 1; int num42 = rectangle1.Y / 16; int num43 = (rectangle1.Y + rectangle1.Height) / 16 + 1; for (int i3 = num40; i3 < num41; ++i3) { for (int j = num42; j < num43; ++j) { if (Main.tile[i3, j] != null && Main.tileCut[(int) Main.tile[i3, j].type] && Main.tile[i3, j + 1] != null && Main.tile[i3, j + 1].type != (byte) 78) { WorldGen.KillTile(i3, j); if (Main.netMode == 1) NetMessage.SendData(17, number2: ((float) i3), number3: ((float) j)); } } } for (int index = 0; index < 200; ++index) { if (Main.npc[index].active && Main.npc[index].immune[i] == 0 && this.attackCD == 0 && !Main.npc[index].dontTakeDamage && (!Main.npc[index].friendly || Main.npc[index].type == 22 && this.killGuide)) { Rectangle rectangle2 = new Rectangle((int) Main.npc[index].position.X, (int) Main.npc[index].position.Y, Main.npc[index].width, Main.npc[index].height); if (rectangle1.Intersects(rectangle2) && (Main.npc[index].noTileCollide || Collision.CanHit(this.position, this.width, this.height, Main.npc[index].position, Main.npc[index].width, Main.npc[index].height))) { bool crit = false; if (Main.rand.Next(1, 101) <= this.meleeCrit) crit = true; int Damage = Main.DamageVar((float) num39); this.StatusNPC(this.inventory[this.selectedItem].type, index); Main.npc[index].StrikeNPC(Damage, knockBack, this.direction, crit); if (Main.netMode != 0) { if (crit) NetMessage.SendData(28, number: index, number2: ((float) Damage), number3: knockBack, number4: ((float) this.direction), number5: 1); else NetMessage.SendData(28, number: index, number2: ((float) Damage), number3: knockBack, number4: ((float) this.direction)); } Main.npc[index].immune[i] = this.itemAnimation; this.attackCD = (int) ((double) this.itemAnimationMax * 0.33); } } } if (this.hostile) { for (int index = 0; index < (int) byte.MaxValue; ++index) { if (index != i && Main.player[index].active && Main.player[index].hostile && !Main.player[index].immune && !Main.player[index].dead && (Main.player[i].team == 0 || Main.player[i].team != Main.player[index].team)) { Rectangle rectangle3 = new Rectangle((int) Main.player[index].position.X, (int) Main.player[index].position.Y, Main.player[index].width, Main.player[index].height); if (rectangle1.Intersects(rectangle3) && Collision.CanHit(this.position, this.width, this.height, Main.player[index].position, Main.player[index].width, Main.player[index].height)) { bool Crit = false; if (Main.rand.Next(1, 101) <= 10) Crit = true; int Damage = Main.DamageVar((float) num39); this.StatusPvP(this.inventory[this.selectedItem].type, index); Main.player[index].Hurt(Damage, this.direction, true, deathText: "", Crit: Crit); if (Main.netMode != 0) { if (Crit) NetMessage.SendData(26, text: Lang.deathMsg(this.whoAmi), number: index, number2: ((float) this.direction), number3: ((float) Damage), number4: 1f, number5: 1); else NetMessage.SendData(26, text: Lang.deathMsg(this.whoAmi), number: index, number2: ((float) this.direction), number3: ((float) Damage), number4: 1f); } this.attackCD = (int) ((double) this.itemAnimationMax * 0.33); } } } } } } } if (this.itemTime == 0 && this.itemAnimation > 0) { if (this.inventory[this.selectedItem].healLife > 0) { this.statLife += this.inventory[this.selectedItem].healLife; this.itemTime = this.inventory[this.selectedItem].useTime; if (Main.myPlayer == this.whoAmi) this.HealEffect(this.inventory[this.selectedItem].healLife); } if (this.inventory[this.selectedItem].healMana > 0) { this.statMana += this.inventory[this.selectedItem].healMana; this.itemTime = this.inventory[this.selectedItem].useTime; if (Main.myPlayer == this.whoAmi) this.ManaEffect(this.inventory[this.selectedItem].healMana); } if (this.inventory[this.selectedItem].buffType > 0) { if (this.whoAmi == Main.myPlayer) this.AddBuff(this.inventory[this.selectedItem].buffType, this.inventory[this.selectedItem].buffTime); this.itemTime = this.inventory[this.selectedItem].useTime; } } if (this.whoAmi == Main.myPlayer) { if (this.itemTime == 0 && this.itemAnimation > 0 && this.inventory[this.selectedItem].type == 361) { this.itemTime = this.inventory[this.selectedItem].useTime; Main.PlaySound(15, (int) this.position.X, (int) this.position.Y, 0); if (Main.netMode != 1) { if (Main.invasionType == 0) { Main.invasionDelay = 0; Main.StartInvasion(); } } else NetMessage.SendData(61, number: this.whoAmi, number2: -1f); } if (this.itemTime == 0 && this.itemAnimation > 0 && this.inventory[this.selectedItem].type == 602) { this.itemTime = this.inventory[this.selectedItem].useTime; Main.PlaySound(15, (int) this.position.X, (int) this.position.Y, 0); if (Main.netMode != 1) { if (Main.invasionType == 0) { Main.invasionDelay = 0; Main.StartInvasion(2); } } else NetMessage.SendData(61, number: this.whoAmi, number2: -2f); } if (this.itemTime == 0 && this.itemAnimation > 0 && (this.inventory[this.selectedItem].type == 43 || this.inventory[this.selectedItem].type == 70 || this.inventory[this.selectedItem].type == 544 || this.inventory[this.selectedItem].type == 556 || this.inventory[this.selectedItem].type == 557 || this.inventory[this.selectedItem].type == 560)) { bool flag = false; for (int index = 0; index < 200; ++index) { if (Main.npc[index].active && (this.inventory[this.selectedItem].type == 43 && Main.npc[index].type == 4 || this.inventory[this.selectedItem].type == 70 && Main.npc[index].type == 13 || this.inventory[this.selectedItem].type == 560 & Main.npc[index].type == 50 || this.inventory[this.selectedItem].type == 544 && Main.npc[index].type == 125 || this.inventory[this.selectedItem].type == 544 && Main.npc[index].type == 126 || this.inventory[this.selectedItem].type == 556 && Main.npc[index].type == 134 || this.inventory[this.selectedItem].type == 557 && Main.npc[index].type == 128)) { flag = true; break; } } if (flag) { this.itemTime = this.inventory[this.selectedItem].useTime; if (Main.myPlayer != this.whoAmi) ; } else if (this.inventory[this.selectedItem].type == 560) { this.itemTime = this.inventory[this.selectedItem].useTime; Main.PlaySound(15, (int) this.position.X, (int) this.position.Y, 0); if (Main.netMode != 1) NPC.SpawnOnPlayer(i, 50); else NetMessage.SendData(61, number: this.whoAmi, number2: 50f); } else if (this.inventory[this.selectedItem].type == 43) { if (!Main.dayTime) { this.itemTime = this.inventory[this.selectedItem].useTime; Main.PlaySound(15, (int) this.position.X, (int) this.position.Y, 0); if (Main.netMode != 1) NPC.SpawnOnPlayer(i, 4); else NetMessage.SendData(61, number: this.whoAmi, number2: 4f); } } else if (this.inventory[this.selectedItem].type == 70) { if (this.zoneEvil) { this.itemTime = this.inventory[this.selectedItem].useTime; Main.PlaySound(15, (int) this.position.X, (int) this.position.Y, 0); if (Main.netMode != 1) NPC.SpawnOnPlayer(i, 13); else NetMessage.SendData(61, number: this.whoAmi, number2: 13f); } } else if (this.inventory[this.selectedItem].type == 544) { if (!Main.dayTime) { this.itemTime = this.inventory[this.selectedItem].useTime; Main.PlaySound(15, (int) this.position.X, (int) this.position.Y, 0); if (Main.netMode != 1) { NPC.SpawnOnPlayer(i, 125); NPC.SpawnOnPlayer(i, 126); } else { NetMessage.SendData(61, number: this.whoAmi, number2: 125f); NetMessage.SendData(61, number: this.whoAmi, number2: 126f); } } } else if (this.inventory[this.selectedItem].type == 556) { if (!Main.dayTime) { this.itemTime = this.inventory[this.selectedItem].useTime; Main.PlaySound(15, (int) this.position.X, (int) this.position.Y, 0); if (Main.netMode != 1) NPC.SpawnOnPlayer(i, 134); else NetMessage.SendData(61, number: this.whoAmi, number2: 134f); } } else if (this.inventory[this.selectedItem].type == 557 && !Main.dayTime) { this.itemTime = this.inventory[this.selectedItem].useTime; Main.PlaySound(15, (int) this.position.X, (int) this.position.Y, 0); if (Main.netMode != 1) NPC.SpawnOnPlayer(i, (int) sbyte.MaxValue); else NetMessage.SendData(61, number: this.whoAmi, number2: ((float) sbyte.MaxValue)); } } } if (this.inventory[this.selectedItem].type == 50 && this.itemAnimation > 0) { if (Main.rand.Next(2) == 0) Dust.NewDust(this.position, this.width, this.height, 15, Alpha: 150, Scale: 1.1f); if (this.itemTime == 0) this.itemTime = this.inventory[this.selectedItem].useTime; else if (this.itemTime == this.inventory[this.selectedItem].useTime / 2) { for (int index = 0; index < 70; ++index) Dust.NewDust(this.position, this.width, this.height, 15, this.velocity.X * 0.5f, this.velocity.Y * 0.5f, 150, Scale: 1.5f); this.grappling[0] = -1; this.grapCount = 0; for (int index = 0; index < 1000; ++index) { if (Main.projectile[index].active && Main.projectile[index].owner == i && Main.projectile[index].aiStyle == 7) Main.projectile[index].Kill(); } this.Spawn(); for (int index = 0; index < 70; ++index) Dust.NewDust(this.position, this.width, this.height, 15, Alpha: 150, Scale: 1.5f); } } if (i != Main.myPlayer) return; if (this.itemTime == this.inventory[this.selectedItem].useTime && this.inventory[this.selectedItem].consumable) { bool flag = true; if (this.inventory[this.selectedItem].ranged) { if (this.ammoCost80 && Main.rand.Next(5) == 0) flag = false; if (this.ammoCost75 && Main.rand.Next(4) == 0) flag = false; } if (flag) { if (this.inventory[this.selectedItem].stack > 0) --this.inventory[this.selectedItem].stack; if (this.inventory[this.selectedItem].stack <= 0) this.itemTime = this.itemAnimation; } } if (this.inventory[this.selectedItem].stack <= 0 && this.itemAnimation == 0) this.inventory[this.selectedItem] = new Item(); if (this.selectedItem != 48 || this.itemAnimation == 0) return; Main.mouseItem = (Item) this.inventory[this.selectedItem].Clone(); } public Color GetImmuneAlpha(Color newColor) { float num = (float) ((int) byte.MaxValue - this.immuneAlpha) / (float) byte.MaxValue; if ((double) this.shadow > 0.0) num *= 1f - this.shadow; if (this.immuneAlpha > 125) return new Color(0, 0, 0, 0); int r = (int) ((double) newColor.R * (double) num); int g = (int) ((double) newColor.G * (double) num); int b = (int) ((double) newColor.B * (double) num); int a = (int) ((double) newColor.A * (double) num); if (a < 0) a = 0; if (a > (int) byte.MaxValue) a = (int) byte.MaxValue; return new Color(r, g, b, a); } public Color GetImmuneAlpha2(Color newColor) { float num = (float) ((int) byte.MaxValue - this.immuneAlpha) / (float) byte.MaxValue; if ((double) this.shadow > 0.0) num *= 1f - this.shadow; int r = (int) ((double) newColor.R * (double) num); int g = (int) ((double) newColor.G * (double) num); int b = (int) ((double) newColor.B * (double) num); int a = (int) ((double) newColor.A * (double) num); if (a < 0) a = 0; if (a > (int) byte.MaxValue) a = (int) byte.MaxValue; return new Color(r, g, b, a); } public Color GetDeathAlpha(Color newColor) { int r = (int) newColor.R + (int) ((double) this.immuneAlpha * 0.9); int g = (int) newColor.G + (int) ((double) this.immuneAlpha * 0.5); int b = (int) newColor.B + (int) ((double) this.immuneAlpha * 0.5); int a = (int) newColor.A + (int) ((double) this.immuneAlpha * 0.4); if (a < 0) a = 0; if (a > (int) byte.MaxValue) a = (int) byte.MaxValue; return new Color(r, g, b, a); } public void DropCoins() { for (int index = 0; index < 49; ++index) { if (this.inventory[index].type >= 71 && this.inventory[index].type <= 74) { int number = Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, this.inventory[index].type); int num1 = this.inventory[index].stack / 2; int num2 = this.inventory[index].stack - num1; this.inventory[index].stack -= num2; if (this.inventory[index].stack <= 0) this.inventory[index] = new Item(); Main.item[number].stack = num2; Main.item[number].velocity.Y = (float) Main.rand.Next(-20, 1) * 0.2f; Main.item[number].velocity.X = (float) Main.rand.Next(-20, 21) * 0.2f; Main.item[number].noGrabDelay = 100; if (Main.netMode == 1) NetMessage.SendData(21, number: number); if (index == 48) Main.mouseItem = (Item) this.inventory[index].Clone(); } } } public void DropItems() { for (int index = 0; index < 49; ++index) { if (this.inventory[index].stack > 0 && this.inventory[index].name != "Copper Pickaxe" && this.inventory[index].name != "Copper Axe" && this.inventory[index].name != "Copper Shortsword") { int number = Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, this.inventory[index].type); Main.item[number].SetDefaults(this.inventory[index].name); Main.item[number].Prefix((int) this.inventory[index].prefix); Main.item[number].stack = this.inventory[index].stack; Main.item[number].velocity.Y = (float) Main.rand.Next(-20, 1) * 0.2f; Main.item[number].velocity.X = (float) Main.rand.Next(-20, 21) * 0.2f; Main.item[number].noGrabDelay = 100; if (Main.netMode == 1) NetMessage.SendData(21, number: number); } this.inventory[index] = new Item(); if (index < 11) { if (this.armor[index].stack > 0) { int number = Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, this.armor[index].type); Main.item[number].SetDefaults(this.armor[index].name); Main.item[number].Prefix((int) this.armor[index].prefix); Main.item[number].stack = this.armor[index].stack; Main.item[number].velocity.Y = (float) Main.rand.Next(-20, 1) * 0.2f; Main.item[number].velocity.X = (float) Main.rand.Next(-20, 21) * 0.2f; Main.item[number].noGrabDelay = 100; if (Main.netMode == 1) NetMessage.SendData(21, number: number); } this.armor[index] = new Item(); } } this.inventory[0].SetDefaults("Copper Shortsword"); this.inventory[0].Prefix(-1); this.inventory[1].SetDefaults("Copper Pickaxe"); this.inventory[1].Prefix(-1); this.inventory[2].SetDefaults("Copper Axe"); this.inventory[2].Prefix(-1); Main.mouseItem = new Item(); } public object Clone() => this.MemberwiseClone(); public object clientClone() { Player player = new Player(); player.zoneEvil = this.zoneEvil; player.zoneMeteor = this.zoneMeteor; player.zoneDungeon = this.zoneDungeon; player.zoneJungle = this.zoneJungle; player.zoneHoly = this.zoneHoly; player.direction = this.direction; player.selectedItem = this.selectedItem; player.controlUp = this.controlUp; player.controlDown = this.controlDown; player.controlLeft = this.controlLeft; player.controlRight = this.controlRight; player.controlJump = this.controlJump; player.controlUseItem = this.controlUseItem; player.statLife = this.statLife; player.statLifeMax = this.statLifeMax; player.statMana = this.statMana; player.statManaMax = this.statManaMax; player.position.X = this.position.X; player.chest = this.chest; player.talkNPC = this.talkNPC; for (int index = 0; index < 49; ++index) { player.inventory[index] = (Item) this.inventory[index].Clone(); if (index < 11) player.armor[index] = (Item) this.armor[index].Clone(); } for (int index = 0; index < 10; ++index) { player.buffType[index] = this.buffType[index]; player.buffTime[index] = this.buffTime[index]; } return (object) player; } private static void EncryptFile(string inputFile, string outputFile) { byte[] bytes = new UnicodeEncoding().GetBytes("h3y_gUyZ"); FileStream fileStream1 = new FileStream(outputFile, FileMode.Create); RijndaelManaged rijndaelManaged = new RijndaelManaged(); CryptoStream cryptoStream = new CryptoStream((Stream) fileStream1, rijndaelManaged.CreateEncryptor(bytes, bytes), CryptoStreamMode.Write); FileStream fileStream2 = new FileStream(inputFile, FileMode.Open); int num; while ((num = fileStream2.ReadByte()) != -1) cryptoStream.WriteByte((byte) num); fileStream2.Close(); cryptoStream.Close(); fileStream1.Close(); } private static bool DecryptFile(string inputFile, string outputFile) { byte[] bytes = new UnicodeEncoding().GetBytes("h3y_gUyZ"); FileStream fileStream1 = new FileStream(inputFile, FileMode.Open); RijndaelManaged rijndaelManaged = new RijndaelManaged(); CryptoStream cryptoStream = new CryptoStream((Stream) fileStream1, rijndaelManaged.CreateDecryptor(bytes, bytes), CryptoStreamMode.Read); FileStream fileStream2 = new FileStream(outputFile, FileMode.Create); try { int num; while ((num = cryptoStream.ReadByte()) != -1) fileStream2.WriteByte((byte) num); fileStream2.Close(); cryptoStream.Close(); fileStream1.Close(); } catch { fileStream2.Close(); fileStream1.Close(); File.Delete(outputFile); return true; } return false; } public static bool CheckSpawn(int x, int y) { if (x < 10 || x > Main.maxTilesX - 10 || y < 10 || y > Main.maxTilesX - 10 || Main.tile[x, y - 1] == null || !Main.tile[x, y - 1].active || Main.tile[x, y - 1].type != (byte) 79) return false; for (int index1 = x - 1; index1 <= x + 1; ++index1) { for (int index2 = y - 3; index2 < y; ++index2) { if (Main.tile[index1, index2] == null || Main.tile[index1, index2].active && Main.tileSolid[(int) Main.tile[index1, index2].type] && !Main.tileSolidTop[(int) Main.tile[index1, index2].type]) return false; } } return WorldGen.StartRoomCheck(x, y - 1); } public void FindSpawn() { for (int index = 0; index < 200; ++index) { if (this.spN[index] == null) { this.SpawnX = -1; this.SpawnY = -1; break; } if (this.spN[index] == Main.worldName && this.spI[index] == Main.worldID) { this.SpawnX = this.spX[index]; this.SpawnY = this.spY[index]; break; } } } public void ChangeSpawn(int x, int y) { for (int index1 = 0; index1 < 200 && this.spN[index1] != null; ++index1) { if (this.spN[index1] == Main.worldName && this.spI[index1] == Main.worldID) { for (int index2 = index1; index2 > 0; --index2) { this.spN[index2] = this.spN[index2 - 1]; this.spI[index2] = this.spI[index2 - 1]; this.spX[index2] = this.spX[index2 - 1]; this.spY[index2] = this.spY[index2 - 1]; } this.spN[0] = Main.worldName; this.spI[0] = Main.worldID; this.spX[0] = x; this.spY[0] = y; return; } } for (int index = 199; index > 0; --index) { if (this.spN[index - 1] != null) { this.spN[index] = this.spN[index - 1]; this.spI[index] = this.spI[index - 1]; this.spX[index] = this.spX[index - 1]; this.spY[index] = this.spY[index - 1]; } } this.spN[0] = Main.worldName; this.spI[0] = Main.worldID; this.spX[0] = x; this.spY[0] = y; } public static void SavePlayer(Player newPlayer, string playerPath) { try { Directory.CreateDirectory(Main.PlayerPath); } catch { } switch (playerPath) { case "": break; case null: break; default: string destFileName = playerPath + ".bak"; if (File.Exists(playerPath)) File.Copy(playerPath, destFileName, true); string str = playerPath + ".dat"; using (FileStream fileStream = new FileStream(str, FileMode.Create)) { using (BinaryWriter binaryWriter = new BinaryWriter((Stream) fileStream)) { binaryWriter.Write(Main.curRelease); binaryWriter.Write(newPlayer.name); binaryWriter.Write(newPlayer.difficulty); binaryWriter.Write(newPlayer.hair); binaryWriter.Write(newPlayer.male); binaryWriter.Write(newPlayer.statLife); binaryWriter.Write(newPlayer.statLifeMax); binaryWriter.Write(newPlayer.statMana); binaryWriter.Write(newPlayer.statManaMax); binaryWriter.Write(newPlayer.hairColor.R); binaryWriter.Write(newPlayer.hairColor.G); binaryWriter.Write(newPlayer.hairColor.B); binaryWriter.Write(newPlayer.skinColor.R); binaryWriter.Write(newPlayer.skinColor.G); binaryWriter.Write(newPlayer.skinColor.B); binaryWriter.Write(newPlayer.eyeColor.R); binaryWriter.Write(newPlayer.eyeColor.G); binaryWriter.Write(newPlayer.eyeColor.B); binaryWriter.Write(newPlayer.shirtColor.R); binaryWriter.Write(newPlayer.shirtColor.G); binaryWriter.Write(newPlayer.shirtColor.B); binaryWriter.Write(newPlayer.underShirtColor.R); binaryWriter.Write(newPlayer.underShirtColor.G); binaryWriter.Write(newPlayer.underShirtColor.B); binaryWriter.Write(newPlayer.pantsColor.R); binaryWriter.Write(newPlayer.pantsColor.G); binaryWriter.Write(newPlayer.pantsColor.B); binaryWriter.Write(newPlayer.shoeColor.R); binaryWriter.Write(newPlayer.shoeColor.G); binaryWriter.Write(newPlayer.shoeColor.B); for (int index = 0; index < 11; ++index) { if (newPlayer.armor[index].name == null) newPlayer.armor[index].name = ""; binaryWriter.Write(newPlayer.armor[index].netID); binaryWriter.Write(newPlayer.armor[index].prefix); } for (int index = 0; index < 48; ++index) { if (newPlayer.inventory[index].name == null) newPlayer.inventory[index].name = ""; binaryWriter.Write(newPlayer.inventory[index].netID); binaryWriter.Write(newPlayer.inventory[index].stack); binaryWriter.Write(newPlayer.inventory[index].prefix); } for (int index = 0; index < Chest.maxItems; ++index) { if (newPlayer.bank[index].name == null) newPlayer.bank[index].name = ""; binaryWriter.Write(newPlayer.bank[index].netID); binaryWriter.Write(newPlayer.bank[index].stack); binaryWriter.Write(newPlayer.bank[index].prefix); } for (int index = 0; index < Chest.maxItems; ++index) { if (newPlayer.bank2[index].name == null) newPlayer.bank2[index].name = ""; binaryWriter.Write(newPlayer.bank2[index].netID); binaryWriter.Write(newPlayer.bank2[index].stack); binaryWriter.Write(newPlayer.bank2[index].prefix); } for (int index = 0; index < 10; ++index) { binaryWriter.Write(newPlayer.buffType[index]); binaryWriter.Write(newPlayer.buffTime[index]); } for (int index = 0; index < 200; ++index) { if (newPlayer.spN[index] == null) { binaryWriter.Write(-1); break; } binaryWriter.Write(newPlayer.spX[index]); binaryWriter.Write(newPlayer.spY[index]); binaryWriter.Write(newPlayer.spI[index]); binaryWriter.Write(newPlayer.spN[index]); } binaryWriter.Write(newPlayer.hbLocked); binaryWriter.Close(); } } Player.EncryptFile(str, playerPath); File.Delete(str); break; } } public static Player LoadPlayer(string playerPath) { if (Main.rand == null) Main.rand = new Random((int) DateTime.Now.Ticks); Player player = new Player(); bool flag; try { string str = playerPath + ".dat"; flag = Player.DecryptFile(playerPath, str); if (!flag) { using (FileStream fileStream = new FileStream(str, FileMode.Open)) { using (BinaryReader binaryReader = new BinaryReader((Stream) fileStream)) { int release = binaryReader.ReadInt32(); player.name = binaryReader.ReadString(); if (release >= 10) { if (release >= 17) player.difficulty = binaryReader.ReadByte(); else if (binaryReader.ReadBoolean()) player.difficulty = (byte) 2; } player.hair = binaryReader.ReadInt32(); player.male = release > 17 ? binaryReader.ReadBoolean() : player.hair != 5 && player.hair != 6 && player.hair != 9 && player.hair != 11; player.statLife = binaryReader.ReadInt32(); player.statLifeMax = binaryReader.ReadInt32(); if (player.statLifeMax > 400) player.statLifeMax = 400; if (player.statLife > player.statLifeMax) player.statLife = player.statLifeMax; player.statMana = binaryReader.ReadInt32(); player.statManaMax = binaryReader.ReadInt32(); if (player.statManaMax > 200) player.statManaMax = 200; if (player.statMana > 400) player.statMana = 400; player.hairColor.R = binaryReader.ReadByte(); player.hairColor.G = binaryReader.ReadByte(); player.hairColor.B = binaryReader.ReadByte(); player.skinColor.R = binaryReader.ReadByte(); player.skinColor.G = binaryReader.ReadByte(); player.skinColor.B = binaryReader.ReadByte(); player.eyeColor.R = binaryReader.ReadByte(); player.eyeColor.G = binaryReader.ReadByte(); player.eyeColor.B = binaryReader.ReadByte(); player.shirtColor.R = binaryReader.ReadByte(); player.shirtColor.G = binaryReader.ReadByte(); player.shirtColor.B = binaryReader.ReadByte(); player.underShirtColor.R = binaryReader.ReadByte(); player.underShirtColor.G = binaryReader.ReadByte(); player.underShirtColor.B = binaryReader.ReadByte(); player.pantsColor.R = binaryReader.ReadByte(); player.pantsColor.G = binaryReader.ReadByte(); player.pantsColor.B = binaryReader.ReadByte(); player.shoeColor.R = binaryReader.ReadByte(); player.shoeColor.G = binaryReader.ReadByte(); player.shoeColor.B = binaryReader.ReadByte(); Main.player[Main.myPlayer].shirtColor = player.shirtColor; Main.player[Main.myPlayer].pantsColor = player.pantsColor; Main.player[Main.myPlayer].hairColor = player.hairColor; if (release >= 38) { for (int index = 0; index < 11; ++index) { player.armor[index].netDefaults(binaryReader.ReadInt32()); player.armor[index].Prefix((int) binaryReader.ReadByte()); } for (int index = 0; index < 48; ++index) { player.inventory[index].netDefaults(binaryReader.ReadInt32()); player.inventory[index].stack = binaryReader.ReadInt32(); player.inventory[index].Prefix((int) binaryReader.ReadByte()); } for (int index = 0; index < Chest.maxItems; ++index) { player.bank[index].netDefaults(binaryReader.ReadInt32()); player.bank[index].stack = binaryReader.ReadInt32(); player.bank[index].Prefix((int) binaryReader.ReadByte()); } for (int index = 0; index < Chest.maxItems; ++index) { player.bank2[index].netDefaults(binaryReader.ReadInt32()); player.bank2[index].stack = binaryReader.ReadInt32(); player.bank2[index].Prefix((int) binaryReader.ReadByte()); } } else { for (int index = 0; index < 8; ++index) { player.armor[index].SetDefaults(Item.VersionName(binaryReader.ReadString(), release)); if (release >= 36) player.armor[index].Prefix((int) binaryReader.ReadByte()); } if (release >= 6) { for (int index = 8; index < 11; ++index) { player.armor[index].SetDefaults(Item.VersionName(binaryReader.ReadString(), release)); if (release >= 36) player.armor[index].Prefix((int) binaryReader.ReadByte()); } } for (int index = 0; index < 44; ++index) { player.inventory[index].SetDefaults(Item.VersionName(binaryReader.ReadString(), release)); player.inventory[index].stack = binaryReader.ReadInt32(); if (release >= 36) player.inventory[index].Prefix((int) binaryReader.ReadByte()); } if (release >= 15) { for (int index = 44; index < 48; ++index) { player.inventory[index].SetDefaults(Item.VersionName(binaryReader.ReadString(), release)); player.inventory[index].stack = binaryReader.ReadInt32(); if (release >= 36) player.inventory[index].Prefix((int) binaryReader.ReadByte()); } } for (int index = 0; index < Chest.maxItems; ++index) { player.bank[index].SetDefaults(Item.VersionName(binaryReader.ReadString(), release)); player.bank[index].stack = binaryReader.ReadInt32(); if (release >= 36) player.bank[index].Prefix((int) binaryReader.ReadByte()); } if (release >= 20) { for (int index = 0; index < Chest.maxItems; ++index) { player.bank2[index].SetDefaults(Item.VersionName(binaryReader.ReadString(), release)); player.bank2[index].stack = binaryReader.ReadInt32(); if (release >= 36) player.bank2[index].Prefix((int) binaryReader.ReadByte()); } } } if (release >= 11) { for (int index = 0; index < 10; ++index) { player.buffType[index] = binaryReader.ReadInt32(); player.buffTime[index] = binaryReader.ReadInt32(); } } for (int index = 0; index < 200; ++index) { int num = binaryReader.ReadInt32(); if (num != -1) { player.spX[index] = num; player.spY[index] = binaryReader.ReadInt32(); player.spI[index] = binaryReader.ReadInt32(); player.spN[index] = binaryReader.ReadString(); } else break; } if (release >= 16) player.hbLocked = binaryReader.ReadBoolean(); binaryReader.Close(); } } player.PlayerFrame(); File.Delete(str); return player; } } catch { flag = true; } if (!flag) return new Player(); try { string str = playerPath + ".bak"; if (!File.Exists(str)) return new Player(); File.Delete(playerPath); File.Move(str, playerPath); return Player.LoadPlayer(playerPath); } catch { return new Player(); } } public bool HasItem(int type) { for (int index = 0; index < 48; ++index) { if (type == this.inventory[index].type) return true; } return false; } public void QuickGrapple() { if (this.noItems) return; int index1 = -1; for (int index2 = 0; index2 < 48; ++index2) { if (this.inventory[index2].shoot == 13 || this.inventory[index2].shoot == 32 || this.inventory[index2].shoot == 73) { index1 = index2; break; } } if (index1 < 0) return; if (this.inventory[index1].shoot == 73) { int num = 0; if (index1 >= 0) { for (int index3 = 0; index3 < 1000; ++index3) { if (Main.projectile[index3].active && Main.projectile[index3].owner == Main.myPlayer && (Main.projectile[index3].type == 73 || Main.projectile[index3].type == 74)) ++num; } } if (num > 1) index1 = -1; } else if (index1 >= 0) { for (int index4 = 0; index4 < 1000; ++index4) { if (Main.projectile[index4].active && Main.projectile[index4].owner == Main.myPlayer && Main.projectile[index4].type == this.inventory[index1].shoot && (double) Main.projectile[index4].ai[0] != 2.0) { index1 = -1; break; } } } if (index1 < 0) return; Main.PlaySound(2, (int) this.position.X, (int) this.position.Y, this.inventory[index1].useSound); if (Main.netMode == 1 && this.whoAmi == Main.myPlayer) NetMessage.SendData(51, number: this.whoAmi, number2: 2f); int Type = this.inventory[index1].shoot; float shootSpeed = this.inventory[index1].shootSpeed; int damage = this.inventory[index1].damage; float knockBack = this.inventory[index1].knockBack; if (Type == 13 || Type == 32) { this.grappling[0] = -1; this.grapCount = 0; for (int index5 = 0; index5 < 1000; ++index5) { if (Main.projectile[index5].active && Main.projectile[index5].owner == this.whoAmi && Main.projectile[index5].type == 13) Main.projectile[index5].Kill(); } } if (Type == 73) { for (int index6 = 0; index6 < 1000; ++index6) { if (Main.projectile[index6].active && Main.projectile[index6].owner == this.whoAmi && Main.projectile[index6].type == 73) Type = 74; } } Vector2 vector2 = new Vector2(this.position.X + (float) this.width * 0.5f, this.position.Y + (float) this.height * 0.5f); float num1 = (float) Main.mouseX + Main.screenPosition.X - vector2.X; float num2 = (float) Main.mouseY + Main.screenPosition.Y - vector2.Y; float num3 = (float) Math.Sqrt((double) num1 * (double) num1 + (double) num2 * (double) num2); float num4 = shootSpeed / num3; float SpeedX = num1 * num4; float SpeedY = num2 * num4; Projectile.NewProjectile(vector2.X, vector2.Y, SpeedX, SpeedY, Type, damage, knockBack, this.whoAmi); } public Player() { for (int index = 0; index < 49; ++index) { if (index < 11) { this.armor[index] = new Item(); this.armor[index].name = ""; } this.inventory[index] = new Item(); this.inventory[index].name = ""; } for (int index = 0; index < Chest.maxItems; ++index) { this.bank[index] = new Item(); this.bank[index].name = ""; this.bank2[index] = new Item(); this.bank2[index].name = ""; } this.grappling[0] = -1; this.inventory[0].SetDefaults("Copper Shortsword"); this.inventory[1].SetDefaults("Copper Pickaxe"); this.inventory[2].SetDefaults("Copper Axe"); if (Main.cEd) this.inventory[3].SetDefaults(603); for (int index = 0; index < 150; ++index) { this.adjTile[index] = false; this.oldAdjTile[index] = false; } } } }