コード例 #1
0
        ////////////////

        private static IDictionary <string, RecipeGroup> CreateRecipeGroups()
        {
            IDictionary <string, Tuple <string, ISet <int> > > commonItemGrps = ItemIdentityHelpers.GetCommonItemGroups();
            IDictionary <string, RecipeGroup> groups = commonItemGrps.ToDictionary(kv => "HamstarHelpers:" + kv.Key,
                                                                                   kv => {
                string grpName     = kv.Value.Item1;
                ISet <int> itemIds = kv.Value.Item2;
                return(new RecipeGroup(() => Lang.misc[37].ToString() + " " + grpName, itemIds.ToArray()));
            }
                                                                                   );

            return(groups);
        }
コード例 #2
0
        public void UnloadOuter()
        {
            this.ReflectionHelpers         = null;
            this.PacketProtocolMngr        = null;
            this.ExceptionMngr             = null;
            this.Timers                    = null;
            this.ConfigJson                = null;
            this.LogHelpers                = null;
            this.ModFeaturesHelpers        = null;
            this.BuffHelpers               = null;
            this.NetHelpers                = null;
            this.ItemIdentityHelpers       = null;
            this.NPCIdentityHelpers        = null;
            this.ProjectileIdentityHelpers = null;
            this.BuffIdentityHelpers       = null;
            this.NPCBannerHelpers          = null;
            this.RecipeIdentityHelpers     = null;
            this.RecipeGroupHelpers        = null;
            this.PlayerHooks               = null;
            this.LoadHelpers               = null;
            this.GetModInfo                = null;
            this.GetModTags                = null;
            this.WorldStateHelpers         = null;
            this.ModLock                   = null;
            this.EntityGroups              = null;
            this.AnimatedColors            = null;
            this.PlayerMessages            = null;
            this.Inbox                 = null;
            this.ControlPanel          = null;
            this.MenuItemMngr          = null;
            this.MenuContextMngr       = null;
            this.MusicHelpers          = null;
            this.PlayerIdentityHelpers = null;
            this.CustomEntMngr         = null;
            this.Promises              = null;
            this.DataStore             = null;
            this.CustomHotkeys         = null;
            this.XnaHelpers            = null;
            this.ServerInfo            = null;
            //this.PlayerDataMngr = null;
            this.SupportInfo    = null;
            this.RecipeHack     = null;
            this.ModListHelpers = null;

            this.ControlPanelHotkey = null;
            this.DataDumpHotkey     = null;
        }
コード例 #3
0
        private void LoadOuter()
        {
            this.ReflectionHelpers = new ReflectionHelpers();
            this.DataStore         = new DataStore();
            this.Promises          = new Promises();
            this.LoadHelpers       = new LoadHelpers();

            this.Timers             = new Timers();
            this.LogHelpers         = new LogHelpers();
            this.ModFeaturesHelpers = new ModFeaturesHelpers();
            this.PacketProtocolMngr = new PacketProtocolManager();

            this.BuffHelpers               = new BuffHelpers();
            this.NetHelpers                = new NetHelpers();
            this.ItemIdentityHelpers       = new ItemIdentityHelpers();
            this.NPCIdentityHelpers        = new NPCIdentityHelpers();
            this.ProjectileIdentityHelpers = new ProjectileIdentityHelpers();
            this.BuffIdentityHelpers       = new BuffIdentityHelpers();
            this.NPCBannerHelpers          = new NPCBannerHelpers();
            this.RecipeIdentityHelpers     = new RecipeIdentityHelpers();
            this.RecipeGroupHelpers        = new RecipeGroupHelpers();
            this.PlayerHooks               = new ExtendedPlayerHooks();
            this.WorldStateHelpers         = new WorldStateHelpers();
            this.ControlPanel              = new UIControlPanel();
            this.ModLock               = new ModLockService();
            this.EntityGroups          = new EntityGroups();
            this.PlayerMessages        = new PlayerMessages();
            this.Inbox                 = new InboxControl();
            this.GetModInfo            = new GetModInfo();
            this.GetModTags            = new GetModTags();
            this.MenuItemMngr          = new MenuItemManager();
            this.MenuContextMngr       = new MenuContextServiceManager();
            this.MusicHelpers          = new MusicHelpers();
            this.PlayerIdentityHelpers = new PlayerIdentityHelpers();
            this.CustomEntMngr         = new CustomEntityManager();
            this.CustomHotkeys         = new CustomHotkeys();
            this.XnaHelpers            = new XnaHelpers();
            this.ServerInfo            = new ServerInfo();
            //this.PlayerDataMngr = new PlayerDataManager();
            this.SupportInfo    = new SupportInfoDisplay();
            this.RecipeHack     = new RecipeHack();
            this.ModListHelpers = new ModListHelpers();
        }
