using System; using System.Collections.Generic; using System.Linq; using Server.Items; namespace Server.Engines.VendorSearching { public class SearchCriteriaCategory { public Category Category { get; set; } public int PageID { get; set; } public int Cliloc { get; set; } public SearchCriterionEntry[] Criteria { get; set; } public SearchCriteriaCategory(Category cat, int pid, int cliloc, SearchCriterionEntry[] criteria) { Category = cat; PageID = pid; Cliloc = cliloc; Criteria = criteria; } public static SearchCriteriaCategory[] AllCategories = new SearchCriteriaCategory[] { new SearchCriteriaCategory(Category.PriceRange, 2, 1154512, new SearchCriterionEntry[] { /* Price Range */ }), new SearchCriteriaCategory(Category.Equipment, 3, 1154531, new SearchCriterionEntry[] { // Equipment new SearchCriterionEntry(Layer.Shoes, 1154602), new SearchCriterionEntry(Layer.Pants, 1154603), new SearchCriterionEntry(Layer.Shirt, 1154604), new SearchCriterionEntry(Layer.Helm, 1154605), new SearchCriterionEntry(Layer.Gloves, 1154606), new SearchCriterionEntry(Layer.Ring, 1154607), new SearchCriterionEntry(Layer.Talisman, 1154608), new SearchCriterionEntry(Layer.Neck, 1154609), new SearchCriterionEntry(Layer.Waist, 1154611), new SearchCriterionEntry(Layer.InnerTorso, 1154612), new SearchCriterionEntry(Layer.Bracelet, 1154613), new SearchCriterionEntry(Layer.MiddleTorso, 1154616), new SearchCriterionEntry(Layer.Earrings, 1154617), new SearchCriterionEntry(Layer.Arms, 1154618), new SearchCriterionEntry(Layer.Cloak, 1154619), new SearchCriterionEntry(Layer.OuterTorso, 1154621), new SearchCriterionEntry(Layer.OuterLegs, 1154622), }), new SearchCriteriaCategory(Category.Combat, 4, 1154541, new SearchCriterionEntry[] { // Combat new SearchCriterionEntry(AosAttribute.WeaponDamage, 1079760, 1060401), new SearchCriterionEntry(AosAttribute.DefendChance, 1075620, 1060408), new SearchCriterionEntry(AosAttribute.AttackChance, 1075616, 1060415), new SearchCriterionEntry(AosAttribute.WeaponSpeed, 1075629, 1060486), new SearchCriterionEntry(AosArmorAttribute.SoulCharge, 1116536, 1113630), new SearchCriterionEntry(AosWeaponAttribute.UseBestSkill, 1079592), new SearchCriterionEntry(AosWeaponAttribute.ReactiveParalyze, 1154660), new SearchCriterionEntry(ExtendedWeaponAttribute.AssassinHoned, 1152206), new SearchCriterionEntry("SearingWeapon", 1151183), new SearchCriterionEntry(AosWeaponAttribute.BloodDrinker, 1113591), new SearchCriterionEntry(AosWeaponAttribute.BattleLust, 1113710), new SearchCriterionEntry(AosAttribute.BalancedWeapon, 1072792), new SearchCriterionEntry(ExtendedWeaponAttribute.Focus, 1150018), new SearchCriterionEntry(SAAbsorptionAttribute.EaterFire, 1154662, 1113593), new SearchCriterionEntry(SAAbsorptionAttribute.EaterCold, 1154663, 1113594), new SearchCriterionEntry(SAAbsorptionAttribute.EaterPoison, 1154664, 1113595), new SearchCriterionEntry(SAAbsorptionAttribute.EaterEnergy, 1154665, 1113596), new SearchCriterionEntry(SAAbsorptionAttribute.EaterKinetic, 1154666, 1113597), new SearchCriterionEntry(SAAbsorptionAttribute.EaterDamage, 1154667, 1113598), }), new SearchCriteriaCategory(Category.Casting, 5, 1154538, new SearchCriterionEntry[] { // Casting new SearchCriterionEntry(SAAbsorptionAttribute.ResonanceFire, 1154655, 1113691), new SearchCriterionEntry(SAAbsorptionAttribute.ResonanceCold, 1154656, 1113692), new SearchCriterionEntry(SAAbsorptionAttribute.ResonancePoison, 1154657, 1113693), new SearchCriterionEntry(SAAbsorptionAttribute.ResonanceEnergy, 1154658, 1113692), new SearchCriterionEntry(SAAbsorptionAttribute.ResonanceKinetic, 1154659, 1113695), new SearchCriterionEntry(AosAttribute.SpellDamage, 1075628, 1060483), new SearchCriterionEntry(SAAbsorptionAttribute.CastingFocus, 1116535, 1113696), new SearchCriterionEntry(AosAttribute.CastRecovery, 1075618, 1060412), new SearchCriterionEntry(AosAttribute.CastSpeed, 1075617, 1060413), new SearchCriterionEntry(AosAttribute.LowerManaCost, 1075621, 1060433), new SearchCriterionEntry(AosAttribute.LowerRegCost, 1075625, 1060434), new SearchCriterionEntry(AosWeaponAttribute.MageWeapon, 1079759, 1060438), new SearchCriterionEntry(AosArmorAttribute.MageArmor, 1079758), new SearchCriterionEntry(AosAttribute.SpellChanneling, 1079766), }), new SearchCriteriaCategory(Category.Misc, 6, 1154647, new SearchCriterionEntry[] { // Miscellaneous new SearchCriterionEntry(Misc.ExcludeFel, 1154646), new SearchCriterionEntry(Misc.GargoyleOnly, 1154648), new SearchCriterionEntry(Misc.NotGargoyleOnly, 1154704), new SearchCriterionEntry(Misc.ElvesOnly, 1154650), new SearchCriterionEntry(Misc.NotElvesOnly, 1154703), new SearchCriterionEntry(Misc.FactionItem, 1154661), new SearchCriterionEntry(Misc.PromotionalToken, 1154682), new SearchCriterionEntry(AosAttribute.NightSight, 1075643), new SearchCriterionEntry(Misc.Cursed, 1116639), new SearchCriterionEntry(Misc.NotCursed, 1154701), new SearchCriterionEntry(Misc.CannotRepair, 1151826), new SearchCriterionEntry(Misc.NotCannotBeRepaired, 1154705), new SearchCriterionEntry(Misc.Brittle, 1116209), new SearchCriterionEntry(Misc.NotBrittle, 1154702), new SearchCriterionEntry(Misc.Antique, 1152714), new SearchCriterionEntry(Misc.NotAntique, 1156479), new SearchCriterionEntry(AosAttribute.EnhancePotions, 1075624, 1060411), new SearchCriterionEntry(AosArmorAttribute.LowerStatReq, 1079757, 1060435), new SearchCriterionEntry(AosAttribute.Luck, 1061153, 1060436), new SearchCriterionEntry(AosAttribute.ReflectPhysical, 1075626, 1060442), new SearchCriterionEntry(AosArmorAttribute.SelfRepair, 1079709, 1060450), new SearchCriterionEntry("ArtifactRarity", 1154693, 1061078), }), new SearchCriteriaCategory(Category.DamageType, 9, 1154535, new SearchCriterionEntry[] { // Damage Type new SearchCriterionEntry(AosElementAttribute.Physical, 1151800, 1060403), new SearchCriterionEntry(AosElementAttribute.Cold, 1151802, 1060404), new SearchCriterionEntry(AosElementAttribute.Fire, 1151801, 1060405), new SearchCriterionEntry(AosElementAttribute.Poison, 1151803, 1060406), new SearchCriterionEntry(AosElementAttribute.Energy, 1151804, 1060407), }), new SearchCriteriaCategory(Category.HitSpell, 10, 1154536, new SearchCriterionEntry[] { // Hit Spell new SearchCriterionEntry(AosWeaponAttribute.HitDispel, 1079702, 1060417), new SearchCriterionEntry(AosWeaponAttribute.HitFireball, 1079703, 1060420), new SearchCriterionEntry(AosWeaponAttribute.HitHarm, 1079704, 1060421), new SearchCriterionEntry(AosWeaponAttribute.HitCurse, 1154673, 1113712), new SearchCriterionEntry(AosWeaponAttribute.HitLeechHits, 1079698, 1060422), new SearchCriterionEntry(AosWeaponAttribute.HitLightning, 1079705, 1060423), new SearchCriterionEntry("WeaponVelocity", 1080416, 1072793), new SearchCriterionEntry(AosWeaponAttribute.HitLowerAttack, 1079699, 1060424), new SearchCriterionEntry(AosWeaponAttribute.HitLowerDefend, 1079700, 1060425), new SearchCriterionEntry(AosWeaponAttribute.HitMagicArrow, 1079706, 1060426), new SearchCriterionEntry(AosWeaponAttribute.HitLeechMana, 1079701, 1060427), new SearchCriterionEntry(AosWeaponAttribute.HitLeechStam, 1079707, 1060430), new SearchCriterionEntry(AosWeaponAttribute.HitFatigue, 1154668, 1113700), new SearchCriterionEntry(AosWeaponAttribute.HitManaDrain, 1154669, 1113699), new SearchCriterionEntry(AosWeaponAttribute.SplinteringWeapon, 1154670, 1112857), new SearchCriterionEntry(ExtendedWeaponAttribute.Bane, 1154671), }), new SearchCriteriaCategory(Category.HitArea, 11, 1154537, new SearchCriterionEntry[] { // Hit Area new SearchCriterionEntry(AosWeaponAttribute.HitColdArea, 1079693, 1060416), new SearchCriterionEntry(AosWeaponAttribute.HitEnergyArea, 1079694, 1060418), new SearchCriterionEntry(AosWeaponAttribute.HitFireArea, 1079695, 1060419), new SearchCriterionEntry(AosWeaponAttribute.HitPhysicalArea, 1079696, 1060428), new SearchCriterionEntry(AosWeaponAttribute.HitPoisonArea, 1079697, 1060429), }), new SearchCriteriaCategory(Category.Resists, 12, 1154539, new SearchCriterionEntry[] { // Resists new SearchCriterionEntry(AosElementAttribute.Cold, 1079761, 1060445), new SearchCriterionEntry(AosElementAttribute.Energy, 1079762, 1060446), new SearchCriterionEntry(AosElementAttribute.Fire, 1079763, 1060447), new SearchCriterionEntry(AosElementAttribute.Physical, 1079764, 1060448), new SearchCriterionEntry(AosElementAttribute.Poison, 1079765, 1060449), }), new SearchCriteriaCategory(Category.Stats, 13, 1154540, new SearchCriterionEntry[] { // Stats new SearchCriterionEntry(AosAttribute.BonusStr, 1079767, 1060485), new SearchCriterionEntry(AosAttribute.BonusDex, 1079732, 1060409), new SearchCriterionEntry(AosAttribute.BonusInt, 1079756, 1060432), new SearchCriterionEntry(AosAttribute.BonusHits, 1079404, 1060415), new SearchCriterionEntry(AosAttribute.BonusStam, 1079405, 1060484), new SearchCriterionEntry(AosAttribute.BonusMana, 1079406, 1060439), new SearchCriterionEntry(AosAttribute.RegenHits, 1075627, 1060444), new SearchCriterionEntry(AosAttribute.RegenStam, 1079411, 1060443), new SearchCriterionEntry(AosAttribute.RegenMana, 1079410, 1060440), }), new SearchCriteriaCategory(Category.Slayer1, 15, 1154683, new SearchCriterionEntry[] { // Arachnid/Reptile Slayers new SearchCriterionEntry(SlayerName.ReptilianDeath, 1079751), new SearchCriterionEntry(SlayerName.DragonSlaying, 1061284), new SearchCriterionEntry(SlayerName.LizardmanSlaughter, 1079738), new SearchCriterionEntry(SlayerName.Ophidian, 1079740), new SearchCriterionEntry(SlayerName.SnakesBane, 1079744), new SearchCriterionEntry(SlayerName.ArachnidDoom, 1079747), new SearchCriterionEntry(SlayerName.ScorpionsBane, 1079743), new SearchCriterionEntry(SlayerName.SpidersDeath, 1079746), new SearchCriterionEntry(SlayerName.Terathan, 1079753), }), new SearchCriteriaCategory(Category.Slayer2, 16, 1154684, new SearchCriterionEntry[] { // Repond/Undead Slayers new SearchCriterionEntry(SlayerName.Repond, 1079750), new SearchCriterionEntry(TalismanSlayerName.Bat, 1072506), new SearchCriterionEntry(TalismanSlayerName.Bear, 1072504), new SearchCriterionEntry(TalismanSlayerName.Beetle, 1072508), new SearchCriterionEntry(TalismanSlayerName.Bird, 1072509), new SearchCriterionEntry(TalismanSlayerName.Bovine, 1072512), new SearchCriterionEntry(TalismanSlayerName.Flame, 1072511), new SearchCriterionEntry(TalismanSlayerName.Goblin, 1095010), new SearchCriterionEntry(TalismanSlayerName.Ice, 1072510), new SearchCriterionEntry(TalismanSlayerName.Mage, 1072507), new SearchCriterionEntry(SlayerName.OgreTrashing, 1079739), new SearchCriterionEntry(SlayerName.OrcSlaying, 1079741), new SearchCriterionEntry(SlayerName.TrollSlaughter, 1079754), new SearchCriterionEntry(TalismanSlayerName.Vermin, 1072505), new SearchCriterionEntry(TalismanSlayerName.Undead, 1079752), new SearchCriterionEntry(TalismanSlayerName.Wolf, 1075462), }), new SearchCriteriaCategory(Category.Slayer3, 17, 1154685, new SearchCriterionEntry[] { // Demon/Fey/Elemental Slayers new SearchCriterionEntry(SlayerName.Exorcism, 1079748), new SearchCriterionEntry(SlayerName.GargoylesFoe, 1079737), new SearchCriterionEntry(SlayerName.Fey, 1154652), new SearchCriterionEntry(SlayerName.ElementalBan, 1079749), new SearchCriterionEntry(SlayerName.Vacuum, 1079733), new SearchCriterionEntry(SlayerName.BloodDrinking, 1079734), new SearchCriterionEntry(SlayerName.EarthShatter, 1079735), new SearchCriterionEntry(SlayerName.FlameDousing, 1079736), new SearchCriterionEntry(SlayerName.ElementalHealth, 1079742), new SearchCriterionEntry(SlayerName.SummerWind, 1079745), new SearchCriterionEntry(SlayerName.WaterDissipation, 1079755), }), new SearchCriteriaCategory(Category.RequiredSkill, 18, 1154543, new SearchCriterionEntry[] { // Required Skill new SearchCriterionEntry(SkillName.Swords, 1044100), new SearchCriterionEntry(SkillName.Macing, 1044101), new SearchCriterionEntry(SkillName.Fencing, 1044102), new SearchCriterionEntry(SkillName.Archery, 1044091), new SearchCriterionEntry(SkillName.Throwing, 1044117), }), new SearchCriteriaCategory(Category.Skill1, 19, 1114255, new SearchCriterionEntry[] { // Skill Group 1 new SearchCriterionEntry(SkillName.Swords, 1044100), new SearchCriterionEntry(SkillName.Fencing, 1044102), new SearchCriterionEntry(SkillName.Macing, 1044101), new SearchCriterionEntry(SkillName.Magery, 1044085), new SearchCriterionEntry(SkillName.Musicianship, 1044089), }), new SearchCriteriaCategory(Category.Skill2, 20, 1114256, new SearchCriterionEntry[] { // Skill Group 2 new SearchCriterionEntry(SkillName.Wrestling, 1044103), new SearchCriterionEntry(SkillName.Tactics, 1044087), new SearchCriterionEntry(SkillName.AnimalTaming, 1044095), new SearchCriterionEntry(SkillName.Provocation, 1044082), new SearchCriterionEntry(SkillName.SpiritSpeak, 1044092), }), new SearchCriteriaCategory(Category.Skill3, 21, 1114257, new SearchCriterionEntry[] { // Skill Group 3 new SearchCriterionEntry(SkillName.Stealth, 1044107), new SearchCriterionEntry(SkillName.Parry, 1044065), new SearchCriterionEntry(SkillName.Meditation, 1044106), new SearchCriterionEntry(SkillName.AnimalLore, 1044062), new SearchCriterionEntry(SkillName.Discordance, 1044075), new SearchCriterionEntry(SkillName.Focus, 1044110), }), new SearchCriteriaCategory(Category.Skill4, 22, 1114258, new SearchCriterionEntry[] { // Skill Group 4 new SearchCriterionEntry(SkillName.Stealing, 1044093), new SearchCriterionEntry(SkillName.Anatomy, 1044061), new SearchCriterionEntry(SkillName.EvalInt, 1044076), new SearchCriterionEntry(SkillName.Veterinary, 1044099), new SearchCriterionEntry(SkillName.Necromancy, 1044109), new SearchCriterionEntry(SkillName.Bushido, 1044112), new SearchCriterionEntry(SkillName.Mysticism, 1044115), }), new SearchCriteriaCategory(Category.Skill5, 23, 1114259, new SearchCriterionEntry[] { // Skill Group 5 new SearchCriterionEntry(SkillName.Healing, 1044077), new SearchCriterionEntry(SkillName.MagicResist, 1044086), new SearchCriterionEntry(SkillName.Peacemaking, 1044069), new SearchCriterionEntry(SkillName.Archery, 1044091), new SearchCriterionEntry(SkillName.Chivalry, 1044111), new SearchCriterionEntry(SkillName.Ninjitsu, 1044113), new SearchCriterionEntry(SkillName.Throwing, 1044117), }), new SearchCriteriaCategory(Category.Skill6, 24, 1114260, new SearchCriterionEntry[] { // Skill Group 6 new SearchCriterionEntry(SkillName.Lumberjacking, 1044104), new SearchCriterionEntry(SkillName.Snooping, 1044088), new SearchCriterionEntry(SkillName.Mining, 1044105) }), new SearchCriteriaCategory(Category.Sort, 25, 1154695, new SearchCriterionEntry[] { /* Sort */ }), new SearchCriteriaCategory(Category.Auction, 26, 1159353, new SearchCriterionEntry[] { /* Auction Item */ }), }; } public class SearchCriterionEntry { public object Object { get; set; } public int Cliloc { get; set; } public int PropCliloc { get; set; } public SearchCriterionEntry(object obj, int cliloc) : this(obj, cliloc, 0) { } public SearchCriterionEntry(object obj, int cliloc, int pcliloc) { Object = obj; Cliloc = cliloc; PropCliloc = pcliloc; } } }