//////////////// 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); }
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; }
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(); }
//////////////// 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); }
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); }); }
//////////////// 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); }
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); }); }