コード例 #1
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);
        }
コード例 #2
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);
            });
        }
コード例 #3
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);
            });
        }