コード例 #4
0
        ////////////////

        public static string GetQualifiedName(Entity ent)
        {
            if (ent is Item)
            {
                return(ItemIdentityHelpers.GetQualifiedName((Item)ent));
            }
            if (ent is NPC)
            {
                return(NPCIdentityHelpers.GetQualifiedName((NPC)ent));
            }
            if (ent is Projectile)
            {
                return(ProjectileIdentityHelpers.GetQualifiedName((Projectile)ent));
            }
            if (ent is Player)
            {
                return(((Player)ent).name);
            }
            return("...a " + ent.GetType().Name);
        }
コード例 #5
0
        internal static void DefineItemWeaponGroups1(Action <string, string[], Matcher> addDef)
        {
            // Weapon Classes

            addDef("Any Ranged Weapon", null,
                   (item, grps) => {
                return(item.ranged);
            });
            addDef("Any Magic Weapon", null,
                   (item, grps) => {
                return(item.magic);
            });
            addDef("Any Melee Weapon", null,
                   (item, grps) => {
                return(item.melee);
            });
            addDef("Any Thrown Weapon", null,
                   (item, grps) => {
                return(item.thrown);
            });

            // Melee Sub Classes

            addDef("Any Swingable", null,
                   (item, grps) => {
                return(item.melee && item.useStyle == 1);
            });
            addDef("Any Thrustable", null,
                   (item, grps) => {
                return(item.melee && item.useStyle == 5);
            });
            addDef("Any Flail", null,
                   (item, grps) => {
                if (!item.melee || item.useStyle != 5)
                {
                    return(false);
                }
                if (item.type == ItemID.Anchor)
                {
                    return(true);
                }

                if (item.shoot == 0)
                {
                    return(false);
                }
                var projPool = ModHelpersMod.Instance.EntityGroups.GetProjPool();

                switch (projPool[item.shoot].aiStyle)
                {
                case 15:                            // Standard
                case 13:                            // Chain Knife, Boxing Glove
                case 69:                            // Flairon
                case 75:                            // Solar Eruption
                    return(true);
                }
                return(false);
            });
            addDef("Any Boomerang", null,
                   (item, grps) => {
                if (!item.melee || item.useStyle != 1)
                {
                    return(false);
                }
                if (item.type == ItemID.FlyingKnife)
                {
                    return(true);
                }

                if (item.shoot == 0)
                {
                    return(false);
                }
                var projPool = ModHelpersMod.Instance.EntityGroups.GetProjPool();

                switch (projPool[item.shoot].aiStyle)
                {
                case 3:                            // Boomerangs
                case 15:                           // Thorn Chakram
                    return(true);
                }
                return(false);
            });
            addDef("Any Yoyo", null,
                   (item, grps) => {
                return(ItemAttributeHelpers.IsYoyo(item));
            });

            // Magic Sub Classes

            addDef("Any Magic Staff Or Scepter Or Wand", null,
                   (item, grps) => {
                if (!item.magic)
                {
                    return(false);
                }

                string name = ItemIdentityHelpers.GetQualifiedName(item);
                return(name.Contains("Staff") ||
                       name.Contains("Scepter") ||
                       name.Contains("Wand"));
            });
            addDef("Any Magic Rod", null,
                   (item, grps) => {
                if (!item.magic)
                {
                    return(false);
                }

                string name = ItemIdentityHelpers.GetQualifiedName(item);
                return(name.Contains("Rod"));
            });
            addDef("Any Magic Gun", null,
                   (item, grps) => {
                if (!item.magic)
                {
                    return(false);
                }

                switch (item.type)
                {
                case ItemID.LeafBlower:
                    return(true);
                }

                string name = ItemIdentityHelpers.GetQualifiedName(item);
                return(name.Contains("Gun") ||
                       name.Contains("Rifle") ||
                       name.Contains("Ray") ||
                       name.Contains("Cannon") ||
                       name.Contains("Laser"));
            });
            addDef("Any Magic Tome", null,
                   (item, grps) => {
                if (!item.magic)
                {
                    return(false);
                }

                switch (item.type)
                {
                case ItemID.DemonScythe:
                case ItemID.WaterBolt:
                case ItemID.LunarFlareBook:
                case ItemID.MagnetSphere:
                case ItemID.RazorbladeTyphoon:
                    return(true);
                }

                var has = RecipeHelpers.ItemHasIngredients(item.type, new HashSet <int> {
                    ItemID.SpellTome
                }, 1);
                if (has)
                {
                    return(true);
                }

                string name = ItemIdentityHelpers.GetQualifiedName(item);
                return(name.Contains("Book") ||
                       name.Contains("Tome"));
            });

            // Ranged Sub Classes

            addDef("Any Ranger Gun", null,
                   (item, grps) => {
                if (!item.ranged)
                {
                    return(false);
                }
                return(item.useAmmo == AmmoID.Bullet ||
                       item.useAmmo == AmmoID.CandyCorn ||
                       item.useAmmo == AmmoID.Coin);
            });
            addDef("Any Ranger Bow", null,
                   (item, grps) => {
                if (!item.ranged)
                {
                    return(false);
                }
                return(item.useAmmo == AmmoID.Arrow ||
                       item.useAmmo == AmmoID.Stake);
            });
            addDef("Any Ranger Launcher", null,
                   (item, grps) => {
                if (!item.ranged)
                {
                    return(false);
                }
                return(item.useAmmo == AmmoID.Rocket ||
                       item.useAmmo == AmmoID.StyngerBolt ||
                       item.useAmmo == AmmoID.JackOLantern ||
                       item.useAmmo == AmmoID.NailFriendly);
            });

            // Summon Sub Classes

            addDef("Any Minion Summon Item", null,
                   (item, grps) => {
                return(item.summon && !item.sentry);
            });
            addDef("Any Sentry Summon Item", null,
                   (item, grps) => {
                return(item.summon && item.sentry);
            });

            // Vanity Classes
            addDef("Any Vanity Accessory", null,
                   (item, grps) => {
                if (!item.vanity)
                {
                    return(false);
                }
                return(item.accessory);
            });
            addDef("Any Vanity Garment", null,
                   (item, grps) => {
                if (!item.vanity)
                {
                    return(false);
                }
                return(!item.accessory);
            });
        }
