Пример #1
0
        public override void AddRecipeGroups()
        {
            // I'm using this as a PostPostSetupContent so all mods are loaded before I access bannerToItem
            Tiles.BannerRackTE.itemToBanner.Clear();
            FieldInfo             bannerToItemField = typeof(NPCLoader).GetField("bannerToItem", BindingFlags.NonPublic | BindingFlags.Static);
            Dictionary <int, int> bannerToItem      = (Dictionary <int, int>)bannerToItemField.GetValue(null);

            foreach (var item in bannerToItem)
            {
                if (Tiles.BannerRackTE.itemToBanner.ContainsKey(item.Value))
                {
                    Logger.Warn($"BannerBonanza: Warning, multiple BannerIDs pointing to same ItemID: Banners:{Lang.GetNPCNameValue(item.Key)},{Lang.GetNPCNameValue(BannerRackTE.itemToBanner[item.Value])} Item:{Lang.GetItemNameValue(item.Value)}");
                }
                else
                {
                    Tiles.BannerRackTE.itemToBanner.Add(item.Value, item.Key);
                }
            }

            for (int i = -10; i < NPCID.Count; i++)
            {
                int vanillaBannerID = Terraria.Item.NPCtoBanner(i);
                if (vanillaBannerID > 0 && !NPCID.Sets.ExcludedFromDeathTally[NPCID.FromNetId(i)])
                {
                    int vanillaBannerItemID = Item.BannerToItem(vanillaBannerID);
                    if (ItemID.Sets.BannerStrength[vanillaBannerItemID].Enabled)
                    {
                        if (!Tiles.BannerRackTE.itemToBanner.ContainsKey(vanillaBannerItemID))
                        {
                            Tiles.BannerRackTE.itemToBanner.Add(vanillaBannerItemID, vanillaBannerID);
                        }
                    }
                }
            }
        }
