//public Terraria.Item GetN public List <string> Prefixes() { var result = new List <string> { string.Empty }; var curitem = new Terraria.Item(); //curitem.Name = ""; for (int prefix = 1; prefix < byte.MaxValue; prefix++) { try { curitem.prefix = (byte)prefix; string affixName = curitem.AffixName(); if (string.IsNullOrWhiteSpace(affixName)) { break; } result.Add(affixName); } catch { } } return(result); }
TextSnippet ITagHandler.Parse(string text, Color baseColor, string options) { Item obj = new Item(); int result1; if (int.TryParse(text, out result1)) obj.netDefaults(result1); else obj.SetDefaults(text); if (obj.itemId <= 0) return new TextSnippet(text); obj.stack = 1; if (options != null) { string[] strArray = options.Split(','); for (int index = 0; index < strArray.Length; ++index) { if (strArray[index].Length != 0) { switch (strArray[index][0]) { case 'p': int result2; if (int.TryParse(strArray[index].Substring(1), out result2)) { obj.Prefix(Utils.Clamp<int>(result2, 0, 84)); continue; } continue; case 's': case 'x': int result3; if (int.TryParse(strArray[index].Substring(1), out result3)) { obj.stack = Utils.Clamp<int>(result3, 1, obj.maxStack); continue; } continue; default: continue; } } } } string str = ""; if (obj.stack > 1) str = " (" + obj.stack + ")"; ItemSnippet itemSnippet = new ItemSnippet(obj); itemSnippet.Text = "[" + obj.AffixName() + str + "]"; itemSnippet.CheckForHover = true; itemSnippet.DeleteWhole = true; return itemSnippet; }
public static int NewText(PopupTextContext context, Item newItem, int stack, bool noStack = false, bool longText = false) { if (!Main.showItemText) { return(-1); } if (newItem.Name == null || !newItem.active) { return(-1); } if (Main.netMode == 2) { return(-1); } bool flag = newItem.type >= 71 && newItem.type <= 74; for (int i = 0; i < 20; i++) { if (!Main.popupText[i].active || Main.popupText[i].notActuallyAnItem || (!(Main.popupText[i].name == newItem.AffixName()) && (!flag || !Main.popupText[i].coinText)) || Main.popupText[i].NoStack || noStack) { continue; } string text = newItem.Name + " (" + (Main.popupText[i].stack + stack) + ")"; string text2 = newItem.Name; if (Main.popupText[i].stack > 1) { text2 = text2 + " (" + Main.popupText[i].stack + ")"; } Vector2 vector = FontAssets.MouseText.Value.MeasureString(text2); vector = FontAssets.MouseText.Value.MeasureString(text); if (Main.popupText[i].lifeTime < 0) { Main.popupText[i].scale = 1f; } if (Main.popupText[i].lifeTime < 60) { Main.popupText[i].lifeTime = 60; } if (flag && Main.popupText[i].coinText) { int num = 0; if (newItem.type == 71) { num += stack; } else if (newItem.type == 72) { num += 100 * stack; } else if (newItem.type == 73) { num += 10000 * stack; } else if (newItem.type == 74) { num += 1000000 * stack; } Main.popupText[i].coinValue += num; text = ValueToName(Main.popupText[i].coinValue); vector = FontAssets.MouseText.Value.MeasureString(text); Main.popupText[i].name = text; if (Main.popupText[i].coinValue >= 1000000) { if (Main.popupText[i].lifeTime < 300) { Main.popupText[i].lifeTime = 300; } Main.popupText[i].color = new Color(220, 220, 198); } else if (Main.popupText[i].coinValue >= 10000) { if (Main.popupText[i].lifeTime < 240) { Main.popupText[i].lifeTime = 240; } Main.popupText[i].color = new Color(224, 201, 92); } else if (Main.popupText[i].coinValue >= 100) { if (Main.popupText[i].lifeTime < 180) { Main.popupText[i].lifeTime = 180; } Main.popupText[i].color = new Color(181, 192, 193); } else if (Main.popupText[i].coinValue >= 1) { if (Main.popupText[i].lifeTime < 120) { Main.popupText[i].lifeTime = 120; } Main.popupText[i].color = new Color(246, 138, 96); } } Main.popupText[i].stack += stack; Main.popupText[i].scale = 0f; Main.popupText[i].rotation = 0f; Main.popupText[i].position.X = newItem.position.X + (float)newItem.width * 0.5f - vector.X * 0.5f; Main.popupText[i].position.Y = newItem.position.Y + (float)newItem.height * 0.25f - vector.Y * 0.5f; Main.popupText[i].velocity.Y = -7f; Main.popupText[i].context = context; Main.popupText[i].npcNetID = 0; if (Main.popupText[i].coinText) { Main.popupText[i].stack = 1; } return(i); } int num2 = FindNextItemTextSlot(); if (num2 >= 0) { string text3 = newItem.AffixName(); if (stack > 1) { text3 = text3 + " (" + stack + ")"; } Vector2 vector2 = FontAssets.MouseText.Value.MeasureString(text3); Main.popupText[num2].alpha = 1f; Main.popupText[num2].alphaDir = -1; Main.popupText[num2].active = true; Main.popupText[num2].scale = 0f; Main.popupText[num2].NoStack = noStack; Main.popupText[num2].rotation = 0f; Main.popupText[num2].position.X = newItem.position.X + (float)newItem.width * 0.5f - vector2.X * 0.5f; Main.popupText[num2].position.Y = newItem.position.Y + (float)newItem.height * 0.25f - vector2.Y * 0.5f; Main.popupText[num2].color = Color.White; Main.popupText[num2].master = false; if (newItem.rare == 1) { Main.popupText[num2].color = new Color(150, 150, 255); } else if (newItem.rare == 2) { Main.popupText[num2].color = new Color(150, 255, 150); } else if (newItem.rare == 3) { Main.popupText[num2].color = new Color(255, 200, 150); } else if (newItem.rare == 4) { Main.popupText[num2].color = new Color(255, 150, 150); } else if (newItem.rare == 5) { Main.popupText[num2].color = new Color(255, 150, 255); } else if (newItem.rare == -13) { Main.popupText[num2].master = true; } else if (newItem.rare == -11) { Main.popupText[num2].color = new Color(255, 175, 0); } else if (newItem.rare == -1) { Main.popupText[num2].color = new Color(130, 130, 130); } else if (newItem.rare == 6) { Main.popupText[num2].color = new Color(210, 160, 255); } else if (newItem.rare == 7) { Main.popupText[num2].color = new Color(150, 255, 10); } else if (newItem.rare == 8) { Main.popupText[num2].color = new Color(255, 255, 10); } else if (newItem.rare == 9) { Main.popupText[num2].color = new Color(5, 200, 255); } else if (newItem.rare == 10) { Main.popupText[num2].color = new Color(255, 40, 100); } else if (newItem.rare >= 11) { Main.popupText[num2].color = new Color(180, 40, 255); } Main.popupText[num2].expert = newItem.expert; Main.popupText[num2].name = newItem.AffixName(); Main.popupText[num2].stack = stack; Main.popupText[num2].velocity.Y = -7f; Main.popupText[num2].lifeTime = 60; Main.popupText[num2].context = context; Main.popupText[num2].npcNetID = 0; if (longText) { Main.popupText[num2].lifeTime *= 5; } Main.popupText[num2].coinValue = 0; Main.popupText[num2].coinText = newItem.type >= 71 && newItem.type <= 74; if (Main.popupText[num2].coinText) { if (newItem.type == 71) { Main.popupText[num2].coinValue += Main.popupText[num2].stack; } else if (newItem.type == 72) { Main.popupText[num2].coinValue += 100 * Main.popupText[num2].stack; } else if (newItem.type == 73) { Main.popupText[num2].coinValue += 10000 * Main.popupText[num2].stack; } else if (newItem.type == 74) { Main.popupText[num2].coinValue += 1000000 * Main.popupText[num2].stack; } Main.popupText[num2].ValueToName(); Main.popupText[num2].stack = 1; int num3 = num2; if (Main.popupText[num3].coinValue >= 1000000) { if (Main.popupText[num3].lifeTime < 300) { Main.popupText[num3].lifeTime = 300; } Main.popupText[num3].color = new Color(220, 220, 198); } else if (Main.popupText[num3].coinValue >= 10000) { if (Main.popupText[num3].lifeTime < 240) { Main.popupText[num3].lifeTime = 240; } Main.popupText[num3].color = new Color(224, 201, 92); } else if (Main.popupText[num3].coinValue >= 100) { if (Main.popupText[num3].lifeTime < 180) { Main.popupText[num3].lifeTime = 180; } Main.popupText[num3].color = new Color(181, 192, 193); } else if (Main.popupText[num3].coinValue >= 1) { if (Main.popupText[num3].lifeTime < 120) { Main.popupText[num3].lifeTime = 120; } Main.popupText[num3].color = new Color(246, 138, 96); } } } return(num2); }
/// <summary>HackedInventory - Checks to see if a user has a hacked inventory. In addition, messages players the result.</summary> /// <param name="player">player - The TSPlayer object.</param> /// <returns>bool - True if the player has a hacked inventory.</returns> public static bool HackedInventory(TSPlayer player) { bool check = false; Item[] inventory = player.TPlayer.inventory; Item[] armor = player.TPlayer.armor; Item[] dye = player.TPlayer.dye; Item[] miscEquips = player.TPlayer.miscEquips; Item[] miscDyes = player.TPlayer.miscDyes; Item[] piggy = player.TPlayer.bank.item; Item[] safe = player.TPlayer.bank2.item; Item trash = player.TPlayer.trashItem; for (int i = 0; i < NetItem.MaxInventory; i++) { if (i < NetItem.InventorySlots) { //0-58 Item item = new Item(); if (inventory[i] != null && inventory[i].netID != 0) { item.netDefaults(inventory[i].netID); item.Prefix(inventory[i].prefix); item.AffixName(); if (inventory[i].stack > item.maxStack) { check = true; player.SendMessage( String.Format("Stack cheat detected. Remove item {0} ({1}) and then rejoin", item.name, inventory[i].stack), Color.Cyan); } } } else if (i < NetItem.InventorySlots + NetItem.ArmorSlots) { //59-78 Item item = new Item(); var index = i - NetItem.InventorySlots; if (armor[index] != null && armor[index].netID != 0) { item.netDefaults(armor[index].netID); item.Prefix(armor[index].prefix); item.AffixName(); if (armor[index].stack > item.maxStack) { check = true; player.SendMessage( String.Format("Stack cheat detected. Remove armor {0} ({1}) and then rejoin", item.name, armor[index].stack), Color.Cyan); } } } else if (i < NetItem.InventorySlots + NetItem.ArmorSlots + NetItem.DyeSlots) { //79-88 Item item = new Item(); var index = i - (NetItem.InventorySlots + NetItem.ArmorSlots); if (dye[index] != null && dye[index].netID != 0) { item.netDefaults(dye[index].netID); item.Prefix(dye[index].prefix); item.AffixName(); if (dye[index].stack > item.maxStack) { check = true; player.SendMessage( String.Format("Stack cheat detected. Remove dye {0} ({1}) and then rejoin", item.name, dye[index].stack), Color.Cyan); } } } else if (i < NetItem.InventorySlots + NetItem.ArmorSlots + NetItem.DyeSlots + NetItem.MiscEquipSlots) { //89-93 Item item = new Item(); var index = i - (NetItem.InventorySlots + NetItem.ArmorSlots + NetItem.DyeSlots); if (miscEquips[index] != null && miscEquips[index].netID != 0) { item.netDefaults(miscEquips[index].netID); item.Prefix(miscEquips[index].prefix); item.AffixName(); if (miscEquips[index].stack > item.maxStack) { check = true; player.SendMessage( String.Format("Stack cheat detected. Remove item {0} ({1}) and then rejoin", item.name, miscEquips[index].stack), Color.Cyan); } } } else if (i < NetItem.InventorySlots + NetItem.ArmorSlots + NetItem.DyeSlots + NetItem.MiscEquipSlots + NetItem.MiscDyeSlots) { //93-98 Item item = new Item(); var index = i - (NetItem.InventorySlots + NetItem.ArmorSlots + NetItem.DyeSlots + NetItem.MiscEquipSlots); if (miscDyes[index] != null && miscDyes[index].netID != 0) { item.netDefaults(miscDyes[index].netID); item.Prefix(miscDyes[index].prefix); item.AffixName(); if (miscDyes[index].stack > item.maxStack) { check = true; player.SendMessage( String.Format("Stack cheat detected. Remove item dye {0} ({1}) and then rejoin", item.name, miscDyes[index].stack), Color.Cyan); } } } else if (i < NetItem.InventorySlots + NetItem.ArmorSlots + NetItem.DyeSlots + NetItem.MiscEquipSlots + NetItem.MiscDyeSlots + NetItem.PiggySlots) { //98-138 Item item = new Item(); var index = i - (NetItem.InventorySlots + NetItem.ArmorSlots + NetItem.DyeSlots + NetItem.MiscEquipSlots + NetItem.MiscDyeSlots); if (piggy[index] != null && piggy[index].netID != 0) { item.netDefaults(piggy[index].netID); item.Prefix(piggy[index].prefix); item.AffixName(); if (piggy[index].stack > item.maxStack) { check = true; player.SendMessage( String.Format("Stack cheat detected. Remove Piggy-bank item {0} ({1}) and then rejoin", item.name, piggy[index].stack), Color.Cyan); } } } else if (i < NetItem.InventorySlots + NetItem.ArmorSlots + NetItem.DyeSlots + NetItem.MiscEquipSlots + NetItem.MiscDyeSlots + NetItem.PiggySlots + NetItem.SafeSlots) { //138-178 Item item = new Item(); var index = i - (NetItem.InventorySlots + NetItem.ArmorSlots + NetItem.DyeSlots + NetItem.MiscEquipSlots + NetItem.MiscDyeSlots + NetItem.PiggySlots); if (safe[index] != null && safe[index].netID != 0) { item.netDefaults(safe[index].netID); item.Prefix(safe[index].prefix); item.AffixName(); if (safe[index].stack > item.maxStack) { check = true; player.SendMessage( String.Format("Stack cheat detected. Remove Safe item {0} ({1}) and then rejoin", item.name, safe[index].stack), Color.Cyan); } } } else { Item item = new Item(); if (trash != null && trash.netID != 0) { item.netDefaults(trash.netID); item.Prefix(trash.prefix); item.AffixName(); if (trash.stack > item.maxStack) { check = true; player.SendMessage( String.Format("Stack cheat detected. Remove trash item {0} ({1}) and then rejoin", item.name, trash.stack), Color.Cyan); } } } } return check; }
public static void NewText(Item newItem, int stack, bool noStack = false, bool longText = false) { bool flag = newItem.type >= 71 && newItem.type <= 74; if (!Main.showItemText) { return; } if (newItem.name == null || !newItem.active) { return; } if (Main.netMode == 2) { return; } for (int i = 0; i < 20; i++) { if (Main.itemText[i].active && (Main.itemText[i].name == newItem.AffixName() || (flag && Main.itemText[i].coinText)) && !Main.itemText[i].NoStack && !noStack) { string text = string.Concat(new object[] { newItem.name, " (", Main.itemText[i].stack + stack, ")" }); string text2 = newItem.name; if (Main.itemText[i].stack > 1) { object obj = text2; text2 = string.Concat(new object[] { obj, " (", Main.itemText[i].stack, ")" }); } Vector2 vector = Main.fontMouseText.MeasureString(text2); vector = Main.fontMouseText.MeasureString(text); if (Main.itemText[i].lifeTime < 0) { Main.itemText[i].scale = 1f; } if (Main.itemText[i].lifeTime < 60) { Main.itemText[i].lifeTime = 60; } if (flag && Main.itemText[i].coinText) { int num = 0; if (newItem.type == 71) { num += newItem.stack; } else if (newItem.type == 72) { num += 100 * newItem.stack; } else if (newItem.type == 73) { num += 10000 * newItem.stack; } else if (newItem.type == 74) { num += 1000000 * newItem.stack; } Main.itemText[i].coinValue += num; text = ItemText.ValueToName(Main.itemText[i].coinValue); vector = Main.fontMouseText.MeasureString(text); Main.itemText[i].name = text; if (Main.itemText[i].coinValue >= 1000000) { if (Main.itemText[i].lifeTime < 300) { Main.itemText[i].lifeTime = 300; } Main.itemText[i].color = new Color(220, 220, 198); } else if (Main.itemText[i].coinValue >= 10000) { if (Main.itemText[i].lifeTime < 240) { Main.itemText[i].lifeTime = 240; } Main.itemText[i].color = new Color(224, 201, 92); } else if (Main.itemText[i].coinValue >= 100) { if (Main.itemText[i].lifeTime < 180) { Main.itemText[i].lifeTime = 180; } Main.itemText[i].color = new Color(181, 192, 193); } else if (Main.itemText[i].coinValue >= 1) { if (Main.itemText[i].lifeTime < 120) { Main.itemText[i].lifeTime = 120; } Main.itemText[i].color = new Color(246, 138, 96); } } Main.itemText[i].stack += stack; Main.itemText[i].scale = 0f; Main.itemText[i].rotation = 0f; Main.itemText[i].position.X = newItem.position.X + (float)newItem.width * 0.5f - vector.X * 0.5f; Main.itemText[i].position.Y = newItem.position.Y + (float)newItem.height * 0.25f - vector.Y * 0.5f; Main.itemText[i].velocity.Y = -7f; if (Main.itemText[i].coinText) { Main.itemText[i].stack = 1; } return; } } int num2 = -1; for (int j = 0; j < 20; j++) { if (!Main.itemText[j].active) { num2 = j; break; } } if (num2 == -1) { double num3 = (double)Main.bottomWorld; for (int k = 0; k < 20; k++) { if (num3 > (double)Main.itemText[k].position.Y) { num2 = k; num3 = (double)Main.itemText[k].position.Y; } } } if (num2 >= 0) { string text3 = newItem.AffixName(); if (stack > 1) { object obj2 = text3; text3 = string.Concat(new object[] { obj2, " (", stack, ")" }); } Vector2 vector2 = Main.fontMouseText.MeasureString(text3); Main.itemText[num2].alpha = 1f; Main.itemText[num2].alphaDir = -1; Main.itemText[num2].active = true; Main.itemText[num2].scale = 0f; Main.itemText[num2].NoStack = noStack; Main.itemText[num2].rotation = 0f; Main.itemText[num2].position.X = newItem.position.X + (float)newItem.width * 0.5f - vector2.X * 0.5f; Main.itemText[num2].position.Y = newItem.position.Y + (float)newItem.height * 0.25f - vector2.Y * 0.5f; Main.itemText[num2].color = Color.White; if (newItem.rare == 1) { Main.itemText[num2].color = new Color(150, 150, 255); } else if (newItem.rare == 2) { Main.itemText[num2].color = new Color(150, 255, 150); } else if (newItem.rare == 3) { Main.itemText[num2].color = new Color(255, 200, 150); } else if (newItem.rare == 4) { Main.itemText[num2].color = new Color(255, 150, 150); } else if (newItem.rare == 5) { Main.itemText[num2].color = new Color(255, 150, 255); } else if (newItem.rare == -11) { Main.itemText[num2].color = new Color(255, 175, 0); } else if (newItem.rare == -1) { Main.itemText[num2].color = new Color(130, 130, 130); } else if (newItem.rare == 6) { Main.itemText[num2].color = new Color(210, 160, 255); } else if (newItem.rare == 7) { Main.itemText[num2].color = new Color(150, 255, 10); } else if (newItem.rare == 8) { Main.itemText[num2].color = new Color(255, 255, 10); } else if (newItem.rare == 9) { Main.itemText[num2].color = new Color(5, 200, 255); } else if (newItem.rare == 10) { Main.itemText[num2].color = new Color(255, 40, 100); } else if (newItem.rare >= 11) { Main.itemText[num2].color = new Color(180, 40, 255); } Main.itemText[num2].expert = newItem.expert; Main.itemText[num2].name = newItem.AffixName(); Main.itemText[num2].stack = stack; Main.itemText[num2].velocity.Y = -7f; Main.itemText[num2].lifeTime = 60; if (longText) { Main.itemText[num2].lifeTime *= 5; } Main.itemText[num2].coinValue = 0; Main.itemText[num2].coinText = (newItem.type >= 71 && newItem.type <= 74); if (Main.itemText[num2].coinText) { if (newItem.type == 71) { Main.itemText[num2].coinValue += Main.itemText[num2].stack; } else if (newItem.type == 72) { Main.itemText[num2].coinValue += 100 * Main.itemText[num2].stack; } else if (newItem.type == 73) { Main.itemText[num2].coinValue += 10000 * Main.itemText[num2].stack; } else if (newItem.type == 74) { Main.itemText[num2].coinValue += 1000000 * Main.itemText[num2].stack; } Main.itemText[num2].ValueToName(); Main.itemText[num2].stack = 1; int num4 = num2; if (Main.itemText[num4].coinValue >= 1000000) { if (Main.itemText[num4].lifeTime < 300) { Main.itemText[num4].lifeTime = 300; } Main.itemText[num4].color = new Color(220, 220, 198); return; } if (Main.itemText[num4].coinValue >= 10000) { if (Main.itemText[num4].lifeTime < 240) { Main.itemText[num4].lifeTime = 240; } Main.itemText[num4].color = new Color(224, 201, 92); return; } if (Main.itemText[num4].coinValue >= 100) { if (Main.itemText[num4].lifeTime < 180) { Main.itemText[num4].lifeTime = 180; } Main.itemText[num4].color = new Color(181, 192, 193); return; } if (Main.itemText[num4].coinValue >= 1) { if (Main.itemText[num4].lifeTime < 120) { Main.itemText[num4].lifeTime = 120; } Main.itemText[num4].color = new Color(246, 138, 96); } } } }
public void NewText(ref Item newItem, int stack) { if (view.ui.inventoryMode > 0 || !view.ui.showItemText || newItem.active == 0) { return; } int num = -1; for (int num2 = 3; num2 >= 0; num2--) { if (itemText[num2].active != 0) { if (itemText[num2].netID == newItem.netID && newItem.prefix == 0) { itemText[num2].stack += stack; Main.strBuilder.Length = 0; Main.strBuilder.Append(Lang.itemName(newItem.netID)); Main.strBuilder.Append(itemText[num2].stack.ToStackString()); Vector2 textSize = UI.fontSmallOutline.MeasureString(Main.strBuilder); itemText[num2].text = Main.strBuilder.ToString(); itemText[num2].textSize = textSize; itemText[num2].lifeTime = 56; itemText[num2].scale = 0f; itemText[num2].position.X = newItem.position.X + ((float)(int)newItem.width - textSize.X) * 0.5f; itemText[num2].position.Y = newItem.position.Y + (float)(newItem.height >> 2) - textSize.Y * 0.5f; itemText[num2].velocityY = -7f; return; } } else { num = num2; } } if (num < 0) { float num3 = Main.bottomWorld; for (int i = 0; i < 4; i++) { if (num3 > itemText[i].position.Y) { num = i; num3 = itemText[i].position.Y; } } } if (num >= 0) { string text = newItem.AffixName(); itemText[num].active = 1; itemText[num].lifeTime = 56; itemText[num].netID = newItem.netID; itemText[num].stack = stack; if (stack > 1) { text += stack.ToStackString(); } itemText[num].text = text; Vector2 textSize2 = UI.MeasureString(UI.fontSmallOutline, text); itemText[num].textSize = textSize2; itemText[num].alpha = 1f; itemText[num].alphaDir = -0.01f; itemText[num].scale = 0f; itemText[num].velocityY = -7f; itemText[num].position.X = newItem.position.X + (float)(int)newItem.width * 0.5f - textSize2.X * 0.5f; itemText[num].position.Y = newItem.position.Y + (float)(int)newItem.height * 0.25f - textSize2.Y * 0.5f; if (newItem.rare == 1) { itemText[num].color = new Color(150, 150, 255); } else if (newItem.rare == 2) { itemText[num].color = new Color(150, 255, 150); } else if (newItem.rare == 3) { itemText[num].color = new Color(255, 200, 150); } else if (newItem.rare == 4) { itemText[num].color = new Color(255, 150, 150); } else if (newItem.rare == 5) { itemText[num].color = new Color(255, 150, 255); } else if (newItem.rare == -1) { itemText[num].color = new Color(130, 130, 130); } else if (newItem.rare == 6) { itemText[num].color = new Color(210, 160, 255); } else { itemText[num].color = Color.White; } } }
/// <summary> /// Draws Item information at the mouse /// </summary> /// <param name="i">The Item to get the info from</param> public static void MouseText(Item i) { Main.toolTip = i; MouseText(i.AffixName() + (i.stack > 1 ? " (" + i.stack + ")" : "")); Main.toolTip = new Item(); }
public static void NewText(Item newItem, int stack, bool noStack = false, bool longText = false) { if (!Main.showItemText) { return; } if (newItem.name == null || !newItem.active) { return; } if (Main.netMode == 2) { return; } for (int i = 0; i < 20; i++) { if (Main.itemText[i].active && Main.itemText[i].name == newItem.name && !Main.itemText[i].NoStack && !noStack) { string text = string.Concat(new object[] { newItem.name, " (", Main.itemText[i].stack + stack, ")" }); string text2 = newItem.name; if (Main.itemText[i].stack > 1) { object obj = text2; text2 = string.Concat(new object[] { obj, " (", Main.itemText[i].stack, ")" }); } Vector2 vector = Main.fontMouseText.MeasureString(text2); vector = Main.fontMouseText.MeasureString(text); if (Main.itemText[i].lifeTime < 0) { Main.itemText[i].scale = 1f; } Main.itemText[i].lifeTime = 60; Main.itemText[i].stack += stack; Main.itemText[i].scale = 0f; Main.itemText[i].rotation = 0f; Main.itemText[i].position.X = newItem.position.X + (float)newItem.width * 0.5f - vector.X * 0.5f; Main.itemText[i].position.Y = newItem.position.Y + (float)newItem.height * 0.25f - vector.Y * 0.5f; Main.itemText[i].velocity.Y = -7f; return; } } int num = -1; for (int j = 0; j < 20; j++) { if (!Main.itemText[j].active) { num = j; break; } } if (num == -1) { double num2 = (double)Main.bottomWorld; for (int k = 0; k < 20; k++) { if (num2 > (double)Main.itemText[k].position.Y) { num = k; num2 = (double)Main.itemText[k].position.Y; } } } if (num >= 0) { string text3 = newItem.AffixName(); if (stack > 1) { object obj2 = text3; text3 = string.Concat(new object[] { obj2, " (", stack, ")" }); } Vector2 vector2 = Main.fontMouseText.MeasureString(text3); Main.itemText[num].alpha = 1f; Main.itemText[num].alphaDir = -1; Main.itemText[num].active = true; Main.itemText[num].scale = 0f; Main.itemText[num].NoStack = noStack; Main.itemText[num].rotation = 0f; Main.itemText[num].position.X = newItem.position.X + (float)newItem.width * 0.5f - vector2.X * 0.5f; Main.itemText[num].position.Y = newItem.position.Y + (float)newItem.height * 0.25f - vector2.Y * 0.5f; Main.itemText[num].color = Color.White; if (newItem.rare == 1) { Main.itemText[num].color = new Color(150, 150, 255); } else if (newItem.rare == 2) { Main.itemText[num].color = new Color(150, 255, 150); } else if (newItem.rare == 3) { Main.itemText[num].color = new Color(255, 200, 150); } else if (newItem.rare == 4) { Main.itemText[num].color = new Color(255, 150, 150); } else if (newItem.rare == 5) { Main.itemText[num].color = new Color(255, 150, 255); } else if (newItem.rare == -11) { Main.itemText[num].color = new Color(255, 175, 0); } else if (newItem.rare == -1) { Main.itemText[num].color = new Color(130, 130, 130); } else if (newItem.rare == 6) { Main.itemText[num].color = new Color(210, 160, 255); } else if (newItem.rare == 7) { Main.itemText[num].color = new Color(150, 255, 10); } else if (newItem.rare == 8) { Main.itemText[num].color = new Color(255, 255, 10); } else if (newItem.rare >= 9) { Main.itemText[num].color = new Color(5, 200, 255); } Main.itemText[num].name = newItem.AffixName(); Main.itemText[num].stack = stack; Main.itemText[num].velocity.Y = -7f; Main.itemText[num].lifeTime = 60; if (longText) { Main.itemText[num].lifeTime *= 5; } } }
public static void NewText(Item newItem, int stack, bool noStack = false, bool longText = false) { bool flag = newItem.itemId >= 71 && newItem.itemId <= 74; if (!Main.showItemText || newItem.name == null || (!newItem.active || Main.netMode == 2)) { return; } for (int index = 0; index < 20; ++index) { if (Main.itemText[index].active && (Main.itemText[index].name == newItem.AffixName() || flag && Main.itemText[index].coinText) && (!Main.itemText[index].NoStack && !noStack)) { string text1 = string.Concat(new object[4] { (object)newItem.name, (object)" (", (object)(Main.itemText[index].stack + stack), (object)")" }); string text2 = newItem.name; if (Main.itemText[index].stack > 1) { text2 = string.Concat(new object[4] { (object)text2, (object)" (", (object)Main.itemText[index].stack, (object)")" }); } Main.fontMouseText.MeasureString(text2); Vector2 vector2 = Main.fontMouseText.MeasureString(text1); if (Main.itemText[index].lifeTime < 0) { Main.itemText[index].scale = 1f; } if (Main.itemText[index].lifeTime < 60) { Main.itemText[index].lifeTime = 60; } if (flag && Main.itemText[index].coinText) { int num = 0; if (newItem.itemId == 71) { num += newItem.stack; } else if (newItem.itemId == 72) { num += 100 * newItem.stack; } else if (newItem.itemId == 73) { num += 10000 * newItem.stack; } else if (newItem.itemId == 74) { num += 1000000 * newItem.stack; } Main.itemText[index].coinValue += num; string text3 = ItemText.ValueToName(Main.itemText[index].coinValue); vector2 = Main.fontMouseText.MeasureString(text3); Main.itemText[index].name = text3; if (Main.itemText[index].coinValue >= 1000000) { if (Main.itemText[index].lifeTime < 300) { Main.itemText[index].lifeTime = 300; } Main.itemText[index].color = new Color(220, 220, 198); } else if (Main.itemText[index].coinValue >= 10000) { if (Main.itemText[index].lifeTime < 240) { Main.itemText[index].lifeTime = 240; } Main.itemText[index].color = new Color(224, 201, 92); } else if (Main.itemText[index].coinValue >= 100) { if (Main.itemText[index].lifeTime < 180) { Main.itemText[index].lifeTime = 180; } Main.itemText[index].color = new Color(181, 192, 193); } else if (Main.itemText[index].coinValue >= 1) { if (Main.itemText[index].lifeTime < 120) { Main.itemText[index].lifeTime = 120; } Main.itemText[index].color = new Color(246, 138, 96); } } Main.itemText[index].stack += stack; Main.itemText[index].scale = 0.0f; Main.itemText[index].rotation = 0.0f; Main.itemText[index].position.X = (float)((double)newItem.position.X + (double)newItem.width * 0.5 - (double)vector2.X * 0.5); Main.itemText[index].position.Y = (float)((double)newItem.position.Y + (double)newItem.height * 0.25 - (double)vector2.Y * 0.5); Main.itemText[index].velocity.Y = -7f; if (!Main.itemText[index].coinText) { return; } Main.itemText[index].stack = 1; return; } } int index1 = -1; for (int index2 = 0; index2 < 20; ++index2) { if (!Main.itemText[index2].active) { index1 = index2; break; } } if (index1 == -1) { double num = (double)Main.bottomWorld; for (int index2 = 0; index2 < 20; ++index2) { if (num > (double)Main.itemText[index2].position.Y) { index1 = index2; num = (double)Main.itemText[index2].position.Y; } } } if (index1 < 0) { return; } string text = newItem.AffixName(); if (stack > 1) { text = string.Concat(new object[4] { (object)text, (object)" (", (object)stack, (object)")" }); } Vector2 vector2_1 = Main.fontMouseText.MeasureString(text); Main.itemText[index1].alpha = 1f; Main.itemText[index1].alphaDir = -1; Main.itemText[index1].active = true; Main.itemText[index1].scale = 0.0f; Main.itemText[index1].NoStack = noStack; Main.itemText[index1].rotation = 0.0f; Main.itemText[index1].position.X = (float)((double)newItem.position.X + (double)newItem.width * 0.5 - (double)vector2_1.X * 0.5); Main.itemText[index1].position.Y = (float)((double)newItem.position.Y + (double)newItem.height * 0.25 - (double)vector2_1.Y * 0.5); Main.itemText[index1].color = Color.White; if (newItem.rare == 1) { Main.itemText[index1].color = new Color(150, 150, (int)byte.MaxValue); } else if (newItem.rare == 2) { Main.itemText[index1].color = new Color(150, (int)byte.MaxValue, 150); } else if (newItem.rare == 3) { Main.itemText[index1].color = new Color((int)byte.MaxValue, 200, 150); } else if (newItem.rare == 4) { Main.itemText[index1].color = new Color((int)byte.MaxValue, 150, 150); } else if (newItem.rare == 5) { Main.itemText[index1].color = new Color((int)byte.MaxValue, 150, (int)byte.MaxValue); } else if (newItem.rare == -11) { Main.itemText[index1].color = new Color((int)byte.MaxValue, 175, 0); } else if (newItem.rare == -1) { Main.itemText[index1].color = new Color(130, 130, 130); } else if (newItem.rare == 6) { Main.itemText[index1].color = new Color(210, 160, (int)byte.MaxValue); } else if (newItem.rare == 7) { Main.itemText[index1].color = new Color(150, (int)byte.MaxValue, 10); } else if (newItem.rare == 8) { Main.itemText[index1].color = new Color((int)byte.MaxValue, (int)byte.MaxValue, 10); } else if (newItem.rare == 9) { Main.itemText[index1].color = new Color(5, 200, (int)byte.MaxValue); } else if (newItem.rare == 10) { Main.itemText[index1].color = new Color((int)byte.MaxValue, 40, 100); } else if (newItem.rare >= 11) { Main.itemText[index1].color = new Color(180, 40, (int)byte.MaxValue); } Main.itemText[index1].expert = newItem.expert; Main.itemText[index1].name = newItem.AffixName(); Main.itemText[index1].stack = stack; Main.itemText[index1].velocity.Y = -7f; Main.itemText[index1].lifeTime = 60; if (longText) { Main.itemText[index1].lifeTime *= 5; } Main.itemText[index1].coinValue = 0; Main.itemText[index1].coinText = newItem.itemId >= 71 && newItem.itemId <= 74; if (!Main.itemText[index1].coinText) { return; } if (newItem.itemId == 71) { Main.itemText[index1].coinValue += Main.itemText[index1].stack; } else if (newItem.itemId == 72) { Main.itemText[index1].coinValue += 100 * Main.itemText[index1].stack; } else if (newItem.itemId == 73) { Main.itemText[index1].coinValue += 10000 * Main.itemText[index1].stack; } else if (newItem.itemId == 74) { Main.itemText[index1].coinValue += 1000000 * Main.itemText[index1].stack; } Main.itemText[index1].ValueToName(); Main.itemText[index1].stack = 1; int index3 = index1; if (Main.itemText[index3].coinValue >= 1000000) { if (Main.itemText[index3].lifeTime < 300) { Main.itemText[index3].lifeTime = 300; } Main.itemText[index3].color = new Color(220, 220, 198); } else if (Main.itemText[index3].coinValue >= 10000) { if (Main.itemText[index3].lifeTime < 240) { Main.itemText[index3].lifeTime = 240; } Main.itemText[index3].color = new Color(224, 201, 92); } else if (Main.itemText[index3].coinValue >= 100) { if (Main.itemText[index3].lifeTime < 180) { Main.itemText[index3].lifeTime = 180; } Main.itemText[index3].color = new Color(181, 192, 193); } else { if (Main.itemText[index3].coinValue < 1) { return; } if (Main.itemText[index3].lifeTime < 120) { Main.itemText[index3].lifeTime = 120; } Main.itemText[index3].color = new Color(246, 138, 96); } }
public static int NewText( PopupTextContext context, Item newItem, int stack, bool noStack = false, bool longText = false) { if (!Main.showItemText || newItem.Name == null || (!newItem.active || Main.netMode == 2)) { return(-1); } bool flag = newItem.type >= 71 && newItem.type <= 74; for (int index = 0; index < 20; ++index) { if (Main.popupText[index].active && !Main.popupText[index].notActuallyAnItem && (Main.popupText[index].name == newItem.AffixName() || flag && Main.popupText[index].coinText) && (!Main.popupText[index].NoStack && !noStack)) { string str1 = newItem.Name + " (" + (object)(Main.popupText[index].stack + stack) + ")"; string str2 = newItem.Name; if (Main.popupText[index].stack > 1) { str2 = str2 + " (" + (object)Main.popupText[index].stack + ")"; } FontAssets.MouseText.get_Value().MeasureString(str2); Vector2 vector2 = FontAssets.MouseText.get_Value().MeasureString(str1); if (Main.popupText[index].lifeTime < 0) { Main.popupText[index].scale = 1f; } if (Main.popupText[index].lifeTime < 60) { Main.popupText[index].lifeTime = 60; } if (flag && Main.popupText[index].coinText) { int num = 0; if (newItem.type == 71) { num += stack; } else if (newItem.type == 72) { num += 100 * stack; } else if (newItem.type == 73) { num += 10000 * stack; } else if (newItem.type == 74) { num += 1000000 * stack; } Main.popupText[index].coinValue += num; string name = PopupText.ValueToName(Main.popupText[index].coinValue); vector2 = FontAssets.MouseText.get_Value().MeasureString(name); Main.popupText[index].name = name; if (Main.popupText[index].coinValue >= 1000000) { if (Main.popupText[index].lifeTime < 300) { Main.popupText[index].lifeTime = 300; } Main.popupText[index].color = new Color(220, 220, 198); } else if (Main.popupText[index].coinValue >= 10000) { if (Main.popupText[index].lifeTime < 240) { Main.popupText[index].lifeTime = 240; } Main.popupText[index].color = new Color(224, 201, 92); } else if (Main.popupText[index].coinValue >= 100) { if (Main.popupText[index].lifeTime < 180) { Main.popupText[index].lifeTime = 180; } Main.popupText[index].color = new Color(181, 192, 193); } else if (Main.popupText[index].coinValue >= 1) { if (Main.popupText[index].lifeTime < 120) { Main.popupText[index].lifeTime = 120; } Main.popupText[index].color = new Color(246, 138, 96); } } Main.popupText[index].stack += stack; Main.popupText[index].scale = 0.0f; Main.popupText[index].rotation = 0.0f; Main.popupText[index].position.X = (float)((double)newItem.position.X + (double)newItem.width * 0.5 - (double)vector2.X * 0.5); Main.popupText[index].position.Y = (float)((double)newItem.position.Y + (double)newItem.height * 0.25 - (double)vector2.Y * 0.5); Main.popupText[index].velocity.Y = -7f; Main.popupText[index].context = context; Main.popupText[index].npcNetID = 0; if (Main.popupText[index].coinText) { Main.popupText[index].stack = 1; } return(index); } } int nextItemTextSlot = PopupText.FindNextItemTextSlot(); if (nextItemTextSlot >= 0) { string str = newItem.AffixName(); if (stack > 1) { str = str + " (" + (object)stack + ")"; } Vector2 vector2 = FontAssets.MouseText.get_Value().MeasureString(str); Main.popupText[nextItemTextSlot].alpha = 1f; Main.popupText[nextItemTextSlot].alphaDir = -1; Main.popupText[nextItemTextSlot].active = true; Main.popupText[nextItemTextSlot].scale = 0.0f; Main.popupText[nextItemTextSlot].NoStack = noStack; Main.popupText[nextItemTextSlot].rotation = 0.0f; Main.popupText[nextItemTextSlot].position.X = (float)((double)newItem.position.X + (double)newItem.width * 0.5 - (double)vector2.X * 0.5); Main.popupText[nextItemTextSlot].position.Y = (float)((double)newItem.position.Y + (double)newItem.height * 0.25 - (double)vector2.Y * 0.5); Main.popupText[nextItemTextSlot].color = Color.White; Main.popupText[nextItemTextSlot].master = false; if (newItem.rare == 1) { Main.popupText[nextItemTextSlot].color = new Color(150, 150, (int)byte.MaxValue); } else if (newItem.rare == 2) { Main.popupText[nextItemTextSlot].color = new Color(150, (int)byte.MaxValue, 150); } else if (newItem.rare == 3) { Main.popupText[nextItemTextSlot].color = new Color((int)byte.MaxValue, 200, 150); } else if (newItem.rare == 4) { Main.popupText[nextItemTextSlot].color = new Color((int)byte.MaxValue, 150, 150); } else if (newItem.rare == 5) { Main.popupText[nextItemTextSlot].color = new Color((int)byte.MaxValue, 150, (int)byte.MaxValue); } else if (newItem.rare == -13) { Main.popupText[nextItemTextSlot].master = true; } else if (newItem.rare == -11) { Main.popupText[nextItemTextSlot].color = new Color((int)byte.MaxValue, 175, 0); } else if (newItem.rare == -1) { Main.popupText[nextItemTextSlot].color = new Color(130, 130, 130); } else if (newItem.rare == 6) { Main.popupText[nextItemTextSlot].color = new Color(210, 160, (int)byte.MaxValue); } else if (newItem.rare == 7) { Main.popupText[nextItemTextSlot].color = new Color(150, (int)byte.MaxValue, 10); } else if (newItem.rare == 8) { Main.popupText[nextItemTextSlot].color = new Color((int)byte.MaxValue, (int)byte.MaxValue, 10); } else if (newItem.rare == 9) { Main.popupText[nextItemTextSlot].color = new Color(5, 200, (int)byte.MaxValue); } else if (newItem.rare == 10) { Main.popupText[nextItemTextSlot].color = new Color((int)byte.MaxValue, 40, 100); } else if (newItem.rare >= 11) { Main.popupText[nextItemTextSlot].color = new Color(180, 40, (int)byte.MaxValue); } Main.popupText[nextItemTextSlot].expert = newItem.expert; Main.popupText[nextItemTextSlot].name = newItem.AffixName(); Main.popupText[nextItemTextSlot].stack = stack; Main.popupText[nextItemTextSlot].velocity.Y = -7f; Main.popupText[nextItemTextSlot].lifeTime = 60; Main.popupText[nextItemTextSlot].context = context; Main.popupText[nextItemTextSlot].npcNetID = 0; if (longText) { Main.popupText[nextItemTextSlot].lifeTime *= 5; } Main.popupText[nextItemTextSlot].coinValue = 0; Main.popupText[nextItemTextSlot].coinText = newItem.type >= 71 && newItem.type <= 74; if (Main.popupText[nextItemTextSlot].coinText) { if (newItem.type == 71) { Main.popupText[nextItemTextSlot].coinValue += Main.popupText[nextItemTextSlot].stack; } else if (newItem.type == 72) { Main.popupText[nextItemTextSlot].coinValue += 100 * Main.popupText[nextItemTextSlot].stack; } else if (newItem.type == 73) { Main.popupText[nextItemTextSlot].coinValue += 10000 * Main.popupText[nextItemTextSlot].stack; } else if (newItem.type == 74) { Main.popupText[nextItemTextSlot].coinValue += 1000000 * Main.popupText[nextItemTextSlot].stack; } Main.popupText[nextItemTextSlot].ValueToName(); Main.popupText[nextItemTextSlot].stack = 1; int index = nextItemTextSlot; if (Main.popupText[index].coinValue >= 1000000) { if (Main.popupText[index].lifeTime < 300) { Main.popupText[index].lifeTime = 300; } Main.popupText[index].color = new Color(220, 220, 198); } else if (Main.popupText[index].coinValue >= 10000) { if (Main.popupText[index].lifeTime < 240) { Main.popupText[index].lifeTime = 240; } Main.popupText[index].color = new Color(224, 201, 92); } else if (Main.popupText[index].coinValue >= 100) { if (Main.popupText[index].lifeTime < 180) { Main.popupText[index].lifeTime = 180; } Main.popupText[index].color = new Color(181, 192, 193); } else if (Main.popupText[index].coinValue >= 1) { if (Main.popupText[index].lifeTime < 120) { Main.popupText[index].lifeTime = 120; } Main.popupText[index].color = new Color(246, 138, 96); } } } return(nextItemTextSlot); }
//public Terraria.Item GetN public List<string> Prefixes() { var result = new List<string> { string.Empty }; var curitem = new Terraria.Item(); curitem.name = ""; for (int prefix = 1; prefix < byte.MaxValue; prefix++) { curitem.prefix = (byte)prefix; string affixName = curitem.AffixName(); if (string.IsNullOrWhiteSpace(affixName)) break; result.Add(affixName); } return result; }
/// <summary> /// Gets a list of prefixes by name /// </summary> /// <param name="name">Name</param> /// <returns>List of prefix IDs</returns> public static List<int> GetPrefixByName(string name) { Item item = new Item(); item.SetDefaults(0); string lowerName = name.ToLower(); var found = new List<int>(); for (int i = FirstItemPrefix; i <= LastItemPrefix; i++) { item.prefix = (byte)i; string prefixName = item.AffixName().Trim().ToLower(); if (prefixName == lowerName) return new List<int>() { i }; else if (prefixName.StartsWith(lowerName)) // Partial match found.Add(i); } return found; }
/// <summary> /// Gets a prefix based on its id /// </summary> /// <param name="id">ID</param> /// <returns>Prefix name</returns> public static string GetPrefixById(int id) { var item = new Item(); item.SetDefaults(0); item.prefix = (byte)id; item.AffixName(); return item.name.Trim(); }
public static void NewText(Item newItem, int stack, bool noStack = false, bool longText = false) { bool flag = newItem.itemId >= 71 && newItem.itemId <= 74; if (!Main.showItemText || newItem.name == null || (!newItem.active || Main.netMode == 2)) return; for (int index = 0; index < 20; ++index) { if (Main.itemText[index].active && (Main.itemText[index].name == newItem.AffixName() || flag && Main.itemText[index].coinText) && (!Main.itemText[index].NoStack && !noStack)) { string text1 = string.Concat(new object[4] { (object) newItem.name, (object) " (", (object) (Main.itemText[index].stack + stack), (object) ")" }); string text2 = newItem.name; if (Main.itemText[index].stack > 1) text2 = string.Concat(new object[4] { (object) text2, (object) " (", (object) Main.itemText[index].stack, (object) ")" }); Main.fontMouseText.MeasureString(text2); Vector2 vector2 = Main.fontMouseText.MeasureString(text1); if (Main.itemText[index].lifeTime < 0) Main.itemText[index].scale = 1f; if (Main.itemText[index].lifeTime < 60) Main.itemText[index].lifeTime = 60; if (flag && Main.itemText[index].coinText) { int num = 0; if (newItem.itemId == 71) num += newItem.stack; else if (newItem.itemId == 72) num += 100 * newItem.stack; else if (newItem.itemId == 73) num += 10000 * newItem.stack; else if (newItem.itemId == 74) num += 1000000 * newItem.stack; Main.itemText[index].coinValue += num; string text3 = ItemText.ValueToName(Main.itemText[index].coinValue); vector2 = Main.fontMouseText.MeasureString(text3); Main.itemText[index].name = text3; if (Main.itemText[index].coinValue >= 1000000) { if (Main.itemText[index].lifeTime < 300) Main.itemText[index].lifeTime = 300; Main.itemText[index].color = new Color(220, 220, 198); } else if (Main.itemText[index].coinValue >= 10000) { if (Main.itemText[index].lifeTime < 240) Main.itemText[index].lifeTime = 240; Main.itemText[index].color = new Color(224, 201, 92); } else if (Main.itemText[index].coinValue >= 100) { if (Main.itemText[index].lifeTime < 180) Main.itemText[index].lifeTime = 180; Main.itemText[index].color = new Color(181, 192, 193); } else if (Main.itemText[index].coinValue >= 1) { if (Main.itemText[index].lifeTime < 120) Main.itemText[index].lifeTime = 120; Main.itemText[index].color = new Color(246, 138, 96); } } Main.itemText[index].stack += stack; Main.itemText[index].scale = 0.0f; Main.itemText[index].rotation = 0.0f; Main.itemText[index].position.X = (float)((double)newItem.position.X + (double)newItem.width * 0.5 - (double)vector2.X * 0.5); Main.itemText[index].position.Y = (float)((double)newItem.position.Y + (double)newItem.height * 0.25 - (double)vector2.Y * 0.5); Main.itemText[index].velocity.Y = -7f; if (!Main.itemText[index].coinText) return; Main.itemText[index].stack = 1; return; } } int index1 = -1; for (int index2 = 0; index2 < 20; ++index2) { if (!Main.itemText[index2].active) { index1 = index2; break; } } if (index1 == -1) { double num = (double)Main.bottomWorld; for (int index2 = 0; index2 < 20; ++index2) { if (num > (double)Main.itemText[index2].position.Y) { index1 = index2; num = (double)Main.itemText[index2].position.Y; } } } if (index1 < 0) return; string text = newItem.AffixName(); if (stack > 1) text = string.Concat(new object[4] { (object) text, (object) " (", (object) stack, (object) ")" }); Vector2 vector2_1 = Main.fontMouseText.MeasureString(text); Main.itemText[index1].alpha = 1f; Main.itemText[index1].alphaDir = -1; Main.itemText[index1].active = true; Main.itemText[index1].scale = 0.0f; Main.itemText[index1].NoStack = noStack; Main.itemText[index1].rotation = 0.0f; Main.itemText[index1].position.X = (float)((double)newItem.position.X + (double)newItem.width * 0.5 - (double)vector2_1.X * 0.5); Main.itemText[index1].position.Y = (float)((double)newItem.position.Y + (double)newItem.height * 0.25 - (double)vector2_1.Y * 0.5); Main.itemText[index1].color = Color.White; if (newItem.rare == 1) Main.itemText[index1].color = new Color(150, 150, (int)byte.MaxValue); else if (newItem.rare == 2) Main.itemText[index1].color = new Color(150, (int)byte.MaxValue, 150); else if (newItem.rare == 3) Main.itemText[index1].color = new Color((int)byte.MaxValue, 200, 150); else if (newItem.rare == 4) Main.itemText[index1].color = new Color((int)byte.MaxValue, 150, 150); else if (newItem.rare == 5) Main.itemText[index1].color = new Color((int)byte.MaxValue, 150, (int)byte.MaxValue); else if (newItem.rare == -11) Main.itemText[index1].color = new Color((int)byte.MaxValue, 175, 0); else if (newItem.rare == -1) Main.itemText[index1].color = new Color(130, 130, 130); else if (newItem.rare == 6) Main.itemText[index1].color = new Color(210, 160, (int)byte.MaxValue); else if (newItem.rare == 7) Main.itemText[index1].color = new Color(150, (int)byte.MaxValue, 10); else if (newItem.rare == 8) Main.itemText[index1].color = new Color((int)byte.MaxValue, (int)byte.MaxValue, 10); else if (newItem.rare == 9) Main.itemText[index1].color = new Color(5, 200, (int)byte.MaxValue); else if (newItem.rare == 10) Main.itemText[index1].color = new Color((int)byte.MaxValue, 40, 100); else if (newItem.rare >= 11) Main.itemText[index1].color = new Color(180, 40, (int)byte.MaxValue); Main.itemText[index1].expert = newItem.expert; Main.itemText[index1].name = newItem.AffixName(); Main.itemText[index1].stack = stack; Main.itemText[index1].velocity.Y = -7f; Main.itemText[index1].lifeTime = 60; if (longText) Main.itemText[index1].lifeTime *= 5; Main.itemText[index1].coinValue = 0; Main.itemText[index1].coinText = newItem.itemId >= 71 && newItem.itemId <= 74; if (!Main.itemText[index1].coinText) return; if (newItem.itemId == 71) Main.itemText[index1].coinValue += Main.itemText[index1].stack; else if (newItem.itemId == 72) Main.itemText[index1].coinValue += 100 * Main.itemText[index1].stack; else if (newItem.itemId == 73) Main.itemText[index1].coinValue += 10000 * Main.itemText[index1].stack; else if (newItem.itemId == 74) Main.itemText[index1].coinValue += 1000000 * Main.itemText[index1].stack; Main.itemText[index1].ValueToName(); Main.itemText[index1].stack = 1; int index3 = index1; if (Main.itemText[index3].coinValue >= 1000000) { if (Main.itemText[index3].lifeTime < 300) Main.itemText[index3].lifeTime = 300; Main.itemText[index3].color = new Color(220, 220, 198); } else if (Main.itemText[index3].coinValue >= 10000) { if (Main.itemText[index3].lifeTime < 240) Main.itemText[index3].lifeTime = 240; Main.itemText[index3].color = new Color(224, 201, 92); } else if (Main.itemText[index3].coinValue >= 100) { if (Main.itemText[index3].lifeTime < 180) Main.itemText[index3].lifeTime = 180; Main.itemText[index3].color = new Color(181, 192, 193); } else { if (Main.itemText[index3].coinValue < 1) return; if (Main.itemText[index3].lifeTime < 120) Main.itemText[index3].lifeTime = 120; Main.itemText[index3].color = new Color(246, 138, 96); } }
public static void NewText(Item newItem, int stack) { if ((Main.showItemText && ((newItem.name != null) && newItem.active)) && (Main.netMode != 2)) { for (int i = 0; i < 20; i++) { if (Main.itemText[i].active && (Main.itemText[i].name == newItem.name)) { string text = string.Concat(new object[] { newItem.name, " (", Main.itemText[i].stack + stack, ")" }); string name = newItem.name; if (Main.itemText[i].stack > 1) { object obj2 = name; name = string.Concat(new object[] { obj2, " (", Main.itemText[i].stack, ")" }); } Vector2 vector = Main.fontMouseText.MeasureString(name); vector = Main.fontMouseText.MeasureString(text); if (Main.itemText[i].lifeTime < 0) { Main.itemText[i].scale = 1f; } Main.itemText[i].lifeTime = 60; ItemText text1 = Main.itemText[i]; text1.stack += stack; Main.itemText[i].scale = 0f; Main.itemText[i].rotation = 0f; Main.itemText[i].position.X = (newItem.position.X + (newItem.width * 0.5f)) - (vector.X * 0.5f); Main.itemText[i].position.Y = (newItem.position.Y + (newItem.height * 0.25f)) - (vector.Y * 0.5f); Main.itemText[i].velocity.Y = -7f; return; } } int index = -1; for (int j = 0; j < 20; j++) { if (!Main.itemText[j].active) { index = j; break; } } if (index == -1) { double bottomWorld = Main.bottomWorld; for (int k = 0; k < 20; k++) { if (bottomWorld > Main.itemText[k].position.Y) { index = k; bottomWorld = Main.itemText[k].position.Y; } } } if (index >= 0) { string str3 = newItem.AffixName(); if (stack > 1) { object obj3 = str3; str3 = string.Concat(new object[] { obj3, " (", stack, ")" }); } Vector2 vector2 = Main.fontMouseText.MeasureString(str3); Main.itemText[index].alpha = 1f; Main.itemText[index].alphaDir = -1; Main.itemText[index].active = true; Main.itemText[index].scale = 0f; Main.itemText[index].rotation = 0f; Main.itemText[index].position.X = (newItem.position.X + (newItem.width * 0.5f)) - (vector2.X * 0.5f); Main.itemText[index].position.Y = (newItem.position.Y + (newItem.height * 0.25f)) - (vector2.Y * 0.5f); Main.itemText[index].color = Color.White; if (newItem.rare == 1) { Main.itemText[index].color = new Color(150, 150, 0xff); } else if (newItem.rare == 2) { Main.itemText[index].color = new Color(150, 0xff, 150); } else if (newItem.rare == 3) { Main.itemText[index].color = new Color(0xff, 200, 150); } else if (newItem.rare == 4) { Main.itemText[index].color = new Color(0xff, 150, 150); } else if (newItem.rare == 5) { Main.itemText[index].color = new Color(0xff, 150, 0xff); } else if (newItem.rare == -1) { Main.itemText[index].color = new Color(130, 130, 130); } else if (newItem.rare == 6) { Main.itemText[index].color = new Color(210, 160, 0xff); } Main.itemText[index].name = newItem.AffixName(); Main.itemText[index].stack = stack; Main.itemText[index].velocity.Y = -7f; Main.itemText[index].lifeTime = 60; } } }
public static bool CheckInventory(TSPlayer player) { PlayerData playerData = player.PlayerData; bool check = true; if (player.TPlayer.statLifeMax > playerData.maxHealth) { player.SendMessage("Error: Your max health exceeded (" + playerData.maxHealth + ") which is stored on server", Color.Cyan); check = false; } Item[] inventory = player.TPlayer.inventory; Item[] armor = player.TPlayer.armor; for (int i = 0; i < NetItem.maxNetInventory; i++) { if (i < 49) { Item item = new Item(); Item serverItem = new Item(); if (inventory[i] != null && inventory[i].netID != 0) { if (playerData.inventory[i].netID != inventory[i].netID) { item.netDefaults(inventory[i].netID); item.Prefix(inventory[i].prefix); item.AffixName(); player.SendMessage(player.IgnoreActionsForInventory = "Your item (" + item.name + ") needs to be deleted.", Color.Cyan); check = false; } else if (playerData.inventory[i].prefix != inventory[i].prefix) { item.netDefaults(inventory[i].netID); item.Prefix(inventory[i].prefix); item.AffixName(); player.SendMessage(player.IgnoreActionsForInventory = "Your item (" + item.name + ") needs to be deleted.", Color.Cyan); check = false; } else if (inventory[i].stack > playerData.inventory[i].stack) { item.netDefaults(inventory[i].netID); item.Prefix(inventory[i].prefix); item.AffixName(); player.SendMessage( player.IgnoreActionsForInventory = "Your item (" + item.name + ") (" + inventory[i].stack + ") needs to have it's stack decreased to (" + playerData.inventory[i].stack + ").", Color.Cyan); check = false; } } } else { Item item = new Item(); Item serverItem = new Item(); if (armor[i - 48] != null && armor[i - 48].netID != 0) { if (playerData.inventory[i].netID != armor[i - 48].netID) { item.netDefaults(armor[i - 48].netID); item.Prefix(armor[i - 48].prefix); item.AffixName(); player.SendMessage(player.IgnoreActionsForInventory = "Your armor (" + item.name + ") needs to be deleted.", Color.Cyan); check = false; } else if (playerData.inventory[i].prefix != armor[i - 48].prefix) { item.netDefaults(armor[i - 48].netID); item.Prefix(armor[i - 48].prefix); item.AffixName(); player.SendMessage(player.IgnoreActionsForInventory = "Your armor (" + item.name + ") needs to be deleted.", Color.Cyan); check = false; } else if (armor[i - 48].stack > playerData.inventory[i].stack) { item.netDefaults(armor[i - 48].netID); item.Prefix(armor[i - 48].prefix); item.AffixName(); player.SendMessage( player.IgnoreActionsForInventory = "Your armor (" + item.name + ") (" + inventory[i].stack + ") needs to have it's stack decreased to (" + playerData.inventory[i].stack + ").", Color.Cyan); check = false; } } } } return check; }
public static bool HackedInventory(TSPlayer player) { bool check = false; Item[] inventory = player.TPlayer.inventory; Item[] armor = player.TPlayer.armor; for (int i = 0; i < NetItem.maxNetInventory; i++) { if (i < 49) { Item item = new Item(); if (inventory[i] != null && inventory[i].netID != 0) { item.netDefaults(inventory[i].netID); item.Prefix(inventory[i].prefix); item.AffixName(); if (inventory[i].stack > item.maxStack) { check = true; player.SendMessage( String.Format("Stack cheat detected. Remove item {0} ({1}) and then rejoin", item.name, inventory[i].stack), Color.Cyan); } } } else { Item item = new Item(); if (armor[i - 48] != null && armor[i - 48].netID != 0) { item.netDefaults(armor[i - 48].netID); item.Prefix(armor[i - 48].prefix); item.AffixName(); if (armor[i - 48].stack > item.maxStack) { check = true; player.SendMessage( String.Format("Stack cheat detected. Remove armor {0} ({1}) and then rejoin", item.name, armor[i - 48].stack), Color.Cyan); } } } } return check; }
private Item[] DeepCopyItems( Item[] source ) { Item[] result = null; if ( source.Length > 0 ) { result = new Item[source.Length]; for ( int i = 0; i < source.Length; i++ ) { var oldItem = source[i]; if ( oldItem != null ) { var newItem = new Item(); newItem.netDefaults( oldItem.netID ); newItem.Prefix( oldItem.prefix ); newItem.AffixName(); //if ( oldItem.type != 0 ) // Log.Write( "DCI (id:" + ID + ") " + oldItem.name + "," + newItem.name + "," + oldItem.netID + "," + newItem.netID, LogLevel.Debug ); result[i] = newItem; result[i].stack = oldItem.stack; } // if } // for } // if return result; }
public static void NewText(Item newItem, int stack) { if (!Main.showItemText || newItem.name == null || !newItem.active || Main.netMode == 2) { return; } for (int i = 0; i < 20; i++) { if (Main.itemText[i].active && Main.itemText[i].name == newItem.name) { string text = newItem.name + " (" + (Main.itemText[i].stack + stack) + ")"; string text2 = newItem.name; if (Main.itemText[i].stack > 1) { object obj = text2; text2 = string.Concat(obj, " (", Main.itemText[i].stack, ")"); } Vector2 vector = Main.fontMouseText.MeasureString(text2); vector = Main.fontMouseText.MeasureString(text); if (Main.itemText[i].lifeTime < 0) { Main.itemText[i].scale = 1f; } Main.itemText[i].lifeTime = 60; Main.itemText[i].stack += stack; Main.itemText[i].scale = 0f; Main.itemText[i].rotation = 0f; Main.itemText[i].position.X = newItem.position.X + (float)newItem.width * 0.5f - vector.X * 0.5f; Main.itemText[i].position.Y = newItem.position.Y + (float)newItem.height * 0.25f - vector.Y * 0.5f; Main.itemText[i].velocity.Y = -7f; return; } } int num = -1; for (int j = 0; j < 20; j++) { if (!Main.itemText[j].active) { num = j; break; } } if (num == -1) { double num2 = Main.bottomWorld; for (int k = 0; k < 20; k++) { if (num2 > (double)Main.itemText[k].position.Y) { num = k; num2 = Main.itemText[k].position.Y; } } } if (num >= 0) { string text3 = newItem.AffixName(); if (stack > 1) { object obj2 = text3; text3 = string.Concat(obj2, " (", stack, ")"); } Vector2 vector2 = Main.fontMouseText.MeasureString(text3); Main.itemText[num].alpha = 1f; Main.itemText[num].alphaDir = -1; Main.itemText[num].active = true; Main.itemText[num].scale = 0f; Main.itemText[num].rotation = 0f; Main.itemText[num].position.X = newItem.position.X + (float)newItem.width * 0.5f - vector2.X * 0.5f; Main.itemText[num].position.Y = newItem.position.Y + (float)newItem.height * 0.25f - vector2.Y * 0.5f; Main.itemText[num].color = Color.White; if (Main.colorRarity.ContainsKey(newItem.rare)) { Main.itemText[num].color = new Color((int)Main.colorRarity[newItem.rare][0], (int)Main.colorRarity[newItem.rare][1], (int)Main.colorRarity[newItem.rare][2]); } Main.itemText[num].name = newItem.AffixName(); Main.itemText[num].stack = stack; Main.itemText[num].velocity.Y = -7f; Main.itemText[num].lifeTime = 60; } }
public static void NewText(Item newItem, int stack) { if (!Main.showItemText) { return; } if (newItem.name == null || !newItem.active) { return; } if (Main.netMode == 2) { return; } for (int i = 0; i < 20; i++) { if (Main.itemText[i].active && Main.itemText[i].name == newItem.name) { string text = string.Concat(new object[] { newItem.name, " (", Main.itemText[i].stack + stack, ")" }); string text2 = newItem.name; if (Main.itemText[i].stack > 1) { object obj = text2; text2 = string.Concat(new object[] { obj, " (", Main.itemText[i].stack, ")" }); } Vector2 vector = Main.fontMouseText.MeasureString(text2); vector = Main.fontMouseText.MeasureString(text); if (Main.itemText[i].lifeTime < 0) { Main.itemText[i].scale = 1f; } Main.itemText[i].lifeTime = 60; Main.itemText[i].stack += stack; Main.itemText[i].scale = 0f; Main.itemText[i].rotation = 0f; Main.itemText[i].position.X = newItem.position.X + (float)newItem.width * 0.5f - vector.X * 0.5f; Main.itemText[i].position.Y = newItem.position.Y + (float)newItem.height * 0.25f - vector.Y * 0.5f; Main.itemText[i].velocity.Y = -7f; return; } } int num = -1; for (int j = 0; j < 20; j++) { if (!Main.itemText[j].active) { num = j; break; } } if (num == -1) { double num2 = (double)Main.bottomWorld; for (int k = 0; k < 20; k++) { if (num2 > (double)Main.itemText[k].position.Y) { num = k; num2 = (double)Main.itemText[k].position.Y; } } } if (num >= 0) { string text3 = newItem.AffixName(); if (stack > 1) { object obj2 = text3; text3 = string.Concat(new object[] { obj2, " (", stack, ")" }); } Vector2 vector2 = Main.fontMouseText.MeasureString(text3); Main.itemText[num].alpha = 1f; Main.itemText[num].alphaDir = -1; Main.itemText[num].active = true; Main.itemText[num].scale = 0f; Main.itemText[num].rotation = 0f; Main.itemText[num].position.X = newItem.position.X + (float)newItem.width * 0.5f - vector2.X * 0.5f; Main.itemText[num].position.Y = newItem.position.Y + (float)newItem.height * 0.25f - vector2.Y * 0.5f; Main.itemText[num].color = Color.White; if (newItem.rare == 1) { Main.itemText[num].color = new Color(150, 150, 255); } else { if (newItem.rare == 2) { Main.itemText[num].color = new Color(150, 255, 150); } else { if (newItem.rare == 3) { Main.itemText[num].color = new Color(255, 200, 150); } else { if (newItem.rare == 4) { Main.itemText[num].color = new Color(255, 150, 150); } else { if (newItem.rare == 5) { Main.itemText[num].color = new Color(255, 150, 255); } else { if (newItem.rare == -1) { Main.itemText[num].color = new Color(130, 130, 130); } else { if (newItem.rare == 6) { Main.itemText[num].color = new Color(210, 160, 255); } else { if (newItem.rare == 7) { Main.itemText[num].color = new Color(150, 255, 10); } else { if (newItem.rare == 8) { Main.itemText[num].color = new Color(255, 255, 10); } else { if (newItem.rare >= 9) { Main.itemText[num].color = new Color(5, 200, 255); } } } } } } } } } } Main.itemText[num].name = newItem.AffixName(); Main.itemText[num].stack = stack; Main.itemText[num].velocity.Y = -7f; Main.itemText[num].lifeTime = 60; } }
private void NetHooks_GetData(GetDataEventArgs e) { switch (e.MsgID) { case PacketTypes.ChestGetContents: if (!e.Handled) using (var data = new MemoryStream(e.Msg.readBuffer, e.Index, e.Length)) { var reader = new BinaryReader(data); int x = reader.ReadInt32(); int y = reader.ReadInt32(); reader.Close(); int id = Terraria.Chest.FindChest(x, y); CPlayer player = Players[e.Msg.whoAmI]; TPPlayer tplayer = tPulse.Players[e.Msg.whoAmI]; if (id != -1) { Chest chest = ChestManager.GetChest(id); bool naggedAboutLock = false; switch (player.GetState()) { case SettingState.Setting: if (chest.HasOwner()) if (chest.IsOwnerConvert(player)) player.SendMessage("You already own this chest!", Color.Red); else { player.SendMessage("This chest is already owned by someone!", Color.Red); naggedAboutLock = true; } else { chest.SetID(id); chest.SetPosition(x, y); chest.SetOwner(player); chest.Lock(); player.SendMessage("This chest is now yours, and yours only.", Color.Red); } //end player setting player.SetState(SettingState.None); break; case SettingState.RegionSetting: if (chest.HasOwner()) if (chest.IsOwnerConvert(player)) if (chest.IsRegionLocked()) { chest.regionLock(false); player.SendMessage( "Region share disabled. This chest is now only yours. To fully remove protection use \"cunset\".", Color.Red); } else if (tPulse.Regions.InArea(x, y)) { chest.regionLock(true); player.SendMessage( "This chest is now shared between region users. Use this command again to disable it.", Color.Red); } else player.SendMessage( "You can region share chest only if the chest is inside region!", Color.Red); else { player.SendMessage("This chest isn't yours!", Color.Red); naggedAboutLock = true; } else if (tPulse.Regions.InArea(x, y)) { chest.SetID(id); chest.SetPosition(x, y); chest.SetOwner(player); chest.Lock(); chest.regionLock(true); player.SendMessage( "This chest is now shared between region users with you as owner. Use this command again to disable region sharing (You will still be owner).", Color.Red); } else player.SendMessage( "You can region share chest only if the chest is inside region!", Color.Red); //end player setting player.SetState(SettingState.None); break; case SettingState.PublicSetting: if (chest.HasOwner()) if (chest.IsOwnerConvert(player)) if (chest.IsLocked()) { chest.UnLock(); player.SendMessage( "This chest is now public! Use \"/cpset\" to set it private.", Color.Red); } else { chest.Lock(); player.SendMessage( "This chest is now private! Use \"/cpset\" to set it public.", Color.Red); } else { player.SendMessage("This chest isn't yours!", Color.Red); naggedAboutLock = true; } else { chest.SetID(id); chest.SetPosition(x, y); chest.SetOwner(player); player.SendMessage( "This chest is now yours. This chest is public. Use \"/cpset\" to set it private.", Color.Red); } break; case SettingState.Deleting: if (chest.HasOwner()) if (chest.IsOwnerConvert(player) || tplayer.Group.HasPermission("removechestprotection")) { chest.Reset(); player.SendMessage("This chest is no longer yours!", Color.Red); } else { player.SendMessage("This chest isn't yours!", Color.Red); naggedAboutLock = true; } else player.SendMessage("This chest is not protected!", Color.Red); //end player setting player.SetState(SettingState.None); break; case SettingState.PasswordSetting: if (chest.HasOwner()) if (chest.IsOwnerConvert(player)) { chest.SetPassword(player.PasswordForChest); player.SendMessage("This chest is now protected with password.", Color.Red); } else { player.SendMessage("This chest isn't yours!", Color.Red); naggedAboutLock = true; } else { chest.SetID(id); chest.SetPosition(x, y); chest.SetOwner(player); chest.Lock(); chest.SetPassword(player.PasswordForChest); player.SendMessage( "This chest is now protected with password, with you as owner.", Color.Red); } //end player setting player.SetState(SettingState.None); break; case SettingState.PasswordUnSetting: if (chest.HasOwner()) if (chest.IsOwnerConvert(player)) { chest.SetPassword(""); player.SendMessage("This chest password has been removed.", Color.Red); } else { player.SendMessage("This chest isn't yours!", Color.Red); naggedAboutLock = true; } else player.SendMessage("This chest is not protected!", Color.Red); //end player setting player.SetState(SettingState.None); break; case SettingState.RefillSetting: if (chest.HasOwner()) if (chest.IsOwnerConvert(player)) { chest.SetRefill(true); player.SendMessage("This chest is will now always refill with items.", Color.Red); } else { player.SendMessage("This chest isn't yours!", Color.Red); naggedAboutLock = true; } else { chest.SetID(id); chest.SetPosition(x, y); chest.SetOwner(player); chest.SetRefill(true); player.SendMessage( "This chest is will now always refill with items, with you as owner.", Color.Red); } //end player setting player.SetState(SettingState.None); break; case SettingState.RefillUnSetting: if (chest.IsRefill()) if (chest.HasOwner()) if (chest.IsOwnerConvert(player)) { chest.SetRefill(false); player.SendMessage( "This chest is will no longer refill with items.", Color.Red); } else { player.SendMessage("This chest isn't yours!", Color.Red); naggedAboutLock = true; } else { chest.SetID(id); chest.SetPosition(x, y); chest.SetOwner(player); chest.SetRefill(false); player.SendMessage("This chest is will no longer refill with items", Color.Red); } else player.SendMessage("This chest is not refilling!", Color.Red); //end player setting player.SetState(SettingState.None); break; case SettingState.UnLocking: if (chest.HasOwner()) if (chest.IsLocked()) if (chest.GetPassword() == "") { player.SendMessage("This chest can't be unlocked with password!", Color.Red); naggedAboutLock = true; } else if (chest.IsOwnerConvert(player)) player.SendMessage( "You are owner of this chest, you dont need to unlock it. If you want to remove password use \"/lockchest remove\".", Color.Red); else if (player.HasAccessToChest(chest.GetID())) player.SendMessage("You already have access to this chest!", Color.Red); else if (chest.CheckPassword(player.PasswordForChest)) { player.UnlockedChest(chest.GetID()); player.SendMessage( "Chest unlocked! When you leave game you must unlock it again.", Color.Red); } else { player.SendMessage("Wrong password for chest!", Color.Red); naggedAboutLock = true; } else player.SendMessage("This chest is not locked!", Color.Red); else player.SendMessage("This chest is not protected!", Color.Red); //end player setting player.SetState(SettingState.None); break; } if (tplayer.Group.HasPermission("showchestinfo")) //if player should see chest info player.SendMessage( string.Format( "Chest Owner: {0} || Public: {1} || RegionShare: {2} || Password: {3} || Refill: {4}", chest.GetOwner() == "" ? "-None-" : chest.GetOwner(), chest.IsLocked() ? "No" : "Yes", chest.IsRegionLocked() ? "Yes" : "No", chest.GetPassword() == "" ? "No" : "Yes", chest.IsRefill() ? "Yes" : "No"), Color.Yellow); if (!tplayer.Group.HasPermission("openallchests") && !chest.IsOpenFor(player)) //if player doesnt has permission to see inside chest, then break and message { e.Handled = true; if (!naggedAboutLock) player.SendMessage( chest.GetPassword() != "" ? "This chest is magically locked with password. ( Use \"/cunlock PASSWORD\" to unlock it. )" : "This chest is magically locked.", Color.IndianRed); return; } } if (player.GetState() != SettingState.None) //if player is still setting something - end his setting player.SetState(SettingState.None); } break; case PacketTypes.TileKill: case PacketTypes.Tile: using (var data = new MemoryStream(e.Msg.readBuffer, e.Index, e.Length)) try { var reader = new BinaryReader(data); if (e.MsgID == PacketTypes.Tile) { byte type = reader.ReadByte(); if (!(type == 0 || type == 4)) return; } int x = reader.ReadInt32(); int y = reader.ReadInt32(); reader.Close(); if (Chest.TileIsChest(x, y)) //if is Chest { int id = Terraria.Chest.FindChest(x, y); CPlayer player = Players[e.Msg.whoAmI]; TPPlayer tplayer = tPulse.Players[e.Msg.whoAmI]; //dirty fix for finding chest, try to find chest point around if (id == -1) try { id = Terraria.Chest.FindChest(x - 1, y); //search one tile left if (id == -1) { id = Terraria.Chest.FindChest(x - 1, y - 1); //search one tile left and one tile up if (id == -1) id = Terraria.Chest.FindChest(x, y - 1); //search one tile up } } catch (Exception ex) { Log.Write(ex.ToString(), LogLevel.Error); } if (id != -1) //if have found chest { Chest chest = ChestManager.GetChest(id); if (chest.HasOwner()) //if owned stop removing { if (tplayer.Group.HasPermission("removechestprotection") || chest.IsOwnerConvert(player)) //display more verbose info to player who has permission to remove protection on this chest player.SendMessage( "This chest is protected. To remove it, first remove protection using \"/cunset\" command.", Color.Red); else player.SendMessage("This chest is protected!", Color.Red); player.SendTileSquare(x, y); e.Handled = true; } } } } catch (Exception ex) { Log.Write(ex.ToString(), LogLevel.Error); } break; case PacketTypes.ChestItem: using (var data = new MemoryStream(e.Msg.readBuffer, e.Index, e.Length)) { var reader = new BinaryReader(data); short id = reader.ReadInt16(); byte slot = reader.ReadByte(); byte stack = reader.ReadByte(); byte prefix = reader.ReadByte(); short type = reader.ReadByte(); if (id != -1) { Chest chest = ChestManager.GetChest(id); if (chest.IsRefill()) e.Handled = true; if (!e.Handled) { var item = Main.chest[id].item[slot]; var newitem = new Item(); newitem.netDefaults(type); newitem.Prefix(prefix); newitem.AffixName(); Log.Write(string.Format("{0}({1}) in slot {2} in chest at {3}x{4} was modified to {5}({6}) by {7}", item.name, item.stack, slot, Main.chest[id].x, Main.chest[id].y, newitem.name, stack, tPulse.Players[e.Msg.whoAmI].UserAccountName), LogLevel.Info, false); } } } break; } }
public static void NewText(Item newItem, int stack, bool noStack = false, bool longText = false) { bool flag = newItem.type >= 71 && newItem.type <= 74; if (!Main.showItemText || newItem.Name == null || !newItem.active || Main.netMode == 2) { return; } for (int i = 0; i < 20; i++) { if (!Main.itemText[i].active || (!(Main.itemText[i].name == newItem.AffixName()) && (!flag || !Main.itemText[i].coinText)) || Main.itemText[i].NoStack || noStack) { continue; } string text = newItem.Name + " (" + (Main.itemText[i].stack + stack) + ")"; string text2 = newItem.Name; if (Main.itemText[i].stack > 1) { object obj = text2; text2 = string.Concat(obj, " (", Main.itemText[i].stack, ")"); } Vector2 vector = Main.fontMouseText.MeasureString(text2); vector = Main.fontMouseText.MeasureString(text); if (Main.itemText[i].lifeTime < 0) { Main.itemText[i].scale = 1f; } if (Main.itemText[i].lifeTime < 60) { Main.itemText[i].lifeTime = 60; } if (flag && Main.itemText[i].coinText) { int num = 0; if (newItem.type == 71) { num += newItem.stack; } else if (newItem.type == 72) { num += 100 * newItem.stack; } else if (newItem.type == 73) { num += 10000 * newItem.stack; } else if (newItem.type == 74) { num += 1000000 * newItem.stack; } Main.itemText[i].coinValue += num; text = ValueToName(Main.itemText[i].coinValue); vector = Main.fontMouseText.MeasureString(text); Main.itemText[i].name = text; if (Main.itemText[i].coinValue >= 1000000) { if (Main.itemText[i].lifeTime < 300) { Main.itemText[i].lifeTime = 300; } Main.itemText[i].color = new Color(220, 220, 198); } else if (Main.itemText[i].coinValue >= 10000) { if (Main.itemText[i].lifeTime < 240) { Main.itemText[i].lifeTime = 240; } Main.itemText[i].color = new Color(224, 201, 92); } else if (Main.itemText[i].coinValue >= 100) { if (Main.itemText[i].lifeTime < 180) { Main.itemText[i].lifeTime = 180; } Main.itemText[i].color = new Color(181, 192, 193); } else if (Main.itemText[i].coinValue >= 1) { if (Main.itemText[i].lifeTime < 120) { Main.itemText[i].lifeTime = 120; } Main.itemText[i].color = new Color(246, 138, 96); } } Main.itemText[i].stack += stack; Main.itemText[i].scale = 0f; Main.itemText[i].rotation = 0f; Main.itemText[i].position.X = newItem.position.X + (float)newItem.width * 0.5f - vector.X * 0.5f; Main.itemText[i].position.Y = newItem.position.Y + (float)newItem.height * 0.25f - vector.Y * 0.5f; Main.itemText[i].velocity.Y = -7f; if (Main.itemText[i].coinText) { Main.itemText[i].stack = 1; } return; } int num2 = -1; for (int j = 0; j < 20; j++) { if (!Main.itemText[j].active) { num2 = j; break; } } if (num2 == -1) { double num3 = Main.bottomWorld; for (int k = 0; k < 20; k++) { if (num3 > (double)Main.itemText[k].position.Y) { num2 = k; num3 = Main.itemText[k].position.Y; } } } if (num2 < 0) { return; } string text3 = newItem.AffixName(); if (stack > 1) { object obj2 = text3; text3 = string.Concat(obj2, " (", stack, ")"); } Vector2 vector2 = Main.fontMouseText.MeasureString(text3); Main.itemText[num2].alpha = 1f; Main.itemText[num2].alphaDir = -1; Main.itemText[num2].active = true; Main.itemText[num2].scale = 0f; Main.itemText[num2].NoStack = noStack; Main.itemText[num2].rotation = 0f; Main.itemText[num2].position.X = newItem.position.X + (float)newItem.width * 0.5f - vector2.X * 0.5f; Main.itemText[num2].position.Y = newItem.position.Y + (float)newItem.height * 0.25f - vector2.Y * 0.5f; Main.itemText[num2].color = Color.White; if (newItem.rare == 1) { Main.itemText[num2].color = new Color(150, 150, 255); } else if (newItem.rare == 2) { Main.itemText[num2].color = new Color(150, 255, 150); } else if (newItem.rare == 3) { Main.itemText[num2].color = new Color(255, 200, 150); } else if (newItem.rare == 4) { Main.itemText[num2].color = new Color(255, 150, 150); } else if (newItem.rare == 5) { Main.itemText[num2].color = new Color(255, 150, 255); } else if (newItem.rare == -11) { Main.itemText[num2].color = new Color(255, 175, 0); } else if (newItem.rare == -1) { Main.itemText[num2].color = new Color(130, 130, 130); } else if (newItem.rare == 6) { Main.itemText[num2].color = new Color(210, 160, 255); } else if (newItem.rare == 7) { Main.itemText[num2].color = new Color(150, 255, 10); } else if (newItem.rare == 8) { Main.itemText[num2].color = new Color(255, 255, 10); } else if (newItem.rare == 9) { Main.itemText[num2].color = new Color(5, 200, 255); } else if (newItem.rare == 10) { Main.itemText[num2].color = new Color(255, 40, 100); } else if (newItem.rare >= 11) { Main.itemText[num2].color = new Color(180, 40, 255); } Main.itemText[num2].expert = newItem.expert; Main.itemText[num2].name = newItem.AffixName(); Main.itemText[num2].stack = stack; Main.itemText[num2].velocity.Y = -7f; Main.itemText[num2].lifeTime = 60; if (longText) { Main.itemText[num2].lifeTime *= 5; } Main.itemText[num2].coinValue = 0; Main.itemText[num2].coinText = (newItem.type >= 71 && newItem.type <= 74); if (!Main.itemText[num2].coinText) { return; } if (newItem.type == 71) { Main.itemText[num2].coinValue += Main.itemText[num2].stack; } else if (newItem.type == 72) { Main.itemText[num2].coinValue += 100 * Main.itemText[num2].stack; } else if (newItem.type == 73) { Main.itemText[num2].coinValue += 10000 * Main.itemText[num2].stack; } else if (newItem.type == 74) { Main.itemText[num2].coinValue += 1000000 * Main.itemText[num2].stack; } Main.itemText[num2].ValueToName(); Main.itemText[num2].stack = 1; int num4 = num2; if (Main.itemText[num4].coinValue >= 1000000) { if (Main.itemText[num4].lifeTime < 300) { Main.itemText[num4].lifeTime = 300; } Main.itemText[num4].color = new Color(220, 220, 198); } else if (Main.itemText[num4].coinValue >= 10000) { if (Main.itemText[num4].lifeTime < 240) { Main.itemText[num4].lifeTime = 240; } Main.itemText[num4].color = new Color(224, 201, 92); } else if (Main.itemText[num4].coinValue >= 100) { if (Main.itemText[num4].lifeTime < 180) { Main.itemText[num4].lifeTime = 180; } Main.itemText[num4].color = new Color(181, 192, 193); } else if (Main.itemText[num4].coinValue >= 1) { if (Main.itemText[num4].lifeTime < 120) { Main.itemText[num4].lifeTime = 120; } Main.itemText[num4].color = new Color(246, 138, 96); } }
// ParseData +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ private void ParseData( GetDataEventArgs args ) { try { PacketTypes packet = args.MsgID; using ( var data = new MemoryStream( args.Msg.readBuffer, args.Index, args.Length ) ) { TSPlayer player = TShock.Players[args.Msg.whoAmI]; switch ( packet ) { case PacketTypes.ChestItem: { string action, itemName; short chestID = data.ReadInt16(); byte itemSlot = data.ReadInt8(); byte itemStack = data.ReadInt8(); byte prefix = data.ReadInt8(); short itemType = data.ReadInt16(); var oldItem = Main.chest[chestID].item[itemSlot]; if ( oldItem.name != null && oldItem.name.Length > 0 ) { action = "cGet"; itemName = oldItem.name; } // if else { var newItem = new Item(); newItem.netDefaults( itemType ); newItem.Prefix( prefix ); newItem.AffixName(); action = "cPut"; itemName = newItem.name; } // else if ( itemType != prevItemType ) { _ircClient.SendMessage( SendType.Message, _actionChannel, string.Format( "{0} ({1}): {2}: {3}", player.Name, player.Group.Name, action, itemName ) ); prevItemType = itemType; } // if break; } // case } // switch } // using } // try catch ( Exception exception ) { Console.WriteLine( exception.Message + "(" + exception.StackTrace + ")" ); } // catch }