namespace Terraria { using Microsoft.Xna.Framework; using Microsoft.Xna.Framework.Input; using System; using System.IO; using System.Runtime.InteropServices; using System.Security.Cryptography; using System.Text; public class Player { public int accDepthMeter; public bool accFlipper; public int accWatch; public bool active; public int activeNPCs; public bool[] adjTile = new bool[80]; public Item[] armor = new Item[8]; public int attackCD; public Item[] bank = new Item[Chest.maxItems]; public int body = -1; public Rectangle bodyFrame; public double bodyFrameCounter; public Vector2 bodyPosition; public float bodyRotation; public Vector2 bodyVelocity; public bool boneArmor; public int breath = 200; public int breathCD; public int breathMax = 200; public bool canRocket; public int changeItem = -1; public bool channel; public int chatShowTime; public string chatText = ""; public int chest = -1; public int chestX; public int chestY; public bool controlDown; public bool controlInv; public bool controlJump; public bool controlLeft; public bool controlRight; public bool controlThrow; public bool controlUp; public bool controlUseItem; public bool controlUseTile; public bool dead; public bool delayUseItem; public int direction = 1; public bool doubleJump; public Color eyeColor = new Color(0x69, 90, 0x4b); public int fallStart; public bool fireWalk; public int grapCount; public int[] grappling = new int[20]; public int hair; public Color hairColor = new Color(0xd7, 90, 0x37); public Rectangle hairFrame; public int head = -1; public Rectangle headFrame; public double headFrameCounter; public Vector2 headPosition; public float headRotation; public Vector2 headVelocity; public int height = 0x2a; public int hitTile; public int hitTileX; public int hitTileY; public bool hostile; public bool immune; public int immuneAlpha; public int immuneAlphaDirection; public int immuneTime; public Item[] inventory = new Item[0x2c]; public int itemAnimation; public int itemAnimationMax; private static int itemGrabRange = 0x26; private static float itemGrabSpeed = 0.45f; private static float itemGrabSpeedMax = 4f; public int itemHeight; public Vector2 itemLocation; public float itemRotation; public int itemTime; public int itemWidth; public int jump; public bool jumpAgain; public bool jumpBoost; private static int jumpHeight = 15; private static float jumpSpeed = 5.01f; public bool lavaWet; public Rectangle legFrame; public double legFrameCounter; public Vector2 legPosition; public float legRotation; public int legs = -1; public Vector2 legVelocity; public int lifeRegen; public int lifeRegenCount; public float manaCost = 1f; public int manaRegen; public int manaRegenCount; public int manaRegenDelay; public float meleeSpeed = 1f; public bool mouseInterface; public string name = ""; public bool noFallDmg; public bool noKnockback; public bool[] oldAdjTile = new bool[80]; public Vector2 oldVelocity; public Color pantsColor = new Color(0xff, 230, 0xaf); public Vector2 position; public int potionDelay; public bool pvpDeath; public bool releaseInventory; public bool releaseJump; public bool releaseUseItem; public bool releaseUseTile; public int respawnTimer; public bool rocketBoots; public int rocketDelay; public int rocketDelay2; public bool rocketFrame; public bool rocketRelease; public int runSoundDelay; public int selectedItem; public string setBonus = ""; public float shadow; public int shadowCount; public Vector2[] shadowPos = new Vector2[3]; public Color shirtColor = new Color(0xaf, 0xa5, 140); public Color shoeColor = new Color(160, 0x69, 60); public bool showItemIcon; public int showItemIcon2; public int sign = -1; public Color skinColor = new Color(0xff, 0x7d, 90); public int slowCount; public bool spawnMax; public int SpawnX = -1; public int SpawnY = -1; public int[] spI = new int[200]; public string[] spN = new string[200]; public int[] spX = new int[200]; public int[] spY = new int[200]; public int statAttack; public int statDefense; public int statLife = 100; public int statLifeMax = 100; public int statMana; public int statManaMax; public int step = -1; public int swimTime; public int talkNPC = -1; public int team; public static int tileRangeX = 5; public static int tileRangeY = 4; private static int tileTargetX; private static int tileTargetY; public int townNPCs; public Color underShirtColor = new Color(160, 180, 0xd7); public Vector2 velocity; public bool wet; public byte wetCount; public int whoAmi; public int width = 20; public bool zoneDungeon; public bool zoneEvil; public bool zoneJungle; public bool zoneMeteor; public float breakTicks = 0; public Player() { for (int i = 0; i < 0x2c; i++) { if (i < 8) { this.armor[i] = new Item(); this.armor[i].name = ""; } this.inventory[i] = new Item(); this.inventory[i].name = ""; } for (int j = 0; j < Chest.maxItems; j++) { this.bank[j] = new Item(); this.bank[j].name = ""; } this.grappling[0] = -1; this.inventory[0].SetDefaults("Copper Pickaxe"); this.inventory[1].SetDefaults("Copper Axe"); for (int k = 0; k < 80; k++) { this.adjTile[k] = false; this.oldAdjTile[k] = false; } } public void AdjTiles() { int num = 4; int num2 = 3; for (int i = 0; i < 80; i++) { this.oldAdjTile[i] = this.adjTile[i]; this.adjTile[i] = false; } int num4 = (int) ((this.position.X + (this.width / 2)) / 16f); int num5 = (int) ((this.position.Y + this.height) / 16f); for (int j = num4 - num; j <= (num4 + num); j++) { for (int k = num5 - num2; k < (num5 + num2); k++) { if (Main.tile[j, k].active) { this.adjTile[Main.tile[j, k].type] = true; if (Main.tile[j, k].type == 0x4d) { this.adjTile[0x11] = true; } } } } if (Main.playerInventory) { bool flag = false; for (int m = 0; m < 80; m++) { if (this.oldAdjTile[m] != this.adjTile[m]) { flag = true; break; } } if (flag) { Recipe.FindRecipes(); } } } public bool BuyItem(int price) { if (price == 0) { return false; } int num = 0; int num2 = price; Item[] itemArray = new Item[0x2c]; for (int i = 0; i < 0x2c; i++) { itemArray[i] = new Item(); itemArray[i] = (Item) this.inventory[i].Clone(); if (this.inventory[i].type == 0x47) { num += this.inventory[i].stack; } if (this.inventory[i].type == 0x48) { num += this.inventory[i].stack * 100; } if (this.inventory[i].type == 0x49) { num += this.inventory[i].stack * 0x2710; } if (this.inventory[i].type == 0x4a) { num += this.inventory[i].stack * 0xf4240; } } if (num < price) { return false; } num2 = price; while (num2 > 0) { if (num2 >= 0xf4240) { for (int j = 0; j < 0x2c; j++) { if (this.inventory[j].type == 0x4a) { while ((this.inventory[j].stack > 0) && (num2 >= 0xf4240)) { num2 -= 0xf4240; Item item1 = this.inventory[j]; item1.stack--; if (this.inventory[j].stack == 0) { this.inventory[j].type = 0; } } } } } if (num2 >= 0x2710) { for (int k = 0; k < 0x2c; k++) { if (this.inventory[k].type == 0x49) { while ((this.inventory[k].stack > 0) && (num2 >= 0x2710)) { num2 -= 0x2710; Item item2 = this.inventory[k]; item2.stack--; if (this.inventory[k].stack == 0) { this.inventory[k].type = 0; } } } } } if (num2 >= 100) { for (int m = 0; m < 0x2c; m++) { if (this.inventory[m].type == 0x48) { while ((this.inventory[m].stack > 0) && (num2 >= 100)) { num2 -= 100; Item item3 = this.inventory[m]; item3.stack--; if (this.inventory[m].stack == 0) { this.inventory[m].type = 0; } } } } } if (num2 >= 1) { for (int n = 0; n < 0x2c; n++) { if (this.inventory[n].type == 0x47) { while ((this.inventory[n].stack > 0) && (num2 >= 1)) { num2--; Item item4 = this.inventory[n]; item4.stack--; if (this.inventory[n].stack == 0) { this.inventory[n].type = 0; } } } } } if (num2 > 0) { int index = -1; for (int num9 = 0x2b; num9 >= 0; num9--) { if ((this.inventory[num9].type == 0) || (this.inventory[num9].stack == 0)) { index = num9; break; } } if (index >= 0) { bool flag = true; if (num2 >= 0x2710) { for (int num10 = 0; num10 < 0x2c; num10++) { if ((this.inventory[num10].type == 0x4a) && (this.inventory[num10].stack >= 1)) { Item item5 = this.inventory[num10]; item5.stack--; if (this.inventory[num10].stack == 0) { this.inventory[num10].type = 0; } this.inventory[index].SetDefaults(0x49); this.inventory[index].stack = 100; flag = false; break; } } } else if (num2 >= 100) { for (int num11 = 0; num11 < 0x2c; num11++) { if ((this.inventory[num11].type == 0x49) && (this.inventory[num11].stack >= 1)) { Item item6 = this.inventory[num11]; item6.stack--; if (this.inventory[num11].stack == 0) { this.inventory[num11].type = 0; } this.inventory[index].SetDefaults(0x48); this.inventory[index].stack = 100; flag = false; break; } } } else if (num2 >= 1) { for (int num12 = 0; num12 < 0x2c; num12++) { if ((this.inventory[num12].type == 0x48) && (this.inventory[num12].stack >= 1)) { Item item7 = this.inventory[num12]; item7.stack--; if (this.inventory[num12].stack == 0) { this.inventory[num12].type = 0; } this.inventory[index].SetDefaults(0x47); this.inventory[index].stack = 100; flag = false; break; } } } if (!flag) { continue; } if (num2 < 0x2710) { for (int num13 = 0; num13 < 0x2c; num13++) { if ((this.inventory[num13].type == 0x49) && (this.inventory[num13].stack >= 1)) { Item item8 = this.inventory[num13]; item8.stack--; if (this.inventory[num13].stack == 0) { this.inventory[num13].type = 0; } this.inventory[index].SetDefaults(0x48); this.inventory[index].stack = 100; flag = false; break; } } } if (flag && (num2 < 0xf4240)) { for (int num14 = 0; num14 < 0x2c; num14++) { if ((this.inventory[num14].type == 0x4a) && (this.inventory[num14].stack >= 1)) { Item item9 = this.inventory[num14]; item9.stack--; if (this.inventory[num14].stack == 0) { this.inventory[num14].type = 0; } this.inventory[index].SetDefaults(0x49); this.inventory[index].stack = 100; flag = false; break; } } } continue; } for (int num15 = 0; num15 < 0x2c; num15++) { this.inventory[num15] = (Item) itemArray[num15].Clone(); } return false; } } return true; } public void ChangeSpawn(int x, int y) { for (int i = 0; i < 200; i++) { if (this.spN[i] == null) { break; } if ((this.spN[i] == Main.worldName) && (this.spI[i] == Main.worldID)) { for (int k = i; k > 0; k--) { this.spN[k] = this.spN[k - 1]; this.spI[k] = this.spI[k - 1]; this.spX[k] = this.spX[k - 1]; this.spY[k] = this.spY[k - 1]; } this.spN[0] = Main.worldName; this.spI[0] = Main.worldID; this.spX[0] = x; this.spY[0] = y; return; } } for (int j = 0xc7; j > 0; j--) { if (this.spN[j - 1] != null) { this.spN[j] = this.spN[j - 1]; this.spI[j] = this.spI[j - 1]; this.spX[j] = this.spX[j - 1]; this.spY[j] = this.spY[j - 1]; } } this.spN[0] = Main.worldName; this.spI[0] = Main.worldID; this.spX[0] = x; this.spY[0] = y; } public static bool CheckSpawn(int x, int y) { if (((x < 10) || (x > (Main.maxTilesX - 10))) || ((y < 10) || (y > (Main.maxTilesX - 10)))) { return false; } if (Main.tile[x, y - 1] == null) { return false; } if (!Main.tile[x, y - 1].active || (Main.tile[x, y - 1].type != 0x4f)) { return false; } for (int i = x - 1; i <= (x + 1); i++) { for (int j = y - 3; j < y; j++) { if (Main.tile[i, j] == null) { return false; } if ((Main.tile[i, j].active && Main.tileSolid[Main.tile[i, j].type]) && !Main.tileSolidTop[Main.tile[i, j].type]) { return false; } } } if (!WorldGen.StartRoomCheck(x, y - 1)) { return false; } return true; } public object clientClone() { Player player = new Player { zoneEvil = this.zoneEvil, zoneMeteor = this.zoneMeteor, zoneDungeon = this.zoneDungeon, zoneJungle = this.zoneJungle, direction = this.direction, selectedItem = this.selectedItem, controlUp = this.controlUp, controlDown = this.controlDown, controlLeft = this.controlLeft, controlRight = this.controlRight, controlJump = this.controlJump, controlUseItem = this.controlUseItem, statLife = this.statLife, statLifeMax = this.statLifeMax, statMana = this.statMana, statManaMax = this.statManaMax }; player.position.X = this.position.X; player.chest = this.chest; player.talkNPC = this.talkNPC; for (int i = 0; i < 0x2c; i++) { player.inventory[i] = (Item) this.inventory[i].Clone(); if (i < 8) { player.armor[i] = (Item) this.armor[i].Clone(); } } return player; } public object Clone() { return base.MemberwiseClone(); } private static bool DecryptFile(string inputFile, string outputFile) { string s = "h3y_gUyZ"; byte[] bytes = new UnicodeEncoding().GetBytes(s); FileStream stream = new FileStream(inputFile, FileMode.Open); RijndaelManaged managed = new RijndaelManaged(); CryptoStream stream2 = new CryptoStream(stream, managed.CreateDecryptor(bytes, bytes), CryptoStreamMode.Read); FileStream stream3 = new FileStream(outputFile, FileMode.Create); try { int num; while ((num = stream2.ReadByte()) != -1) { stream3.WriteByte((byte) num); } stream3.Close(); stream2.Close(); stream.Close(); } catch { stream3.Close(); stream.Close(); File.Delete(outputFile); return true; } return false; } public void DoCoins(int i) { if ((this.inventory[i].stack == 100) && (((this.inventory[i].type == 0x47) || (this.inventory[i].type == 0x48)) || (this.inventory[i].type == 0x49))) { this.inventory[i].SetDefaults((int) (this.inventory[i].type + 1)); for (int j = 0; j < 0x2c; j++) { if ((this.inventory[j].IsTheSameAs(this.inventory[i]) && (j != i)) && (this.inventory[j].stack < this.inventory[j].maxStack)) { Item item1 = this.inventory[j]; item1.stack++; this.inventory[i].SetDefaults(""); this.inventory[i].active = false; this.inventory[i].name = ""; this.inventory[i].type = 0; this.inventory[i].stack = 0; this.DoCoins(j); } } } } public void DropItems() { for (int i = 0; i < 0x2c; i++) { if ((this.inventory[i].type >= 0x47) && (this.inventory[i].type <= 0x4a)) { int index = Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, this.inventory[i].type, 1, false); int num3 = this.inventory[i].stack / 2; num3 = this.inventory[i].stack - num3; Item item1 = this.inventory[i]; item1.stack -= num3; if (this.inventory[i].stack <= 0) { this.inventory[i] = new Item(); } Main.item[index].stack = num3; Main.item[index].velocity.Y = Main.rand.Next(-20, 1) * 0.2f; Main.item[index].velocity.X = Main.rand.Next(-20, 0x15) * 0.2f; Main.item[index].noGrabDelay = 100; if (Main.netMode == 1) { NetMessage.SendData(0x15, -1, -1, "", index, 0f, 0f, 0f); } } } } private static void EncryptFile(string inputFile, string outputFile) { int num; string s = "h3y_gUyZ"; byte[] bytes = new UnicodeEncoding().GetBytes(s); string path = outputFile; FileStream stream = new FileStream(path, FileMode.Create); RijndaelManaged managed = new RijndaelManaged(); CryptoStream stream2 = new CryptoStream(stream, managed.CreateEncryptor(bytes, bytes), CryptoStreamMode.Write); FileStream stream3 = new FileStream(inputFile, FileMode.Open); while ((num = stream3.ReadByte()) != -1) { stream2.WriteByte((byte) num); } stream3.Close(); stream2.Close(); stream.Close(); } public static byte FindClosest(Vector2 Position, int Width, int Height) { byte num = 0; for (int i = 0; i < 8; i++) { if (Main.player[i].active) { num = (byte) i; break; } } float num3 = -1f; for (int j = 0; j < 8; j++) { if ((Main.player[j].active && !Main.player[j].dead) && ((num3 == -1f) || ((Math.Abs((float) (((Main.player[j].position.X + (Main.player[j].width / 2)) - Position.X) + (Width / 2))) + Math.Abs((float) (((Main.player[j].position.Y + (Main.player[j].height / 2)) - Position.Y) + (Height / 2)))) < num3))) { num3 = Math.Abs((float) (((Main.player[j].position.X + (Main.player[j].width / 2)) - Position.X) + (Width / 2))) + Math.Abs((float) (((Main.player[j].position.Y + (Main.player[j].height / 2)) - Position.Y) + (Height / 2))); num = (byte) j; } } return num; } public void FindSpawn() { for (int i = 0; i < 200; i++) { if (this.spN[i] == null) { this.SpawnX = -1; this.SpawnY = -1; return; } if ((this.spN[i] == Main.worldName) && (this.spI[i] == Main.worldID)) { this.SpawnX = this.spX[i]; this.SpawnY = this.spY[i]; return; } } } public Color GetDeathAlpha(Color newColor) { int r = newColor.R + ((int) (this.immuneAlpha * 0.9)); int g = newColor.G + ((int) (this.immuneAlpha * 0.5)); int b = newColor.B + ((int) (this.immuneAlpha * 0.5)); int a = newColor.A + ((int) (this.immuneAlpha * 0.4)); if (a < 0) { a = 0; } if (a > 0xff) { a = 0xff; } return new Color(r, g, b, a); } public Color GetImmuneAlpha(Color newColor) { float num = ((float) (0xff - this.immuneAlpha)) / 255f; if (this.shadow > 0f) { num *= 1f - this.shadow; } int r = (int) (newColor.R * num); int g = (int) (newColor.G * num); int b = (int) (newColor.B * num); int a = (int) (newColor.A * num); if (a < 0) { a = 0; } if (a > 0xff) { a = 0xff; } return new Color(r, g, b, a); } public Item GetItem(int plr, Item newItem) { Item item = newItem; if (newItem.noGrabDelay <= 0) { int num = 0; if (((newItem.type == 0x47) || (newItem.type == 0x48)) || ((newItem.type == 0x49) || (newItem.type == 0x4a))) { num = -4; } for (int i = num; i < 40; i++) { int index = i; if (index < 0) { index = 0x2c + i; } if (((this.inventory[index].type > 0) && (this.inventory[index].stack < this.inventory[index].maxStack)) && item.IsTheSameAs(this.inventory[index])) { Main.PlaySound(7, (int) this.position.X, (int) this.position.Y, 1); if ((item.stack + this.inventory[index].stack) <= this.inventory[index].maxStack) { Item item1 = this.inventory[index]; item1.stack += item.stack; this.DoCoins(index); if (plr == Main.myPlayer) { Recipe.FindRecipes(); } return new Item(); } item.stack -= this.inventory[index].maxStack - this.inventory[index].stack; this.inventory[index].stack = this.inventory[index].maxStack; this.DoCoins(index); if (plr == Main.myPlayer) { Recipe.FindRecipes(); } } } for (int j = num; j < 40; j++) { int num5 = j; if (num5 < 0) { num5 = 0x2c + j; } if (this.inventory[num5].type == 0) { this.inventory[num5] = item; this.DoCoins(num5); Main.PlaySound(7, (int) this.position.X, (int) this.position.Y, 1); if (plr == Main.myPlayer) { Recipe.FindRecipes(); } return new Item(); } } } return item; } public void HealEffect(int healAmount) { CombatText.NewText(new Rectangle((int) this.position.X, (int) this.position.Y, this.width, this.height), new Color(100, 100, 0xff, 0xff), healAmount.ToString()); if ((Main.netMode == 1) && (this.whoAmi == Main.myPlayer)) { NetMessage.SendData(0x23, -1, -1, "", this.whoAmi, (float) healAmount, 0f, 0f); } } public double Hurt(int Damage, int hitDirection, bool pvp = false, bool quiet = false) { if (this.immune || Main.godMode) { return 0.0; } int damage = Damage; if (pvp) { damage *= 2; } double dmg = Main.CalculateDamage(damage, this.statDefense); if (dmg >= 1.0) { if (((Main.netMode == 1) && (this.whoAmi == Main.myPlayer)) && !quiet) { int num3 = 0; if (pvp) { num3 = 1; } NetMessage.SendData(13, -1, -1, "", this.whoAmi, 0f, 0f, 0f); NetMessage.SendData(0x10, -1, -1, "", this.whoAmi, 0f, 0f, 0f); NetMessage.SendData(0x1a, -1, -1, "", this.whoAmi, (float) hitDirection, (float) Damage, (float) num3); } CombatText.NewText(new Rectangle((int) this.position.X, (int) this.position.Y, this.width, this.height), new Color(0xff, 80, 90, 0xff), ((int) dmg).ToString()); this.statLife -= (int) dmg; this.immune = true; this.immuneTime = 40; if (pvp) { this.immuneTime = 8; } if (!this.noKnockback && (hitDirection != 0)) { this.velocity.X = 4.5f * hitDirection; this.velocity.Y = -3.5f; } if (this.boneArmor) { Main.PlaySound(3, (int) this.position.X, (int) this.position.Y, 2); } else if (((this.hair == 5) || (this.hair == 6)) || ((this.hair == 9) || (this.hair == 11))) { Main.PlaySound(20, (int) this.position.X, (int) this.position.Y, 1); } else { Main.PlaySound(1, (int) this.position.X, (int) this.position.Y, 1); } if (this.statLife > 0) { for (int i = 0; i < ((dmg / ((double) this.statLifeMax)) * 100.0); i++) { if (this.boneArmor) { Color newColor = new Color(); Dust.NewDust(this.position, this.width, this.height, 0x1a, (float) (2 * hitDirection), -2f, 0, newColor, 1f); } else { Color color2 = new Color(); Dust.NewDust(this.position, this.width, this.height, 5, (float) (2 * hitDirection), -2f, 0, color2, 1f); } } } else { this.statLife = 0; if (this.whoAmi == Main.myPlayer) { this.KillMe(dmg, hitDirection, pvp); } } } if (pvp) { dmg = Main.CalculateDamage(damage, this.statDefense); } return dmg; } public void ItemCheck(int i) { Color color; if (this.inventory[this.selectedItem].autoReuse) { this.releaseUseItem = true; if ((this.itemAnimation == 1) && (this.inventory[this.selectedItem].stack > 0)) { this.itemAnimation = 0; } } if ((this.controlUseItem && (this.itemAnimation == 0)) && (this.releaseUseItem && (this.inventory[this.selectedItem].useStyle > 0))) { bool flag = true; if (((this.inventory[this.selectedItem].shoot == 6) || (this.inventory[this.selectedItem].shoot == 0x13)) || (this.inventory[this.selectedItem].shoot == 0x21)) { for (int j = 0; j < 0x3e8; j++) { if ((Main.projectile[j].active && (Main.projectile[j].owner == Main.myPlayer)) && (Main.projectile[j].type == this.inventory[this.selectedItem].shoot)) { flag = false; } } } if (this.inventory[this.selectedItem].potion) { if (this.potionDelay <= 0) { this.potionDelay = Item.potionDelay; } else { flag = false; } } if (this.inventory[this.selectedItem].mana > 0) { if (this.statMana >= ((int) (this.inventory[this.selectedItem].mana * this.manaCost))) { this.statMana -= (int) (this.inventory[this.selectedItem].mana * this.manaCost); } else { flag = false; } } if ((this.inventory[this.selectedItem].type == 0x2b) && Main.dayTime) { flag = false; } if ((this.inventory[this.selectedItem].type == 70) && !this.zoneEvil) { flag = false; } if (((this.inventory[this.selectedItem].shoot == 0x11) && flag) && (i == Main.myPlayer)) { int num2 = (Main.mouseState.X + ((int) Main.screenPosition.X)) / 0x10; int num3 = (Main.mouseState.Y + ((int) Main.screenPosition.Y)) / 0x10; if (Main.tile[num2, num3].active && (((Main.tile[num2, num3].type == 0) || (Main.tile[num2, num3].type == 2)) || (Main.tile[num2, num3].type == 0x17))) { WorldGen.KillTile(num2, num3, false, false, true); if (!Main.tile[num2, num3].active) { if (Main.netMode == 1) { NetMessage.SendData(0x11, -1, -1, "", 4, (float) num2, (float) num3, 0f); } } else { flag = false; } } else { flag = false; } } if (flag && (this.inventory[this.selectedItem].useAmmo > 0)) { flag = false; for (int k = 0; k < 0x2c; k++) { if ((this.inventory[k].ammo == this.inventory[this.selectedItem].useAmmo) && (this.inventory[k].stack > 0)) { flag = true; break; } } } if (flag) { 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].shoot > 0) || (this.inventory[this.selectedItem].damage == 0)) { this.meleeSpeed = 1f; } this.itemAnimation = (int) (this.inventory[this.selectedItem].useAnimation * this.meleeSpeed); this.itemAnimationMax = (int) (this.inventory[this.selectedItem].useAnimation * this.meleeSpeed); 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 == 0x12)) { for (int m = 0; m < 0x3e8; m++) { if ((Main.projectile[m].active && (Main.projectile[m].owner == i)) && (Main.projectile[m].type == this.inventory[this.selectedItem].shoot)) { Main.projectile[m].Kill(); } } } } if (!this.controlUseItem) { this.channel = false; } if (this.itemAnimation > 0) { if (this.inventory[this.selectedItem].mana > 0) { this.manaRegenDelay = 180; } this.itemHeight = Main.itemTexture[this.inventory[this.selectedItem].type].Height; this.itemWidth = Main.itemTexture[this.inventory[this.selectedItem].type].Width; this.itemAnimation--; if (this.inventory[this.selectedItem].useStyle == 1) { if (this.itemAnimation < (this.itemAnimationMax * 0.333)) { float num6 = 10f; if (Main.itemTexture[this.inventory[this.selectedItem].type].Width > 0x20) { num6 = 14f; } this.itemLocation.X = (this.position.X + (this.width * 0.5f)) + (((Main.itemTexture[this.inventory[this.selectedItem].type].Width * 0.5f) - num6) * this.direction); this.itemLocation.Y = this.position.Y + 24f; } else if (this.itemAnimation < (this.itemAnimationMax * 0.666)) { float num7 = 10f; if (Main.itemTexture[this.inventory[this.selectedItem].type].Width > 0x20) { num7 = 18f; } this.itemLocation.X = (this.position.X + (this.width * 0.5f)) + (((Main.itemTexture[this.inventory[this.selectedItem].type].Width * 0.5f) - num7) * this.direction); num7 = 10f; if (Main.itemTexture[this.inventory[this.selectedItem].type].Height > 0x20) { num7 = 8f; } this.itemLocation.Y = this.position.Y + num7; } else { float num8 = 6f; if (Main.itemTexture[this.inventory[this.selectedItem].type].Width > 0x20) { num8 = 14f; } this.itemLocation.X = (this.position.X + (this.width * 0.5f)) - (((Main.itemTexture[this.inventory[this.selectedItem].type].Width * 0.5f) - num8) * this.direction); num8 = 10f; if (Main.itemTexture[this.inventory[this.selectedItem].type].Height > 0x20) { num8 = 10f; } this.itemLocation.Y = this.position.Y + num8; } this.itemRotation = ((((((float) this.itemAnimation) / ((float) this.itemAnimationMax)) - 0.5f) * -this.direction) * 3.5f) - (this.direction * 0.3f); } else if (this.inventory[this.selectedItem].useStyle == 2) { this.itemRotation = (((((float) this.itemAnimation) / ((float) this.itemAnimationMax)) * this.direction) * 2f) + (-1.4f * this.direction); if (this.itemAnimation < (this.itemAnimationMax * 0.5)) { this.itemLocation.X = (this.position.X + (this.width * 0.5f)) + ((((Main.itemTexture[this.inventory[this.selectedItem].type].Width * 0.5f) - 9f) - ((this.itemRotation * 12f) * this.direction)) * this.direction); this.itemLocation.Y = (this.position.Y + 38f) + ((this.itemRotation * this.direction) * 4f); } else { this.itemLocation.X = (this.position.X + (this.width * 0.5f)) + ((((Main.itemTexture[this.inventory[this.selectedItem].type].Width * 0.5f) - 9f) - ((this.itemRotation * 16f) * this.direction)) * this.direction); this.itemLocation.Y = (this.position.Y + 38f) + (this.itemRotation * this.direction); } } else if (this.inventory[this.selectedItem].useStyle == 3) { if (this.itemAnimation > (this.itemAnimationMax * 0.666)) { this.itemLocation.X = -1000f; this.itemLocation.Y = -1000f; this.itemRotation = -1.3f * this.direction; } else { this.itemLocation.X = (this.position.X + (this.width * 0.5f)) + (((Main.itemTexture[this.inventory[this.selectedItem].type].Width * 0.5f) - 4f) * this.direction); this.itemLocation.Y = this.position.Y + 24f; float num9 = (((((((float) this.itemAnimation) / ((float) this.itemAnimationMax)) * Main.itemTexture[this.inventory[this.selectedItem].type].Width) * this.direction) * this.inventory[this.selectedItem].scale) * 1.2f) - (10 * this.direction); if ((num9 > -4f) && (this.direction == -1)) { num9 = -8f; } if ((num9 < 4f) && (this.direction == 1)) { num9 = 8f; } this.itemLocation.X -= num9; this.itemRotation = 0.8f * this.direction; } } else if (this.inventory[this.selectedItem].useStyle == 4) { this.itemRotation = 0f; this.itemLocation.X = (this.position.X + (this.width * 0.5f)) + ((((Main.itemTexture[this.inventory[this.selectedItem].type].Width * 0.5f) - 9f) - ((this.itemRotation * 14f) * this.direction)) * this.direction); this.itemLocation.Y = this.position.Y + (Main.itemTexture[this.inventory[this.selectedItem].type].Height * 0.5f); } else if (this.inventory[this.selectedItem].useStyle == 5) { this.itemLocation.X = ((this.position.X + (this.width * 0.5f)) - (Main.itemTexture[this.inventory[this.selectedItem].type].Width * 0.5f)) - (this.direction * 2); this.itemLocation.Y = (this.position.Y + (this.height * 0.5f)) - (Main.itemTexture[this.inventory[this.selectedItem].type].Height * 0.5f); } } else if (this.inventory[this.selectedItem].holdStyle == 1) { this.itemLocation.X = (this.position.X + (this.width * 0.5f)) + (((Main.itemTexture[this.inventory[this.selectedItem].type].Width * 0.5f) + 4f) * this.direction); this.itemLocation.Y = this.position.Y + 24f; this.itemRotation = 0f; } else if (this.inventory[this.selectedItem].holdStyle == 2) { this.itemLocation.X = (this.position.X + (this.width * 0.5f)) + (6 * this.direction); this.itemLocation.Y = this.position.Y + 16f; this.itemRotation = 0.79f * -this.direction; } if (this.inventory[this.selectedItem].type == 8) { int maxValue = 20; if (this.itemAnimation > 0) { maxValue = 7; } if (this.direction == -1) { if (Main.rand.Next(maxValue) == 0) { color = new Color(); Dust.NewDust(new Vector2(this.itemLocation.X - 16f, this.itemLocation.Y - 14f), 4, 4, 6, 0f, 0f, 100, color, 1f); } Lighting.addLight((int) (((this.itemLocation.X - 16f) + this.velocity.X) / 16f), (int) ((this.itemLocation.Y - 14f) / 16f), 1f); } else { if (Main.rand.Next(maxValue) == 0) { color = new Color(); Dust.NewDust(new Vector2(this.itemLocation.X + 6f, this.itemLocation.Y - 14f), 4, 4, 6, 0f, 0f, 100, color, 1f); } Lighting.addLight((int) (((this.itemLocation.X + 6f) + this.velocity.X) / 16f), (int) ((this.itemLocation.Y - 14f) / 16f), 1f); } } else if (this.inventory[this.selectedItem].type == 0x69) { int num11 = 20; if (this.itemAnimation > 0) { num11 = 7; } if (this.direction == -1) { if (Main.rand.Next(num11) == 0) { color = new Color(); Dust.NewDust(new Vector2(this.itemLocation.X - 12f, this.itemLocation.Y - 20f), 4, 4, 6, 0f, 0f, 100, color, 1f); } Lighting.addLight((int) (((this.itemLocation.X - 16f) + this.velocity.X) / 16f), (int) ((this.itemLocation.Y - 14f) / 16f), 1f); } else { if (Main.rand.Next(num11) == 0) { color = new Color(); Dust.NewDust(new Vector2(this.itemLocation.X + 4f, this.itemLocation.Y - 20f), 4, 4, 6, 0f, 0f, 100, color, 1f); } Lighting.addLight((int) (((this.itemLocation.X + 6f) + this.velocity.X) / 16f), (int) ((this.itemLocation.Y - 14f) / 16f), 1f); } } else if (this.inventory[this.selectedItem].type == 0x94) { int num12 = 10; if (this.itemAnimation > 0) { num12 = 7; } if (this.direction == -1) { if (Main.rand.Next(num12) == 0) { color = new Color(); Dust.NewDust(new Vector2(this.itemLocation.X - 12f, this.itemLocation.Y - 20f), 4, 4, 0x1d, 0f, 0f, 100, color, 1f); } Lighting.addLight((int) (((this.itemLocation.X - 16f) + this.velocity.X) / 16f), (int) ((this.itemLocation.Y - 14f) / 16f), 1f); } else { if (Main.rand.Next(num12) == 0) { color = new Color(); Dust.NewDust(new Vector2(this.itemLocation.X + 4f, this.itemLocation.Y - 20f), 4, 4, 0x1d, 0f, 0f, 100, color, 1f); } Lighting.addLight((int) (((this.itemLocation.X + 6f) + this.velocity.X) / 16f), (int) ((this.itemLocation.Y - 14f) / 16f), 1f); } } if (this.controlUseItem) { this.releaseUseItem = false; } else { this.releaseUseItem = true; } if (this.itemTime > 0) { this.itemTime--; } if (i == Main.myPlayer) { if (((this.inventory[this.selectedItem].shoot > 0) && (this.itemAnimation > 0)) && (this.itemTime == 0)) { int shoot = this.inventory[this.selectedItem].shoot; float shootSpeed = this.inventory[this.selectedItem].shootSpeed; bool flag2 = false; int damage = this.inventory[this.selectedItem].damage; float knockBack = this.inventory[this.selectedItem].knockBack; switch (shoot) { case 13: case 0x20: this.grappling[0] = -1; this.grapCount = 0; for (int n = 0; n < 0x3e8; n++) { if ((Main.projectile[n].active && (Main.projectile[n].owner == i)) && (Main.projectile[n].type == 13)) { Main.projectile[n].Kill(); } } break; } if (this.inventory[this.selectedItem].useAmmo > 0) { for (int num18 = 0; num18 < 0x2c; num18++) { if ((this.inventory[num18].ammo == this.inventory[this.selectedItem].useAmmo) && (this.inventory[num18].stack > 0)) { if (this.inventory[num18].shoot > 0) { shoot = this.inventory[num18].shoot; } shootSpeed += this.inventory[num18].shootSpeed; damage += this.inventory[num18].damage; knockBack += this.inventory[num18].knockBack; Item item1 = this.inventory[num18]; item1.stack--; if (this.inventory[num18].stack <= 0) { this.inventory[num18].active = false; this.inventory[num18].name = ""; this.inventory[num18].type = 0; } flag2 = true; break; } } } else { flag2 = true; } if ((shoot == 9) && (this.position.Y > ((Main.worldSurface * 16.0) + (Main.screenHeight / 2)))) { flag2 = false; } if (flag2) { if ((shoot == 1) && (this.inventory[this.selectedItem].type == 120)) { shoot = 2; } this.itemTime = this.inventory[this.selectedItem].useTime; if ((Main.mouseState.X + Main.screenPosition.X) > (this.position.X + (this.width * 0.5f))) { this.direction = 1; } else { this.direction = -1; } Vector2 vector = new Vector2(this.position.X + (this.width * 0.5f), this.position.Y + (this.height * 0.5f)); if (shoot == 9) { vector = new Vector2((this.position.X + (this.width * 0.5f)) + (Main.rand.Next(0x259) * -this.direction), ((this.position.Y + (this.height * 0.5f)) - 300f) - Main.rand.Next(100)); knockBack = 0f; } float speedX = (Main.mouseState.X + Main.screenPosition.X) - vector.X; float speedY = (Main.mouseState.Y + Main.screenPosition.Y) - vector.Y; float num21 = (float) Math.Sqrt((double) ((speedX * speedX) + (speedY * speedY))); num21 = shootSpeed / num21; speedX *= num21; speedY *= num21; if (shoot == 12) { vector.X += speedX * 3f; vector.Y += speedY * 3f; } if (this.inventory[this.selectedItem].useStyle == 5) { this.itemRotation = (float) Math.Atan2((double) (speedY * this.direction), (double) (speedX * this.direction)); NetMessage.SendData(13, -1, -1, "", this.whoAmi, 0f, 0f, 0f); NetMessage.SendData(0x29, -1, -1, "", this.whoAmi, 0f, 0f, 0f); } if (shoot == 0x11) { vector.X = Main.mouseState.X + Main.screenPosition.X; vector.Y = Main.mouseState.Y + Main.screenPosition.Y; } Projectile.NewProjectile(vector.X, vector.Y, speedX, speedY, shoot, damage, knockBack, i); } else if (this.inventory[this.selectedItem].useStyle == 5) { this.itemRotation = 0f; NetMessage.SendData(0x29, -1, -1, "", this.whoAmi, 0f, 0f, 0f); } } if ((((this.inventory[this.selectedItem].type >= 0xcd) && (this.inventory[this.selectedItem].type <= 0xcf)) && (((((this.position.X / 16f) - tileRangeX) - this.inventory[this.selectedItem].tileBoost) <= tileTargetX) && ((((((this.position.X + this.width) / 16f) + tileRangeX) + this.inventory[this.selectedItem].tileBoost) - 1f) >= tileTargetX))) && (((((this.position.Y / 16f) - tileRangeY) - this.inventory[this.selectedItem].tileBoost) <= tileTargetY) && ((((((this.position.Y + this.height) / 16f) + tileRangeY) + this.inventory[this.selectedItem].tileBoost) - 2f) >= tileTargetY))) { this.showItemIcon = true; if (((this.itemTime == 0) && (this.itemAnimation > 0)) && this.controlUseItem) { if (this.inventory[this.selectedItem].type == 0xcd) { bool lava = Main.tile[tileTargetX, tileTargetY].lava; int num22 = 0; for (int num23 = tileTargetX - 1; num23 <= (tileTargetX + 1); num23++) { for (int num24 = tileTargetY - 1; num24 <= (tileTargetY + 1); num24++) { if (Main.tile[num23, num24].lava == lava) { num22 += Main.tile[num23, num24].liquid; } } } if ((Main.tile[tileTargetX, tileTargetY].liquid > 0) && (num22 > 100)) { bool flag4 = Main.tile[tileTargetX, tileTargetY].lava; if (!Main.tile[tileTargetX, tileTargetY].lava) { this.inventory[this.selectedItem].SetDefaults(0xce); } else { this.inventory[this.selectedItem].SetDefaults(0xcf); } Main.PlaySound(0x13, (int) this.position.X, (int) this.position.Y, 1); this.itemTime = this.inventory[this.selectedItem].useTime; int liquid = Main.tile[tileTargetX, tileTargetY].liquid; Main.tile[tileTargetX, tileTargetY].liquid = 0; Main.tile[tileTargetX, tileTargetY].lava = false; WorldGen.SquareTileFrame(tileTargetX, tileTargetY, false); if (Main.netMode == 1) { NetMessage.sendWater(tileTargetX, tileTargetY); } else { Liquid.AddWater(tileTargetX, tileTargetY); } for (int num26 = tileTargetX - 1; num26 <= (tileTargetX + 1); num26++) { for (int num27 = tileTargetY - 1; num27 <= (tileTargetY + 1); num27++) { if ((liquid < 0x100) && (Main.tile[num26, num27].lava == lava)) { int num28 = Main.tile[num26, num27].liquid; if ((num28 + liquid) > 0xff) { num28 = 0xff - liquid; } liquid += num28; Tile tile1 = Main.tile[num26, num27]; tile1.liquid = (byte) (tile1.liquid - ((byte) num28)); Main.tile[num26, num27].lava = flag4; if (Main.tile[num26, num27].liquid == 0) { Main.tile[num26, num27].lava = false; } WorldGen.SquareTileFrame(num26, num27, false); if (Main.netMode == 1) { NetMessage.sendWater(num26, num27); } else { Liquid.AddWater(num26, num27); } } } } } } else if ((Main.tile[tileTargetX, tileTargetY].liquid < 200) && ((!Main.tile[tileTargetX, tileTargetY].active || !Main.tileSolid[Main.tile[tileTargetX, tileTargetY].type]) || !Main.tileSolidTop[Main.tile[tileTargetX, tileTargetY].type])) { if (this.inventory[this.selectedItem].type == 0xcf) { if ((Main.tile[tileTargetX, tileTargetY].liquid == 0) || Main.tile[tileTargetX, tileTargetY].lava) { Main.PlaySound(0x13, (int) this.position.X, (int) this.position.Y, 1); Main.tile[tileTargetX, tileTargetY].lava = true; Main.tile[tileTargetX, tileTargetY].liquid = 0xff; WorldGen.SquareTileFrame(tileTargetX, tileTargetY, true); this.inventory[this.selectedItem].SetDefaults(0xcd); this.itemTime = this.inventory[this.selectedItem].useTime; if (Main.netMode == 1) { NetMessage.sendWater(tileTargetX, tileTargetY); } } } else if ((Main.tile[tileTargetX, tileTargetY].liquid == 0) || !Main.tile[tileTargetX, tileTargetY].lava) { Main.PlaySound(0x13, (int) this.position.X, (int) this.position.Y, 1); Main.tile[tileTargetX, tileTargetY].lava = false; Main.tile[tileTargetX, tileTargetY].liquid = 0xff; WorldGen.SquareTileFrame(tileTargetX, tileTargetY, true); this.inventory[this.selectedItem].SetDefaults(0xcd); this.itemTime = this.inventory[this.selectedItem].useTime; if (Main.netMode == 1) { NetMessage.sendWater(tileTargetX, tileTargetY); } } } } } if ((((this.inventory[this.selectedItem].pick > 0) || (this.inventory[this.selectedItem].axe > 0)) || (this.inventory[this.selectedItem].hammer > 0)) && ((((((this.position.X / 16f) - tileRangeX) - this.inventory[this.selectedItem].tileBoost) <= tileTargetX) && ((((((this.position.X + this.width) / 16f) + tileRangeX) + this.inventory[this.selectedItem].tileBoost) - 1f) >= tileTargetX)) && (((((this.position.Y / 16f) - tileRangeY) - this.inventory[this.selectedItem].tileBoost) <= tileTargetY) && ((((((this.position.Y + this.height) / 16f) + tileRangeY) + this.inventory[this.selectedItem].tileBoost) - 2f) >= tileTargetY)))) { this.showItemIcon = true; if ((Main.tile[tileTargetX, tileTargetY].active && (this.itemTime == 0)) && ((this.itemAnimation > 0) && this.controlUseItem)) { if ((this.hitTileX != tileTargetX) || (this.hitTileY != tileTargetY)) { this.hitTile = 0; this.hitTileX = tileTargetX; this.hitTileY = tileTargetY; } if (Main.tileNoFail[Main.tile[tileTargetX, tileTargetY].type]) { this.hitTile = 100; } if (Main.tile[tileTargetX, tileTargetY].type != 0x1b) { if ((((((Main.tile[tileTargetX, tileTargetY].type == 4) || (Main.tile[tileTargetX, tileTargetY].type == 10)) || ((Main.tile[tileTargetX, tileTargetY].type == 11) || (Main.tile[tileTargetX, tileTargetY].type == 12))) || (((Main.tile[tileTargetX, tileTargetY].type == 13) || (Main.tile[tileTargetX, tileTargetY].type == 14)) || ((Main.tile[tileTargetX, tileTargetY].type == 15) || (Main.tile[tileTargetX, tileTargetY].type == 0x10)))) || ((((Main.tile[tileTargetX, tileTargetY].type == 0x11) || (Main.tile[tileTargetX, tileTargetY].type == 0x12)) || ((Main.tile[tileTargetX, tileTargetY].type == 0x13) || (Main.tile[tileTargetX, tileTargetY].type == 0x15))) || (((Main.tile[tileTargetX, tileTargetY].type == 0x1a) || (Main.tile[tileTargetX, tileTargetY].type == 0x1c)) || ((Main.tile[tileTargetX, tileTargetY].type == 0x1d) || (Main.tile[tileTargetX, tileTargetY].type == 0x1f))))) || (((((Main.tile[tileTargetX, tileTargetY].type == 0x21) || (Main.tile[tileTargetX, tileTargetY].type == 0x22)) || ((Main.tile[tileTargetX, tileTargetY].type == 0x23) || (Main.tile[tileTargetX, tileTargetY].type == 0x24))) || (((Main.tile[tileTargetX, tileTargetY].type == 0x2a) || (Main.tile[tileTargetX, tileTargetY].type == 0x30)) || ((Main.tile[tileTargetX, tileTargetY].type == 0x31) || (Main.tile[tileTargetX, tileTargetY].type == 50)))) || (((Main.tile[tileTargetX, tileTargetY].type == 0x36) || (Main.tile[tileTargetX, tileTargetY].type == 0x37)) || (((Main.tile[tileTargetX, tileTargetY].type == 0x4d) || (Main.tile[tileTargetX, tileTargetY].type == 0x4e)) || (Main.tile[tileTargetX, tileTargetY].type == 0x4f))))) { if (Main.tile[tileTargetX, tileTargetY].type == 0x30) { this.hitTile += this.inventory[this.selectedItem].hammer / 3; } else { this.hitTile += this.inventory[this.selectedItem].hammer; } if ((Main.tile[tileTargetX, tileTargetY].type == 0x4d) && (this.inventory[this.selectedItem].hammer < 60)) { this.hitTile = 0; } if (this.inventory[this.selectedItem].hammer > 0) { if (Main.tile[tileTargetX, tileTargetY].type == 0x1a) { this.Hurt(this.statLife / 2, -this.direction, false, false); WorldGen.KillTile(tileTargetX, tileTargetY, true, false, false); if (Main.netMode == 1) { NetMessage.SendData(0x11, -1, -1, "", 0, (float) tileTargetX, (float) tileTargetY, 1f); } } else if (this.hitTile >= 100) { if ((Main.netMode == 1) && (Main.tile[tileTargetX, tileTargetY].type == 0x15)) { WorldGen.KillTile(tileTargetX, tileTargetY, true, false, false); NetMessage.SendData(0x11, -1, -1, "", 0, (float) tileTargetX, (float) tileTargetY, 1f); NetMessage.SendData(0x22, -1, -1, "", tileTargetX, (float) tileTargetY, 0f, 0f); } else { this.hitTile = 0; WorldGen.KillTile(tileTargetX, tileTargetY, false, false, false); if (Main.netMode == 1) { NetMessage.SendData(0x11, -1, -1, "", 0, (float) tileTargetX, (float) tileTargetY, 0f); } } } else { WorldGen.KillTile(tileTargetX, tileTargetY, true, false, false); if (Main.netMode == 1) { NetMessage.SendData(0x11, -1, -1, "", 0, (float) tileTargetX, (float) tileTargetY, 1f); } } this.itemTime = this.inventory[this.selectedItem].useTime; } } else if (((Main.tile[tileTargetX, tileTargetY].type == 5) || (Main.tile[tileTargetX, tileTargetY].type == 30)) || (Main.tile[tileTargetX, tileTargetY].type == 0x48)) { if (Main.tile[tileTargetX, tileTargetY].type == 30) { this.hitTile += this.inventory[this.selectedItem].axe * 5; } else { this.hitTile += this.inventory[this.selectedItem].axe; } if (this.inventory[this.selectedItem].axe > 0) { if (this.hitTile >= 100) { this.hitTile = 0; WorldGen.KillTile(tileTargetX, tileTargetY, false, false, false); if (Main.netMode == 1) { NetMessage.SendData(0x11, -1, -1, "", 0, (float) tileTargetX, (float) tileTargetY, 0f); } } else { WorldGen.KillTile(tileTargetX, tileTargetY, true, false, false); if (Main.netMode == 1) { NetMessage.SendData(0x11, -1, -1, "", 0, (float) tileTargetX, (float) tileTargetY, 1f); } } this.itemTime = this.inventory[this.selectedItem].useTime; } } else if (this.inventory[this.selectedItem].pick > 0) { if ((Main.tileDungeon[Main.tile[tileTargetX, tileTargetY].type] || (Main.tile[tileTargetX, tileTargetY].type == 0x25)) || ((Main.tile[tileTargetX, tileTargetY].type == 0x19) || (Main.tile[tileTargetX, tileTargetY].type == 0x3a))) { this.hitTile += this.inventory[this.selectedItem].pick / 2; } else { this.hitTile += this.inventory[this.selectedItem].pick; } if ((Main.tile[tileTargetX, tileTargetY].type == 0x19) && (this.inventory[this.selectedItem].pick < 0x41)) { this.hitTile = 0; } else if ((Main.tile[tileTargetX, tileTargetY].type == 0x25) && (this.inventory[this.selectedItem].pick < 0x37)) { this.hitTile = 0; } else if ((Main.tile[tileTargetX, tileTargetY].type == 0x38) && (this.inventory[this.selectedItem].pick < 0x41)) { this.hitTile = 0; } else if ((Main.tile[tileTargetX, tileTargetY].type == 0x3a) && (this.inventory[this.selectedItem].pick < 0x41)) { this.hitTile = 0; } if (((Main.tile[tileTargetX, tileTargetY].type == 0) || (Main.tile[tileTargetX, tileTargetY].type == 40)) || ((Main.tile[tileTargetX, tileTargetY].type == 0x35) || (Main.tile[tileTargetX, tileTargetY].type == 0x3b))) { this.hitTile += this.inventory[this.selectedItem].pick; } if (this.hitTile >= 100) { this.hitTile = 0; WorldGen.KillTile(tileTargetX, tileTargetY, false, false, false); if (Main.netMode == 1) { NetMessage.SendData(0x11, -1, -1, "", 0, (float) tileTargetX, (float) tileTargetY, 0f); } } else { WorldGen.KillTile(tileTargetX, tileTargetY, true, false, false); if (Main.netMode == 1) { NetMessage.SendData(0x11, -1, -1, "", 0, (float) tileTargetX, (float) tileTargetY, 1f); } } this.itemTime = this.inventory[this.selectedItem].useTime; } } } if ((((Main.tile[tileTargetX, tileTargetY].wall > 0) && (this.itemTime == 0)) && ((this.itemAnimation > 0) && this.controlUseItem)) && (this.inventory[this.selectedItem].hammer > 0)) { bool flag5 = true; if (!Main.wallHouse[Main.tile[tileTargetX, tileTargetY].wall]) { flag5 = false; for (int num29 = tileTargetX - 1; num29 < (tileTargetX + 2); num29++) { for (int num30 = tileTargetY - 1; num30 < (tileTargetY + 2); num30++) { if (Main.tile[num29, num30].wall != Main.tile[tileTargetX, tileTargetY].wall) { flag5 = true; break; } } } } if (flag5) { if ((this.hitTileX != tileTargetX) || (this.hitTileY != tileTargetY)) { this.hitTile = 0; this.hitTileX = tileTargetX; this.hitTileY = tileTargetY; } this.hitTile += this.inventory[this.selectedItem].hammer; if (this.hitTile >= 100) { this.hitTile = 0; WorldGen.KillWall(tileTargetX, tileTargetY, false); if (Main.netMode == 1) { NetMessage.SendData(0x11, -1, -1, "", 2, (float) tileTargetX, (float) tileTargetY, 0f); } } else { WorldGen.KillWall(tileTargetX, tileTargetY, true); if (Main.netMode == 1) { NetMessage.SendData(0x11, -1, -1, "", 2, (float) tileTargetX, (float) tileTargetY, 1f); } } this.itemTime = this.inventory[this.selectedItem].useTime; } } } if (((this.inventory[this.selectedItem].type == 0x1d) && (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 == 0x6d) && (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); } } if ((((this.inventory[this.selectedItem].createTile >= 0) && ((((this.position.X / 16f) - tileRangeX) - this.inventory[this.selectedItem].tileBoost) <= tileTargetX)) && (((((((this.position.X + this.width) / 16f) + tileRangeX) + this.inventory[this.selectedItem].tileBoost) - 1f) >= tileTargetX) && ((((this.position.Y / 16f) - tileRangeY) - this.inventory[this.selectedItem].tileBoost) <= tileTargetY))) && ((((((this.position.Y + this.height) / 16f) + tileRangeY) + this.inventory[this.selectedItem].tileBoost) - 2f) >= tileTargetY)) { this.showItemIcon = true; if (((!Main.tile[tileTargetX, tileTargetY].active || (this.inventory[this.selectedItem].createTile == 0x17)) || (((this.inventory[this.selectedItem].createTile == 2) || (this.inventory[this.selectedItem].createTile == 60)) || (this.inventory[this.selectedItem].createTile == 70))) && (((this.itemTime == 0) && (this.itemAnimation > 0)) && this.controlUseItem)) { bool flag6 = false; if ((this.inventory[this.selectedItem].createTile == 0x17) || (this.inventory[this.selectedItem].createTile == 2)) { if (Main.tile[tileTargetX, tileTargetY].active && (Main.tile[tileTargetX, tileTargetY].type == 0)) { flag6 = true; } } else if ((this.inventory[this.selectedItem].createTile == 60) || (this.inventory[this.selectedItem].createTile == 70)) { if (Main.tile[tileTargetX, tileTargetY].active && (Main.tile[tileTargetX, tileTargetY].type == 0x3b)) { flag6 = true; } } else if (this.inventory[this.selectedItem].createTile == 4) { int type = Main.tile[tileTargetX, tileTargetY + 1].type; int index = Main.tile[tileTargetX - 1, tileTargetY].type; int num33 = Main.tile[tileTargetX + 1, tileTargetY].type; int num34 = Main.tile[tileTargetX - 1, tileTargetY - 1].type; int num35 = Main.tile[tileTargetX + 1, tileTargetY - 1].type; int num36 = Main.tile[tileTargetX - 1, tileTargetY - 1].type; int num37 = Main.tile[tileTargetX + 1, tileTargetY + 1].type; if (!Main.tile[tileTargetX, tileTargetY + 1].active) { type = -1; } if (!Main.tile[tileTargetX - 1, tileTargetY].active) { index = -1; } if (!Main.tile[tileTargetX + 1, tileTargetY].active) { num33 = -1; } if (!Main.tile[tileTargetX - 1, tileTargetY - 1].active) { num34 = -1; } if (!Main.tile[tileTargetX + 1, tileTargetY - 1].active) { num35 = -1; } if (!Main.tile[tileTargetX - 1, tileTargetY + 1].active) { num36 = -1; } if (!Main.tile[tileTargetX + 1, tileTargetY + 1].active) { num37 = -1; } if (((type >= 0) && Main.tileSolid[type]) && !Main.tileNoAttach[type]) { flag6 = true; } else if ((((index >= 0) && Main.tileSolid[index]) && !Main.tileNoAttach[index]) || (((index == 5) && (num34 == 5)) && (num36 == 5))) { flag6 = true; } else if ((((num33 >= 0) && Main.tileSolid[num33]) && !Main.tileNoAttach[num33]) || (((num33 == 5) && (num35 == 5)) && (num37 == 5))) { flag6 = true; } } else if (this.inventory[this.selectedItem].createTile == 0x4e) { if (Main.tile[tileTargetX, tileTargetY + 1].active && (Main.tileSolid[Main.tile[tileTargetX, tileTargetY + 1].type] || Main.tileTable[Main.tile[tileTargetX, tileTargetY + 1].type])) { flag6 = true; } } else if (((this.inventory[this.selectedItem].createTile == 13) || (this.inventory[this.selectedItem].createTile == 0x1d)) || ((this.inventory[this.selectedItem].createTile == 0x21) || (this.inventory[this.selectedItem].createTile == 0x31))) { if (Main.tile[tileTargetX, tileTargetY + 1].active && Main.tileTable[Main.tile[tileTargetX, tileTargetY + 1].type]) { flag6 = true; } } else if (this.inventory[this.selectedItem].createTile == 0x33) { if (((Main.tile[tileTargetX + 1, tileTargetY].active || (Main.tile[tileTargetX + 1, tileTargetY].wall > 0)) || (Main.tile[tileTargetX - 1, tileTargetY].active || (Main.tile[tileTargetX - 1, tileTargetY].wall > 0))) || ((Main.tile[tileTargetX, tileTargetY + 1].active || (Main.tile[tileTargetX, tileTargetY + 1].wall > 0)) || (Main.tile[tileTargetX, tileTargetY - 1].active || (Main.tile[tileTargetX, tileTargetY - 1].wall > 0)))) { flag6 = true; } } else if (((Main.tile[tileTargetX + 1, tileTargetY].active && Main.tileSolid[Main.tile[tileTargetX + 1, tileTargetY].type]) || ((Main.tile[tileTargetX + 1, tileTargetY].wall > 0) || (Main.tile[tileTargetX - 1, tileTargetY].active && Main.tileSolid[Main.tile[tileTargetX - 1, tileTargetY].type]))) || ((((Main.tile[tileTargetX - 1, tileTargetY].wall > 0) || (Main.tile[tileTargetX, tileTargetY + 1].active && Main.tileSolid[Main.tile[tileTargetX, tileTargetY + 1].type])) || ((Main.tile[tileTargetX, tileTargetY + 1].wall > 0) || (Main.tile[tileTargetX, tileTargetY - 1].active && Main.tileSolid[Main.tile[tileTargetX, tileTargetY - 1].type]))) || (Main.tile[tileTargetX, tileTargetY - 1].wall > 0))) { flag6 = true; } if (flag6 && WorldGen.PlaceTile(tileTargetX, tileTargetY, this.inventory[this.selectedItem].createTile, false, false, this.whoAmi)) { this.itemTime = this.inventory[this.selectedItem].useTime; if (Main.netMode == 1) { NetMessage.SendData(0x11, -1, -1, "", 1, (float) tileTargetX, (float) tileTargetY, (float) this.inventory[this.selectedItem].createTile); } if (this.inventory[this.selectedItem].createTile == 15) { if (this.direction == 1) { Tile tile2 = Main.tile[tileTargetX, tileTargetY]; tile2.frameX = (short) (tile2.frameX + 0x12); Tile tile3 = Main.tile[tileTargetX, tileTargetY - 1]; tile3.frameX = (short) (tile3.frameX + 0x12); } if (Main.netMode == 1) { NetMessage.SendTileSquare(-1, tileTargetX - 1, tileTargetY - 1, 3); } } else if ((this.inventory[this.selectedItem].createTile == 0x4f) && (Main.netMode == 1)) { NetMessage.SendTileSquare(-1, tileTargetX, tileTargetY, 5); } } } } if (this.inventory[this.selectedItem].createWall >= 0) { tileTargetX = (int) ((Main.mouseState.X + Main.screenPosition.X) / 16f); tileTargetY = (int) ((Main.mouseState.Y + Main.screenPosition.Y) / 16f); if ((((((this.position.X / 16f) - tileRangeX) - this.inventory[this.selectedItem].tileBoost) <= tileTargetX) && ((((((this.position.X + this.width) / 16f) + tileRangeX) + this.inventory[this.selectedItem].tileBoost) - 1f) >= tileTargetX)) && (((((this.position.Y / 16f) - tileRangeY) - this.inventory[this.selectedItem].tileBoost) <= tileTargetY) && ((((((this.position.Y + this.height) / 16f) + tileRangeY) + this.inventory[this.selectedItem].tileBoost) - 2f) >= tileTargetY))) { this.showItemIcon = true; if (((((this.itemTime == 0) && (this.itemAnimation > 0)) && this.controlUseItem) && (((Main.tile[tileTargetX + 1, tileTargetY].active || (Main.tile[tileTargetX + 1, tileTargetY].wall > 0)) || (Main.tile[tileTargetX - 1, tileTargetY].active || (Main.tile[tileTargetX - 1, tileTargetY].wall > 0))) || ((Main.tile[tileTargetX, tileTargetY + 1].active || (Main.tile[tileTargetX, tileTargetY + 1].wall > 0)) || (Main.tile[tileTargetX, tileTargetY - 1].active || (Main.tile[tileTargetX, tileTargetY - 1].wall > 0))))) && (Main.tile[tileTargetX, tileTargetY].wall != this.inventory[this.selectedItem].createWall)) { WorldGen.PlaceWall(tileTargetX, tileTargetY, this.inventory[this.selectedItem].createWall, false); if (Main.tile[tileTargetX, tileTargetY].wall == this.inventory[this.selectedItem].createWall) { this.itemTime = this.inventory[this.selectedItem].useTime; if (Main.netMode == 1) { NetMessage.SendData(0x11, -1, -1, "", 3, (float) tileTargetX, (float) tileTargetY, (float) this.inventory[this.selectedItem].createWall); } } } } } } if (((this.inventory[this.selectedItem].damage >= 0) && (this.inventory[this.selectedItem].type > 0)) && (!this.inventory[this.selectedItem].noMelee && (this.itemAnimation > 0))) { Rectangle rectangle = new Rectangle(); bool flag7 = false; rectangle = 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) { Width = (int) (rectangle.Width * this.inventory[this.selectedItem].scale), Height = (int) (rectangle.Height * this.inventory[this.selectedItem].scale) }; if (this.direction == -1) { rectangle.X -= rectangle.Width; } rectangle.Y -= rectangle.Height; if (this.inventory[this.selectedItem].useStyle == 1) { if (this.itemAnimation < (this.itemAnimationMax * 0.333)) { if (this.direction == -1) { rectangle.X -= ((int) (rectangle.Width * 1.4)) - rectangle.Width; } rectangle.Width = (int) (rectangle.Width * 1.4); rectangle.Y += (int) (rectangle.Height * 0.5); rectangle.Height = (int) (rectangle.Height * 1.1); } else if (this.itemAnimation >= (this.itemAnimationMax * 0.666)) { if (this.direction == 1) { rectangle.X -= (int) (rectangle.Width * 1.2); } rectangle.Width *= 2; rectangle.Y -= ((int) (rectangle.Height * 1.4)) - rectangle.Height; rectangle.Height = (int) (rectangle.Height * 1.4); } } else if (this.inventory[this.selectedItem].useStyle == 3) { if (this.itemAnimation > (this.itemAnimationMax * 0.666)) { flag7 = true; } else { if (this.direction == -1) { rectangle.X -= ((int) (rectangle.Width * 1.4)) - rectangle.Width; } rectangle.Width = (int) (rectangle.Width * 1.4); rectangle.Y += (int) (rectangle.Height * 0.6); rectangle.Height = (int) (rectangle.Height * 0.6); } } if (!flag7) { if ((((this.inventory[this.selectedItem].type == 0x2c) || (this.inventory[this.selectedItem].type == 0x2d)) || (((this.inventory[this.selectedItem].type == 0x2e) || (this.inventory[this.selectedItem].type == 0x67)) || (this.inventory[this.selectedItem].type == 0x68))) && (Main.rand.Next(15) == 0)) { color = new Color(); Dust.NewDust(new Vector2((float) rectangle.X, (float) rectangle.Y), rectangle.Width, rectangle.Height, 14, (float) (this.direction * 2), 0f, 150, color, 1.3f); } if (this.inventory[this.selectedItem].type == 0x41) { if (Main.rand.Next(5) == 0) { color = new Color(); Dust.NewDust(new Vector2((float) rectangle.X, (float) rectangle.Y), rectangle.Width, rectangle.Height, 15, 0f, 0f, 150, color, 1.2f); } if (Main.rand.Next(10) == 0) { Gore.NewGore(new Vector2((float) rectangle.X, (float) rectangle.Y), new Vector2(), Main.rand.Next(0x10, 0x12)); } } if ((this.inventory[this.selectedItem].type == 190) || (this.inventory[this.selectedItem].type == 0xd5)) { color = new Color(); int num38 = Dust.NewDust(new Vector2((float) rectangle.X, (float) rectangle.Y), rectangle.Width, rectangle.Height, 40, (this.velocity.X * 0.2f) + (this.direction * 3), this.velocity.Y * 0.2f, 0, color, 1.2f); Main.dust[num38].noGravity = true; } if (this.inventory[this.selectedItem].type == 0x79) { for (int num39 = 0; num39 < 2; num39++) { color = new Color(); int num40 = Dust.NewDust(new Vector2((float) rectangle.X, (float) rectangle.Y), rectangle.Width, rectangle.Height, 6, (this.velocity.X * 0.2f) + (this.direction * 3), this.velocity.Y * 0.2f, 100, color, 2.5f); Main.dust[num40].noGravity = true; Main.dust[num40].velocity.X *= 2f; Main.dust[num40].velocity.Y *= 2f; } } if ((this.inventory[this.selectedItem].type == 0x7a) || (this.inventory[this.selectedItem].type == 0xd9)) { color = new Color(); int num41 = Dust.NewDust(new Vector2((float) rectangle.X, (float) rectangle.Y), rectangle.Width, rectangle.Height, 6, (this.velocity.X * 0.2f) + (this.direction * 3), this.velocity.Y * 0.2f, 100, color, 1.9f); Main.dust[num41].noGravity = true; } if (this.inventory[this.selectedItem].type == 0x9b) { color = new Color(); int num42 = Dust.NewDust(new Vector2((float) rectangle.X, (float) rectangle.Y), rectangle.Width, rectangle.Height, 0x1d, (this.velocity.X * 0.2f) + (this.direction * 3), this.velocity.Y * 0.2f, 100, color, 2f); Main.dust[num42].noGravity = true; Main.dust[num42].velocity.X /= 2f; Main.dust[num42].velocity.Y /= 2f; } if ((this.inventory[this.selectedItem].type >= 0xc6) && (this.inventory[this.selectedItem].type <= 0xcb)) { Lighting.addLight((int) (((this.itemLocation.X + 6f) + this.velocity.X) / 16f), (int) ((this.itemLocation.Y - 14f) / 16f), 0.5f); } if (Main.myPlayer == i) { int num43 = rectangle.X / 0x10; int num44 = ((rectangle.X + rectangle.Width) / 0x10) + 1; int num45 = rectangle.Y / 0x10; int num46 = ((rectangle.Y + rectangle.Height) / 0x10) + 1; for (int num47 = num43; num47 < num44; num47++) { for (int num48 = num45; num48 < num46; num48++) { if (((((Main.tile[num47, num48].type == 3) || (Main.tile[num47, num48].type == 0x18)) || ((Main.tile[num47, num48].type == 0x1c) || (Main.tile[num47, num48].type == 0x20))) || (((Main.tile[num47, num48].type == 0x33) || (Main.tile[num47, num48].type == 0x34)) || ((Main.tile[num47, num48].type == 0x3d) || (Main.tile[num47, num48].type == 0x3e)))) || (((Main.tile[num47, num48].type == 0x45) || (Main.tile[num47, num48].type == 0x47)) || ((Main.tile[num47, num48].type == 0x49) || (Main.tile[num47, num48].type == 0x4a)))) { WorldGen.KillTile(num47, num48, false, false, false); if (Main.netMode == 1) { NetMessage.SendData(0x11, -1, -1, "", 0, (float) num47, (float) num48, 0f); } } } } for (int num49 = 0; num49 < 0x3e8; num49++) { if ((Main.npc[num49].active && (Main.npc[num49].immune[i] == 0)) && ((this.attackCD == 0) && !Main.npc[num49].friendly)) { Rectangle rectangle2 = new Rectangle((int) Main.npc[num49].position.X, (int) Main.npc[num49].position.Y, Main.npc[num49].width, Main.npc[num49].height); if (rectangle.Intersects(rectangle2) && (Main.npc[num49].noTileCollide || Collision.CanHit(this.position, this.width, this.height, Main.npc[num49].position, Main.npc[num49].width, Main.npc[num49].height))) { Main.npc[num49].StrikeNPC(this.inventory[this.selectedItem].damage, this.inventory[this.selectedItem].knockBack, this.direction); if (Main.netMode == 1) { NetMessage.SendData(0x18, -1, -1, "", num49, (float) i, 0f, 0f); } Main.npc[num49].immune[i] = this.itemAnimation; this.attackCD = (int) (this.itemAnimationMax * 0.33); } } } if (this.hostile) { for (int num50 = 0; num50 < 8; num50++) { if ((((num50 != i) && Main.player[num50].active) && (Main.player[num50].hostile && !Main.player[num50].immune)) && (!Main.player[num50].dead && ((Main.player[i].team == 0) || (Main.player[i].team != Main.player[num50].team)))) { Rectangle rectangle3 = new Rectangle((int) Main.player[num50].position.X, (int) Main.player[num50].position.Y, Main.player[num50].width, Main.player[num50].height); if (rectangle.Intersects(rectangle3) && Collision.CanHit(this.position, this.width, this.height, Main.player[num50].position, Main.player[num50].width, Main.player[num50].height)) { Main.player[num50].Hurt(this.inventory[this.selectedItem].damage, this.direction, true, false); if (Main.netMode != 0) { NetMessage.SendData(0x1a, -1, -1, "", num50, (float) this.direction, (float) this.inventory[this.selectedItem].damage, 1f); } this.attackCD = (int) (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.itemTime == 0) && (this.itemAnimation > 0)) && ((this.inventory[this.selectedItem].type == 0x2b) || (this.inventory[this.selectedItem].type == 70))) { this.itemTime = this.inventory[this.selectedItem].useTime; bool flag8 = false; int num51 = 4; if (this.inventory[this.selectedItem].type == 0x2b) { num51 = 4; } else if (this.inventory[this.selectedItem].type == 70) { num51 = 13; } for (int num52 = 0; num52 < 0x3e8; num52++) { if (Main.npc[num52].active && (Main.npc[num52].type == num51)) { flag8 = true; break; } } if (flag8) { if (Main.myPlayer == this.whoAmi) { this.Hurt(this.statLife * (this.statDefense + 1), -this.direction, false, false); } } else if (this.inventory[this.selectedItem].type == 0x2b) { if (!Main.dayTime) { Main.PlaySound(15, (int) this.position.X, (int) this.position.Y, 0); if (Main.netMode != 1) { NPC.SpawnOnPlayer(i, 4); } } } else if ((this.inventory[this.selectedItem].type == 70) && this.zoneEvil) { Main.PlaySound(15, (int) this.position.X, (int) this.position.Y, 0); if (Main.netMode != 1) { NPC.SpawnOnPlayer(i, 13); } } } if ((this.inventory[this.selectedItem].type == 50) && (this.itemAnimation > 0)) { if (Main.rand.Next(2) == 0) { color = new Color(); Dust.NewDust(this.position, this.width, this.height, 15, 0f, 0f, 150, color, 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 num53 = 0; num53 < 70; num53++) { color = new Color(); Dust.NewDust(this.position, this.width, this.height, 15, this.velocity.X * 0.5f, this.velocity.Y * 0.5f, 150, color, 1.5f); } this.grappling[0] = -1; this.grapCount = 0; for (int num54 = 0; num54 < 0x3e8; num54++) { if ((Main.projectile[num54].active && (Main.projectile[num54].owner == i)) && (Main.projectile[num54].aiStyle == 7)) { Main.projectile[num54].Kill(); } } this.Spawn(); for (int num55 = 0; num55 < 70; num55++) { color = new Color(); Dust.NewDust(this.position, this.width, this.height, 15, 0f, 0f, 150, color, 1.5f); } } } if (i == Main.myPlayer) { if ((this.itemTime == this.inventory[this.selectedItem].useTime) && this.inventory[this.selectedItem].consumable) { Item item2 = this.inventory[this.selectedItem]; item2.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(); } } } public bool ItemSpace(Item newItem) { if (newItem.type == 0x3a) { return true; } if (newItem.type == 0xb8) { return true; } int num = 40; if (((newItem.type == 0x47) || (newItem.type == 0x48)) || ((newItem.type == 0x49) || (newItem.type == 0x4a))) { num = 0x2c; } for (int i = 0; i < num; i++) { if (this.inventory[i].type == 0) { return true; } } for (int j = 0; j < num; j++) { if (((this.inventory[j].type > 0) && (this.inventory[j].stack < this.inventory[j].maxStack)) && newItem.IsTheSameAs(this.inventory[j])) { return true; } } return false; } public void KillMe(double dmg, int hitDirection, bool pvp = false) { if ((!Main.godMode || (Main.myPlayer != this.whoAmi)) && !this.dead) { if (pvp) { this.pvpDeath = true; } Main.PlaySound(5, (int) this.position.X, (int) this.position.Y, 1); this.headVelocity.Y = Main.rand.Next(-40, -10) * 0.1f; this.bodyVelocity.Y = Main.rand.Next(-40, -10) * 0.1f; this.legVelocity.Y = Main.rand.Next(-40, -10) * 0.1f; this.headVelocity.X = (Main.rand.Next(-20, 0x15) * 0.1f) + (2 * hitDirection); this.bodyVelocity.X = (Main.rand.Next(-20, 0x15) * 0.1f) + (2 * hitDirection); this.legVelocity.X = (Main.rand.Next(-20, 0x15) * 0.1f) + (2 * hitDirection); for (int i = 0; i < (20.0 + ((dmg / ((double) this.statLifeMax)) * 100.0)); i++) { if (this.boneArmor) { Color newColor = new Color(); Dust.NewDust(this.position, this.width, this.height, 0x1a, (float) (2 * hitDirection), -2f, 0, newColor, 1f); } else { Color color2 = new Color(); Dust.NewDust(this.position, this.width, this.height, 5, (float) (2 * hitDirection), -2f, 0, color2, 1f); } } this.dead = true; this.respawnTimer = 600; this.immuneAlpha = 0; if (Main.netMode == 2) { NetMessage.SendData(0x19, -1, -1, this.name + " was slain...", 8, 225f, 25f, 25f); } if (this.whoAmi == Main.myPlayer) { WorldGen.saveToonWhilePlaying(); } if ((Main.netMode == 1) && (this.whoAmi == Main.myPlayer)) { int num2 = 0; if (pvp) { num2 = 1; } NetMessage.SendData(0x2c, -1, -1, "", this.whoAmi, (float) hitDirection, (float) ((int) dmg), (float) num2); } if (!pvp && (this.whoAmi == Main.myPlayer)) { this.DropItems(); } } } public static Player LoadPlayer(string playerPath) { bool flag = false; if (Main.rand == null) { Main.rand = new Random((int) DateTime.Now.Ticks); } Player player = new Player(); try { string outputFile = playerPath + ".dat"; flag = DecryptFile(playerPath, outputFile); if (!flag) { using (FileStream stream = new FileStream(outputFile, FileMode.Open)) { using (BinaryReader reader = new BinaryReader(stream)) { reader.ReadInt32(); player.name = reader.ReadString(); player.hair = reader.ReadInt32(); player.statLife = reader.ReadInt32(); player.statLifeMax = reader.ReadInt32(); if (player.statLife > player.statLifeMax) { player.statLife = player.statLifeMax; } player.statMana = reader.ReadInt32(); player.statManaMax = reader.ReadInt32(); if (player.statMana > player.statManaMax) { player.statMana = player.statManaMax; } player.hairColor.R = reader.ReadByte(); player.hairColor.G = reader.ReadByte(); player.hairColor.B = reader.ReadByte(); player.skinColor.R = reader.ReadByte(); player.skinColor.G = reader.ReadByte(); player.skinColor.B = reader.ReadByte(); player.eyeColor.R = reader.ReadByte(); player.eyeColor.G = reader.ReadByte(); player.eyeColor.B = reader.ReadByte(); player.shirtColor.R = reader.ReadByte(); player.shirtColor.G = reader.ReadByte(); player.shirtColor.B = reader.ReadByte(); player.underShirtColor.R = reader.ReadByte(); player.underShirtColor.G = reader.ReadByte(); player.underShirtColor.B = reader.ReadByte(); player.pantsColor.R = reader.ReadByte(); player.pantsColor.G = reader.ReadByte(); player.pantsColor.B = reader.ReadByte(); player.shoeColor.R = reader.ReadByte(); player.shoeColor.G = reader.ReadByte(); player.shoeColor.B = reader.ReadByte(); for (int i = 0; i < 8; i++) { player.armor[i].SetDefaults(reader.ReadString()); } for (int j = 0; j < 0x2c; j++) { player.inventory[j].SetDefaults(reader.ReadString()); player.inventory[j].stack = reader.ReadInt32(); } for (int k = 0; k < Chest.maxItems; k++) { player.bank[k].SetDefaults(reader.ReadString()); player.bank[k].stack = reader.ReadInt32(); } for (int m = 0; m < 200; m++) { int num5 = reader.ReadInt32(); if (num5 == -1) { break; } player.spX[m] = num5; player.spY[m] = reader.ReadInt32(); player.spI[m] = reader.ReadInt32(); player.spN[m] = reader.ReadString(); } reader.Close(); } } player.PlayerFrame(); File.Delete(outputFile); return player; } } catch { flag = true; } if (flag) { string path = playerPath + ".bak"; if (File.Exists(path)) { File.Delete(playerPath); File.Move(path, playerPath); return LoadPlayer(playerPath); } } return new Player(); } public void ManaEffect(int manaAmount) { CombatText.NewText(new Rectangle((int) this.position.X, (int) this.position.Y, this.width, this.height), new Color(180, 50, 0xff, 0xff), manaAmount.ToString()); if ((Main.netMode == 1) && (this.whoAmi == Main.myPlayer)) { NetMessage.SendData(0x2b, -1, -1, "", this.whoAmi, (float) manaAmount, 0f, 0f); } } 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; this.bodyFrame.Width = 40; this.bodyFrame.Height = 0x38; this.legFrame.Width = 40; this.legFrame.Height = 0x38; 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)) { if (this.itemAnimation < (this.itemAnimationMax * 0.333)) { this.bodyFrame.Y = this.bodyFrame.Height * 3; } else if (this.itemAnimation < (this.itemAnimationMax * 0.666)) { this.bodyFrame.Y = this.bodyFrame.Height * 2; } else { this.bodyFrame.Y = this.bodyFrame.Height; } } else if (this.inventory[this.selectedItem].useStyle == 2) { if (this.itemAnimation < (this.itemAnimationMax * 0.5)) { this.bodyFrame.Y = this.bodyFrame.Height * 4; } else { this.bodyFrame.Y = this.bodyFrame.Height * 5; } } else if (this.inventory[this.selectedItem].useStyle == 3) { if (this.itemAnimation > (this.itemAnimationMax * 0.666)) { this.bodyFrame.Y = this.bodyFrame.Height * 3; } else { this.bodyFrame.Y = 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) { float num = this.itemRotation * this.direction; this.bodyFrame.Y = this.bodyFrame.Height * 3; if (num < -0.75) { this.bodyFrame.Y = this.bodyFrame.Height * 2; } if (num > 0.6) { this.bodyFrame.Y = this.bodyFrame.Height * 4; } } } else if (this.inventory[this.selectedItem].holdStyle == 1) { this.bodyFrame.Y = this.bodyFrame.Height * 3; } else if (this.inventory[this.selectedItem].holdStyle == 2) { this.bodyFrame.Y = this.bodyFrame.Height * 2; } else if (this.grappling[0] >= 0) { Vector2 vector = new Vector2(this.position.X + (this.width * 0.5f), this.position.Y + (this.height * 0.5f)); float num2 = 0f; float num3 = 0f; for (int i = 0; i < this.grapCount; i++) { num2 += Main.projectile[this.grappling[i]].position.X + (Main.projectile[this.grappling[i]].width / 2); num3 += Main.projectile[this.grappling[i]].position.Y + (Main.projectile[this.grappling[i]].height / 2); } num2 /= (float) this.grapCount; num3 /= (float) this.grapCount; num2 -= vector.X; num3 -= vector.Y; if ((num3 < 0f) && (Math.Abs(num3) > Math.Abs(num2))) { this.bodyFrame.Y = this.bodyFrame.Height * 2; } else if ((num3 > 0f) && (Math.Abs(num3) > Math.Abs(num2))) { this.bodyFrame.Y = this.bodyFrame.Height * 4; } else { this.bodyFrame.Y = this.bodyFrame.Height * 3; } } else if (this.swimTime > 0) { if (this.swimTime > 20) { this.bodyFrame.Y = 0; } else if (this.swimTime > 10) { this.bodyFrame.Y = this.bodyFrame.Height * 5; } else { this.bodyFrame.Y = 0; } } else if (this.velocity.Y != 0f) { this.bodyFrameCounter = 0.0; this.bodyFrame.Y = this.bodyFrame.Height * 5; } else if (this.velocity.X != 0f) { this.bodyFrameCounter += 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 * 0x13; } else if (this.legFrame.Y > (this.legFrame.Height * 0x13)) { this.legFrame.Y = this.legFrame.Height * 7; } } else if ((this.velocity.Y != 0f) || (this.grappling[0] > -1)) { this.legFrameCounter = 0.0; this.legFrame.Y = this.legFrame.Height * 5; } else if (this.velocity.X != 0f) { this.legFrameCounter += 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 * 0x13; } else if (this.legFrame.Y > (this.legFrame.Height * 0x13)) { this.legFrame.Y = this.legFrame.Height * 7; } } else { this.legFrameCounter = 0.0; this.legFrame.Y = 0; } } public static void SavePlayer(Player newPlayer, string playerPath) { try { Directory.CreateDirectory(Main.SavePath); } catch { } if (playerPath != null) { string destFileName = playerPath + ".bak"; if (File.Exists(playerPath)) { File.Copy(playerPath, destFileName, true); } string path = playerPath + ".dat"; using (FileStream stream = new FileStream(path, FileMode.Create)) { using (BinaryWriter writer = new BinaryWriter(stream)) { writer.Write(Main.curRelease); writer.Write(newPlayer.name); writer.Write(newPlayer.hair); writer.Write(newPlayer.statLife); writer.Write(newPlayer.statLifeMax); writer.Write(newPlayer.statMana); writer.Write(newPlayer.statManaMax); writer.Write(newPlayer.hairColor.R); writer.Write(newPlayer.hairColor.G); writer.Write(newPlayer.hairColor.B); writer.Write(newPlayer.skinColor.R); writer.Write(newPlayer.skinColor.G); writer.Write(newPlayer.skinColor.B); writer.Write(newPlayer.eyeColor.R); writer.Write(newPlayer.eyeColor.G); writer.Write(newPlayer.eyeColor.B); writer.Write(newPlayer.shirtColor.R); writer.Write(newPlayer.shirtColor.G); writer.Write(newPlayer.shirtColor.B); writer.Write(newPlayer.underShirtColor.R); writer.Write(newPlayer.underShirtColor.G); writer.Write(newPlayer.underShirtColor.B); writer.Write(newPlayer.pantsColor.R); writer.Write(newPlayer.pantsColor.G); writer.Write(newPlayer.pantsColor.B); writer.Write(newPlayer.shoeColor.R); writer.Write(newPlayer.shoeColor.G); writer.Write(newPlayer.shoeColor.B); for (int i = 0; i < 8; i++) { if (newPlayer.armor[i].name == null) { newPlayer.armor[i].name = ""; } writer.Write(newPlayer.armor[i].name); } for (int j = 0; j < 0x2c; j++) { if (newPlayer.inventory[j].name == null) { newPlayer.inventory[j].name = ""; } writer.Write(newPlayer.inventory[j].name); writer.Write(newPlayer.inventory[j].stack); } for (int k = 0; k < Chest.maxItems; k++) { if (newPlayer.bank[k].name == null) { newPlayer.bank[k].name = ""; } writer.Write(newPlayer.bank[k].name); writer.Write(newPlayer.bank[k].stack); } for (int m = 0; m < 200; m++) { if (newPlayer.spN[m] == null) { writer.Write(-1); break; } writer.Write(newPlayer.spX[m]); writer.Write(newPlayer.spY[m]); writer.Write(newPlayer.spI[m]); writer.Write(newPlayer.spN[m]); } writer.Close(); } } EncryptFile(path, playerPath); File.Delete(path); } } public bool SellItem(int price) { if (price > 0) { Item[] itemArray = new Item[0x2c]; for (int i = 0; i < 0x2c; i++) { itemArray[i] = new Item(); itemArray[i] = (Item) this.inventory[i].Clone(); } int num2 = price / 5; if (num2 < 1) { num2 = 1; } bool flag = false; while ((num2 >= 0xf4240) && !flag) { int index = -1; for (int k = 0x2b; k >= 0; k--) { if ((index == -1) && ((this.inventory[k].type == 0) || (this.inventory[k].stack == 0))) { index = k; } while (((this.inventory[k].type == 0x4a) && (this.inventory[k].stack < this.inventory[k].maxStack)) && (num2 >= 0xf4240)) { Item item1 = this.inventory[k]; item1.stack++; num2 -= 0xf4240; this.DoCoins(k); if ((this.inventory[k].stack == 0) && (index == -1)) { index = k; } } } if (num2 >= 0xf4240) { if (index == -1) { flag = true; } else { this.inventory[index].SetDefaults(0x4a); num2 -= 0xf4240; } } } while ((num2 >= 0x2710) && !flag) { int num5 = -1; for (int m = 0x2b; m >= 0; m--) { if ((num5 == -1) && ((this.inventory[m].type == 0) || (this.inventory[m].stack == 0))) { num5 = m; } while (((this.inventory[m].type == 0x49) && (this.inventory[m].stack < this.inventory[m].maxStack)) && (num2 >= 0x2710)) { Item item2 = this.inventory[m]; item2.stack++; num2 -= 0x2710; this.DoCoins(m); if ((this.inventory[m].stack == 0) && (num5 == -1)) { num5 = m; } } } if (num2 >= 0x2710) { if (num5 == -1) { flag = true; } else { this.inventory[num5].SetDefaults(0x49); num2 -= 0x2710; } } } while ((num2 >= 100) && !flag) { int num7 = -1; for (int n = 0x2b; n >= 0; n--) { if ((num7 == -1) && ((this.inventory[n].type == 0) || (this.inventory[n].stack == 0))) { num7 = n; } while (((this.inventory[n].type == 0x48) && (this.inventory[n].stack < this.inventory[n].maxStack)) && (num2 >= 100)) { Item item3 = this.inventory[n]; item3.stack++; num2 -= 100; this.DoCoins(n); if ((this.inventory[n].stack == 0) && (num7 == -1)) { num7 = n; } } } if (num2 >= 100) { if (num7 == -1) { flag = true; } else { this.inventory[num7].SetDefaults(0x48); num2 -= 100; } } } while ((num2 >= 1) && !flag) { int num9 = -1; for (int num10 = 0x2b; num10 >= 0; num10--) { if ((num9 == -1) && ((this.inventory[num10].type == 0) || (this.inventory[num10].stack == 0))) { num9 = num10; } while (((this.inventory[num10].type == 0x47) && (this.inventory[num10].stack < this.inventory[num10].maxStack)) && (num2 >= 1)) { Item item4 = this.inventory[num10]; item4.stack++; num2--; this.DoCoins(num10); if ((this.inventory[num10].stack == 0) && (num9 == -1)) { num9 = num10; } } } if (num2 >= 1) { if (num9 == -1) { flag = true; } else { this.inventory[num9].SetDefaults(0x47); num2--; } } } if (!flag) { return true; } for (int j = 0; j < 0x2c; j++) { this.inventory[j] = (Item) itemArray[j].Clone(); } } return false; } public void Spawn() { if (this.whoAmi == Main.myPlayer) { this.FindSpawn(); if (!CheckSpawn(this.SpawnX, this.SpawnY)) { this.SpawnX = -1; this.SpawnY = -1; } } if ((Main.netMode == 1) && (this.whoAmi == Main.myPlayer)) { NetMessage.SendData(12, -1, -1, "", Main.myPlayer, 0f, 0f, 0f); Main.gameMenu = false; } this.headPosition = new Vector2(); this.bodyPosition = new Vector2(); this.legPosition = new Vector2(); this.headRotation = 0f; this.bodyRotation = 0f; this.legRotation = 0f; if (this.statLife <= 0) { this.statLife = 100; this.breath = this.breathMax; if (this.spawnMax) { this.statLife = this.statLifeMax; this.statMana = this.statManaMax; } } this.immune = true; this.dead = false; this.immuneTime = 0; this.active = true; if ((this.SpawnX >= 0) && (this.SpawnY >= 0)) { this.position.X = ((this.SpawnX * 0x10) + 8) - (this.width / 2); this.position.Y = (this.SpawnY * 0x10) - this.height; } else { this.position.X = ((Main.spawnTileX * 0x10) + 8) - (this.width / 2); this.position.Y = (Main.spawnTileY * 0x10) - 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[Main.tile[i, j].type] && !Main.tileSolidTop[Main.tile[i, j].type]) { if (Main.tile[i, j].liquid > 0) { Main.tile[i, j].lava = false; Main.tile[i, j].liquid = 0; WorldGen.SquareTileFrame(i, j, true); } WorldGen.KillTile(i, j, false, false, false); } } } } this.wet = Collision.WetCollision(this.position, this.width, this.height); this.wetCount = 0; this.lavaWet = false; this.fallStart = (int) (this.position.Y / 16f); this.velocity.X = 0f; this.velocity.Y = 0f; this.talkNPC = -1; if (this.pvpDeath) { this.pvpDeath = false; this.immuneTime = 300; this.statLife = this.statLifeMax; } if (this.whoAmi == Main.myPlayer) { Lighting.lightCounter = Lighting.lightSkip + 1; Main.screenPosition.X = (this.position.X + (this.width / 2)) - (Main.screenWidth / 2); Main.screenPosition.Y = (this.position.Y + (this.height / 2)) - (Main.screenHeight / 2); } } public void UpdatePlayer(int i) { float num = 10f; float num2 = 0.4f; jumpHeight = 15; jumpSpeed = 5.01f; if (this.wet) { num2 = 0.2f; num = 5f; jumpHeight = 30; jumpSpeed = 6.01f; } float num3 = 3f; float num4 = 0.08f; float num5 = 0.2f; float num6 = num3; if (this.active) { this.shadowCount++; if (this.shadowCount == 1) { this.shadowPos[2] = this.shadowPos[1]; } else if (this.shadowCount == 2) { this.shadowPos[1] = this.shadowPos[0]; } else if (this.shadowCount >= 3) { this.shadowCount = 0; this.shadowPos[0] = this.position; } this.whoAmi = i; if (this.runSoundDelay > 0) { this.runSoundDelay--; } if (this.attackCD > 0) { this.attackCD--; } if (this.itemAnimation == 0) { this.attackCD = 0; } if (this.chatShowTime > 0) { this.chatShowTime--; } if (this.potionDelay > 0) { this.potionDelay--; } if (this.dead) { if (i == Main.myPlayer) { Main.npcChatText = ""; Main.editSign = false; } this.sign = -1; this.talkNPC = -1; this.statLife = 0; this.channel = false; this.potionDelay = 0; this.chest = -1; this.changeItem = -1; this.itemAnimation = 0; this.immuneAlpha += 2; if (this.immuneAlpha > 0xff) { this.immuneAlpha = 0xff; } this.respawnTimer--; this.headPosition += this.headVelocity; this.bodyPosition += this.bodyVelocity; this.legPosition += this.legVelocity; this.headRotation += this.headVelocity.X * 0.1f; this.bodyRotation += this.bodyVelocity.X * 0.1f; this.legRotation += this.legVelocity.X * 0.1f; this.headVelocity.Y += 0.1f; this.bodyVelocity.Y += 0.1f; this.legVelocity.Y += 0.1f; this.headVelocity.X *= 0.99f; this.bodyVelocity.X *= 0.99f; this.legVelocity.X *= 0.99f; if ((this.respawnTimer <= 0) && (Main.myPlayer == this.whoAmi)) { this.Spawn(); } } else { Color color; if (i == Main.myPlayer) { this.zoneEvil = false; if (Main.evilTiles >= 500) { this.zoneEvil = true; } this.zoneMeteor = false; if (Main.meteorTiles >= 50) { this.zoneMeteor = true; } this.zoneDungeon = false; if ((Main.dungeonTiles >= 250) && (this.position.Y > ((Main.worldSurface * 16.0) + Main.screenHeight))) { int num7 = ((int) this.position.X) / 0x10; int num8 = ((int) this.position.Y) / 0x10; if ((Main.tile[num7, num8].wall > 0) && !Main.wallHouse[Main.tile[num7, num8].wall]) { this.zoneDungeon = true; } } this.zoneJungle = false; if (Main.jungleTiles >= 200) { this.zoneJungle = true; } this.controlUp = false; this.controlLeft = false; this.controlDown = false; this.controlRight = false; this.controlJump = false; this.controlUseItem = false; this.controlUseTile = false; this.controlThrow = false; this.controlInv = false; if (Main.hasFocus) { if (!Main.chatMode && !Main.editSign) { Keys[] pressedKeys = Main.keyState.GetPressedKeys(); for (int n = 0; n < pressedKeys.Length; n++) { string str = Convert.ToString(pressedKeys.GetValue(n)); 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 (str == Main.cThrowItem) { this.controlThrow = true; } if (str == Main.cInv) { this.controlInv = true; } } if (this.controlLeft && this.controlRight) { this.controlLeft = false; this.controlRight = false; } } if ((Main.mouseState.LeftButton == ButtonState.Pressed) && !this.mouseInterface) { this.controlUseItem = true; } if ((Main.mouseState.RightButton == ButtonState.Pressed) && !this.mouseInterface) { this.controlUseTile = true; } if (this.controlInv) { if (this.releaseInventory) { if (this.talkNPC >= 0) { this.talkNPC = -1; Main.npcChatText = ""; Main.PlaySound(11, -1, -1, 1); } else if (this.sign >= 0) { this.sign = -1; Main.editSign = false; Main.npcChatText = ""; Main.PlaySound(11, -1, -1, 1); } else if (!Main.playerInventory) { Recipe.FindRecipes(); Main.playerInventory = true; Main.PlaySound(10, -1, -1, 1); } else { Main.playerInventory = false; Main.PlaySound(11, -1, -1, 1); } } this.releaseInventory = false; } else { this.releaseInventory = true; } if (this.delayUseItem) { if (!this.controlUseItem) { this.delayUseItem = false; } this.controlUseItem = false; } if ((this.itemAnimation == 0) && (this.itemTime == 0)) { if (((this.controlThrow && (this.inventory[this.selectedItem].type > 0)) && !Main.chatMode) || (((((Main.mouseState.LeftButton == ButtonState.Pressed) && !this.mouseInterface) && Main.mouseLeftRelease) || !Main.playerInventory) && (Main.mouseItem.type > 0))) { Item item = new Item(); bool flag = false; if (((((Main.mouseState.LeftButton == ButtonState.Pressed) && !this.mouseInterface) && Main.mouseLeftRelease) || !Main.playerInventory) && (Main.mouseItem.type > 0)) { item = this.inventory[this.selectedItem]; this.inventory[this.selectedItem] = Main.mouseItem; this.delayUseItem = true; this.controlUseItem = false; flag = true; } int index = Item.NewItem((int) this.position.X, (int) this.position.Y, this.width, this.height, this.inventory[this.selectedItem].type, 1, false); if ((!flag && (this.inventory[this.selectedItem].type == 8)) && (this.inventory[this.selectedItem].stack > 1)) { Item item1 = this.inventory[this.selectedItem]; item1.stack--; } else { this.inventory[this.selectedItem].position = Main.item[index].position; Main.item[index] = this.inventory[this.selectedItem]; this.inventory[this.selectedItem] = new Item(); } if (Main.netMode == 0) { Main.item[index].noGrabDelay = 100; } Main.item[index].velocity.Y = -2f; Main.item[index].velocity.X = (4 * this.direction) + this.velocity.X; if ((((Main.mouseState.LeftButton == ButtonState.Pressed) && !this.mouseInterface) || !Main.playerInventory) && (Main.mouseItem.type > 0)) { this.inventory[this.selectedItem] = item; Main.mouseItem = new Item(); } else { this.itemAnimation = 10; this.itemAnimationMax = 10; } Recipe.FindRecipes(); if (Main.netMode == 1) { NetMessage.SendData(0x15, -1, -1, "", index, 0f, 0f, 0f); } } if (!Main.playerInventory) { int selectedItem = this.selectedItem; if (!Main.chatMode) { if (Main.keyState.IsKeyDown(Keys.D1)) { this.selectedItem = 0; } if (Main.keyState.IsKeyDown(Keys.D2)) { this.selectedItem = 1; } if (Main.keyState.IsKeyDown(Keys.D3)) { this.selectedItem = 2; } if (Main.keyState.IsKeyDown(Keys.D4)) { this.selectedItem = 3; } if (Main.keyState.IsKeyDown(Keys.D5)) { this.selectedItem = 4; } if (Main.keyState.IsKeyDown(Keys.D6)) { this.selectedItem = 5; } if (Main.keyState.IsKeyDown(Keys.D7)) { this.selectedItem = 6; } if (Main.keyState.IsKeyDown(Keys.D8)) { this.selectedItem = 7; } if (Main.keyState.IsKeyDown(Keys.D9)) { this.selectedItem = 8; } if (Main.keyState.IsKeyDown(Keys.D0)) { this.selectedItem = 9; } } if (selectedItem != this.selectedItem) { Main.PlaySound(12, -1, -1, 1); } int num12 = (Main.mouseState.ScrollWheelValue - Main.oldMouseState.ScrollWheelValue) / 120; while (num12 > 9) { num12 -= 10; } while (num12 < 0) { num12 += 10; } this.selectedItem -= num12; if (num12 != 0) { Main.PlaySound(12, -1, -1, 1); } if (this.changeItem >= 0) { if (this.selectedItem != this.changeItem) { Main.PlaySound(12, -1, -1, 1); } this.selectedItem = this.changeItem; this.changeItem = -1; } while (this.selectedItem > 9) { this.selectedItem -= 10; } while (this.selectedItem < 0) { this.selectedItem += 10; } } else { int num13 = (Main.mouseState.ScrollWheelValue - Main.oldMouseState.ScrollWheelValue) / 120; Main.focusRecipe += num13; if (Main.focusRecipe > (Main.numAvailableRecipes - 1)) { Main.focusRecipe = Main.numAvailableRecipes - 1; } if (Main.focusRecipe < 0) { Main.focusRecipe = 0; } } } } if (Main.netMode == 1) { bool flag2 = false; if ((this.statLife != Main.clientPlayer.statLife) || (this.statLifeMax != Main.clientPlayer.statLifeMax)) { NetMessage.SendData(0x10, -1, -1, "", Main.myPlayer, 0f, 0f, 0f); flag2 = true; } if ((this.statMana != Main.clientPlayer.statMana) || (this.statManaMax != Main.clientPlayer.statManaMax)) { NetMessage.SendData(0x2a, -1, -1, "", Main.myPlayer, 0f, 0f, 0f); flag2 = true; } if (this.controlUp != Main.clientPlayer.controlUp) { flag2 = true; } if (this.controlDown != Main.clientPlayer.controlDown) { flag2 = true; } if (this.controlLeft != Main.clientPlayer.controlLeft) { flag2 = true; } if (this.controlRight != Main.clientPlayer.controlRight) { flag2 = true; } if (this.controlJump != Main.clientPlayer.controlJump) { flag2 = true; } if (this.controlUseItem != Main.clientPlayer.controlUseItem) { flag2 = true; } if (this.selectedItem != Main.clientPlayer.selectedItem) { flag2 = true; } if (flag2) { NetMessage.SendData(13, -1, -1, "", Main.myPlayer, 0f, 0f, 0f); } } if (Main.playerInventory) { this.AdjTiles(); } if (this.chest != -1) { int num14 = (int) ((this.position.X + (this.width * 0.5)) / 16.0); int num15 = (int) ((this.position.Y + (this.height * 0.5)) / 16.0); if (((num14 < (this.chestX - 5)) || (num14 > (this.chestX + 6))) || ((num15 < (this.chestY - 4)) || (num15 > (this.chestY + 5)))) { if (this.chest != -1) { Main.PlaySound(11, -1, -1, 1); } this.chest = -1; } if (!Main.tile[this.chestX, this.chestY].active) { Main.PlaySound(11, -1, -1, 1); this.chest = -1; } } if (this.velocity.Y == 0f) { int num16 = ((int) (this.position.Y / 16f)) - this.fallStart; if ((num16 > 0x19) && !this.noFallDmg) { int damage = (num16 - 0x19) * 10; this.immune = false; this.Hurt(damage, -this.direction, false, false); } this.fallStart = (int) (this.position.Y / 16f); } if ((this.rocketDelay > 0) || this.wet) { this.fallStart = (int) (this.position.Y / 16f); } } if (this.mouseInterface) { this.delayUseItem = true; } Player.tileTargetX = (int) ((Main.mouseState.X + Main.screenPosition.X) / 16f); Player.tileTargetY = (int) ((Main.mouseState.Y + Main.screenPosition.Y) / 16f); if (this.immune) { this.immuneTime--; if (this.immuneTime <= 0) { this.immune = false; } this.immuneAlpha += this.immuneAlphaDirection * 50; if (this.immuneAlpha <= 50) { this.immuneAlphaDirection = 1; } else if (this.immuneAlpha >= 0xcd) { this.immuneAlphaDirection = -1; } } else { this.immuneAlpha = 0; } if (this.manaRegenDelay > 0) { this.manaRegenDelay--; } this.statDefense = 0; this.accWatch = 0; this.accDepthMeter = 0; this.lifeRegen = 0; this.manaCost = 1f; this.meleeSpeed = 1f; this.boneArmor = false; this.rocketBoots = false; this.fireWalk = false; this.noKnockback = false; this.jumpBoost = false; this.noFallDmg = false; this.accFlipper = false; this.spawnMax = false; if (this.manaRegenDelay == 0) { this.manaRegen = (this.statManaMax / 30) + 1; } else { this.manaRegen = 0; } this.doubleJump = false; for (int j = 0; j < 8; j++) { this.statDefense += this.armor[j].defense; this.lifeRegen += this.armor[j].lifeRegen; this.manaRegen += this.armor[j].manaRegen; if (this.armor[j].type == 0xc1) { this.fireWalk = true; } } this.head = this.armor[0].headSlot; this.body = this.armor[1].bodySlot; this.legs = this.armor[2].legSlot; for (int k = 3; k < 8; k++) { if ((this.armor[k].type == 15) && (this.accWatch < 1)) { this.accWatch = 1; } if ((this.armor[k].type == 0x10) && (this.accWatch < 2)) { this.accWatch = 2; } if ((this.armor[k].type == 0x11) && (this.accWatch < 3)) { this.accWatch = 3; } if ((this.armor[k].type == 0x12) && (this.accDepthMeter < 1)) { this.accDepthMeter = 1; } if (this.armor[k].type == 0x35) { this.doubleJump = true; } if (this.armor[k].type == 0x36) { num6 = 6f; } if (this.armor[k].type == 0x80) { this.rocketBoots = true; } if (this.armor[k].type == 0x9c) { this.noKnockback = true; } if (this.armor[k].type == 0x9e) { this.noFallDmg = true; } if (this.armor[k].type == 0x9f) { this.jumpBoost = true; } if (this.armor[k].type == 0xbb) { this.accFlipper = true; } if (this.armor[k].type == 0xd3) { this.meleeSpeed *= 0.9f; } if (this.armor[k].type == 0xdf) { this.spawnMax = true; } if (this.armor[k].type == 0xd4) { num4 *= 1.1f; num3 *= 1.1f; } } this.lifeRegenCount += this.lifeRegen; while (this.lifeRegenCount >= 120) { this.lifeRegenCount -= 120; if (this.statLife < this.statLifeMax) { this.statLife++; } if (this.statLife > this.statLifeMax) { this.statLife = this.statLifeMax; } } this.manaRegenCount += this.manaRegen; while (this.manaRegenCount >= 120) { this.manaRegenCount -= 120; if (this.statMana < this.statManaMax) { this.statMana++; } if (this.statMana > this.statManaMax) { this.statMana = this.statManaMax; } } if (this.head == 11) { int num20 = ((((int) this.position.X) + (this.width / 2)) + (8 * this.direction)) / 0x10; int num21 = ((int) (this.position.Y + 2f)) / 0x10; Lighting.addLight(num20, num21, 0.8f); } if (this.jumpBoost) { jumpHeight = 20; jumpSpeed = 6.51f; } this.setBonus = ""; if ((((this.head == 1) && (this.body == 1)) && (this.legs == 1)) || (((this.head == 2) && (this.body == 2)) && (this.legs == 2))) { this.setBonus = "2 defense"; this.statDefense++; } if ((((this.head == 3) && (this.body == 3)) && (this.legs == 3)) || (((this.head == 4) && (this.body == 4)) && (this.legs == 4))) { this.setBonus = "3 defense"; this.statDefense += 2; } if (((this.head == 5) && (this.body == 5)) && (this.legs == 5)) { this.setBonus = "15 % increased melee speed"; this.meleeSpeed *= 0.85f; if (Main.rand.Next(10) == 0) { color = new Color(); Dust.NewDust(new Vector2(this.position.X, this.position.Y), this.width, this.height, 14, 0f, 0f, 200, color, 1.2f); } } if (((this.head == 6) && (this.body == 6)) && (this.legs == 6)) { this.setBonus = "20% reduced mana usage"; this.manaCost *= 0.8f; if (((Math.Abs(this.velocity.X) + Math.Abs(this.velocity.Y)) > 1f) && !this.rocketFrame) { for (int num22 = 0; num22 < 2; num22++) { color = new Color(); int num23 = Dust.NewDust(new Vector2(this.position.X - (this.velocity.X * 2f), (this.position.Y - 2f) - (this.velocity.Y * 2f)), this.width, this.height, 6, 0f, 0f, 100, color, 2f); Main.dust[num23].noGravity = true; Main.dust[num23].velocity.X -= this.velocity.X * 0.5f; Main.dust[num23].velocity.Y -= this.velocity.Y * 0.5f; } } } if (((this.head == 7) && (this.body == 7)) && (this.legs == 7)) { num4 *= 1.3f; num3 *= 1.3f; this.setBonus = "30% increased movement speed"; this.boneArmor = true; } if (((this.head == 8) && (this.body == 8)) && (this.legs == 8)) { this.setBonus = "25% reduced mana usage"; this.manaCost *= 0.75f; this.meleeSpeed *= 0.9f; if (Main.rand.Next(10) == 0) { color = new Color(); Dust.NewDust(new Vector2(this.position.X, this.position.Y), this.width, this.height, 14, 0f, 0f, 200, color, 1.2f); } } if (((this.head == 9) && (this.body == 9)) && (this.legs == 9)) { this.setBonus = "10 defense"; if (((Math.Abs(this.velocity.X) + Math.Abs(this.velocity.Y)) > 1f) && !this.rocketFrame) { for (int num24 = 0; num24 < 2; num24++) { color = new Color(); int num25 = Dust.NewDust(new Vector2(this.position.X - (this.velocity.X * 2f), (this.position.Y - 2f) - (this.velocity.Y * 2f)), this.width, this.height, 6, 0f, 0f, 100, color, 2f); Main.dust[num25].noGravity = true; Main.dust[num25].velocity.X -= this.velocity.X * 0.5f; Main.dust[num25].velocity.Y -= this.velocity.Y * 0.5f; } } } if (!this.doubleJump) { this.jumpAgain = false; } else if (this.velocity.Y == 0f) { this.jumpAgain = true; } if (this.meleeSpeed < 0.7) { this.meleeSpeed = 0.7f; } if (this.grappling[0] == -1) { if (this.controlLeft && (this.velocity.X > -num3)) { if (this.velocity.X > num5) { this.velocity.X -= num5; } this.velocity.X -= num4; if ((this.itemAnimation == 0) || this.inventory[this.selectedItem].useTurn) { this.direction = -1; } } else if (this.controlRight && (this.velocity.X < num3)) { if (this.velocity.X < -num5) { this.velocity.X += num5; } this.velocity.X += num4; if ((this.itemAnimation == 0) || this.inventory[this.selectedItem].useTurn) { this.direction = 1; } } else if (this.controlLeft && (this.velocity.X > -num6)) { if ((this.itemAnimation == 0) || this.inventory[this.selectedItem].useTurn) { this.direction = -1; } if (this.velocity.Y == 0f) { if (this.velocity.X > num5) { this.velocity.X -= num5; } this.velocity.X -= num4 * 0.2f; } if ((this.velocity.X < (-(num6 + num3) / 2f)) && (this.velocity.Y == 0f)) { if ((this.runSoundDelay == 0) && (this.velocity.Y == 0f)) { Main.PlaySound(0x11, (int) this.position.X, (int) this.position.Y, 1); this.runSoundDelay = 9; } color = new Color(); int num26 = Dust.NewDust(new Vector2(this.position.X - 4f, this.position.Y + this.height), this.width + 8, 4, 0x10, -this.velocity.X * 0.5f, this.velocity.Y * 0.5f, 50, color, 1.5f); Main.dust[num26].velocity.X *= 0.2f; Main.dust[num26].velocity.Y *= 0.2f; } } else if (this.controlRight && (this.velocity.X < num6)) { if ((this.itemAnimation == 0) || this.inventory[this.selectedItem].useTurn) { this.direction = 1; } if (this.velocity.Y == 0f) { if (this.velocity.X < -num5) { this.velocity.X += num5; } this.velocity.X += num4 * 0.2f; } if ((this.velocity.X > ((num6 + num3) / 2f)) && (this.velocity.Y == 0f)) { if ((this.runSoundDelay == 0) && (this.velocity.Y == 0f)) { Main.PlaySound(0x11, (int) this.position.X, (int) this.position.Y, 1); this.runSoundDelay = 9; } color = new Color(); int num27 = Dust.NewDust(new Vector2(this.position.X - 4f, this.position.Y + this.height), this.width + 8, 4, 0x10, -this.velocity.X * 0.5f, this.velocity.Y * 0.5f, 50, color, 1.5f); Main.dust[num27].velocity.X *= 0.2f; Main.dust[num27].velocity.Y *= 0.2f; } } else if (this.velocity.Y == 0f) { if (this.velocity.X > num5) { this.velocity.X -= num5; } else if (this.velocity.X < -num5) { this.velocity.X += num5; } else { this.velocity.X = 0f; } } else if (this.velocity.X > (num5 * 0.5)) { this.velocity.X -= num5 * 0.5f; } else if (this.velocity.X < (-num5 * 0.5)) { this.velocity.X += num5 * 0.5f; } else { this.velocity.X = 0f; } if (this.controlJump) { if (this.jump > 0) { if (this.velocity.Y > (-jumpSpeed + (num2 * 2f))) { this.jump = 0; } else { this.velocity.Y = -jumpSpeed; this.jump--; } } else if ((((this.velocity.Y == 0f) || this.jumpAgain) || (this.wet && this.accFlipper)) && this.releaseJump) { bool flag3 = false; if (this.wet && this.accFlipper) { if (this.swimTime == 0) { this.swimTime = 30; } flag3 = true; } this.jumpAgain = false; this.canRocket = false; this.rocketRelease = false; if ((this.velocity.Y == 0f) && this.doubleJump) { this.jumpAgain = true; } if ((this.velocity.Y == 0f) || flag3) { this.velocity.Y = -jumpSpeed; this.jump = jumpHeight; } else { Main.PlaySound(0x10, (int) this.position.X, (int) this.position.Y, 1); this.velocity.Y = -jumpSpeed; this.jump = jumpHeight / 2; for (int num28 = 0; num28 < 10; num28++) { color = new Color(); int num29 = Dust.NewDust(new Vector2(this.position.X - 34f, (this.position.Y + this.height) - 16f), 0x66, 0x20, 0x10, -this.velocity.X * 0.5f, this.velocity.Y * 0.5f, 100, color, 1.5f); Main.dust[num29].velocity.X = (Main.dust[num29].velocity.X * 0.5f) - (this.velocity.X * 0.1f); Main.dust[num29].velocity.Y = (Main.dust[num29].velocity.Y * 0.5f) - (this.velocity.Y * 0.3f); } int num30 = Gore.NewGore(new Vector2((this.position.X + (this.width / 2)) - 16f, (this.position.Y + this.height) - 16f), new Vector2(-this.velocity.X, -this.velocity.Y), Main.rand.Next(11, 14)); Main.gore[num30].velocity.X = (Main.gore[num30].velocity.X * 0.1f) - (this.velocity.X * 0.1f); Main.gore[num30].velocity.Y = (Main.gore[num30].velocity.Y * 0.1f) - (this.velocity.Y * 0.05f); num30 = Gore.NewGore(new Vector2(this.position.X - 36f, (this.position.Y + this.height) - 16f), new Vector2(-this.velocity.X, -this.velocity.Y), Main.rand.Next(11, 14)); Main.gore[num30].velocity.X = (Main.gore[num30].velocity.X * 0.1f) - (this.velocity.X * 0.1f); Main.gore[num30].velocity.Y = (Main.gore[num30].velocity.Y * 0.1f) - (this.velocity.Y * 0.05f); num30 = Gore.NewGore(new Vector2((this.position.X + this.width) + 4f, (this.position.Y + this.height) - 16f), new Vector2(-this.velocity.X, -this.velocity.Y), Main.rand.Next(11, 14)); Main.gore[num30].velocity.X = (Main.gore[num30].velocity.X * 0.1f) - (this.velocity.X * 0.1f); Main.gore[num30].velocity.Y = (Main.gore[num30].velocity.Y * 0.1f) - (this.velocity.Y * 0.05f); } } this.releaseJump = false; } else { this.jump = 0; this.releaseJump = true; this.rocketRelease = true; } if (((this.doubleJump && !this.jumpAgain) && ((this.velocity.Y < 0f) && !this.rocketBoots)) && !this.accFlipper) { color = new Color(); int num31 = Dust.NewDust(new Vector2(this.position.X - 4f, this.position.Y + this.height), this.width + 8, 4, 0x10, -this.velocity.X * 0.5f, this.velocity.Y * 0.5f, 100, color, 1.5f); Main.dust[num31].velocity.X = (Main.dust[num31].velocity.X * 0.5f) - (this.velocity.X * 0.1f); Main.dust[num31].velocity.Y = (Main.dust[num31].velocity.Y * 0.5f) - (this.velocity.Y * 0.3f); } if ((this.velocity.Y > -jumpSpeed) && (this.velocity.Y != 0f)) { this.canRocket = true; } if (((this.rocketBoots && this.controlJump) && ((this.rocketDelay == 0) && this.canRocket)) && (this.rocketRelease && !this.jumpAgain)) { int num32 = 7; if (this.statMana >= ((int) (num32 * this.manaCost))) { this.manaRegenDelay = 180; this.statMana -= (int) (num32 * this.manaCost); this.rocketDelay = 10; if (this.rocketDelay2 <= 0) { Main.PlaySound(2, (int) this.position.X, (int) this.position.Y, 13); this.rocketDelay2 = 30; } } else { this.canRocket = false; } } if (this.rocketDelay2 > 0) { this.rocketDelay2--; } if (this.rocketDelay == 0) { this.rocketFrame = false; } if (this.rocketDelay > 0) { this.rocketFrame = true; for (int num33 = 0; num33 < 2; num33++) { if (num33 == 0) { color = new Color(); int num34 = Dust.NewDust(new Vector2(this.position.X - 4f, (this.position.Y + this.height) - 10f), 8, 8, 6, 0f, 0f, 100, color, 2.5f); Main.dust[num34].noGravity = true; Main.dust[num34].velocity.X = ((Main.dust[num34].velocity.X * 1f) - 2f) - (this.velocity.X * 0.3f); Main.dust[num34].velocity.Y = ((Main.dust[num34].velocity.Y * 1f) + 2f) - (this.velocity.Y * 0.3f); } else { color = new Color(); int num35 = Dust.NewDust(new Vector2((this.position.X + this.width) - 4f, (this.position.Y + this.height) - 10f), 8, 8, 6, 0f, 0f, 100, color, 2.5f); Main.dust[num35].noGravity = true; Main.dust[num35].velocity.X = ((Main.dust[num35].velocity.X * 1f) + 2f) - (this.velocity.X * 0.3f); Main.dust[num35].velocity.Y = ((Main.dust[num35].velocity.Y * 1f) + 2f) - (this.velocity.Y * 0.3f); } } if (this.rocketDelay == 0) { this.releaseJump = true; } this.rocketDelay--; this.velocity.Y -= 0.1f; if (this.velocity.Y > 0f) { this.velocity.Y -= 0.3f; } if (this.velocity.Y < -jumpSpeed) { this.velocity.Y = -jumpSpeed; } } else { this.velocity.Y += num2; } if (this.velocity.Y > num) { this.velocity.Y = num; } } for (int m = 0; m < 200; m++) { if ((Main.item[m].active && (Main.item[m].noGrabDelay == 0)) && (Main.item[m].owner == i)) { Rectangle rectangle6 = new Rectangle((int) this.position.X, (int) this.position.Y, this.width, this.height); if (rectangle6.Intersects(new Rectangle((int) Main.item[m].position.X, (int) Main.item[m].position.Y, Main.item[m].width, Main.item[m].height))) { if ((i == Main.myPlayer) && ((this.inventory[this.selectedItem].type != 0) || (this.itemAnimation <= 0))) { if (Main.item[m].type == 0x3a) { Main.PlaySound(7, (int) this.position.X, (int) this.position.Y, 1); this.statLife += 20; if (Main.myPlayer == this.whoAmi) { this.HealEffect(20); } if (this.statLife > this.statLifeMax) { this.statLife = this.statLifeMax; } Main.item[m] = new Item(); if (Main.netMode == 1) { NetMessage.SendData(0x15, -1, -1, "", m, 0f, 0f, 0f); } } else if (Main.item[m].type == 0xb8) { Main.PlaySound(7, (int) this.position.X, (int) this.position.Y, 1); this.statMana += 20; if (Main.myPlayer == this.whoAmi) { this.ManaEffect(20); } if (this.statMana > this.statManaMax) { this.statMana = this.statManaMax; } Main.item[m] = new Item(); if (Main.netMode == 1) { NetMessage.SendData(0x15, -1, -1, "", m, 0f, 0f, 0f); } } else { Main.item[m] = this.GetItem(i, Main.item[m]); if (Main.netMode == 1) { NetMessage.SendData(0x15, -1, -1, "", m, 0f, 0f, 0f); } } } } else { rectangle6 = new Rectangle(((int) this.position.X) - itemGrabRange, ((int) this.position.Y) - itemGrabRange, this.width + (itemGrabRange * 2), this.height + (itemGrabRange * 2)); if (rectangle6.Intersects(new Rectangle((int) Main.item[m].position.X, (int) Main.item[m].position.Y, Main.item[m].width, Main.item[m].height)) && this.ItemSpace(Main.item[m])) { Main.item[m].beingGrabbed = true; if ((this.position.X + (this.width * 0.5)) > (Main.item[m].position.X + (Main.item[m].width * 0.5))) { if (Main.item[m].velocity.X < (itemGrabSpeedMax + this.velocity.X)) { Main.item[m].velocity.X += itemGrabSpeed; } if (Main.item[m].velocity.X < 0f) { Main.item[m].velocity.X += itemGrabSpeed * 0.75f; } } else { if (Main.item[m].velocity.X > (-itemGrabSpeedMax + this.velocity.X)) { Main.item[m].velocity.X -= itemGrabSpeed; } if (Main.item[m].velocity.X > 0f) { Main.item[m].velocity.X -= itemGrabSpeed * 0.75f; } } if ((this.position.Y + (this.height * 0.5)) > (Main.item[m].position.Y + (Main.item[m].height * 0.5))) { if (Main.item[m].velocity.Y < itemGrabSpeedMax) { Main.item[m].velocity.Y += itemGrabSpeed; } if (Main.item[m].velocity.Y < 0f) { Main.item[m].velocity.Y += itemGrabSpeed * 0.75f; } } else { if (Main.item[m].velocity.Y > -itemGrabSpeedMax) { Main.item[m].velocity.Y -= itemGrabSpeed; } if (Main.item[m].velocity.Y > 0f) { Main.item[m].velocity.Y -= itemGrabSpeed * 0.75f; } } } } } } if ((((((this.position.X / 16f) - tileRangeX) <= Player.tileTargetX) && (((((this.position.X + this.width) / 16f) + tileRangeX) - 1f) >= Player.tileTargetX)) && ((((this.position.Y / 16f) - tileRangeY) <= Player.tileTargetY) && (((((this.position.Y + this.height) / 16f) + tileRangeY) - 2f) >= Player.tileTargetY))) && Main.tile[Player.tileTargetX, Player.tileTargetY].active) { if (Main.tile[Player.tileTargetX, Player.tileTargetY].type == 0x4f) { this.showItemIcon = true; this.showItemIcon2 = 0xe0; } if (Main.tile[Player.tileTargetX, Player.tileTargetY].type == 0x15) { this.showItemIcon = true; this.showItemIcon2 = 0x30; } if (Main.tile[Player.tileTargetX, Player.tileTargetY].type == 4) { this.showItemIcon = true; this.showItemIcon2 = 8; } if (Main.tile[Player.tileTargetX, Player.tileTargetY].type == 13) { this.showItemIcon = true; if (Main.tile[Player.tileTargetX, Player.tileTargetY].frameX == 0x12) { this.showItemIcon2 = 0x1c; } else if (Main.tile[Player.tileTargetX, Player.tileTargetY].frameX == 0x24) { this.showItemIcon2 = 110; } else { this.showItemIcon2 = 0x1f; } } if (Main.tile[Player.tileTargetX, Player.tileTargetY].type == 0x1d) { this.showItemIcon = true; this.showItemIcon2 = 0x57; } if (Main.tile[Player.tileTargetX, Player.tileTargetY].type == 0x21) { this.showItemIcon = true; this.showItemIcon2 = 0x69; } if (Main.tile[Player.tileTargetX, Player.tileTargetY].type == 0x31) { this.showItemIcon = true; this.showItemIcon2 = 0x94; } if ((Main.tile[Player.tileTargetX, Player.tileTargetY].type == 50) && (Main.tile[Player.tileTargetX, Player.tileTargetY].frameX == 90)) { this.showItemIcon = true; this.showItemIcon2 = 0xa5; } if (Main.tile[Player.tileTargetX, Player.tileTargetY].type == 0x37) { int num37 = Main.tile[Player.tileTargetX, Player.tileTargetY].frameX / 0x12; int num38 = Main.tile[Player.tileTargetX, Player.tileTargetY].frameY / 0x12; while (num37 > 1) { num37 -= 2; } int num39 = Player.tileTargetX - num37; int num40 = Player.tileTargetY - num38; Main.signBubble = true; Main.signX = (num39 * 0x10) + 0x10; Main.signY = num40 * 0x10; } if ((Main.tile[Player.tileTargetX, Player.tileTargetY].type == 10) || (Main.tile[Player.tileTargetX, Player.tileTargetY].type == 11)) { this.showItemIcon = true; this.showItemIcon2 = 0x19; } if (this.controlUseTile) { if (this.releaseUseTile) { if (((Main.tile[Player.tileTargetX, Player.tileTargetY].type == 4) || (Main.tile[Player.tileTargetX, Player.tileTargetY].type == 13)) || (((Main.tile[Player.tileTargetX, Player.tileTargetY].type == 0x21) || (Main.tile[Player.tileTargetX, Player.tileTargetY].type == 0x31)) || ((Main.tile[Player.tileTargetX, Player.tileTargetY].type == 50) && (Main.tile[Player.tileTargetX, Player.tileTargetY].frameX == 90)))) { WorldGen.KillTile(Player.tileTargetX, Player.tileTargetY, false, false, false); if (Main.netMode == 1) { NetMessage.SendData(0x11, -1, -1, "", 0, (float) Player.tileTargetX, (float) Player.tileTargetY, 0f); } } else if (Main.tile[Player.tileTargetX, Player.tileTargetY].type == 0x4f) { int tileTargetX = Player.tileTargetX; int tileTargetY = Player.tileTargetY; tileTargetX += (Main.tile[Player.tileTargetX, Player.tileTargetY].frameX / 0x12) * -1; if (Main.tile[Player.tileTargetX, Player.tileTargetY].frameX >= 0x48) { tileTargetX += 4; tileTargetX++; } else { tileTargetX += 2; } tileTargetY += (Main.tile[Player.tileTargetX, Player.tileTargetY].frameY / 0x12) * -1; tileTargetY += 2; if (CheckSpawn(tileTargetX, tileTargetY)) { this.ChangeSpawn(tileTargetX, tileTargetY); Main.NewText("Spawn point set!", 0xff, 240, 20); } } else if (Main.tile[Player.tileTargetX, Player.tileTargetY].type == 0x37) { bool flag4 = true; if ((this.sign >= 0) && (Sign.ReadSign(Player.tileTargetX, Player.tileTargetY) == this.sign)) { this.sign = -1; Main.npcChatText = ""; Main.editSign = false; Main.PlaySound(11, -1, -1, 1); flag4 = false; } if (flag4) { if (Main.netMode == 0) { this.talkNPC = -1; Main.playerInventory = false; Main.editSign = false; Main.PlaySound(10, -1, -1, 1); int num44 = Sign.ReadSign(Player.tileTargetX, Player.tileTargetY); this.sign = num44; Main.npcChatText = Main.sign[num44].text; } else { int num45 = Main.tile[Player.tileTargetX, Player.tileTargetY].frameX / 0x12; int num46 = Main.tile[Player.tileTargetX, Player.tileTargetY].frameY / 0x12; while (num45 > 1) { num45 -= 2; } int number = Player.tileTargetX - num45; int num48 = Player.tileTargetY - num46; if (Main.tile[number, num48].type == 0x37) { NetMessage.SendData(0x2e, -1, -1, "", number, (float) num48, 0f, 0f); } } } } else if (Main.tile[Player.tileTargetX, Player.tileTargetY].type == 10) { WorldGen.OpenDoor(Player.tileTargetX, Player.tileTargetY, this.direction); NetMessage.SendData(0x13, -1, -1, "", 0, (float) Player.tileTargetX, (float) Player.tileTargetY, (float) this.direction); } else if (Main.tile[Player.tileTargetX, Player.tileTargetY].type == 11) { if (WorldGen.CloseDoor(Player.tileTargetX, Player.tileTargetY, false)) { NetMessage.SendData(0x13, -1, -1, "", 1, (float) Player.tileTargetX, (float) Player.tileTargetY, (float) this.direction); } } else if (((Main.tile[Player.tileTargetX, Player.tileTargetY].type == 0x15) || (Main.tile[Player.tileTargetX, Player.tileTargetY].type == 0x1d)) && (this.talkNPC == -1)) { bool flag5 = false; int num49 = Player.tileTargetX - (Main.tile[Player.tileTargetX, Player.tileTargetY].frameX / 0x12); int y = Player.tileTargetY - (Main.tile[Player.tileTargetX, Player.tileTargetY].frameY / 0x12); if (Main.tile[Player.tileTargetX, Player.tileTargetY].type == 0x1d) { flag5 = true; } if ((Main.netMode == 1) && !flag5) { if (((num49 == this.chestX) && (y == this.chestY)) && (this.chest != -1)) { this.chest = -1; Main.PlaySound(11, -1, -1, 1); } else { NetMessage.SendData(0x1f, -1, -1, "", num49, (float) y, 0f, 0f); } } else { int num51 = -1; if (flag5) { num51 = -2; } else { num51 = Chest.FindChest(num49, y); } if (num51 != -1) { if (num51 == this.chest) { this.chest = -1; Main.PlaySound(11, -1, -1, 1); } else if ((num51 != this.chest) && (this.chest == -1)) { this.chest = num51; Main.playerInventory = true; Main.PlaySound(10, -1, -1, 1); this.chestX = num49; this.chestY = y; } else { this.chest = num51; Main.playerInventory = true; Main.PlaySound(12, -1, -1, 1); this.chestX = num49; this.chestY = y; } } } } } this.releaseUseTile = false; } else { this.releaseUseTile = true; } } if (Main.myPlayer == this.whoAmi) { if (this.talkNPC >= 0) { Rectangle rectangle = new Rectangle((((int) this.position.X) + (this.width / 2)) - (tileRangeX * 0x10), (((int) this.position.Y) + (this.height / 2)) - (tileRangeY * 0x10), (tileRangeX * 0x10) * 2, (tileRangeY * 0x10) * 2); Rectangle rectangle2 = new Rectangle((int) Main.npc[this.talkNPC].position.X, (int) Main.npc[this.talkNPC].position.Y, Main.npc[this.talkNPC].width, Main.npc[this.talkNPC].height); if ((!rectangle.Intersects(rectangle2) || (this.chest != -1)) || !Main.npc[this.talkNPC].active) { if (this.chest == -1) { Main.PlaySound(11, -1, -1, 1); } this.talkNPC = -1; Main.npcChatText = ""; } } if (this.sign >= 0) { Rectangle rectangle3 = new Rectangle((((int) this.position.X) + (this.width / 2)) - (tileRangeX * 0x10), (((int) this.position.Y) + (this.height / 2)) - (tileRangeY * 0x10), (tileRangeX * 0x10) * 2, (tileRangeY * 0x10) * 2); Rectangle rectangle4 = new Rectangle(Main.sign[this.sign].x * 0x10, Main.sign[this.sign].y * 0x10, 0x20, 0x20); if (!rectangle3.Intersects(rectangle4)) { Main.PlaySound(11, -1, -1, 1); this.sign = -1; Main.editSign = false; Main.npcChatText = ""; } } if (Main.editSign) { if (this.sign == -1) { Main.editSign = false; } else { Main.npcChatText = Main.GetInputText(Main.npcChatText); if (Main.inputTextEnter) { byte[] bytes = new byte[] { 10 }; Main.npcChatText = Main.npcChatText + Encoding.ASCII.GetString(bytes); } } } Rectangle rectangle5 = new Rectangle((int) this.position.X, (int) this.position.Y, this.width, this.height); for (int num52 = 0; num52 < 0x3e8; num52++) { if ((Main.npc[num52].active && !Main.npc[num52].friendly) && rectangle5.Intersects(new Rectangle((int) Main.npc[num52].position.X, (int) Main.npc[num52].position.Y, Main.npc[num52].width, Main.npc[num52].height))) { int hitDirection = -1; if ((Main.npc[num52].position.X + (Main.npc[num52].width / 2)) < (this.position.X + (this.width / 2))) { hitDirection = 1; } this.Hurt(Main.npc[num52].damage, hitDirection, false, false); } } Vector2 vector = Collision.HurtTiles(this.position, this.velocity, this.width, this.height, this.fireWalk); if (vector.Y != 0f) { this.Hurt((int) vector.Y, (int) vector.X, false, false); } } if (this.grappling[0] >= 0) { this.rocketDelay = 0; this.rocketFrame = false; this.canRocket = false; this.rocketRelease = false; this.fallStart = (int) (this.position.Y / 16f); float num54 = 0f; float num55 = 0f; for (int num56 = 0; num56 < this.grapCount; num56++) { num54 += Main.projectile[this.grappling[num56]].position.X + (Main.projectile[this.grappling[num56]].width / 2); num55 += Main.projectile[this.grappling[num56]].position.Y + (Main.projectile[this.grappling[num56]].height / 2); } num54 /= (float) this.grapCount; num55 /= (float) this.grapCount; Vector2 vector2 = new Vector2(this.position.X + (this.width * 0.5f), this.position.Y + (this.height * 0.5f)); float num57 = num54 - vector2.X; float num58 = num55 - vector2.Y; float num59 = (float) Math.Sqrt((double) ((num57 * num57) + (num58 * num58))); float num60 = 11f; float num61 = num59; if (num59 > num60) { num61 = num60 / num59; } else { num61 = 1f; } num57 *= num61; num58 *= num61; this.velocity.X = num57; this.velocity.Y = num58; if (this.itemAnimation == 0) { if (this.velocity.X > 0f) { this.direction = 1; } if (this.velocity.X < 0f) { this.direction = -1; } } if (this.controlJump) { if (this.releaseJump) { if ((this.velocity.Y == 0f) || ((this.wet && (this.velocity.Y > -0.02)) && (this.velocity.Y < 0.02))) { this.velocity.Y = -jumpSpeed; this.jump = jumpHeight / 2; this.releaseJump = false; } else { this.velocity.Y += 0.01f; this.releaseJump = false; } if (this.doubleJump) { this.jumpAgain = true; } this.grappling[0] = 0; this.grapCount = 0; for (int num62 = 0; num62 < 0x3e8; num62++) { if ((Main.projectile[num62].active && (Main.projectile[num62].owner == i)) && (Main.projectile[num62].aiStyle == 7)) { Main.projectile[num62].Kill(); } } } } else { this.releaseJump = true; } } if (Collision.StickyTiles(this.position, this.velocity, this.width, this.height)) { this.fallStart = (int) (this.position.Y / 16f); this.jump = 0; if (this.velocity.X > 1f) { this.velocity.X = 1f; } if (this.velocity.X < -1f) { this.velocity.X = -1f; } if (this.velocity.Y > 1f) { this.velocity.Y = 1f; } if (this.velocity.Y < -5f) { this.velocity.Y = -5f; } if ((this.velocity.X > 0.75) || (this.velocity.X < -0.75)) { this.velocity.X *= 0.85f; } else { this.velocity.X *= 0.6f; } if (this.velocity.Y < 0f) { this.velocity.Y *= 0.96f; } else { this.velocity.Y *= 0.3f; } } bool flag6 = Collision.DrownCollision(this.position, this.width, this.height); if (this.inventory[this.selectedItem].type == 0xba) { try { int num63 = (int) (((this.position.X + (this.width / 2)) + (6 * this.direction)) / 16f); int num64 = (int) ((this.position.Y - 44f) / 16f); if (Main.tile[num63, num64].liquid < 0x80) { if (Main.tile[num63, num64] == null) { Main.tile[num63, num64] = new Tile(); } if ((!Main.tile[num63, num64].active || !Main.tileSolid[Main.tile[num63, num64].type]) || Main.tileSolidTop[Main.tile[num63, num64].type]) { flag6 = false; } } } catch { } } if (Main.myPlayer == i) { if (flag6) { this.breathCD++; int num65 = 7; if (this.inventory[this.selectedItem].type == 0xba) { num65 *= 2; } if (this.breathCD >= num65) { this.breathCD = 0; this.breath--; if (this.breath <= 0) { this.breath = 0; this.statLife -= 2; if (this.statLife <= 0) { this.statLife = 0; this.KillMe(10.0, 0, false); } } } } else { this.breath += 3; if (this.breath > this.breathMax) { this.breath = this.breathMax; } this.breathCD = 0; } } if (flag6 && (Main.rand.Next(20) == 0)) { if (this.inventory[this.selectedItem].type == 0xba) { color = new Color(); Dust.NewDust(new Vector2((this.position.X + (10 * this.direction)) + 4f, this.position.Y - 54f), this.width - 8, 8, 0x22, 0f, 0f, 0, color, 1.2f); } else { color = new Color(); Dust.NewDust(new Vector2(this.position.X + (12 * this.direction), this.position.Y + 4f), this.width - 8, 8, 0x22, 0f, 0f, 0, color, 1.2f); } } bool flag7 = Collision.LavaCollision(this.position, this.width, this.height); if (flag7) { if (Main.myPlayer == i) { this.Hurt(100, 0, false, false); } this.lavaWet = true; } if (Collision.WetCollision(this.position, this.width, this.height)) { if (!this.wet) { if (this.wetCount == 0) { this.wetCount = 10; if (!flag7) { for (int num66 = 0; num66 < 50; num66++) { color = new Color(); int num67 = Dust.NewDust(new Vector2(this.position.X - 6f, (this.position.Y + (this.height / 2)) - 8f), this.width + 12, 0x18, 0x21, 0f, 0f, 0, color, 1f); Main.dust[num67].velocity.Y -= 4f; Main.dust[num67].velocity.X *= 2.5f; Main.dust[num67].scale = 1.3f; Main.dust[num67].alpha = 100; Main.dust[num67].noGravity = true; } Main.PlaySound(0x13, (int) this.position.X, (int) this.position.Y, 0); } else { for (int num68 = 0; num68 < 20; num68++) { color = new Color(); int num69 = Dust.NewDust(new Vector2(this.position.X - 6f, (this.position.Y + (this.height / 2)) - 8f), this.width + 12, 0x18, 0x23, 0f, 0f, 0, color, 1f); Main.dust[num69].velocity.Y -= 1.5f; Main.dust[num69].velocity.X *= 2.5f; Main.dust[num69].scale = 1.3f; Main.dust[num69].alpha = 100; Main.dust[num69].noGravity = true; } Main.PlaySound(0x13, (int) this.position.X, (int) this.position.Y, 1); } } this.wet = true; } } else if (this.wet) { this.wet = false; if (this.jump > (jumpHeight / 5)) { this.jump = jumpHeight / 5; } if (this.wetCount == 0) { this.wetCount = 10; if (!this.lavaWet) { for (int num70 = 0; num70 < 50; num70++) { color = new Color(); int num71 = Dust.NewDust(new Vector2(this.position.X - 6f, this.position.Y + (this.height / 2)), this.width + 12, 0x18, 0x21, 0f, 0f, 0, color, 1f); Main.dust[num71].velocity.Y -= 4f; Main.dust[num71].velocity.X *= 2.5f; Main.dust[num71].scale = 1.3f; Main.dust[num71].alpha = 100; Main.dust[num71].noGravity = true; } Main.PlaySound(0x13, (int) this.position.X, (int) this.position.Y, 0); } else { for (int num72 = 0; num72 < 20; num72++) { color = new Color(); int num73 = Dust.NewDust(new Vector2(this.position.X - 6f, (this.position.Y + (this.height / 2)) - 8f), this.width + 12, 0x18, 0x23, 0f, 0f, 0, color, 1f); Main.dust[num73].velocity.Y -= 1.5f; Main.dust[num73].velocity.X *= 2.5f; Main.dust[num73].scale = 1.3f; Main.dust[num73].alpha = 100; Main.dust[num73].noGravity = true; } Main.PlaySound(0x13, (int) this.position.X, (int) this.position.Y, 1); } } } if (!this.wet) { this.lavaWet = false; } if (this.wetCount > 0) { this.wetCount = (byte) (this.wetCount - 1); } if (this.wet) { if (this.wet) { Vector2 velocity = this.velocity; this.velocity = Collision.TileCollision(this.position, this.velocity, this.width, this.height, this.controlDown, false); Vector2 vector4 = (Vector2) (this.velocity * 0.5f); if (this.velocity.X != velocity.X) { vector4.X = this.velocity.X; } if (this.velocity.Y != velocity.Y) { vector4.Y = this.velocity.Y; } this.position += vector4; } } else { this.velocity = Collision.TileCollision(this.position, this.velocity, this.width, this.height, this.controlDown, false); this.position += this.velocity; } if (this.position.X < ((Main.leftWorld + 336f) + 16f)) { this.position.X = (Main.leftWorld + 336f) + 16f; this.velocity.X = 0f; } if ((this.position.X + this.width) > ((Main.rightWorld - 336f) - 32f)) { this.position.X = ((Main.rightWorld - 336f) - 32f) - this.width; this.velocity.X = 0f; } if (this.position.Y < ((Main.topWorld + 336f) + 16f)) { this.position.Y = (Main.topWorld + 336f) + 16f; this.velocity.Y = 0f; } if (this.position.Y > (((Main.bottomWorld - 336f) - 32f) - this.height)) { this.position.Y = ((Main.bottomWorld - 336f) - 32f) - this.height; this.velocity.Y = 0f; } this.ItemCheck(i); this.PlayerFrame(); if (this.statLife > this.statLifeMax) { this.statLife = this.statLifeMax; } this.grappling[0] = -1; this.grapCount = 0; } } } } }