Пример #2
0
 public static void InitializeLegacyLocalization()
 {
     Lang.FillNameCacheArray <PrefixID, int>("Prefix", Lang.prefix, false);
     for (int index = 0; index < Lang.gen.Length; ++index)
     {
         Lang.gen[index] = Language.GetText("LegacyWorldGen." + (object)index);
     }
     for (int index = 0; index < Lang.menu.Length; ++index)
     {
         Lang.menu[index] = Language.GetText("LegacyMenu." + (object)index);
     }
     for (int index = 0; index < Lang.inter.Length; ++index)
     {
         Lang.inter[index] = Language.GetText("LegacyInterface." + (object)index);
     }
     for (int index = 0; index < Lang.misc.Length; ++index)
     {
         Lang.misc[index] = Language.GetText("LegacyMisc." + (object)index);
     }
     for (int index = 0; index < Lang.mp.Length; ++index)
     {
         Lang.mp[index] = Language.GetText("LegacyMultiplayer." + (object)index);
     }
     for (int index = 0; index < Lang.tip.Length; ++index)
     {
         Lang.tip[index] = Language.GetText("LegacyTooltip." + (object)index);
     }
     for (int index = 0; index < Lang.chestType.Length; ++index)
     {
         Lang.chestType[index] = Language.GetText("LegacyChestType." + (object)index);
     }
     for (int index = 0; index < Lang.chestType2.Length; ++index)
     {
         Lang.chestType2[index] = Language.GetText("LegacyChestType2." + (object)index);
     }
     for (int index = 0; index < Lang.dresserType.Length; ++index)
     {
         Lang.dresserType[index] = Language.GetText("LegacyDresserType." + (object)index);
     }
     Lang.FillNameCacheArray <ItemID, short>("ItemName", Lang._itemNameCache, false);
     Lang.FillNameCacheArray <ProjectileID, short>("ProjectileName", Lang._projectileNameCache, false);
     Lang.FillNameCacheArray <NPCID, short>("NPCName", Lang._npcNameCache, false);
     Lang.FillNameCacheArray <BuffID, int>("BuffName", Lang._buffNameCache, false);
     Lang.FillNameCacheArray <BuffID, int>("BuffDescription", Lang._buffDescriptionCache, false);
     for (int id = -65; id < 0; ++id)
     {
         Lang._negativeNpcNameCache[-id - 1] = Lang._npcNameCache[NPCID.FromNetId(id)];
     }
     Lang._negativeNpcNameCache[0]  = Language.GetText("NPCName.Slimeling");
     Lang._negativeNpcNameCache[1]  = Language.GetText("NPCName.Slimer2");
     Lang._negativeNpcNameCache[2]  = Language.GetText("NPCName.GreenSlime");
     Lang._negativeNpcNameCache[3]  = Language.GetText("NPCName.Pinky");
     Lang._negativeNpcNameCache[4]  = Language.GetText("NPCName.BabySlime");
     Lang._negativeNpcNameCache[5]  = Language.GetText("NPCName.BlackSlime");
     Lang._negativeNpcNameCache[6]  = Language.GetText("NPCName.PurpleSlime");
     Lang._negativeNpcNameCache[7]  = Language.GetText("NPCName.RedSlime");
     Lang._negativeNpcNameCache[8]  = Language.GetText("NPCName.YellowSlime");
     Lang._negativeNpcNameCache[9]  = Language.GetText("NPCName.JungleSlime");
     Lang._negativeNpcNameCache[53] = Language.GetText("NPCName.SmallRainZombie");
     Lang._negativeNpcNameCache[54] = Language.GetText("NPCName.BigRainZombie");
     ItemTooltip.AddGlobalProcessor((TooltipProcessor)(tooltip =>
     {
         if (tooltip.Contains("<right>"))
         {
             InputMode index = InputMode.XBoxGamepad;
             if (PlayerInput.UsingGamepad)
             {
                 index = InputMode.XBoxGamepadUI;
             }
             if (index == InputMode.XBoxGamepadUI)
             {
                 string newValue = PlayerInput.BuildCommand("", true, PlayerInput.CurrentProfile.InputModes[index].KeyStatus["MouseRight"]).Replace(": ", "");
                 tooltip = tooltip.Replace("<right>", newValue);
             }
             else
             {
                 tooltip = tooltip.Replace("<right>", Language.GetTextValue("Controls.RightClick"));
             }
         }
         return(tooltip);
     }));
     for (int index = 0; index < Lang._itemTooltipCache.Length; ++index)
     {
         Lang._itemTooltipCache[index] = ItemTooltip.None;
     }
     ((IEnumerable <FieldInfo>) typeof(ItemID).GetFields(BindingFlags.Static | BindingFlags.Public)).Where <FieldInfo>((Func <FieldInfo, bool>)(f => f.FieldType == typeof(short))).ToList <FieldInfo>().ForEach((Action <FieldInfo>)(field =>
     {
         short num = (short)field.GetValue((object)null);
         if ((int)num <= 0 || (int)num >= Lang._itemTooltipCache.Length)
         {
             return;
         }
         Lang._itemTooltipCache[(int)num] = ItemTooltip.FromLanguageKey("ItemTooltip." + field.Name);
     }));
 }