コード例 #6
0
        ////////////////

        public static int GetVanillaSnapshotHash(Player player, bool noContext, bool looksMatter)
        {
            int hash = EntityHelpers.EntityHelpers.GetVanillaSnapshotHash(player, noContext);
            int itemHash;

            hash ^= ("statLifeMax" + player.statLifeMax).GetHashCode();
            hash ^= ("statManaMax" + player.statManaMax).GetHashCode();
            hash ^= ("extraAccessory" + player.extraAccessory).GetHashCode();
            hash ^= ("difficulty" + player.difficulty).GetHashCode();

            if (!noContext)
            {
                hash ^= ("team" + player.team).GetHashCode();
                hash ^= ("hostile" + player.hostile).GetHashCode();                     //pvp?
                hash ^= ("name" + player.name).GetHashCode();
            }

            if (looksMatter)
            {
                hash ^= ("Male" + player.Male).GetHashCode();
                hash ^= ("skinColor" + player.skinColor).GetHashCode();
                hash ^= ("hair" + player.hair).GetHashCode();
                hash ^= ("hairColor" + player.hairColor).GetHashCode();
                hash ^= ("shirtColor" + player.shirtColor).GetHashCode();
                hash ^= ("underShirtColor" + player.underShirtColor).GetHashCode();
                hash ^= ("pantsColor" + player.pantsColor).GetHashCode();
                hash ^= ("shoeColor" + player.shoeColor).GetHashCode();
            }

            for (int i = 0; i < player.inventory.Length; i++)
            {
                Item item = player.inventory[i];
                if (item == null || !item.active || item.stack == 0)
                {
                    itemHash = ("inv" + i).GetHashCode();
                }
                else
                {
                    itemHash = i + ItemIdentityHelpers.GetVanillaSnapshotHash(item, noContext, true);
                }
                hash ^= itemHash;
            }
            for (int i = 0; i < player.armor.Length; i++)
            {
                Item item = player.armor[i];
                if (item == null || !item.active || item.stack == 0)
                {
                    itemHash = ("arm" + i).GetHashCode();
                }
                else
                {
                    itemHash = i + ItemIdentityHelpers.GetVanillaSnapshotHash(item, noContext, true);
                }
                hash ^= itemHash;
            }
            for (int i = 0; i < player.bank.item.Length; i++)
            {
                Item item = player.bank.item[i];
                if (item == null || !item.active || item.stack == 0)
                {
                    itemHash = ("bank" + i).GetHashCode();
                }
                else
                {
                    itemHash = i + ItemIdentityHelpers.GetVanillaSnapshotHash(item, noContext, true);
                }
                hash ^= itemHash;
            }
            for (int i = 0; i < player.bank2.item.Length; i++)
            {
                Item item = player.bank2.item[i];
                if (item == null || !item.active || item.stack == 0)
                {
                    itemHash = ("bank2" + i).GetHashCode();
                }
                else
                {
                    itemHash = i + ItemIdentityHelpers.GetVanillaSnapshotHash(item, noContext, true);
                }
                hash ^= itemHash;
            }
            for (int i = 0; i < player.bank3.item.Length; i++)
            {
                Item item = player.bank3.item[i];
                if (item == null || !item.active || item.stack == 0)
                {
                    itemHash = ("bank3" + i).GetHashCode();
                }
                else
                {
                    itemHash = i + ItemIdentityHelpers.GetVanillaSnapshotHash(item, noContext, true);
                }
                hash ^= itemHash;
            }
            return(hash);
        }