Пример #3
0
 public static void InitializeLegacyLocalization()
 {
     FillNameCacheArray <PrefixID, int>("Prefix", prefix);
     for (int i = 0; i < gen.Length; i++)
     {
         gen[i] = Language.GetText("LegacyWorldGen." + i);
     }
     for (int j = 0; j < menu.Length; j++)
     {
         menu[j] = Language.GetText("LegacyMenu." + j);
     }
     for (int k = 0; k < inter.Length; k++)
     {
         inter[k] = Language.GetText("LegacyInterface." + k);
     }
     for (int l = 0; l < misc.Length; l++)
     {
         misc[l] = Language.GetText("LegacyMisc." + l);
     }
     for (int m = 0; m < mp.Length; m++)
     {
         mp[m] = Language.GetText("LegacyMultiplayer." + m);
     }
     for (int n = 0; n < tip.Length; n++)
     {
         tip[n] = Language.GetText("LegacyTooltip." + n);
     }
     for (int num = 0; num < chestType.Length; num++)
     {
         chestType[num] = Language.GetText("LegacyChestType." + num);
     }
     for (int num2 = 0; num2 < chestType2.Length; num2++)
     {
         chestType2[num2] = Language.GetText("LegacyChestType2." + num2);
     }
     for (int num3 = 0; num3 < dresserType.Length; num3++)
     {
         dresserType[num3] = Language.GetText("LegacyDresserType." + num3);
     }
     FillNameCacheArray <ItemID, short>("ItemName", _itemNameCache);
     FillNameCacheArray <ProjectileID, short>("ProjectileName", _projectileNameCache);
     FillNameCacheArray <NPCID, short>("NPCName", _npcNameCache);
     FillNameCacheArray <BuffID, int>("BuffName", _buffNameCache);
     FillNameCacheArray <BuffID, int>("BuffDescription", _buffDescriptionCache);
     FillNameCacheArray <EmoteID, int>("EmojiName", _emojiNameCache, leaveMissingEntriesBlank: true);
     for (int num4 = -65; num4 < 0; num4++)
     {
         _negativeNpcNameCache[-num4 - 1] = _npcNameCache[NPCID.FromNetId(num4)];
     }
     _negativeNpcNameCache[0]  = Language.GetText("NPCName.Slimeling");
     _negativeNpcNameCache[1]  = Language.GetText("NPCName.Slimer2");
     _negativeNpcNameCache[2]  = Language.GetText("NPCName.GreenSlime");
     _negativeNpcNameCache[3]  = Language.GetText("NPCName.Pinky");
     _negativeNpcNameCache[4]  = Language.GetText("NPCName.BabySlime");
     _negativeNpcNameCache[5]  = Language.GetText("NPCName.BlackSlime");
     _negativeNpcNameCache[6]  = Language.GetText("NPCName.PurpleSlime");
     _negativeNpcNameCache[7]  = Language.GetText("NPCName.RedSlime");
     _negativeNpcNameCache[8]  = Language.GetText("NPCName.YellowSlime");
     _negativeNpcNameCache[9]  = Language.GetText("NPCName.JungleSlime");
     _negativeNpcNameCache[53] = Language.GetText("NPCName.SmallRainZombie");
     _negativeNpcNameCache[54] = Language.GetText("NPCName.BigRainZombie");
     ItemTooltip.AddGlobalProcessor(delegate(string tooltip)
     {
         if (tooltip.Contains("<right>"))
         {
             InputMode inputMode = InputMode.XBoxGamepad;
             if (PlayerInput.UsingGamepad)
             {
                 inputMode = InputMode.XBoxGamepadUI;
             }
             if (inputMode == InputMode.XBoxGamepadUI)
             {
                 KeyConfiguration keyConfiguration = PlayerInput.CurrentProfile.InputModes[inputMode];
                 string text = PlayerInput.BuildCommand("", true, keyConfiguration.KeyStatus["MouseRight"]);
                 text        = text.Replace(": ", "");
                 tooltip     = tooltip.Replace("<right>", text);
             }
             else
             {
                 tooltip = tooltip.Replace("<right>", Language.GetTextValue("Controls.RightClick"));
             }
         }
         if (tooltip.Contains("<left>"))
         {
             InputMode inputMode2 = InputMode.XBoxGamepad;
             if (PlayerInput.UsingGamepad)
             {
                 inputMode2 = InputMode.XBoxGamepadUI;
             }
             if (inputMode2 == InputMode.XBoxGamepadUI)
             {
                 KeyConfiguration keyConfiguration2 = PlayerInput.CurrentProfile.InputModes[inputMode2];
                 string text2 = PlayerInput.BuildCommand("", true, keyConfiguration2.KeyStatus["MouseLeft"]);
                 text2        = text2.Replace(": ", "");
                 tooltip      = tooltip.Replace("<left>", text2);
             }
             else
             {
                 tooltip = tooltip.Replace("<left>", Language.GetTextValue("Controls.LeftClick"));
             }
         }
         return(tooltip);
     });
     for (int num5 = 0; num5 < _itemTooltipCache.Length; num5++)
     {
         _itemTooltipCache[num5] = ItemTooltip.None;
     }
     (from f in typeof(ItemID).GetFields(BindingFlags.Static | BindingFlags.Public)
      where f.FieldType == typeof(short)
      select f).ToList().ForEach(delegate(FieldInfo field)
     {
         short num6 = (short)field.GetValue(null);
         if (num6 > 0 && num6 < _itemTooltipCache.Length)
         {
             _itemTooltipCache[num6] = ItemTooltip.FromLanguageKey("ItemTooltip." + field.Name);
         }
     });
 }
Пример #4
0
        private void PutItemsInSuperBannerTE(BannerRackTE superBannerTE, List <int> indexes, Player player)
        {
            if (Main.netMode == NetmodeID.MultiplayerClient)
            {
                // uh oh
                return;
            }
            bool added = false;

            foreach (int invIndex in indexes)
            {
                Item item = player.inventory[invIndex];
                if (!item.IsAir && BannerRackTE.itemToBanner.ContainsKey(item.type))
                {
                    if (!superBannerTE.bannerItems.Any(x => x.type == item.type))
                    {
                        added = true;
                        string message = $"Banner for {item.Name} added to Banner Rack";
                        NetMessage.BroadcastChatMessage(NetworkText.FromLiteral(message), Color.White);
                        //Main.NewText($"Banner for {item.Name} added to Banner Rack");
                        Item clone = item.Clone();
                        clone.stack = 1;
                        item.stack--;
                        if (item.IsAir)
                        {
                            item.SetDefaults(0);
                        }
                        //bool updateNeeded = superBannerTE.bannerItems.Count < 1;
                        superBannerTE.bannerItems.Add(clone);
                        //superBannerTE.stringUpToDate = false;
                        //if(updateNeeded)
                        //	superBannerTE.UpdateDrawItemIndexes();
                    }
                }
            }
            if (!added)
            {
                string message = $"No new Banners to add to Banner Rack";
                //Main.NewText($"No new Banners to add to Banner Rack");
                NetMessage.SendChatMessageToClient(NetworkText.FromLiteral(message), Color.White, player.whoAmI);
                // find closest npc that I don't have banner for.
                //player.NPCBannerBuff
                int nextNPCToKill     = -1;
                int nextNPCToKillLeft = 9999;
                for (int npctype = -10; npctype < NPCLoader.NPCCount; npctype++)
                {
                    int vanillaBannerID = Terraria.Item.NPCtoBanner(npctype);
                    if (vanillaBannerID > 0 && !NPCID.Sets.ExcludedFromDeathTally[NPCID.FromNetId(npctype)])
                    {
                        int vanillaBannerItemID = Item.BannerToItem(vanillaBannerID);
                        if (ItemID.Sets.BannerStrength[vanillaBannerItemID].Enabled)
                        {
                            int killsToBanner = ItemID.Sets.KillsToBanner[vanillaBannerItemID];
                            int killsLeft     = killsToBanner - (NPC.killCount[vanillaBannerID] % killsToBanner);

                            if (killsLeft < nextNPCToKillLeft && !superBannerTE.bannerItems.Any(x => x.type == vanillaBannerItemID))
                            {
                                nextNPCToKillLeft = killsLeft;
                                nextNPCToKill     = npctype;
                            }
                        }
                    }
                }
                if (nextNPCToKill != -1)
                {
                    message = $"Try killing {nextNPCToKillLeft} more {Lang.GetNPCNameValue(nextNPCToKill)}";
                    NetMessage.SendChatMessageToClient(NetworkText.FromLiteral(message), Color.White, player.whoAmI);
                    //Main.NewText($"Try killing {nextNPCToKillLeft} more {Lang.GetNPCNameValue(nextNPCToKill)}");
                }
            }
            else
            {
                superBannerTE.updateNeeded = true;
            }
        }