コード例 #7
0
        private void DefineItemEquipmentGroups2(Action <string, Func <Item, bool> > add_def)
        {
            // Equipment Tiers

            add_def("Any Tiki Equipment", ( Item item ) => {
                string name = ItemIdentityHelpers.GetQualifiedName(item);
                if (!name.Contains("Tiki"))
                {
                    return(false);
                }
                return(item.createTile == -1 && item.createWall == -1);
            });

            add_def("Any Plain Wood Equipment", ( Item item ) => {
                var has = RecipeHelpers.RecipeHelpers.ItemHasIngredients(item, new HashSet <int> {
                    ItemID.Wood
                }, 2);
                if (!has)
                {
                    return(false);
                }
                return(item.createTile == -1 && item.createWall == -1);
            });
            add_def("Any Boreal Wood Equipment", ( Item item ) => {
                var has = RecipeHelpers.RecipeHelpers.ItemHasIngredients(item, new HashSet <int> {
                    ItemID.BorealWood
                }, 2);
                if (!has)
                {
                    return(false);
                }
                return(item.createTile == -1 && item.createWall == -1);
            });
            add_def("Any Palm Wood Equipment", ( Item item ) => {
                var has = RecipeHelpers.RecipeHelpers.ItemHasIngredients(item, new HashSet <int> {
                    ItemID.PalmWood
                }, 2);
                if (!has)
                {
                    return(false);
                }
                return(item.createTile == -1 && item.createWall == -1);
            });
            add_def("Any Rich Mahogany Equipment", ( Item item ) => {
                var has = RecipeHelpers.RecipeHelpers.ItemHasIngredients(item, new HashSet <int> {
                    ItemID.RichMahogany
                }, 2);
                if (!has)
                {
                    return(false);
                }
                return(item.createTile == -1 && item.createWall == -1);
            });
            add_def("Any Ebonwood Equipment", ( Item item ) => {
                var has = RecipeHelpers.RecipeHelpers.ItemHasIngredients(item, new HashSet <int> {
                    ItemID.Ebonwood
                }, 2);
                if (!has)
                {
                    return(false);
                }
                return(item.createTile == -1 && item.createWall == -1);
            });
            add_def("Any Shadewood Equipment", ( Item item ) => {
                var has = RecipeHelpers.RecipeHelpers.ItemHasIngredients(item, new HashSet <int> {
                    ItemID.Shadewood
                }, 2);
                if (!has)
                {
                    return(false);
                }
                return(item.createTile == -1 && item.createWall == -1);
            });
            add_def("Any Pearlwood Equipment", ( Item item ) => {
                var has = RecipeHelpers.RecipeHelpers.ItemHasIngredients(item, new HashSet <int> {
                    ItemID.Pearlwood
                }, 2);
                if (!has)
                {
                    return(false);
                }
                return(item.createTile == -1 && item.createWall == -1);
            });
            add_def("Any Dynasty Wood Equipment", ( Item item ) => {
                var has = RecipeHelpers.RecipeHelpers.ItemHasIngredients(item, new HashSet <int> {
                    ItemID.DynastyWood
                }, 2);
                if (!has)
                {
                    return(false);
                }
                return(item.createTile == -1 && item.createWall == -1);
            });
            add_def("Any Spooky Wood Equipment", ( Item item ) => {
                var has = RecipeHelpers.RecipeHelpers.ItemHasIngredients(item, new HashSet <int> {
                    ItemID.SpookyWood
                }, 2);
                if (!has)
                {
                    return(false);
                }
                return(item.createTile == -1 && item.createWall == -1);
            });

            add_def("Any Tin Equipment", ( Item item ) => {
                var has = RecipeHelpers.RecipeHelpers.ItemHasIngredients(item, new HashSet <int> {
                    ItemID.TinBar
                }, 1);
                if (!has)
                {
                    return(false);
                }
                return(item.createTile == -1 && item.createWall == -1);
            });
            add_def("Any Copper Equipment", ( Item item ) => {
                var has = RecipeHelpers.RecipeHelpers.ItemHasIngredients(item, new HashSet <int> {
                    ItemID.CopperBar
                }, 1);
                if (!has)
                {
                    return(false);
                }
                return(item.createTile == -1 && item.createWall == -1);
            });

            add_def("Any Iron Equipment", ( Item item ) => {
                var has = RecipeHelpers.RecipeHelpers.ItemHasIngredients(item, new HashSet <int> {
                    ItemID.IronBar
                }, 1);
                if (!has)
                {
                    return(false);
                }
                return(item.createTile == -1 && item.createWall == -1);
            });
            add_def("Any Lead Equipment", ( Item item ) => {
                var has = RecipeHelpers.RecipeHelpers.ItemHasIngredients(item, new HashSet <int> {
                    ItemID.LeadBar
                }, 1);
                if (!has)
                {
                    return(false);
                }
                return(item.createTile == -1 && item.createWall == -1);
            });

            add_def("Any Silver Equipment", ( Item item ) => {
                var has = RecipeHelpers.RecipeHelpers.ItemHasIngredients(item, new HashSet <int> {
                    ItemID.SilverBar
                }, 1);
                if (!has)
                {
                    return(false);
                }
                return(item.createTile == -1 && item.createWall == -1);
            });
            add_def("Any Tungsten Equipment", ( Item item ) => {
                var has = RecipeHelpers.RecipeHelpers.ItemHasIngredients(item, new HashSet <int> {
                    ItemID.TungstenBar
                }, 1);
                if (!has)
                {
                    return(false);
                }
                return(item.createTile == -1 && item.createWall == -1);
            });

            add_def("Any Gold Equipment", ( Item item ) => {
                var has = RecipeHelpers.RecipeHelpers.ItemHasIngredients(item, new HashSet <int> {
                    ItemID.GoldBar
                }, 1);
                if (!has)
                {
                    return(false);
                }
                return(item.createTile == -1 && item.createWall == -1);
            });
            add_def("Any Platinum Equipment", ( Item item ) => {
                var has = RecipeHelpers.RecipeHelpers.ItemHasIngredients(item, new HashSet <int> {
                    ItemID.PlatinumBar
                }, 1);
                if (!has)
                {
                    return(false);
                }
                return(item.createTile == -1 && item.createWall == -1);
            });

            add_def("Any Meteor Equipment", ( Item item ) => {
                var has = RecipeHelpers.RecipeHelpers.ItemHasIngredients(item, new HashSet <int> {
                    ItemID.MeteoriteBar
                }, 1);
                if (!has)
                {
                    return(false);
                }
                return(item.createTile == -1 && item.createWall == -1);
            });
            add_def("Any Demonite Equipment", ( Item item ) => {
                var has = RecipeHelpers.RecipeHelpers.ItemHasIngredients(item, new HashSet <int> {
                    ItemID.DemoniteBar
                }, 1);
                if (!has)
                {
                    return(false);
                }
                return(item.createTile == -1 && item.createWall == -1);
            });
            add_def("Any Crimtane Equipment", ( Item item ) => {
                var has = RecipeHelpers.RecipeHelpers.ItemHasIngredients(item, new HashSet <int> {
                    ItemID.CrimtaneBar
                }, 1);
                if (!has)
                {
                    return(false);
                }
                return(item.createTile == -1 && item.createWall == -1);
            });
            add_def("Any Jungle Equipment", ( Item item ) => {
                var has = RecipeHelpers.RecipeHelpers.ItemHasIngredients(item, new HashSet <int> {
                    ItemID.JungleSpores
                }, 1);
                if (!has)
                {
                    return(false);
                }
                return(item.createTile == -1 && item.createWall == -1);
            });
            add_def("Any Bee Equipment", ( Item item ) => {
                var has = RecipeHelpers.RecipeHelpers.ItemHasIngredients(item, new HashSet <int> {
                    ItemID.BeeWax
                }, 1);
                if (!has)
                {
                    return(false);
                }
                return(item.createTile == -1 && item.createWall == -1);
            });
            add_def("Any Bone Equipment", ( Item item ) => {
                var has = RecipeHelpers.RecipeHelpers.ItemHasIngredients(item, new HashSet <int> {
                    ItemID.Bone
                }, 1);
                if (!has)
                {
                    return(false);
                }
                return(item.createTile == -1 && item.createWall == -1);
            });
            add_def("Any Hellstone Equipment", ( Item item ) => {
                var has = RecipeHelpers.RecipeHelpers.ItemHasIngredients(item, new HashSet <int> {
                    ItemID.HellstoneBar
                }, 1);
                if (!has)
                {
                    return(false);
                }
                return(item.createTile == -1 && item.createWall == -1);
            });

            add_def("Any Cobalt Equipment", ( Item item ) => {
                var has = RecipeHelpers.RecipeHelpers.ItemHasIngredients(item, new HashSet <int> {
                    ItemID.CobaltBar
                }, 1);
                if (!has)
                {
                    return(false);
                }
                return(item.createTile == -1 && item.createWall == -1);
            });
            add_def("Any Palladium Equipment", ( Item item ) => {
                var has = RecipeHelpers.RecipeHelpers.ItemHasIngredients(item, new HashSet <int> {
                    ItemID.PalladiumBar
                }, 1);
                if (!has)
                {
                    return(false);
                }
                return(item.createTile == -1 && item.createWall == -1);
            });
            add_def("Any Mythril Equipment", ( Item item ) => {
                var has = RecipeHelpers.RecipeHelpers.ItemHasIngredients(item, new HashSet <int> {
                    ItemID.MythrilBar
                }, 1);
                if (!has)
                {
                    return(false);
                }
                return(item.createTile == -1 && item.createWall == -1);
            });
            add_def("Any Orichalcum Equipment", ( Item item ) => {
                var has = RecipeHelpers.RecipeHelpers.ItemHasIngredients(item, new HashSet <int> {
                    ItemID.OrichalcumBar
                }, 1);
                if (!has)
                {
                    return(false);
                }
                return(item.createTile == -1 && item.createWall == -1);
            });
            add_def("Any Adamantite Equipment", ( Item item ) => {
                var has = RecipeHelpers.RecipeHelpers.ItemHasIngredients(item, new HashSet <int> {
                    ItemID.AdamantiteBar
                }, 1);
                if (!has)
                {
                    return(false);
                }
                return(item.createTile == -1 && item.createWall == -1);
            });
            add_def("Any Titanium Equipment", ( Item item ) => {
                var has = RecipeHelpers.RecipeHelpers.ItemHasIngredients(item, new HashSet <int> {
                    ItemID.TitaniumBar
                }, 1);
                if (!has)
                {
                    return(false);
                }
                return(item.createTile == -1 && item.createWall == -1);
            });

            add_def("Any Frost Core Equipment", ( Item item ) => {
                var has = RecipeHelpers.RecipeHelpers.ItemHasIngredients(item, new HashSet <int> {
                    ItemID.FrostCore
                }, 1);
                if (!has)
                {
                    return(false);
                }
                return(item.createTile == -1 && item.createWall == -1);
            });
            add_def("Any Forbidden Equipment", ( Item item ) => {
                var has = RecipeHelpers.RecipeHelpers.ItemHasIngredients(item, new HashSet <int> {
                    ItemID.AncientBattleArmorMaterial
                }, 1);
                if (!has)
                {
                    return(false);
                }
                return(item.createTile == -1 && item.createWall == -1);
            });
            add_def("Any Hallow Equipment", ( Item item ) => {
                var has = RecipeHelpers.RecipeHelpers.ItemHasIngredients(item, new HashSet <int> {
                    ItemID.HallowedBar
                }, 1);
                if (!has)
                {
                    return(false);
                }
                return(item.createTile == -1 && item.createWall == -1);
            });
            add_def("Any Chlorophyte Equipment", ( Item item ) => {
                var has = RecipeHelpers.RecipeHelpers.ItemHasIngredients(item, new HashSet <int> {
                    ItemID.ChlorophyteBar
                }, 1);
                if (!has)
                {
                    return(false);
                }
                return(item.createTile == -1 && item.createWall == -1);
            });
            add_def("Any Shroomite Equipment", ( Item item ) => {
                var has = RecipeHelpers.RecipeHelpers.ItemHasIngredients(item, new HashSet <int> {
                    ItemID.ShroomiteBar
                }, 1);
                if (!has)
                {
                    return(false);
                }
                return(item.createTile == -1 && item.createWall == -1);
            });
            add_def("Any Spectre Equipment", ( Item item ) => {
                var has = RecipeHelpers.RecipeHelpers.ItemHasIngredients(item, new HashSet <int> {
                    ItemID.SpectreBar
                }, 1);
                if (!has)
                {
                    return(false);
                }
                return(item.createTile == -1 && item.createWall == -1);
            });
            add_def("Any Shell Equipment", ( Item item ) => {
                var has1 = RecipeHelpers.RecipeHelpers.ItemHasIngredients(item, new HashSet <int> {
                    ItemID.BeetleShell
                }, 1);
                var has2 = RecipeHelpers.RecipeHelpers.ItemHasIngredients(item, new HashSet <int> {
                    ItemID.TurtleShell
                }, 1);
                if (!has1 && !has2)
                {
                    return(false);
                }
                return(item.createTile == -1 && item.createWall == -1);
            });

            add_def("Any Nebula Equipment", ( Item item ) => {
                var has = RecipeHelpers.RecipeHelpers.ItemHasIngredients(item, new HashSet <int> {
                    ItemID.FragmentNebula
                }, 1);
                if (!has)
                {
                    return(false);
                }
                return(item.createTile == -1 && item.createWall == -1);
            });
            add_def("Any Vortex Equipment", ( Item item ) => {
                var has = RecipeHelpers.RecipeHelpers.ItemHasIngredients(item, new HashSet <int> {
                    ItemID.FragmentVortex
                }, 1);
                if (!has)
                {
                    return(false);
                }
                return(item.createTile == -1 && item.createWall == -1);
            });
            add_def("Any Solar Equipment", ( Item item ) => {
                var has = RecipeHelpers.RecipeHelpers.ItemHasIngredients(item, new HashSet <int> {
                    ItemID.FragmentSolar
                }, 1);
                if (!has)
                {
                    return(false);
                }
                return(item.createTile == -1 && item.createWall == -1);
            });
            add_def("Any Stardust Equipment", ( Item item ) => {
                var has = RecipeHelpers.RecipeHelpers.ItemHasIngredients(item, new HashSet <int> {
                    ItemID.FragmentStardust
                }, 1);
                if (!has)
                {
                    return(false);
                }
                return(item.createTile == -1 && item.createWall == -1);
            });
            add_def("Any Luminite Ore Equipment", ( Item item ) => {
                var has = RecipeHelpers.RecipeHelpers.ItemHasIngredients(item, new HashSet <int> {
                    ItemID.LunarBar
                }, 1);
                if (!has)
                {
                    return(false);
                }
                return(item.createTile == -1 && item.createWall == -1);
            });
        }