Пример #5
0
        public override void RightClick(int i, int j)
        {
            Player player = Main.LocalPlayer;
            Tile   tile   = Main.tile[i, j];
            int    left   = i - (tile.frameX % 54 / 18);
            int    top    = j - (tile.frameY / 18);

            int index = GetInstance <BannerRackTE>().Find(left, top);

            if (index == -1)
            {
                return;
            }
            BannerRackTE bannerRackTE = (BannerRackTE)TileEntity.ByID[index];

            // if Client, not SP, ask server to move items for you.
            if (Main.netMode == NetmodeID.MultiplayerClient)
            {
                var packet = mod.GetPacket();
                packet.Write((byte)BannerBonanzaMessageType.RequestSuperBannerStealBanners);
                packet.Write(index);
                List <int> indexes = new List <int>();
                for (int itemIndex = 0; itemIndex < 50; itemIndex++)
                {
                    Item item = player.inventory[itemIndex];
                    if (!item.IsAir && !player.inventory[itemIndex].favorited && BannerRackTE.itemToBanner.ContainsKey(item.type))
                    {
                        // Inform Server of current item (just to be safe?)
                        // TODO: I think NetMessage 5 doesn't sync mod data.
                        NetMessage.SendData(MessageID.SyncEquipment, -1, -1, null, player.whoAmI, (float)itemIndex, (float)player.inventory[itemIndex].prefix, 0f, 0, 0, 0);
                        // Mimicing QuickStackAllChests: NetMessage.SendData(85, -1, -1, null, itemIndex, 0f, 0f, 0f, 0, 0, 0);
                        indexes.Add(itemIndex);
                        // Prevents some moving items in ui while waiting for server response.
                        player.inventoryChestStack[itemIndex] = true;
                    }
                }
                packet.Write(indexes.Count);
                foreach (var itemIndex in indexes)
                {
                    packet.Write(itemIndex);
                }
                packet.Send();
                return;
            }
            else             // Single Player
            {
                // foreach item in inventory, if
                bool added = false;
                for (int invIndex = 0; invIndex < 54; invIndex++)
                {
                    Item item = player.inventory[invIndex];
                    if (!item.IsAir && BannerRackTE.itemToBanner.ContainsKey(item.type))
                    {
                        if (!bannerRackTE.bannerItems.Any(x => x.type == item.type))
                        {
                            added = true;
                            Main.NewText($"Banner for {item.Name} added to Banner Rack");
                            Item clone = item.Clone();
                            clone.stack = 1;
                            item.stack--;
                            if (item.IsAir)
                            {
                                item.SetDefaults(0);
                            }
                            //bool updateNeeded = superBannerTE.bannerItems.Count < 1;
                            bannerRackTE.bannerItems.Add(clone);
                            bannerRackTE.stringUpToDate = false;
                            //if(updateNeeded)
                            //	superBannerTE.UpdateDrawItemIndexes();
                        }
                    }
                }
                if (!added)
                {
                    Main.NewText($"No new Banners to add to Banner Rack");
                    // find closest npc that I don't have banner for.
                    //player.NPCBannerBuff
                    int nextNPCToKill     = -1;
                    int nextNPCToKillLeft = 9999;
                    for (int npctype = -10; npctype < NPCLoader.NPCCount; npctype++)
                    {
                        int vanillaBannerID = Terraria.Item.NPCtoBanner(npctype);
                        if (vanillaBannerID > 0 && !NPCID.Sets.ExcludedFromDeathTally[NPCID.FromNetId(npctype)])
                        {
                            int vanillaBannerItemID = Item.BannerToItem(vanillaBannerID);
                            if (ItemID.Sets.BannerStrength[vanillaBannerItemID].Enabled)
                            {
                                int killsToBanner = ItemID.Sets.KillsToBanner[vanillaBannerItemID];
                                int killsLeft     = killsToBanner - (NPC.killCount[vanillaBannerID] % killsToBanner);

                                if (killsLeft < nextNPCToKillLeft && !bannerRackTE.bannerItems.Any(x => x.type == vanillaBannerItemID))
                                {
                                    nextNPCToKillLeft = killsLeft;
                                    nextNPCToKill     = npctype;
                                }
                            }
                        }
                    }
                    if (nextNPCToKill != -1)
                    {
                        Main.NewText($"Try killing {nextNPCToKillLeft} more {Lang.GetNPCNameValue(nextNPCToKill)}");
                    }
                }
            }
        }
Пример #6
0
 public static void InitializeLegacyLocalization()
 {
     FillNameCacheArray <PrefixID, int>("Prefix", prefix);
     for (int i = 0; i < gen.Length; i++)
     {
         gen[i] = Language.GetText("LegacyWorldGen." + i);
     }
     for (int j = 0; j < menu.Length; j++)
     {
         menu[j] = Language.GetText("LegacyMenu." + j);
     }
     for (int k = 0; k < inter.Length; k++)
     {
         inter[k] = Language.GetText("LegacyInterface." + k);
     }
     for (int l = 0; l < misc.Length; l++)
     {
         misc[l] = Language.GetText("LegacyMisc." + l);
     }
     for (int m = 0; m < mp.Length; m++)
     {
         mp[m] = Language.GetText("LegacyMultiplayer." + m);
     }
     for (int n = 0; n < tip.Length; n++)
     {
         tip[n] = Language.GetText("LegacyTooltip." + n);
     }
     for (int num = 0; num < chestType.Length; num++)
     {
         chestType[num] = Language.GetText("LegacyChestType." + num);
     }
     for (int num2 = 0; num2 < dresserType.Length; num2++)
     {
         dresserType[num2] = Language.GetText("LegacyDresserType." + num2);
     }
     FillNameCacheArray <ItemID, short>("ItemName", _itemNameCache);
     FillNameCacheArray <MobileLangID, short>("Mobile", mobile);
     for (int num3 = 0; num3 < _negativeItemNameCache.Length; num3++)
     {
         _negativeItemNameCache[num3] = LocalizedText.Empty;
     }
     _negativeItemNameCache[23] = Language.GetText("ItemName.YellowPhasesaber");
     _negativeItemNameCache[22] = Language.GetText("ItemName.WhitePhasesaber");
     _negativeItemNameCache[21] = Language.GetText("ItemName.PurplePhasesaber");
     _negativeItemNameCache[20] = Language.GetText("ItemName.GreenPhasesaber");
     _negativeItemNameCache[19] = Language.GetText("ItemName.RedPhasesaber");
     _negativeItemNameCache[18] = Language.GetText("ItemName.BluePhasesaber");
     FillNameCacheArray <ProjectileID, short>("ProjectileName", _projectileNameCache);
     FillNameCacheArray <NPCID, short>("NPCName", _npcNameCache);
     FillNameCacheArray <BuffID, int>("BuffName", _buffNameCache);
     FillNameCacheArray <BuffID, int>("BuffDescription", _buffDescriptionCache);
     for (int num4 = -65; num4 < 0; num4++)
     {
         _negativeNpcNameCache[-num4 - 1] = _npcNameCache[NPCID.FromNetId(num4)];
     }
     _negativeNpcNameCache[0]  = Language.GetText("NPCName.Slimeling");
     _negativeNpcNameCache[1]  = Language.GetText("NPCName.Slimer2");
     _negativeNpcNameCache[2]  = Language.GetText("NPCName.GreenSlime");
     _negativeNpcNameCache[3]  = Language.GetText("NPCName.Pinky");
     _negativeNpcNameCache[4]  = Language.GetText("NPCName.BabySlime");
     _negativeNpcNameCache[5]  = Language.GetText("NPCName.BlackSlime");
     _negativeNpcNameCache[6]  = Language.GetText("NPCName.PurpleSlime");
     _negativeNpcNameCache[7]  = Language.GetText("NPCName.RedSlime");
     _negativeNpcNameCache[8]  = Language.GetText("NPCName.YellowSlime");
     _negativeNpcNameCache[9]  = Language.GetText("NPCName.JungleSlime");
     _negativeNpcNameCache[53] = Language.GetText("NPCName.SmallRainZombie");
     _negativeNpcNameCache[54] = Language.GetText("NPCName.BigRainZombie");
     ItemTooltip.AddGlobalProcessor(delegate(string tooltip)
     {
         if (tooltip.Contains("<right>"))
         {
             tooltip = tooltip.Replace("<right>", Language.GetTextValue("Controls.RightClick"));
         }
         return(tooltip);
     });
     for (int num5 = 0; num5 < _itemTooltipCache.Length; num5++)
     {
         _itemTooltipCache[num5] = ItemTooltip.None;
     }
     for (int num6 = 0; num6 < _negativeItemTooltipCache.Length; num6++)
     {
         _negativeItemTooltipCache[num6] = ItemTooltip.None;
     }
     (from f in typeof(ItemID).GetFields(BindingFlags.Static | BindingFlags.Public)
      where f.FieldType == typeof(short)
      select f).ToList().ForEach(delegate(FieldInfo field)
     {
         short num8 = (short)field.GetValue(null);
         if (num8 > 0 && num8 < _itemTooltipCache.Length)
         {
             _itemTooltipCache[num8] = ItemTooltip.FromLanguageKey("ItemTooltip." + field.Name);
         }
     });
     _negativeItemTooltipCache[23] = ItemTooltip.FromLanguageKey("ItemTooltip.YellowPhasesaber");
     _negativeItemTooltipCache[22] = ItemTooltip.FromLanguageKey("ItemTooltip.WhitePhasesaber");
     _negativeItemTooltipCache[21] = ItemTooltip.FromLanguageKey("ItemTooltip.PurplePhasesaber");
     _negativeItemTooltipCache[20] = ItemTooltip.FromLanguageKey("ItemTooltip.GreenPhasesaber");
     _negativeItemTooltipCache[19] = ItemTooltip.FromLanguageKey("ItemTooltip.RedPhasesaber");
     _negativeItemTooltipCache[18] = ItemTooltip.FromLanguageKey("ItemTooltip.BluePhasesaber");
     for (int num7 = 0; num7 < Recipe.numRecipes; num7++)
     {
         Main.recipe[num7].createItem.RebuildTooltip();
     }
 }