static SlayerGroup() { SlayerGroup undead = new SlayerGroup(); undead.Super = new SlayerEntry( SlayerName.Silver, typeof( SkeletalMage ), typeof( BoneMagi ), typeof( Lich ), typeof( LichLord ), typeof( SkeletalKnight ), typeof( BoneKnight ), typeof( Skeleton ), typeof( HeadlessOne ), typeof( Zombie ), typeof( Ghoul ) ); undead.Entries = new SlayerEntry[0]; m_Groups = new SlayerGroup[]{ undead }; m_TotalEntries = CompileEntries( m_Groups ); }
private static SlayerEntry[] CompileEntries( SlayerGroup[] groups ) { SlayerEntry[] entries = new SlayerEntry[27]; for ( int i = 0; i < groups.Length; ++i ) { SlayerGroup g = groups[i]; g.Super.Group = g; entries[(int)g.Super.Name] = g.Super; for ( int j = 0; j < g.Entries.Length; ++j ) { g.Entries[j].Group = g; entries[(int)g.Entries[j].Name] = g.Entries[j]; } } return entries; }
static SlayerGroup() { SlayerGroup humanoid = new SlayerGroup(); SlayerGroup undead = new SlayerGroup(); SlayerGroup elemental = new SlayerGroup(); SlayerGroup abyss = new SlayerGroup(); SlayerGroup arachnid = new SlayerGroup(); SlayerGroup reptilian = new SlayerGroup(); SlayerGroup fey = new SlayerGroup(); SlayerGroup eodon = new SlayerGroup(); SlayerGroup eodonTribe = new SlayerGroup(); SlayerGroup dino = new SlayerGroup(); SlayerGroup myrmidex = new SlayerGroup(); humanoid.Opposition = new SlayerGroup[] { undead }; humanoid.FoundOn = new Type[] { typeof(BoneKnight), typeof(Lich), typeof(LichLord) }; humanoid.Super = new SlayerEntry ( SlayerName.Repond, typeof(ClanCA), typeof(ClanCT), typeof(ClanRS), typeof(ClanRC), typeof(ClanSS), typeof(ClanSH), typeof(Barracoon), typeof(MasterTheophilus), typeof(Lurg), typeof(ArcticOgreLord), typeof(Cyclops), typeof(Ettin), typeof(EvilMage), typeof(EvilMageLord), typeof(FrostTroll), typeof(MeerCaptain), typeof(MeerEternal), typeof(MeerMage), typeof(MeerWarrior), typeof(Ogre), typeof(OgreLord), typeof(Orc), typeof(OrcBomber), typeof(OrcBrute), typeof(OrcCaptain), typeof(OrcChopper), typeof(OrcScout), typeof(OrcishLord), typeof(OrcishMage), typeof(Ratman), typeof(RatmanArcher), typeof(RatmanMage), typeof(SavageRider), typeof(SavageShaman), typeof(Savage), typeof(Titan), typeof(Troglodyte), typeof(Troll), typeof(Troglodyte), typeof(MougGuur), typeof(Chiikkaha), typeof(Minotaur), typeof(MinotaurGeneral), typeof(Medusa), typeof(RakktaviRenowned), typeof(TikitaviRenowned), typeof(VitaviRenowned), typeof(EnslavedGoblinScout), typeof(EnslavedGoblinKeeper), typeof(EnslavedGreenGoblin), typeof(EnslavedGreenGoblinAlchemist), typeof(EnslavedGoblinMage), typeof(EnslavedGrayGoblin), typeof(GreenGoblinScout), typeof(GreenGoblinAlchemist), typeof(GreenGoblin), typeof(GrayGoblinMage), typeof(GrayGoblinKeeper), typeof(GrayGoblin), typeof(GreenGoblinAlchemistRenowned), typeof(GrayGoblinMageRenowned), typeof(CorgulTheSoulBinder) ); humanoid.Entries = new SlayerEntry[] { new SlayerEntry ( SlayerName.OgreTrashing, typeof(Ogre), typeof(OgreLord), typeof(ArcticOgreLord) ), new SlayerEntry ( SlayerName.OrcSlaying, typeof(Orc), typeof(OrcBomber), typeof(OrcBrute), typeof(OrcCaptain), typeof(OrcChopper), typeof(OrcScout), typeof(OrcishLord), typeof(OrcishMage) ), new SlayerEntry ( SlayerName.TrollSlaughter, typeof(Troll), typeof(FrostTroll) ), }; undead.Opposition = new SlayerGroup[] { humanoid }; undead.Super = new SlayerEntry ( SlayerName.Silver, typeof(AncientLich), typeof(AncientLichRenowned), typeof(Bogle), typeof(BoneKnight), typeof(BoneMagi), typeof(DarkGuardian), typeof(DarknightCreeper), typeof(FleshGolem), typeof(Ghoul), typeof(GoreFiend), typeof(HellSteed), typeof(LadyOfTheSnow), typeof(Lich), typeof(LichLord), typeof(Mummy), typeof(PestilentBandage), typeof(Revenant), typeof(RevenantLion), typeof(RottingCorpse), typeof(Shade), typeof(ShadowKnight), typeof(SkeletalKnight), typeof(SkeletalMage), typeof(SkeletalMount), typeof(Skeleton), typeof(Spectre), typeof(Wraith), typeof(Zombie), typeof(UnfrozenMummy), typeof(RedDeath), typeof(SirPatrick), typeof(LadyJennifyr), typeof(MasterMikael), typeof(MasterJonath), typeof(LadyMarai), typeof(PrimevalLich), typeof(Niporailem), typeof(DreamWraith), typeof(EffeteUndeadGargoyle), typeof(UndeadGargoyle), typeof(UndeadGuardian), typeof(PutridUndeadGargoyle), typeof(PutridUndeadGuardian), typeof(Juonar), typeof(Spellbinder) ); undead.Entries = new SlayerEntry[0]; fey.Opposition = new SlayerGroup[] { abyss }; fey.Super = new SlayerEntry ( SlayerName.Fey, typeof(Centaur), typeof(CuSidhe), typeof(EtherealWarrior), typeof(Kirin), typeof(LordOaks), typeof(Pixie), typeof(PixieRenowned), typeof(Silvani), typeof(Treefellow), typeof(Unicorn), typeof(Wisp), typeof(MLDryad), typeof(Satyr), typeof(Changeling), typeof(InsaneDryad), typeof(CorporealBrume), typeof(CrystalLatticeSeeker), typeof(LadyMelisande), typeof(DreadHorn), typeof(Travesty), typeof(ShimmeringEffusion), typeof(Guile), typeof(Irk), typeof(DarkWisp), typeof(FeralTreefellow) ); fey.Entries = new SlayerEntry[0]; elemental.Opposition = new SlayerGroup[] { abyss }; elemental.FoundOn = new Type[] { typeof(Balron), typeof(Daemon), typeof(Putrefier), typeof(FireDaemonRenowned) }; elemental.Super = new SlayerEntry ( SlayerName.ElementalBan, typeof(LavaElemental), typeof(ToxicElemental), typeof(AcidElemental), typeof(AcidElementalRenowned), typeof(FireElementalRenowned), typeof(AgapiteElemental), typeof(AirElemental), typeof(SummonedAirElemental), typeof(BloodElemental), typeof(BronzeElemental), typeof(CopperElemental), typeof(CrystalElemental), typeof(DullCopperElemental), typeof(EarthElemental), typeof(SummonedEarthElemental), typeof(Efreet), typeof(FireElemental), typeof(SummonedFireElemental), typeof(GoldenElemental), typeof(IceElemental), typeof(KazeKemono), typeof(PoisonElemental), typeof(RaiJu), typeof(SandVortex), typeof(ShadowIronElemental), typeof(SnowElemental), typeof(ValoriteElemental), typeof(VeriteElemental), typeof(WaterElemental), typeof(SummonedWaterElemental), typeof(Flurry), typeof(Mistral), typeof(Tempest), typeof(UnboundEnergyVortex), typeof(ChaosVortex), typeof(WindElemental), typeof(FlameElemental), typeof(QuartzElemental), typeof(VoidManifestation), typeof(DemonKnight) ); elemental.Entries = new SlayerEntry[] { new SlayerEntry ( SlayerName.BloodDrinking, typeof(BloodElemental), typeof(DemonKnight) ), new SlayerEntry ( SlayerName.EarthShatter, typeof(AgapiteElemental), typeof(BronzeElemental), typeof(CopperElemental), typeof(DullCopperElemental), typeof(EarthElemental), typeof(SummonedEarthElemental), typeof(GoldenElemental), typeof(ShadowIronElemental), typeof(ValoriteElemental), typeof(VeriteElemental), typeof(QuartzElemental), typeof(DemonKnight) ), new SlayerEntry ( SlayerName.ElementalHealth, typeof(PoisonElemental), typeof(DemonKnight) ), new SlayerEntry ( SlayerName.FlameDousing, typeof(FireElemental), typeof(FireElementalRenowned), typeof(SummonedFireElemental), typeof(FlameElemental), typeof(DemonKnight) ), new SlayerEntry ( SlayerName.SummerWind, typeof(SnowElemental), typeof(IceElemental), typeof(DemonKnight) ), new SlayerEntry ( SlayerName.Vacuum, typeof(AirElemental), typeof(SummonedAirElemental), typeof(Flurry), typeof(Mistral), typeof(Tempest), typeof(UnboundEnergyVortex), typeof(ChaosVortex), typeof(WindElemental), typeof(DemonKnight) ), new SlayerEntry ( SlayerName.WaterDissipation, typeof(WaterElemental), typeof(SummonedWaterElemental), typeof(DemonKnight) ) }; abyss.Opposition = new SlayerGroup[] { elemental, fey }; abyss.FoundOn = new Type[] { typeof(BloodElemental) }; if (Core.AOS) { abyss.Super = new SlayerEntry ( SlayerName.Exorcism, typeof(DevourerRenowned), typeof(FireDaemonRenowned), typeof(AbysmalHorror), typeof(AbyssalInfernal), typeof(ArcaneDaemon), typeof(Balron), typeof(BoneDemon), typeof(ChaosDaemon), typeof(Daemon), typeof(SummonedDaemon), typeof(DemonKnight), typeof(Devourer), typeof(EnslavedGargoyle), typeof(FanDancer), typeof(FireGargoyle), typeof(Gargoyle), typeof(GargoyleDestroyer), typeof(GargoyleEnforcer), typeof(Gibberling), typeof(HordeMinion), typeof(FireDaemon), typeof(IceFiend), typeof(Imp), typeof(Impaler), typeof(Moloch), typeof(Oni), typeof(Ravager), typeof(Semidar), typeof(StoneGargoyle), typeof(Succubus), typeof(PatchworkSkeleton), typeof(TsukiWolf), typeof(Szavetra), typeof(CrystalDaemon), typeof(SlasherOfVeils), typeof(GargoyleShade), typeof(Putrefier), typeof(ChiefParoxysmus), typeof(Anzuanord), typeof(Ballem), typeof(Betballem), typeof(SkeletalLich), typeof(UsagralemBallem), typeof(EffetePutridGargoyle), typeof(EffeteUndeadGargoyle), typeof(PitFiend), typeof(ArchDaemon), typeof(AbyssalAbomination), typeof(Virtuebane) ); abyss.Entries = new SlayerEntry[] { // Daemon Dismissal & Balron Damnation have been removed and moved up to super slayer on OSI. new SlayerEntry ( SlayerName.GargoylesFoe, typeof(EnslavedGargoyle), typeof(FireGargoyle), typeof(Gargoyle), typeof(GargoyleDestroyer), typeof(GargoyleEnforcer), typeof(StoneGargoyle), typeof(GargoyleShade), typeof(EffetePutridGargoyle), typeof(EffeteUndeadGargoyle) ), }; } else { abyss.Super = new SlayerEntry ( SlayerName.Exorcism, typeof(AbysmalHorror), typeof(Balron), typeof(BoneDemon), typeof(ChaosDaemon), typeof(Daemon), typeof(SummonedDaemon), typeof(DemonKnight), typeof(Devourer), typeof(Gargoyle), typeof(FireGargoyle), typeof(Gibberling), typeof(HordeMinion), typeof(IceFiend), typeof(Imp), typeof(Impaler), typeof(Ravager), typeof(StoneGargoyle), typeof(ArcaneDaemon), typeof(EnslavedGargoyle), typeof(GargoyleDestroyer), typeof(GargoyleEnforcer), typeof(Moloch) ); abyss.Entries = new SlayerEntry[] { new SlayerEntry ( SlayerName.DaemonDismissal, typeof(Semidar), typeof(AbyssalInfernal), typeof(AbysmalHorror), typeof(Balron), typeof(BoneDemon), typeof(ChaosDaemon), typeof(Daemon), typeof(SummonedDaemon), typeof(DemonKnight), typeof(Devourer), typeof(Gibberling), typeof(HordeMinion), typeof(IceFiend), typeof(Imp), typeof(Impaler), typeof(Ravager), typeof(ArcaneDaemon), typeof(Moloch) ), new SlayerEntry ( SlayerName.GargoylesFoe, typeof(FireGargoyle), typeof(Gargoyle), typeof(StoneGargoyle), typeof(EnslavedGargoyle), typeof(GargoyleDestroyer), typeof(GargoyleEnforcer) ), new SlayerEntry ( SlayerName.BalronDamnation, typeof(Balron) ) }; } arachnid.Opposition = new SlayerGroup[] { reptilian }; arachnid.FoundOn = new Type[] { typeof(AncientWyrm), typeof(GreaterDragon), typeof(Dragon), typeof(OphidianMatriarch), typeof(ShadowWyrm) }; arachnid.Super = new SlayerEntry ( SlayerName.ArachnidDoom, typeof(DreadSpider), typeof(FrostSpider), typeof(GiantBlackWidow), typeof(GiantSpider), typeof(Mephitis), typeof(Scorpion), typeof(TerathanAvenger), typeof(TerathanDrone), typeof(TerathanMatriarch), typeof(TerathanWarrior), typeof(Miasma), typeof(SpeckledScorpion), typeof(LadyLissith), typeof(LadySabrix), typeof(Virulent), typeof(Silk), typeof(Malefic), typeof(Navrey), typeof(SentinelSpider), typeof(WolfSpider), typeof(TrapdoorSpider), typeof(Anlorzen), typeof(Anlorlem) ); arachnid.Entries = new SlayerEntry[] { new SlayerEntry ( SlayerName.ScorpionsBane, typeof(Scorpion), typeof(Miasma), typeof(SpeckledScorpion) ), new SlayerEntry ( SlayerName.SpidersDeath, typeof(DreadSpider), typeof(FrostSpider), typeof(GiantBlackWidow), typeof(GiantSpider), typeof(Mephitis), typeof(LadyLissith), typeof(LadySabrix), typeof(Virulent), typeof(Silk), typeof(Malefic), typeof(Navrey), typeof(SentinelSpider), typeof(WolfSpider), typeof(TrapdoorSpider), typeof(Anlorzen) ), new SlayerEntry ( SlayerName.Terathan, typeof(TerathanAvenger), typeof(TerathanDrone), typeof(TerathanMatriarch), typeof(TerathanWarrior), typeof(Anlorlem) ) }; reptilian.Opposition = new SlayerGroup[] { arachnid }; reptilian.FoundOn = new Type[] { typeof(TerathanAvenger), typeof(TerathanMatriarch) }; reptilian.Super = new SlayerEntry ( SlayerName.ReptilianDeath, typeof(Rikktor), typeof(Serado), typeof(SkeletalDragonRenowned), typeof(WyvernRenowned), typeof(AncientWyrm), typeof(DeepSeaSerpent), typeof(GreaterDragon), typeof(Dragon), typeof(Drake), typeof(GiantIceWorm), typeof(IceSerpent), typeof(GiantSerpent), typeof(Hiryu), typeof(IceSnake), typeof(JukaLord), typeof(JukaMage), typeof(JukaWarrior), typeof(LavaSerpent), typeof(LavaSnake), typeof(LesserHiryu), typeof(Lizardman), typeof(OphidianArchmage), typeof(OphidianKnight), typeof(OphidianMage), typeof(OphidianMatriarch), typeof(OphidianWarrior), typeof(Reptalon), typeof(SeaSerpent), typeof(Serado), typeof(SerpentineDragon), typeof(ShadowWyrm), typeof(SilverSerpent), typeof(SkeletalDragon), typeof(Snake), typeof(SwampDragon), typeof(WhiteWyrm), typeof(Wyvern), typeof(Yamandon), typeof(Hydra), typeof(CrystalHydra), typeof(CrystalSeaSerpent), typeof(Rend), typeof(Thrasher), typeof(Abscess), typeof(Grim), typeof(ChickenLizard), typeof(StygianDragon), typeof(FairyDragon), typeof(Skree), typeof(Slith), typeof(StoneSlith), typeof(ToxicSlith), typeof(Raptor), typeof(Kepetch), typeof(KepetchAmbusher), typeof(FrostDragon), typeof(ColdDrake), typeof(Coil), typeof(SkeletalDrake), typeof(CoralSnake) ); reptilian.Entries = new SlayerEntry[] { new SlayerEntry ( SlayerName.DragonSlaying, typeof(Rikktor), typeof(SkeletalDragonRenowned), typeof(WyvernRenowned), typeof(AncientWyrm), typeof(GreaterDragon), typeof(Dragon), typeof(Drake), typeof(Hiryu), typeof(LesserHiryu), typeof(Reptalon), typeof(SerpentineDragon), typeof(ShadowWyrm), typeof(SkeletalDragon), typeof(SwampDragon), typeof(WhiteWyrm), typeof(Wyvern), typeof(Hydra), typeof(CrystalHydra), typeof(Rend), typeof(Abscess), typeof(Grim), typeof(StygianDragon), typeof(FairyDragon), typeof(SkeletalDrake), typeof(ColdDrake) ), new SlayerEntry ( SlayerName.LizardmanSlaughter, typeof(Lizardman) ), new SlayerEntry ( SlayerName.Ophidian, typeof(OphidianArchmage), typeof(OphidianKnight), typeof(OphidianMage), typeof(OphidianMatriarch), typeof(OphidianWarrior) ), new SlayerEntry ( SlayerName.SnakesBane, typeof(CrystalSeaSerpent), typeof(Coil), typeof(CoralSnake), typeof(DeepSeaSerpent), typeof(GiantIceWorm), typeof(GiantSerpent), typeof(IceSerpent), typeof(IceSnake), typeof(LavaSerpent), typeof(LavaSnake), typeof(SeaSerpent), typeof(Serado), typeof(SilverSerpent), typeof(Snake), typeof(Yamandon) ) }; eodon.Opposition = new SlayerGroup[] { }; eodon.FoundOn = new Type[] { }; eodon.Super = new SlayerEntry( SlayerName.Eodon, typeof(Dimetrosaur), typeof(Gallusaurus), typeof(Archaeosaurus), typeof(Najasaurus), typeof(Saurosaurus), typeof(Allosaurus), typeof(MyrmidexLarvae), typeof(MyrmidexDrone), typeof(MyrmidexWarrior), typeof(DragonTurtle), typeof(DragonTurtleHatchling), typeof(DesertScorpion), typeof(TribeWarrior), typeof(TribeShaman), typeof(TribeChieftan), typeof(WildTiger), typeof(WildBlackTiger), typeof(WildWhiteTiger), typeof(SilverbackGorilla)); eodon.Entries = new SlayerEntry[] { }; eodonTribe.Opposition = new SlayerGroup[] { }; eodonTribe.FoundOn = new Type[] { }; eodonTribe.Super = new SlayerEntry(SlayerName.EodonTribe, typeof(TribeWarrior), typeof(TribeShaman), typeof(TribeChieftan)); eodonTribe.Entries = new SlayerEntry[] { }; dino.Opposition = new SlayerGroup[] { fey }; dino.FoundOn = new Type[] { }; dino.Super = new SlayerEntry( SlayerName.Dinosaur, typeof(Dimetrosaur), typeof(Gallusaurus), typeof(Archaeosaurus), typeof(Najasaurus), typeof(Saurosaurus), typeof(Allosaurus), typeof(MyrmidexLarvae), typeof(MyrmidexDrone), typeof(MyrmidexWarrior)); dino.Entries = new SlayerEntry[] { }; myrmidex.Opposition = new SlayerGroup[] { fey }; myrmidex.FoundOn = new Type[] { }; myrmidex.Super = new SlayerEntry( SlayerName.Myrmidex, typeof(MyrmidexLarvae), typeof(MyrmidexDrone), typeof(MyrmidexWarrior)); myrmidex.Entries = new SlayerEntry[] { }; m_Groups = new SlayerGroup[] { humanoid, undead, elemental, abyss, arachnid, reptilian, fey, eodon, eodonTribe, dino, myrmidex, }; m_TotalEntries = CompileEntries(m_Groups); }
public double GetDifficultyFor(Mobile targ) { /* Difficulty TODO: Add another 100 points for each of the following abilities: * - Radiation or Aura Damage (Heat, Cold etc.) * - Summoning Undead */ double val = targ.Hits + targ.Stam + targ.Mana; for (int i = 0; i < targ.Skills.Length; i++) { val += targ.Skills[i].Base; } if (val > 700) { val = 700 + ((val - 700) / 3.66667); } BaseCreature bc = targ as BaseCreature; if (IsMageryCreature(bc)) { val += 100; } if (IsFireBreathingCreature(bc)) { val += 100; } if (IsPoisonImmune(bc)) { val += 100; } if (targ is VampireBat || targ is VampireBatFamiliar) { val += 100; } val += GetPoisonLevel(bc) * 20; val /= 10; if (bc != null && bc.IsParagon) { val += 40.0; } if (m_Quality == InstrumentQuality.Exceptional) { val -= 5.0; // 10% } if (m_Slayer != SlayerName.None) { SlayerEntry entry = SlayerGroup.GetEntryByName(m_Slayer); if (entry != null) { if (entry.Slays(targ)) { val -= 10.0; // 20% } else if (entry.Group.OppositionSuperSlays(targ)) { val += 10.0; // -20% } } } if (m_Slayer2 != SlayerName.None) { SlayerEntry entry = SlayerGroup.GetEntryByName(m_Slayer2); if (entry != null) { if (entry.Slays(targ)) { val -= 10.0; // 20% } else if (entry.Group.OppositionSuperSlays(targ)) { val += 10.0; // -20% } } } return(val); }
public override bool OnMoveOver(Mobile m) { bool hurts = true; if (m.Blessed) { hurts = false; } if (!m.Alive) { hurts = false; } if (owner is BaseCreature && m is BaseCreature) { BaseCreature bc = (BaseCreature)m; if (!bc.Controlled) { hurts = false; } } if (hurts) { SlayerEntry SilverSlayer = SlayerGroup.GetEntryByName(SlayerName.Silver); SlayerEntry ExorcismSlayer = SlayerGroup.GetEntryByName(SlayerName.Exorcism); if (m is PlayerMobile && Spells.Research.ResearchAirWalk.UnderEffect(m)) { Point3D air = new Point3D((m.X + 1), (m.Y + 1), (m.Z + 5)); Effects.SendLocationParticles(EffectItem.Create(air, m.Map, EffectItem.DefaultDuration), 0x2007, 9, 32, Server.Items.CharacterDatabase.GetMySpellHue(m, 0), 0, 5022, 0); m.PlaySound(0x014); } else if (this.Name == "hot magma" && !(m is MagmaElemental)) { owner.DoHarmful(m); Effects.SendLocationParticles(EffectItem.Create(m.Location, m.Map, EffectItem.DefaultDuration), 0x3709, 10, 30, 5052); Effects.PlaySound(m.Location, m.Map, 0x225); AOS.Damage(m, owner, Hurt(owner, 24, 48), 0, 100, 0, 0, 0); // Ph, Fr, Cd, Ps, Eg } else if (this.Name == "quick silver") { owner.DoHarmful(m); Effects.PlaySound(m.Location, m.Map, 0x4D1); AOS.Damage(m, owner, Hurt(owner, 24, 48), 50, 0, 0, 0, 50); // Ph, Fr, Cd, Ps, Eg } else if (this.Name == "holy water" && (SilverSlayer.Slays(m) || ExorcismSlayer.Slays(m))) { owner.DoHarmful(m); Effects.SendLocationParticles(EffectItem.Create(m.Location, m.Map, EffectItem.DefaultDuration), 0x3709, 10, 30, 5052); Effects.PlaySound(m.Location, m.Map, 0x225); AOS.Damage(m, owner, Hurt(owner, 40, 60), 20, 20, 20, 20, 20); // Ph, Fr, Cd, Ps, Eg } else if (this.Name == "glowing goo" && !(m is GlowBeetle) && !(m is GlowBeetleRiding)) { owner.DoHarmful(m); Effects.SendLocationParticles(EffectItem.Create(m.Location, m.Map, EffectItem.DefaultDuration), 0x36B0, 1, 14, 63, 7, 9915, 0); int eSound = 0x229; if (m.Body == 0x190 && m is PlayerMobile) { eSound = 0x43F; } else if (m.Body == 0x191 && m is PlayerMobile) { eSound = 0x32D; } Effects.PlaySound(m.Location, m.Map, eSound); AOS.Damage(m, owner, Hurt(owner, 24, 48), 0, 0, 0, 50, 50); // Ph, Fr, Cd, Ps, Eg } else if (this.Name == "scorching ooze" && !(m is Lavapede)) { owner.DoHarmful(m); Effects.SendLocationParticles(EffectItem.Create(m.Location, m.Map, EffectItem.DefaultDuration), 0x36B0, 1, 14, 63, 7, 9915, 0); int eSound = 0x229; if (m.Body == 0x190 && m is PlayerMobile) { eSound = 0x43F; } else if (m.Body == 0x191 && m is PlayerMobile) { eSound = 0x32D; } Effects.PlaySound(m.Location, m.Map, eSound); AOS.Damage(m, owner, Hurt(owner, 24, 48), 0, 100, 0, 0, 0); // Ph, Fr, Cd, Ps, Eg } else if (this.Name == "blue slime" && !(m is SlimeDevil)) { owner.DoHarmful(m); Effects.PlaySound(m.Location, m.Map, 0x4D1); AOS.Damage(m, owner, Hurt(owner, 24, 48), 0, 0, 100, 0, 0); // Ph, Fr, Cd, Ps, Eg } else if (this.Name == "swamp muck" && !(m is SwampThing)) { owner.DoHarmful(m); Effects.PlaySound(m.Location, m.Map, 0x4D1); AOS.Damage(m, owner, Hurt(owner, 24, 48), 50, 0, 0, 50, 0); // Ph, Fr, Cd, Ps, Eg } else if (this.Name == "poisonous slime" && !(m is AbyssCrawler)) { owner.DoHarmful(m); Effects.PlaySound(m.Location, m.Map, 0x4D1); AOS.Damage(m, owner, Hurt(owner, 24, 48), 0, 0, 0, 100, 0); // Ph, Fr, Cd, Ps, Eg } else if (this.Name == "poison spit" && !(m is Neptar) && !(m is NeptarWizard)) { owner.DoHarmful(m); Effects.PlaySound(m.Location, m.Map, 0x4D1); AOS.Damage(m, owner, Hurt(owner, 24, 48), 0, 0, 0, 100, 0); // Ph, Fr, Cd, Ps, Eg } else if (this.Name == "poison spittle" && !(m is Lurker)) { owner.DoHarmful(m); Effects.PlaySound(m.Location, m.Map, 0x4D1); AOS.Damage(m, owner, Hurt(owner, 24, 48), 0, 0, 0, 100, 0); // Ph, Fr, Cd, Ps, Eg } else if (this.Name == "fungal slime" && !(m is Fungal) && !(m is FungalMage) && !(m is CreepingFungus)) { owner.DoHarmful(m); Effects.PlaySound(m.Location, m.Map, 0x4D1); AOS.Damage(m, owner, Hurt(owner, 24, 48), 50, 0, 0, 50, 0); // Ph, Fr, Cd, Ps, Eg } else if (this.Name == "spider ooze" && !(m is ZombieSpider)) { owner.DoHarmful(m); Effects.PlaySound(m.Location, m.Map, 0x4D1); AOS.Damage(m, owner, Hurt(owner, 24, 48), 50, 0, 0, 50, 0); // Ph, Fr, Cd, Ps, Eg } else if (this.Name == "acidic slime" && !(m is ToxicElemental)) { owner.DoHarmful(m); Effects.PlaySound(m.Location, m.Map, 0x231); AOS.Damage(m, owner, Hurt(owner, 24, 48), 50, 0, 0, 50, 0); // Ph, Fr, Cd, Ps, Eg } else if (this.Name == "acidic ichor" && !(m is AntaurKing) && !(m is AntaurProgenitor) && !(m is AntaurSoldier) && !(m is AntaurWorker)) { owner.DoHarmful(m); Effects.PlaySound(m.Location, m.Map, 0x231); AOS.Damage(m, owner, Hurt(owner, 24, 48), 50, 0, 0, 50, 0); // Ph, Fr, Cd, Ps, Eg } else if (this.Name == "thick blood" && !(m is BloodElemental) && !(m is BloodDemon)) { owner.DoHarmful(m); Effects.SendLocationParticles(EffectItem.Create(m.Location, m.Map, EffectItem.DefaultDuration), 0x36B0, 1, 14, 0x25, 7, 9915, 0); int eSound = 0x229; if (m.Body == 0x190 && m is PlayerMobile) { eSound = 0x43F; } else if (m.Body == 0x191 && m is PlayerMobile) { eSound = 0x32D; } Effects.PlaySound(m.Location, m.Map, eSound); AOS.Damage(m, owner, Hurt(owner, 24, 48), 0, 0, 0, 100, 0); // Ph, Fr, Cd, Ps, Eg } else if (this.Name == "infected blood" && !(m is Infected)) { owner.DoHarmful(m); Effects.SendLocationParticles(EffectItem.Create(m.Location, m.Map, EffectItem.DefaultDuration), 0x36B0, 1, 14, 0x25, 7, 9915, 0); int eSound = 0x229; if (m.Body == 0x190 && m is PlayerMobile) { eSound = 0x43F; } else if (m.Body == 0x191 && m is PlayerMobile) { eSound = 0x32D; } Effects.PlaySound(m.Location, m.Map, eSound); AOS.Damage(m, owner, Hurt(owner, 24, 48), 0, 0, 0, 100, 0); // Ph, Fr, Cd, Ps, Eg } else if (this.Name == "alien blood" && !(m is Xenomorph) && !(m is Xenomutant)) { owner.DoHarmful(m); Effects.SendLocationParticles(EffectItem.Create(m.Location, m.Map, EffectItem.DefaultDuration), 0x36B0, 1, 14, 0x25, 7, 9915, 0); int eSound = 0x229; if (m.Body == 0x190 && m is PlayerMobile) { eSound = 0x43F; } else if (m.Body == 0x191 && m is PlayerMobile) { eSound = 0x32D; } Effects.PlaySound(m.Location, m.Map, eSound); AOS.Damage(m, owner, Hurt(owner, 24, 48), 20, 20, 20, 20, 20); // Ph, Fr, Cd, Ps, Eg } else if (this.Name == "green blood" && !(m is ZombieGiant)) { owner.DoHarmful(m); Effects.SendLocationParticles(EffectItem.Create(m.Location, m.Map, EffectItem.DefaultDuration), 0x36B0, 1, 14, 0x25, 7, 9915, 0); int eSound = 0x229; if (m.Body == 0x190 && m is PlayerMobile) { eSound = 0x43F; } else if (m.Body == 0x191 && m is PlayerMobile) { eSound = 0x32D; } Effects.PlaySound(m.Location, m.Map, eSound); AOS.Damage(m, owner, Hurt(owner, 24, 48), 20, 0, 0, 80, 0); // Ph, Fr, Cd, Ps, Eg } else if (this.Name == "toxic blood" && !(m is Mutant)) { owner.DoHarmful(m); Effects.SendLocationParticles(EffectItem.Create(m.Location, m.Map, EffectItem.DefaultDuration), 0x36B0, 1, 14, 0x25, 7, 9915, 0); int eSound = 0x229; if (m.Body == 0x190 && m is PlayerMobile) { eSound = 0x43F; } else if (m.Body == 0x191 && m is PlayerMobile) { eSound = 0x32D; } Effects.PlaySound(m.Location, m.Map, eSound); AOS.Damage(m, owner, Hurt(owner, 24, 48), 0, 0, 0, 100, 0); // Ph, Fr, Cd, Ps, Eg } else if (this.Name == "freezing water" && !(m is WaterElemental) && !(m is WaterWeird) && !(m is DeepWaterElemental) && !(m is Dagon)) { owner.DoHarmful(m); Effects.PlaySound(m.Location, m.Map, 0x4D1); AOS.Damage(m, owner, Hurt(owner, 20, 40), 0, 0, 100, 0, 0); // Ph, Fr, Cd, Ps, Eg } else if (this.Name == "deep water" && !(m is WaterElemental) && !(m is WaterWeird) && !(m is DeepWaterElemental) && !(m is Dagon)) { owner.DoHarmful(m); Effects.PlaySound(m.Location, m.Map, 0x4D1); AOS.Damage(m, owner, Hurt(owner, 40, 60), 0, 0, 100, 0, 0); // Ph, Fr, Cd, Ps, Eg } else if (this.Name == "lesser poison potion" || this.Name == "poison potion" || this.Name == "greater poison potion" | this.Name == "deadly poison potion" || this.Name == "lethal poison potion") { int pSkill = (int)(owner.Skills[SkillName.Poisoning].Value / 50); int tSkill = (int)(owner.Skills[SkillName.TasteID].Value / 33); int aSkill = (int)(owner.Skills[SkillName.Alchemy].Value / 33); int pMin = pSkill + tSkill + aSkill; int pMax = pMin * 2; Poison pois = Poison.Lesser; if (this.Name == "poison potion") { pMin = pMin + 2; pMax = pMax + 2; pois = Poison.Regular; } else if (this.Name == "greater poison potion") { pMin = pMin + 3; pMax = pMax + 3; pois = Poison.Greater; } else if (this.Name == "deadly poison potion") { pMin = pMin + 4; pMax = pMax + 4; pois = Poison.Deadly; } else if (this.Name == "lethal poison potion") { pMin = pMin + 5; pMax = pMax + 5; pois = Poison.Lethal; } if (pMin >= Utility.RandomMinMax(1, 16)) { m.ApplyPoison(owner, pois); } owner.DoHarmful(m); Effects.PlaySound(m.Location, m.Map, 0x4D1); AOS.Damage(m, owner, Hurt(owner, pMin, pMax), 0, 0, 0, 100, 0); // Ph, Fr, Cd, Ps, Eg } else if (this.Name == "liquid fire") { int liqMin = Server.Items.BaseLiquid.GetLiquidBonus(owner); int liqMax = liqMin * 2; owner.DoHarmful(m); Effects.SendLocationEffect(m.Location, m.Map, 0x3709, 30, 10); m.PlaySound(0x208); AOS.Damage(m, owner, Hurt(owner, liqMin, liqMax), 20, 80, 0, 0, 0); // Ph, Fr, Cd, Ps, Eg } else if (this.Name == "liquid goo") { int liqMin = Server.Items.BaseLiquid.GetLiquidBonus(owner); int liqMax = liqMin * 2; owner.DoHarmful(m); Effects.SendLocationEffect(m.Location, m.Map, Utility.RandomList(0x3967, 0x3979), 30, 10); m.PlaySound(0x5C3); AOS.Damage(m, owner, Hurt(owner, liqMin, liqMax), 20, 0, 0, 0, 80); // Ph, Fr, Cd, Ps, Eg } else if (this.Name == "liquid ice") { int liqMin = Server.Items.BaseLiquid.GetLiquidBonus(owner); int liqMax = liqMin * 2; owner.DoHarmful(m); Effects.SendLocationEffect(m.Location, m.Map, 0x1A84, 30, 10, 0x9C1, 0); m.PlaySound(0x10B); AOS.Damage(m, owner, Hurt(owner, liqMin, liqMax), 20, 0, 80, 0, 0); // Ph, Fr, Cd, Ps, Eg } else if (this.Name == "liquid rot") { int liqMin = Server.Items.BaseLiquid.GetLiquidBonus(owner); int liqMax = liqMin * 2; owner.DoHarmful(m); Effects.SendLocationEffect(m.Location, m.Map, 0x3400, 60); Effects.PlaySound(m.Location, m.Map, 0x108); AOS.Damage(m, owner, Hurt(owner, liqMin, liqMax), 20, 0, 0, 80, 0); // Ph, Fr, Cd, Ps, Eg } else if (this.Name == "liquid pain") { int liqMin = Server.Items.BaseLiquid.GetLiquidBonus(owner); int liqMax = liqMin * 2; owner.DoHarmful(m); m.FixedParticles(0x37C4, 1, 8, 9916, 39, 3, EffectLayer.Head); m.FixedParticles(0x37C4, 1, 8, 9502, 39, 4, EffectLayer.Head); m.PlaySound(0x210); AOS.Damage(m, owner, Hurt(owner, liqMin, liqMax), 80, 5, 5, 5, 5); // Ph, Fr, Cd, Ps, Eg } } return(true); }
static SlayerGroup() { SlayerGroup humanoid = new SlayerGroup(); SlayerGroup undead = new SlayerGroup(); SlayerGroup elemental = new SlayerGroup(); SlayerGroup abyss = new SlayerGroup(); SlayerGroup arachnid = new SlayerGroup(); SlayerGroup reptilian = new SlayerGroup(); SlayerGroup fey = new SlayerGroup(); humanoid.Opposition = new SlayerGroup[]{ undead }; humanoid.FoundOn = new Type[]{ typeof( BoneKnight ), typeof( Lich ), typeof( LichLord ) }; humanoid.Super = new SlayerEntry( SlayerName.Repond, typeof( ArcticOgreLord ), typeof( Cyclops ), typeof( Ettin ), typeof( EvilMage ), typeof( EvilMageLord ), typeof( FrostTroll ), /*typeof( MeerCaptain ), typeof( MeerEternal ), typeof( MeerMage ), typeof( MeerWarrior ),*/ typeof( Ogre ), typeof( OgreLord ), typeof( Orc ), typeof( OrcBomber ), typeof( OrcBrute ), typeof( OrcCaptain ), /*typeof( OrcChopper ), typeof( OrcScout ),*/ typeof( OrcishLord ), typeof( OrcishMage ), typeof( Ratman ), typeof( RatmanArcher ), typeof( RatmanMage ), typeof( SavageRider ), typeof( SavageShaman ), typeof( Savage ), typeof( Titan ), typeof( Troll ) ); humanoid.Entries = new SlayerEntry[] { new SlayerEntry( SlayerName.OgreTrashing, typeof( Ogre ), typeof( OgreLord ), typeof( ArcticOgreLord ) ), new SlayerEntry( SlayerName.OrcSlaying, typeof( Orc ), typeof( OrcBomber ), typeof( OrcBrute ), typeof( OrcCaptain ),/* typeof( OrcChopper ), typeof( OrcScout ),*/ typeof( OrcishLord ), typeof( OrcishMage ) ), new SlayerEntry( SlayerName.TrollSlaughter, typeof( Troll ), typeof( FrostTroll ) ) }; undead.Opposition = new SlayerGroup[]{ humanoid }; undead.Super = new SlayerEntry( SlayerName.Silver, typeof( AncientLich ), typeof( Bogle ), typeof( BoneKnight ), typeof( BoneMagi ),/* typeof( DarkGuardian ), typeof( DarknightCreeper ), typeof( FleshGolem ),*/ typeof( Ghoul ),/* typeof( GoreFiend ),*/ typeof( HellSteed ), /*typeof( LadyOfTheSnow ),*/ typeof( Lich ), typeof( LichLord ), typeof( Mummy ), /*typeof( PestilentBandage ), typeof( Revenant ), typeof( RevenantLion ),*/ typeof( RottingCorpse ), typeof( Shade ), /*typeof( ShadowKnight ),*/ typeof( SkeletalKnight ), typeof( SkeletalMage ), typeof( SkeletalMount ), typeof( Skeleton ), typeof( Spectre ), typeof( Wraith ), typeof( Zombie ) ); undead.Entries = new SlayerEntry[0]; fey.Opposition = new SlayerGroup[]{ abyss }; fey.Super = new SlayerEntry( SlayerName.Fey, typeof( Centaur ), typeof( EtherealWarrior ), typeof( Kirin ), /*typeof( LordOaks ),*/ typeof( Pixie ), /*typeof( Silvani ), typeof( Treefellow ),*/ typeof( Unicorn ), typeof( Wisp )/*,typeof( MLDryad ), typeof( Satyr )*/ ); fey.Entries = new SlayerEntry[0]; elemental.Opposition = new SlayerGroup[]{ abyss }; elemental.FoundOn = new Type[]{ typeof( Balron ), typeof( Daemon ) }; elemental.Super = new SlayerEntry( SlayerName.ElementalBan,/* typeof( AcidElemental ),*/ typeof( AgapiteElemental ), typeof( AirElemental ), typeof( SummonedAirElemental ), typeof( BloodElemental ), typeof( BronzeElemental ), typeof( CopperElemental ),/* typeof( CrystalElemental ),*/ typeof( DullCopperElemental ), typeof( EarthElemental ), typeof( SummonedEarthElemental ), typeof( Efreet ), typeof( FireElemental ), typeof( SummonedFireElemental ), typeof( GoldenElemental ), typeof( IceElemental ), /*typeof( KazeKemono ),*/ typeof( PoisonElemental ), /*typeof( RaiJu ),*/ typeof( SandVortex ), typeof( ShadowIronElemental ), typeof( SnowElemental ), typeof( ValoriteElemental ), typeof( VeriteElemental ), typeof( WaterElemental ), typeof( SummonedWaterElemental ) ); elemental.Entries = new SlayerEntry[] { new SlayerEntry( SlayerName.BloodDrinking, typeof( BloodElemental ) ), new SlayerEntry( SlayerName.EarthShatter, typeof( AgapiteElemental ), typeof( BronzeElemental ), typeof( CopperElemental ), typeof( DullCopperElemental ), typeof( EarthElemental ), typeof( SummonedEarthElemental ), typeof( GoldenElemental ), typeof( ShadowIronElemental ), typeof( ValoriteElemental ), typeof( VeriteElemental ) ), new SlayerEntry( SlayerName.ElementalHealth, typeof( PoisonElemental ) ), new SlayerEntry( SlayerName.FlameDousing, typeof( FireElemental ), typeof( SummonedFireElemental ) ), new SlayerEntry( SlayerName.SummerWind, typeof( SnowElemental ), typeof( IceElemental ) ), new SlayerEntry( SlayerName.Vacuum, typeof( AirElemental ), typeof( SummonedAirElemental ) ), new SlayerEntry( SlayerName.WaterDissipation, typeof( WaterElemental ), typeof( SummonedWaterElemental ) ) }; abyss.Opposition = new SlayerGroup[]{ elemental, fey }; abyss.FoundOn = new Type[]{ typeof( BloodElemental ) }; if( Core.AOS ) { abyss.Super = new SlayerEntry( SlayerName.Exorcism, /*typeof( AbysmalHorror ),*/ typeof( ArcaneDaemon ), typeof( Balron ), /*typeof( BoneDemon ),*/ typeof( ChaosDaemon ), typeof( Daemon ), typeof( SummonedDaemon ), /*typeof( DemonKnight ), typeof( Devourer ),*/ typeof( EnslavedGargoyle ), /*typeof( FanDancer ),*/ typeof( FireGargoyle ), typeof( Gargoyle ), typeof( GargoyleDestroyer ), typeof( GargoyleEnforcer ), /*typeof( Gibberling ),*/ typeof( HordeMinion ), typeof( IceFiend ), typeof( Imp ), /*typeof( Impaler ),*/ typeof( Moloch ), /*typeof( Oni ), typeof( Ravager ), typeof( Semidar ),*/ typeof( StoneGargoyle ), typeof( Succubus ) /*,typeof( TsukiWolf )*/ ); abyss.Entries = new SlayerEntry[] { // Daemon Dismissal & Balron Damnation have been removed and moved up to super slayer on OSI. new SlayerEntry( SlayerName.GargoylesFoe, typeof( EnslavedGargoyle ), typeof( FireGargoyle ), typeof( Gargoyle ), typeof( GargoyleDestroyer ), typeof( GargoyleEnforcer ), typeof( StoneGargoyle ) ), }; } else { abyss.Super = new SlayerEntry( SlayerName.Exorcism,/* typeof( AbysmalHorror ),*/ typeof( Balron ), /*typeof( BoneDemon ),*/ typeof( ChaosDaemon ), typeof( Daemon ), typeof( SummonedDaemon ), /*typeof( DemonKnight ), typeof( Devourer ),*/ typeof( Gargoyle ), typeof( FireGargoyle ),/* typeof( Gibberling ),*/ typeof( HordeMinion ), typeof( IceFiend ), typeof( Imp ), /*typeof( Impaler ), typeof( Ravager ),*/ typeof( StoneGargoyle ), typeof( ArcaneDaemon ), typeof( EnslavedGargoyle ), typeof( GargoyleDestroyer ), typeof( GargoyleEnforcer ), typeof( Moloch ) ); abyss.Entries = new SlayerEntry[] { new SlayerEntry( SlayerName.DaemonDismissal, /*typeof( AbysmalHorror ), */typeof( Balron ), /*typeof( BoneDemon ),*/ typeof( ChaosDaemon ), typeof( Daemon ), typeof( SummonedDaemon ), /*typeof( DemonKnight ), typeof( Devourer ), typeof( Gibberling ), */typeof( HordeMinion ), typeof( IceFiend ), typeof( Imp ), /*typeof( Impaler ), typeof( Ravager ),*/ typeof( ArcaneDaemon ), typeof( Moloch ) ), new SlayerEntry( SlayerName.GargoylesFoe, typeof( FireGargoyle ), typeof( Gargoyle ), typeof( StoneGargoyle ), typeof( EnslavedGargoyle ), typeof( GargoyleDestroyer ), typeof( GargoyleEnforcer ) ), new SlayerEntry( SlayerName.BalronDamnation, typeof( Balron ) ) }; } arachnid.Opposition = new SlayerGroup[]{ reptilian }; arachnid.FoundOn = new Type[]{ typeof( AncientWyrm ), /*typeof( GreaterDragon ), */typeof( Dragon ), typeof( OphidianMatriarch ), typeof( ShadowWyrm ) }; arachnid.Super = new SlayerEntry( SlayerName.ArachnidDoom, typeof( DreadSpider ), typeof( FrostSpider ), typeof( GiantBlackWidow ), typeof( GiantSpider ), /*typeof( Mephitis ),*/ typeof( Scorpion ), typeof( TerathanAvenger ), typeof( TerathanDrone ), typeof( TerathanMatriarch ), typeof( TerathanWarrior ) ); arachnid.Entries = new SlayerEntry[] { new SlayerEntry( SlayerName.ScorpionsBane, typeof( Scorpion ) ), new SlayerEntry( SlayerName.SpidersDeath, typeof( DreadSpider ), typeof( FrostSpider ), typeof( GiantBlackWidow ), typeof( GiantSpider )/*, typeof( Mephitis )*/ ), new SlayerEntry( SlayerName.Terathan, typeof( TerathanAvenger ), typeof( TerathanDrone ), typeof( TerathanMatriarch ), typeof( TerathanWarrior ) ) }; reptilian.Opposition = new SlayerGroup[]{ arachnid }; reptilian.FoundOn = new Type[]{ typeof( TerathanAvenger ), typeof( TerathanMatriarch ) }; reptilian.Super = new SlayerEntry( SlayerName.ReptilianDeath, typeof( AncientWyrm ), typeof( DeepSeaSerpent ), /*typeof( GreaterDragon ),*/ typeof( Dragon ), typeof( Drake ), typeof( GiantIceWorm ), typeof( IceSerpent ), typeof( GiantSerpent ), typeof( Hiryu ), typeof( IceSnake ), /**typeof( JukaLord ), typeof( JukaMage ), typeof( JukaWarrior ),*/ typeof( LavaSerpent ), typeof( LavaSnake ), typeof( LesserHiryu ), typeof( Lizardman ), typeof( OphidianArchmage ), typeof( OphidianKnight ), typeof( OphidianMage ), typeof( OphidianMatriarch ), typeof( OphidianWarrior ), typeof( SeaSerpent ), /*typeof( Serado ),*/ typeof( SerpentineDragon ), typeof( ShadowWyrm ), typeof( SilverSerpent ), typeof( SkeletalDragon ), typeof( Snake ), typeof( SwampDragon ), typeof( WhiteWyrm ), typeof( Wyvern )/*, typeof( Yamandon )*/ ); reptilian.Entries = new SlayerEntry[] { new SlayerEntry( SlayerName.DragonSlaying, typeof( AncientWyrm ), /*typeof( GreaterDragon ),*/ typeof( Dragon ), typeof( Drake ), typeof( Hiryu ), typeof( LesserHiryu ), typeof( SerpentineDragon ), typeof( ShadowWyrm ), typeof( SkeletalDragon ), typeof( SwampDragon ), typeof( WhiteWyrm ), typeof( Wyvern ) ), new SlayerEntry( SlayerName.LizardmanSlaughter, typeof( Lizardman ) ), new SlayerEntry( SlayerName.Ophidian, typeof( OphidianArchmage ), typeof( OphidianKnight ), typeof( OphidianMage ), typeof( OphidianMatriarch ), typeof( OphidianWarrior ) ), new SlayerEntry( SlayerName.SnakesBane, typeof( DeepSeaSerpent ), typeof( GiantIceWorm ), typeof( GiantSerpent ), typeof( IceSerpent ), typeof( IceSnake ), typeof( LavaSerpent ), typeof( LavaSnake ), typeof( SeaSerpent ), /*typeof( Serado ), */typeof( SilverSerpent ), typeof( Snake )/*, typeof( Yamandon )*/ ) }; m_Groups = new SlayerGroup[] { humanoid, undead, elemental, abyss, arachnid, reptilian, fey }; m_TotalEntries = CompileEntries( m_Groups ); }
public static IEnumerable <SlayerEntry> GetSlayerEntries(this ISlayer slayer) { return(new[] { slayer.Slayer, slayer.Slayer2 } .Select(name => SlayerGroup.GetEntryByName(name)) .Where(entry => entry != null)); }
static SlayerGroup() { SlayerGroup humanoid = new SlayerGroup(); SlayerGroup undead = new SlayerGroup(); SlayerGroup elemental = new SlayerGroup(); SlayerGroup abyss = new SlayerGroup(); SlayerGroup arachnid = new SlayerGroup(); SlayerGroup reptilian = new SlayerGroup(); SlayerGroup fey = new SlayerGroup(); humanoid.Opposition = new SlayerGroup[] { undead }; humanoid.FoundOn = new Type[] { typeof(BoneKnight), typeof(Lich), typeof(LichLord) }; humanoid.Super = new SlayerEntry(SlayerName.Repond, typeof(Ogre), typeof(OgreLord), typeof(ArcticOgreLord), typeof(Orc), typeof(OrcishMage), typeof(OrcishLord), typeof(Troll), typeof(Cyclops), typeof(Titan), typeof(OrcBrute), typeof(OrcBomber), typeof(OrcCaptain)); humanoid.Entries = new SlayerEntry[] { new SlayerEntry(SlayerName.OgreTrashing, typeof(Ogre), typeof(OgreLord), typeof(ArcticOgreLord)), new SlayerEntry(SlayerName.OrcSlaying, typeof(Orc), typeof(OrcishMage), typeof(OrcishLord), typeof(OrcBrute), typeof(OrcBomber), typeof(OrcCaptain)), new SlayerEntry(SlayerName.TrollSlaughter, typeof(Troll)) }; undead.Opposition = new SlayerGroup[] { humanoid }; undead.Super = new SlayerEntry(SlayerName.Silver, typeof(AncientLich), typeof(Bogle), typeof(BoneMagi), typeof(Lich), typeof(LichLord), typeof(Shade), typeof(Spectre), typeof(Wraith), typeof(BoneKnight), typeof(Ghoul), typeof(Mummy), typeof(SkeletalKnight), typeof(Skeleton), typeof(Zombie), typeof(ShadowKnight), typeof(DarknightCreeper), /* typeof( RevenantLion ),*/ typeof(RottingCorpse), typeof(SkeletalDragon)); undead.Entries = new SlayerEntry[0]; fey.Opposition = new SlayerGroup[] { abyss }; fey.Super = new SlayerEntry(SlayerName.Fey, typeof(Centaur), typeof(EtherealWarrior), typeof(Kirin), typeof(LordOaks), typeof(Pixie), typeof(Silvani), typeof(Treefellow), typeof(Unicorn), typeof(Wisp)); fey.Entries = new SlayerEntry[0]; elemental.Opposition = new SlayerGroup[] { abyss }; elemental.FoundOn = new Type[] { typeof(Balron), typeof(Daemon) }; elemental.Super = new SlayerEntry(SlayerName.ElementalBan, typeof(BloodElemental), typeof(EarthElemental), typeof(SummonedEarthElemental), typeof(AgapiteElemental), typeof(BronzeElemental), typeof(CopperElemental), typeof(DullCopperElemental), typeof(GoldenElemental), typeof(ShadowIronElemental), typeof(ValoriteElemental), typeof(VeriteElemental), typeof(PoisonElemental), typeof(FireElemental), typeof(SummonedFireElemental), typeof(SnowElemental), typeof(AirElemental), typeof(SummonedAirElemental), typeof(WaterElemental), typeof(SummonedWaterElemental)); elemental.Entries = new SlayerEntry[] { new SlayerEntry(SlayerName.BloodDrinking, typeof(BloodElemental)), new SlayerEntry(SlayerName.EarthShatter, typeof(EarthElemental), typeof(SummonedEarthElemental)), new SlayerEntry(SlayerName.ElementalHealth, typeof(PoisonElemental)), new SlayerEntry(SlayerName.FlameDousing, typeof(FireElemental), typeof(SummonedFireElemental)), new SlayerEntry(SlayerName.SummerWind, typeof(SnowElemental)), new SlayerEntry(SlayerName.Vacuum, typeof(AirElemental), typeof(SummonedAirElemental)), new SlayerEntry(SlayerName.WaterDissipation, typeof(WaterElemental), typeof(SummonedWaterElemental)) }; abyss.Opposition = new SlayerGroup[] { elemental, fey }; abyss.FoundOn = new Type[] { typeof(BloodElemental) }; abyss.Super = new SlayerEntry(SlayerName.Exorcism, typeof(AbysmalHorror), typeof(Balron), typeof(BoneDemon), typeof(ChaosDaemon), typeof(Daemon), typeof(SummonedDaemon), typeof(DemonKnight), typeof(Devourer), typeof(Gargoyle), typeof(FireGargoyle), typeof(Gibberling), typeof(HordeMinion), typeof(IceFiend), typeof(Imp), typeof(Impaler), typeof(Ravager), typeof(StoneGargoyle), typeof(ArcaneDaemon), typeof(EnslavedGargoyle), typeof(GargoyleDestroyer), typeof(GargoyleEnforcer), typeof(Moloch)); abyss.Entries = new SlayerEntry[] { new SlayerEntry(SlayerName.DaemonDismissal, typeof(AbysmalHorror), typeof(Balron), typeof(BoneDemon), typeof(ChaosDaemon), typeof(Daemon), typeof(SummonedDaemon), typeof(DemonKnight), typeof(Devourer), typeof(Gibberling), typeof(HordeMinion), typeof(IceFiend), typeof(Imp), typeof(Impaler), typeof(Ravager), typeof(ArcaneDaemon), typeof(Moloch)), new SlayerEntry(SlayerName.GargoylesFoe, typeof(FireGargoyle), typeof(Gargoyle), typeof(StoneGargoyle), typeof(EnslavedGargoyle), typeof(GargoyleDestroyer), typeof(GargoyleEnforcer)), new SlayerEntry(SlayerName.BalronDamnation, typeof(Balron)) }; /*abyss.Super = new SlayerEntry( SlayerName.Exorcism, typeof( Daemon ), typeof( SummonedDaemon ), typeof( Gargoyle ), typeof( StoneGargoyle ), typeof( FireGargoyle ) ); // No balron? * abyss.Entries = new SlayerEntry[] * { * new SlayerEntry( SlayerName.DaemonDismissal, typeof( Daemon ), typeof( SummonedDaemon ) ), * new SlayerEntry( SlayerName.GargoylesFoe, typeof( Gargoyle ), typeof( StoneGargoyle ), typeof( FireGargoyle ) ), * new SlayerEntry( SlayerName.BalronDamnation, typeof( Balron ) ) * };*/ arachnid.Opposition = new SlayerGroup[] { reptilian }; arachnid.FoundOn = new Type[] { typeof(AncientWyrm), typeof(Dragon), typeof(OphidianMatriarch), typeof(ShadowWyrm) }; arachnid.Super = new SlayerEntry(SlayerName.ArachnidDoom, typeof(DreadSpider), typeof(FrostSpider), typeof(GiantBlackWidow), typeof(Mephitis), typeof(Scorpion), typeof(TerathanDrone), typeof(TerathanMatriarch), typeof(TerathanWarrior)); arachnid.Entries = new SlayerEntry[] { new SlayerEntry(SlayerName.ScorpionsBane, typeof(Scorpion)), new SlayerEntry(SlayerName.SpidersDeath, typeof(DreadSpider), typeof(FrostSpider), typeof(GiantBlackWidow), typeof(GiantSpider)), new SlayerEntry(SlayerName.Terathan, typeof(TerathanAvenger), typeof(TerathanDrone), typeof(TerathanMatriarch), typeof(TerathanWarrior)) }; reptilian.Opposition = new SlayerGroup[] { arachnid }; reptilian.FoundOn = new Type[] { typeof(TerathanAvenger), typeof(TerathanMatriarch) }; reptilian.Super = new SlayerEntry(SlayerName.ReptilianDeath, typeof(AncientWyrm), typeof(Dragon), typeof(Drake), typeof(GiantIceWorm), typeof(IceSerpent), typeof(GiantSerpent), typeof(IceSnake), typeof(LavaSerpent), typeof(LavaSnake), typeof(Lizardman), typeof(OphidianArchmage), typeof(OphidianKnight), typeof(OphidianMage), typeof(OphidianMatriarch), typeof(OphidianWarrior), typeof(SerpentineDragon), typeof(ShadowWyrm), typeof(SilverSerpent), typeof(SkeletalDragon), typeof(Snake), typeof(SwampDragon), typeof(WhiteWyrm), typeof(Wyvern)); reptilian.Entries = new SlayerEntry[] { new SlayerEntry(SlayerName.DragonSlaying, typeof(AncientWyrm), typeof(Dragon), typeof(Drake), typeof(SerpentineDragon), typeof(ShadowWyrm), typeof(SkeletalDragon), typeof(SwampDragon), typeof(WhiteWyrm), typeof(Wyvern)), new SlayerEntry(SlayerName.LizardmanSlaughter, typeof(Lizardman)), new SlayerEntry(SlayerName.Ophidian, typeof(OphidianArchmage), typeof(OphidianKnight), typeof(OphidianMage), typeof(OphidianMatriarch), typeof(OphidianWarrior)), new SlayerEntry(SlayerName.SnakesBane, typeof(IceSerpent), typeof(GiantIceWorm), typeof(GiantSerpent), typeof(IceSnake), typeof(LavaSerpent), typeof(LavaSnake), typeof(SilverSerpent), typeof(Snake), typeof(SeaSerpent), typeof(DeepSeaSerpent)) }; m_Groups = new SlayerGroup[] { humanoid, undead, elemental, abyss, arachnid, reptilian, fey }; m_TotalEntries = CompileEntries(m_Groups); }
public override void OnSingleClick(Mobile from) { ArrayList attrs = new ArrayList(); if (DisplayLootType) { if (LootType == LootType.Blessed) { attrs.Add(new EquipInfoAttribute(1038021)); // blessed } else if (LootType == LootType.Cursed) { attrs.Add(new EquipInfoAttribute(1049643)); // cursed } } if (m_Quality == InstrumentQuality.Exceptional) { attrs.Add(new EquipInfoAttribute(1018305 - (int)m_Quality)); } if (m_ReplenishesCharges) { attrs.Add(new EquipInfoAttribute(1070928)); // Replenish Charges } // TODO: Must this support item identification? if (m_Slayer != SlayerName.None) { SlayerEntry entry = SlayerGroup.GetEntryByName(m_Slayer); if (entry != null) { attrs.Add(new EquipInfoAttribute(entry.Title)); } } if (m_Slayer2 != SlayerName.None) { SlayerEntry entry = SlayerGroup.GetEntryByName(m_Slayer2); if (entry != null) { attrs.Add(new EquipInfoAttribute(entry.Title)); } } int number; if (Name == null) { number = LabelNumber; } else { this.LabelTo(from, Name); number = 1041000; } if (attrs.Count == 0 && Crafter == null && Name != null) { return; } EquipmentInfo eqInfo = new EquipmentInfo(number, m_Crafter, false, (EquipInfoAttribute[])attrs.ToArray(typeof(EquipInfoAttribute))); from.Send(new DisplayEquipmentInfo(this, eqInfo)); }
static SlayerGroup() { SlayerGroup humanoid = new SlayerGroup(); SlayerGroup undead = new SlayerGroup(); SlayerGroup elemental = new SlayerGroup(); SlayerGroup abyss = new SlayerGroup(); SlayerGroup arachnid = new SlayerGroup(); SlayerGroup reptilian = new SlayerGroup(); SlayerGroup fey = new SlayerGroup(); humanoid.Opposition = new SlayerGroup[]{ undead }; humanoid.FoundOn = new Type[]{ typeof( BoneKnight ), typeof( Lich ), typeof( LichLord ) }; humanoid.Super = new SlayerEntry( SlayerName.Repond, typeof( Ogre ), typeof( OgreLord ), typeof( ArcticOgreLord ), typeof( Orc ), typeof( OrcishMage ), typeof( OrcishLord ), typeof( Troll ), typeof( Cyclops ), typeof( Titan ), typeof( OrcBrute ), typeof( OrcBomber ), typeof( OrcCaptain ) ); humanoid.Entries = new SlayerEntry[] { new SlayerEntry( SlayerName.OgreTrashing, typeof( Ogre ), typeof( OgreLord ), typeof( ArcticOgreLord ) ), new SlayerEntry( SlayerName.OrcSlaying, typeof( Orc ), typeof( OrcishMage ), typeof( OrcishLord ), typeof( OrcBrute ), typeof( OrcBomber ), typeof( OrcCaptain ) ), new SlayerEntry( SlayerName.TrollSlaughter, typeof( Troll ) ) }; undead.Opposition = new SlayerGroup[]{ humanoid }; undead.Super = new SlayerEntry( SlayerName.Silver, typeof( AncientLich ), typeof( Bogle ), typeof( BoneMagi ), typeof( Lich ), typeof( LichLord ), typeof( Shade ), typeof( Spectre ), typeof( Wraith ), typeof( BoneKnight ), typeof( Ghoul ), typeof( Mummy ), typeof( SkeletalKnight ), typeof( Skeleton ), typeof( Zombie ), typeof( ShadowKnight ), typeof( DarknightCreeper ), /* typeof( RevenantLion ),*/ typeof( RottingCorpse ), typeof( SkeletalDragon ) ); undead.Entries = new SlayerEntry[0]; fey.Opposition = new SlayerGroup[]{ abyss }; fey.Super = new SlayerEntry( SlayerName.Fey, typeof( Centaur ), typeof( EtherealWarrior ), typeof( Kirin ), typeof( LordOaks ), typeof( Pixie ), typeof( Silvani ), typeof( Treefellow ), typeof( Unicorn ), typeof( Wisp ) ); fey.Entries = new SlayerEntry[0]; elemental.Opposition = new SlayerGroup[]{ abyss }; elemental.FoundOn = new Type[]{ typeof( Balron ), typeof( Daemon ) }; elemental.Super = new SlayerEntry( SlayerName.ElementalBan, typeof( BloodElemental ), typeof( EarthElemental ), typeof( SummonedEarthElemental ), typeof( AgapiteElemental ), typeof( BronzeElemental ), typeof( CopperElemental ), typeof( DullCopperElemental ), typeof( GoldenElemental ), typeof( ShadowIronElemental ), typeof( ValoriteElemental ), typeof( VeriteElemental ), typeof( PoisonElemental ), typeof( FireElemental ), typeof( SummonedFireElemental ), typeof( SnowElemental ), typeof( AirElemental ), typeof( SummonedAirElemental ), typeof( WaterElemental ), typeof( SummonedWaterElemental ) ); elemental.Entries = new SlayerEntry[] { new SlayerEntry( SlayerName.BloodDrinking, typeof( BloodElemental ) ), new SlayerEntry( SlayerName.EarthShatter, typeof( EarthElemental ), typeof( SummonedEarthElemental ) ), new SlayerEntry( SlayerName.ElementalHealth, typeof( PoisonElemental ) ), new SlayerEntry( SlayerName.FlameDousing, typeof( FireElemental ), typeof( SummonedFireElemental ) ), new SlayerEntry( SlayerName.SummerWind, typeof( SnowElemental ) ), new SlayerEntry( SlayerName.Vacuum, typeof( AirElemental ), typeof( SummonedAirElemental ) ), new SlayerEntry( SlayerName.WaterDissipation, typeof( WaterElemental ), typeof( SummonedWaterElemental ) ) }; abyss.Opposition = new SlayerGroup[]{ elemental, fey }; abyss.FoundOn = new Type[]{ typeof( BloodElemental ) }; abyss.Super = new SlayerEntry( SlayerName.Exorcism, typeof( AbysmalHorror ), typeof( Balron ), typeof( BoneDemon ), typeof( ChaosDaemon ), typeof( Daemon ), typeof( SummonedDaemon ), typeof( DemonKnight ), typeof( Devourer ), typeof( Gargoyle ), typeof( FireGargoyle ), typeof( Gibberling ), typeof( HordeMinion ), typeof( IceFiend ), typeof( Imp ), typeof( Impaler ), typeof( Ravager ), typeof( StoneGargoyle ), typeof( ArcaneDaemon ), typeof( EnslavedGargoyle ), typeof( GargoyleDestroyer ), typeof( GargoyleEnforcer ), typeof( Moloch ) ); abyss.Entries = new SlayerEntry[] { new SlayerEntry( SlayerName.DaemonDismissal, typeof( AbysmalHorror ), typeof( Balron ), typeof( BoneDemon ), typeof( ChaosDaemon ), typeof( Daemon ), typeof( SummonedDaemon ), typeof( DemonKnight ), typeof( Devourer ), typeof( Gibberling ), typeof( HordeMinion ), typeof( IceFiend ), typeof( Imp ), typeof( Impaler ), typeof( Ravager ), typeof( ArcaneDaemon ), typeof( Moloch ) ), new SlayerEntry( SlayerName.GargoylesFoe, typeof( FireGargoyle ), typeof( Gargoyle ), typeof( StoneGargoyle ), typeof( EnslavedGargoyle ), typeof( GargoyleDestroyer ), typeof( GargoyleEnforcer ) ), new SlayerEntry( SlayerName.BalronDamnation, typeof( Balron ) ) }; /*abyss.Super = new SlayerEntry( SlayerName.Exorcism, typeof( Daemon ), typeof( SummonedDaemon ), typeof( Gargoyle ), typeof( StoneGargoyle ), typeof( FireGargoyle ) ); // No balron? abyss.Entries = new SlayerEntry[] { new SlayerEntry( SlayerName.DaemonDismissal, typeof( Daemon ), typeof( SummonedDaemon ) ), new SlayerEntry( SlayerName.GargoylesFoe, typeof( Gargoyle ), typeof( StoneGargoyle ), typeof( FireGargoyle ) ), new SlayerEntry( SlayerName.BalronDamnation, typeof( Balron ) ) };*/ arachnid.Opposition = new SlayerGroup[]{ reptilian }; arachnid.FoundOn = new Type[]{ typeof( AncientWyrm ), typeof( Dragon ), typeof( OphidianMatriarch ), typeof( ShadowWyrm ) }; arachnid.Super = new SlayerEntry( SlayerName.ArachnidDoom, typeof( DreadSpider ), typeof( FrostSpider ), typeof( GiantBlackWidow ), typeof( Mephitis ), typeof( Scorpion ), typeof( TerathanDrone ), typeof( TerathanMatriarch ), typeof( TerathanWarrior ) ); arachnid.Entries = new SlayerEntry[] { new SlayerEntry( SlayerName.ScorpionsBane, typeof( Scorpion ) ), new SlayerEntry( SlayerName.SpidersDeath, typeof( DreadSpider ), typeof( FrostSpider ), typeof( GiantBlackWidow ), typeof( GiantSpider ) ), new SlayerEntry( SlayerName.Terathan, typeof( TerathanAvenger ), typeof( TerathanDrone ), typeof( TerathanMatriarch ), typeof( TerathanWarrior ) ) }; reptilian.Opposition = new SlayerGroup[]{ arachnid }; reptilian.FoundOn = new Type[]{ typeof( TerathanAvenger ), typeof( TerathanMatriarch ) }; reptilian.Super = new SlayerEntry( SlayerName.ReptilianDeath, typeof( AncientWyrm ), typeof( Dragon ), typeof( Drake ), typeof( GiantIceWorm ), typeof( IceSerpent ), typeof( GiantSerpent ), typeof( IceSnake ), typeof( LavaSerpent ), typeof( LavaSnake ), typeof( Lizardman ), typeof( OphidianArchmage ), typeof( OphidianKnight ), typeof( OphidianMage ), typeof( OphidianMatriarch ), typeof( OphidianWarrior ), typeof( SerpentineDragon ), typeof( ShadowWyrm ), typeof( SilverSerpent ), typeof( SkeletalDragon ), typeof( Snake ), typeof( SwampDragon ), typeof( WhiteWyrm ), typeof( Wyvern ) ); reptilian.Entries = new SlayerEntry[] { new SlayerEntry( SlayerName.DragonSlaying, typeof( AncientWyrm ), typeof( Dragon ), typeof( Drake ), typeof( SerpentineDragon ), typeof( ShadowWyrm ), typeof( SkeletalDragon ), typeof( SwampDragon ), typeof( WhiteWyrm ), typeof( Wyvern ) ), new SlayerEntry( SlayerName.LizardmanSlaughter, typeof( Lizardman ) ), new SlayerEntry( SlayerName.Ophidian, typeof( OphidianArchmage ), typeof( OphidianKnight ), typeof( OphidianMage ), typeof( OphidianMatriarch ), typeof( OphidianWarrior ) ), new SlayerEntry( SlayerName.SnakesBane, typeof( IceSerpent ), typeof( GiantIceWorm ), typeof( GiantSerpent ), typeof( IceSnake ), typeof( LavaSerpent ), typeof( LavaSnake ), typeof( SilverSerpent ), typeof( Snake ), typeof( SeaSerpent ), typeof( DeepSeaSerpent ) ) }; m_Groups = new SlayerGroup[] { humanoid, undead, elemental, abyss, arachnid, reptilian, fey }; m_TotalEntries = CompileEntries( m_Groups ); }
static SlayerGroup() { SlayerGroup humanoid = new SlayerGroup(); SlayerGroup undead = new SlayerGroup(); SlayerGroup elemental = new SlayerGroup(); SlayerGroup abyss = new SlayerGroup(); SlayerGroup arachnid = new SlayerGroup(); SlayerGroup reptilian = new SlayerGroup(); SlayerGroup fey = new SlayerGroup(); #region Humanoid humanoid.Opposition = new SlayerGroup[] { undead }; humanoid.FoundOn = new Type[] { typeof(BoneKnight), typeof(Lich), typeof(LichLord) }; humanoid.Super = new SlayerEntry ( SlayerName.Repond, typeof(ArcticOgreLord), typeof(Cyclops), typeof(Ettin), typeof(EvilMage), typeof(EvilMageLord), typeof(FrostTroll), typeof(MeerCaptain), typeof(MeerEternal), typeof(MeerMage), typeof(MeerWarrior), typeof(Ogre), typeof(OgreLord), typeof(Orc), typeof(OrcBomber), typeof(OrcBrute), typeof(OrcCaptain), typeof(OrcChopper), typeof(OrcScout), typeof(OrcishLord), typeof(OrcishMage), typeof(Ratman), typeof(RatmanArcher), typeof(RatmanMage), typeof(SavageRider), typeof(SavageShaman), typeof(Savage), typeof(Titan), typeof(Troll), typeof(Barracoon), typeof(Troglodyte), typeof(Minotaur), typeof(MasterTheophilus), typeof(Lurg), typeof(Chiikkaha), typeof(MougGuur), typeof(Medusa), typeof(GrayGoblin), typeof(EnslavedGrayGoblin), typeof(GreenGoblin), typeof(EnslavedGreenGoblin), typeof(GrayGoblinKeeper), typeof(EnslavedGoblinKeeper), typeof(GreenGoblinScout), typeof(EnslavedGoblinScout), typeof(GrayGoblinMage), typeof(EnslavedGoblinMage), typeof(GreenGoblinAlchemist), typeof(EnslavedGoblinAlchemist), typeof(GreenGoblinAlchemistRenowned), typeof(GrayGoblinMageRenowned), typeof(ClanChitterAssistant), typeof(ClanChitterTinkerer), typeof(RakktaviRenowned), typeof(ClanRibbonSupplicant), typeof(ClanRibbonCourtier), typeof(VitaviRenowned), typeof(ClanScratchScrounger), typeof(ClanScratchHenchrat), typeof(TikitaviRenowned) ); humanoid.Entries = new SlayerEntry[] { new SlayerEntry ( SlayerName.Ogre, typeof(ArcticOgreLord), typeof(Ogre), typeof(OgreLord) ), new SlayerEntry ( SlayerName.Orc, typeof(Orc), typeof(OrcBomber), typeof(OrcBrute), typeof(OrcCaptain), typeof(OrcChopper), typeof(OrcScout), typeof(OrcishLord), typeof(OrcishMage) ), new SlayerEntry ( SlayerName.Troll, typeof(FrostTroll), typeof(Troll) ) }; #endregion #region Undead undead.Opposition = new SlayerGroup[] { humanoid }; undead.Super = new SlayerEntry ( SlayerName.Undead, typeof(AncientLich), typeof(Bogle), typeof(BoneKnight), typeof(BoneMagi), typeof(Ghoul), typeof(LadyOfTheSnow), typeof(RevenantLion), typeof(ShadowKnight), typeof(SkeletalMount), typeof(Revenant), typeof(DarkGuardian), typeof(DarknightCreeper), typeof(FleshGolem), typeof(GoreFiend), typeof(HellSteed), typeof(Lich), typeof(LichLord), typeof(Mummy), typeof(RottingCorpse), typeof(Shade), typeof(SkeletalKnight), typeof(SkeletalMage), typeof(Skeleton), typeof(Spectre), typeof(Wraith), typeof(Zombie), typeof(UnfrozenMummy), typeof(RedDeath), typeof(SirPatrick), typeof(MasterJonath), typeof(MasterMikael), typeof(LadyMarai), typeof(LadyJennifyr), typeof(PestilentBandage), typeof(CursedMetallicKnight), typeof(CursedMetallicMage), typeof(EffeteUndeadGargoyle), typeof(Niporailem), typeof(PutridUndeadGargoyle), typeof(PutridUndeadGuardian), typeof(UndeadGuardian), typeof(AncientLichRenowned), typeof(DreamWraith), typeof(PrimevalLich), typeof(UndeadGargoyle) /* * TODO: * - Drelgor the Impaler * - Spectral Spellbinder * - Challenger of Ol'Haven */ ); undead.Entries = new SlayerEntry[0]; #endregion #region Fey fey.Opposition = new SlayerGroup[] { abyss }; fey.Super = new SlayerEntry ( SlayerName.Fey, typeof(Centaur), typeof(EtherealWarrior), typeof(Kirin), typeof(LordOaks), typeof(Pixie), typeof(Silvani), typeof(Treefellow), typeof(Unicorn), typeof(Wisp), typeof(Changeling), typeof(InsaneDryad), typeof(CuSidhe), typeof(Satyr), typeof(Dryad), typeof(CrystalLatticeSeeker), typeof(LadyMelisande), typeof(DreadHorn), typeof(Travesty), typeof(ShimmeringEffusion), typeof(Guile), typeof(Irk), typeof(TwauloOfTheGlade), typeof(FeralTreefellow), typeof(DarkWisp), typeof(PixieRenowned) ); fey.Entries = new SlayerEntry[0]; #endregion #region Elemental elemental.Opposition = new SlayerGroup[] { abyss }; elemental.FoundOn = new Type[] { typeof(Balron), typeof(Putrefier), typeof(Daemon), typeof(FireDaemonRenowned) }; elemental.Super = new SlayerEntry ( SlayerName.Elemental, typeof(ToxicElemental), typeof(AgapiteElemental), typeof(AirElemental), typeof(SummonedAirElemental), typeof(BloodElemental), typeof(BronzeElemental), typeof(CopperElemental), typeof(DullCopperElemental), typeof(EarthElemental), typeof(SummonedEarthElemental), typeof(Efreet), typeof(SummonedFireElemental), typeof(FireElemental), typeof(GoldenElemental), typeof(IceElemental), typeof(CrystalElemental), typeof(KazeKemono), typeof(RaiJu), typeof(PoisonElemental), typeof(ShadowIronElemental), typeof(SandVortex), typeof(ValoriteElemental), typeof(SnowElemental), typeof(VeriteElemental), typeof(WaterElemental), typeof(SummonedWaterElemental), typeof(LavaElemental), typeof(FireElementalRenowned), typeof(AcidElementalRenowned), typeof(Mistral), typeof(Flurry), typeof(Tempest) /* * TODO: * - Blackrock Elemental */ ); elemental.Entries = new SlayerEntry[] { new SlayerEntry ( SlayerName.BloodElemental, typeof(BloodElemental) ), new SlayerEntry ( SlayerName.EarthElemental, typeof(AgapiteElemental), typeof(BronzeElemental), typeof(CopperElemental), typeof(EarthElemental), typeof(SummonedEarthElemental), typeof(GoldenElemental), typeof(ShadowIronElemental), typeof(ValoriteElemental), typeof(VeriteElemental) ), new SlayerEntry ( SlayerName.PoisonElemental, typeof(PoisonElemental) ), new SlayerEntry ( SlayerName.FireElemental, typeof(FireElemental), typeof(SummonedFireElemental), typeof(FireElementalRenowned) ), new SlayerEntry ( SlayerName.SnowElemental, typeof(IceElemental), typeof(SnowElemental) ), new SlayerEntry ( SlayerName.AirElemental, typeof(AirElemental), typeof(SummonedAirElemental), typeof(Mistral), typeof(Flurry), typeof(Tempest) ), new SlayerEntry ( SlayerName.WaterElemental, typeof(WaterElemental), typeof(SummonedWaterElemental) ) }; #endregion #region Demon abyss.Opposition = new SlayerGroup[] { elemental, fey }; abyss.FoundOn = new Type[] { typeof(BloodElemental) }; abyss.Super = new SlayerEntry ( SlayerName.Demon, typeof(AbysmalHorror), typeof(ArcaneDaemon), typeof(Balron), typeof(BoneDemon), typeof(ChaosDaemon), typeof(Daemon), typeof(SummonedDaemon), typeof(DemonKnight), typeof(Devourer), typeof(Impaler), typeof(Gibberling), typeof(Ravager), typeof(FanDancer), typeof(Oni), typeof(EnslavedGargoyle), typeof(FireGargoyle), typeof(Gargoyle), typeof(GargoyleDestroyer), typeof(GargoyleEnforcer), typeof(HordeMinion), typeof(IceFiend), typeof(Imp), typeof(Moloch), typeof(Semidar), typeof(StoneGargoyle), typeof(Succubus), typeof(PatchworkSkeleton), typeof(TsukiWolf), typeof(CrystalDaemon), typeof(ChiefParoxysmus), typeof(Putrefier), typeof(Szavetra), typeof(FireDaemon), typeof(FireDaemonRenowned), typeof(DevourerOfSoulsRenowned), typeof(AbyssalInfernal), typeof(Anzuanord), typeof(Ballem), typeof(Betballem), typeof(SkeletalLich), typeof(UsagralemBallem), typeof(EffetePutridGargoyle), typeof(EffeteUndeadGargoyle), typeof(SlasherOfVeils), typeof(PitFiend) ); abyss.Entries = new SlayerEntry[] { new SlayerEntry ( SlayerName.Gargoyle, typeof(EnslavedGargoyle), typeof(FireGargoyle), typeof(Gargoyle), typeof(GargoyleDestroyer), typeof(GargoyleEnforcer), typeof(StoneGargoyle), typeof(EffetePutridGargoyle), typeof(EffeteUndeadGargoyle) ) }; #endregion #region Arachnid arachnid.Opposition = new SlayerGroup[] { reptilian }; arachnid.FoundOn = new Type[] { typeof(AncientWyrm), typeof(Dragon), typeof(OphidianMatriarch), typeof(ShadowWyrm) }; arachnid.Super = new SlayerEntry ( SlayerName.Arachnid, typeof(DreadSpider), typeof(FrostSpider), typeof(GiantBlackWidow), typeof(GiantSpider), typeof(Mephitis), typeof(Scorpion), typeof(TerathanAvenger), typeof(TerathanDrone), typeof(TerathanMatriarch), typeof(TerathanWarrior), typeof(LadySabrix), typeof(LadyLissith), typeof(Silk), typeof(Malefic), typeof(Virulent), typeof(Miasma), typeof(SpeckledScorpion), typeof(NavreyNightEyes), typeof(SentinelSpider), typeof(TrapdoorSpider), typeof(Anlorzen), typeof(Anlorlem) ); arachnid.Entries = new SlayerEntry[] { new SlayerEntry ( SlayerName.Scorpion, typeof(Scorpion), typeof(Miasma), typeof(SpeckledScorpion) ), new SlayerEntry ( SlayerName.Spider, typeof(DreadSpider), typeof(FrostSpider), typeof(GiantBlackWidow), typeof(GiantSpider), typeof(Mephitis), typeof(LadySabrix), typeof(LadyLissith), typeof(Silk), typeof(Malefic), typeof(Virulent), typeof(NavreyNightEyes), typeof(SentinelSpider), typeof(Anlorzen) ), new SlayerEntry ( SlayerName.Terathan, typeof(TerathanAvenger), typeof(TerathanDrone), typeof(TerathanMatriarch), typeof(TerathanWarrior), typeof(Anlorlem) ) }; #endregion #region Reptile reptilian.Opposition = new SlayerGroup[] { arachnid }; reptilian.FoundOn = new Type[] { typeof(TerathanAvenger), typeof(TerathanMatriarch) }; reptilian.Super = new SlayerEntry ( SlayerName.Reptile, typeof(AncientWyrm), typeof(DeepSeaSerpent), typeof(Dragon), typeof(GreaterDragon), typeof(Drake), typeof(IceSerpent), typeof(GiantIceWorm), typeof(GiantSerpent), typeof(Hiryu), typeof(LesserHiryu), typeof(Serado), typeof(Yamandon), typeof(IceSnake), typeof(JukaLord), typeof(JukaMage), typeof(JukaWarrior), typeof(LavaSerpent), typeof(LavaSnake), typeof(Lizardman), typeof(OphidianMage), typeof(OphidianKnight), typeof(OphidianWarrior), typeof(OphidianArchmage), typeof(OphidianMatriarch), typeof(SeaSerpent), typeof(SerpentineDragon), typeof(ShadowWyrm), typeof(SilverSerpent), typeof(SkeletalDragon), typeof(Snake), typeof(SwampDragon), typeof(WhiteWyrm), typeof(Wyvern), typeof(Hydra), typeof(CrystalHydra), typeof(Reptalon), typeof(CrystalSeaSerpent), typeof(Rend), typeof(Abscess), typeof(Coil), typeof(Raptor), typeof(FairyDragon), typeof(Kepetch), typeof(KepetchAmbusher), typeof(Skree), typeof(SkeletalDrake), typeof(SkeletalDragonRenowned), typeof(CoralSnake), typeof(StygianDragon), typeof(WyvernRenowned), typeof(Rikktor), typeof(Slith), typeof(StoneSlith), typeof(ToxicSlith), typeof(ColdDrake), typeof(Grim) ); reptilian.Entries = new SlayerEntry[] { new SlayerEntry ( SlayerName.Dragon, typeof(AncientWyrm), typeof(Dragon), typeof(GreaterDragon), typeof(Drake), typeof(Hiryu), typeof(LesserHiryu), typeof(SerpentineDragon), typeof(ShadowWyrm), typeof(SkeletalDragon), typeof(SwampDragon), typeof(WhiteWyrm), typeof(Wyvern), typeof(Rend), typeof(Abscess), typeof(Reptalon), typeof(FairyDragon), typeof(SkeletalDrake), typeof(SkeletalDragonRenowned), typeof(StygianDragon), typeof(WyvernRenowned), typeof(Rikktor), typeof(ColdDrake), typeof(Grim) ), new SlayerEntry ( SlayerName.Lizardman, typeof(Lizardman) ), new SlayerEntry ( SlayerName.Ophidian, typeof(OphidianMage), typeof(OphidianKnight), typeof(OphidianWarrior), typeof(OphidianArchmage), typeof(OphidianMatriarch) ), new SlayerEntry ( SlayerName.Snake, typeof(DeepSeaSerpent), typeof(IceSerpent), typeof(GiantIceWorm), typeof(GiantSerpent), typeof(IceSnake), typeof(LavaSerpent), typeof(LavaSnake), typeof(SeaSerpent), typeof(SilverSerpent), typeof(Snake), typeof(Yamandon), typeof(Serado), typeof(Coil), typeof(CoralSnake) ) }; #endregion m_Groups = new SlayerGroup[] { humanoid, undead, elemental, abyss, arachnid, reptilian, fey }; m_TotalEntries = CompileEntries(m_Groups); }
public override void GetProperties(ObjectPropertyList list) { AddNameProperties(list); list.Add(1011296, Charges.ToString()); // [ Charges: ~1_CHARGES~ ] if (Crafter != null) { list.Add(1050043, Crafter.Name); // crafted by ~1_NAME~ } if (SkillBonuses != null) { SkillBonuses.GetProperties(list); } if (Slayer != SlayerName.None) { SlayerEntry entry = SlayerGroup.GetEntryByName(Slayer); if (entry != null) { list.Add(entry.Title); } } if (Slayer2 != SlayerName.None) { SlayerEntry entry = SlayerGroup.GetEntryByName(Slayer2); if (entry != null) { list.Add(entry.Title); } } base.AddResistanceProperties(list); int prop; if ((prop = WeaponAttributes.BloodDrinker) != 0) { list.Add(1113591, prop.ToString()); // Blood Drinker } if ((prop = WeaponAttributes.BattleLust) != 0) { list.Add(1113710, prop.ToString()); // Battle Lust } if ((prop = WeaponAttributes.UseBestSkill) != 0) { list.Add(1060400); // use best weapon skill } if ((prop = (GetDamageBonus() + Attributes.WeaponDamage)) != 0) { list.Add(1060401, prop.ToString()); // damage increase ~1_val~% } if ((prop = Attributes.DefendChance) != 0) { list.Add(1060408, prop.ToString()); // defense chance increase ~1_val~% } if ((prop = Attributes.EnhancePotions) != 0) { list.Add(1060411, prop.ToString()); // enhance potions ~1_val~% } if ((prop = Attributes.CastRecovery) != 0) { list.Add(1060412, prop.ToString()); // faster cast recovery ~1_val~ } if ((prop = Attributes.CastSpeed) != 0) { list.Add(1060413, prop.ToString()); // faster casting ~1_val~ } if ((prop = (GetHitChanceBonus() + Attributes.AttackChance)) != 0) { list.Add(1060415, prop.ToString()); // hit chance increase ~1_val~% } if ((prop = WeaponAttributes.HitColdArea) != 0) { list.Add(1060416, prop.ToString()); // hit cold area ~1_val~% } if ((prop = WeaponAttributes.HitDispel) != 0) { list.Add(1060417, prop.ToString()); // hit dispel ~1_val~% } if ((prop = WeaponAttributes.HitEnergyArea) != 0) { list.Add(1060418, prop.ToString()); // hit energy area ~1_val~% } if ((prop = WeaponAttributes.HitFireArea) != 0) { list.Add(1060419, prop.ToString()); // hit fire area ~1_val~% } if ((prop = WeaponAttributes.HitFireball) != 0) { list.Add(1060420, prop.ToString()); // hit fireball ~1_val~% } if ((prop = WeaponAttributes.HitHarm) != 0) { list.Add(1060421, prop.ToString()); // hit harm ~1_val~% } if ((prop = WeaponAttributes.HitLeechHits) != 0) { list.Add(1060422, prop.ToString()); // hit life leech ~1_val~% } if ((prop = WeaponAttributes.HitLightning) != 0) { list.Add(1060423, prop.ToString()); // hit lightning ~1_val~% } #region SA if ((prop = WeaponAttributes.HitCurse) != 0) { list.Add(1113712, prop.ToString()); // Hit Curse ~1_val~% } if ((prop = WeaponAttributes.HitFatigue) != 0) { list.Add(1113700, prop.ToString()); // Hit Fatigue ~1_val~% } if ((prop = WeaponAttributes.HitManaDrain) != 0) { list.Add(1113699, prop.ToString()); // Hit Mana Drain ~1_val~% } #endregion if ((prop = WeaponAttributes.HitLowerAttack) != 0) { list.Add(1060424, prop.ToString()); // hit lower attack ~1_val~% } if ((prop = WeaponAttributes.HitLowerDefend) != 0) { list.Add(1060425, prop.ToString()); // hit lower defense ~1_val~% } if ((prop = WeaponAttributes.HitMagicArrow) != 0) { list.Add(1060426, prop.ToString()); // hit magic arrow ~1_val~% } if ((prop = WeaponAttributes.HitLeechMana) != 0) { list.Add(1060427, prop.ToString()); // hit mana leech ~1_val~% } if ((prop = WeaponAttributes.HitPhysicalArea) != 0) { list.Add(1060428, prop.ToString()); // hit physical area ~1_val~% } if ((prop = WeaponAttributes.HitPoisonArea) != 0) { list.Add(1060429, prop.ToString()); // hit poison area ~1_val~% } if ((prop = WeaponAttributes.HitLeechStam) != 0) { list.Add(1060430, prop.ToString()); // hit stamina leech ~1_val~% } if ((prop = Attributes.BonusDex) != 0) { list.Add(1060409, prop.ToString()); // dexterity bonus ~1_val~ } if ((prop = Attributes.BonusHits) != 0) { list.Add(1060431, prop.ToString()); // hit point increase ~1_val~ } if ((prop = Attributes.BonusInt) != 0) { list.Add(1060432, prop.ToString()); // intelligence bonus ~1_val~ } if ((prop = Attributes.LowerManaCost) != 0) { list.Add(1060433, prop.ToString()); // lower mana cost ~1_val~% } if ((prop = Attributes.LowerRegCost) != 0) { list.Add(1060434, prop.ToString()); // lower reagent cost ~1_val~% } if ((prop = GetLowerStatReq()) != 0) { list.Add(1060435, prop.ToString()); // lower requirements ~1_val~% } if ((prop = (GetLuckBonus() + Attributes.Luck)) != 0) { list.Add(1060436, prop.ToString()); // luck ~1_val~ } if ((prop = WeaponAttributes.MageWeapon) != 0) { list.Add(1060438, (30 - prop).ToString()); // mage weapon -~1_val~ skill } if ((prop = Attributes.BonusMana) != 0) { list.Add(1060439, prop.ToString()); // mana increase ~1_val~ } if ((prop = Attributes.RegenMana) != 0) { list.Add(1060440, prop.ToString()); // mana regeneration ~1_val~ } if ((prop = Attributes.NightSight) != 0) { list.Add(1060441); // night sight } if ((prop = Attributes.ReflectPhysical) != 0) { list.Add(1060442, prop.ToString()); // reflect physical damage ~1_val~% } if ((prop = Attributes.RegenStam) != 0) { list.Add(1060443, prop.ToString()); // stamina regeneration ~1_val~ } if ((prop = Attributes.RegenHits) != 0) { list.Add(1060444, prop.ToString()); // hit point regeneration ~1_val~ } if ((prop = WeaponAttributes.SelfRepair) != 0) { list.Add(1060450, prop.ToString()); // self repair ~1_val~ } if ((prop = Attributes.SpellChanneling) != 0) { list.Add(1060482); // spell channeling } if ((prop = Attributes.SpellDamage) != 0) { list.Add(1060483, prop.ToString()); // spell damage increase ~1_val~% } if ((prop = Attributes.BonusStam) != 0) { list.Add(1060484, prop.ToString()); // stamina increase ~1_val~ } if ((prop = Attributes.BonusStr) != 0) { list.Add(1060485, prop.ToString()); // strength bonus ~1_val~ } if ((prop = Attributes.WeaponSpeed) != 0) { list.Add(1060486, prop.ToString()); // swing speed increase ~1_val~% } #region SA if ((prop = AbsorptionAttributes.CastingFocus) != 0) { list.Add(1113696, prop.ToString()); // Casting Focus ~1_val~% } if ((prop = AbsorptionAttributes.EaterFire) != 0) { list.Add(1113593, prop.ToString()); // Fire Eater ~1_Val~% } if ((prop = AbsorptionAttributes.EaterCold) != 0) { list.Add(1113594, prop.ToString()); // Cold Eater ~1_Val~% } if ((prop = AbsorptionAttributes.EaterPoison) != 0) { list.Add(1113595, prop.ToString()); // Poison Eater ~1_Val~% } if ((prop = AbsorptionAttributes.EaterEnergy) != 0) { list.Add(1113596, prop.ToString()); // Energy Eater ~1_Val~% } if ((prop = AbsorptionAttributes.EaterKinetic) != 0) { list.Add(1113597, prop.ToString()); // Kinetic Eater ~1_Val~% } if ((prop = AbsorptionAttributes.EaterDamage) != 0) { list.Add(1113598, prop.ToString()); // Damage Eater ~1_Val~% } if ((prop = AbsorptionAttributes.ResonanceFire) != 0) { list.Add(1113691, prop.ToString()); // Fire Resonance ~1_val~% } if ((prop = AbsorptionAttributes.ResonanceCold) != 0) { list.Add(1113692, prop.ToString()); // Cold Resonance ~1_val~% } if ((prop = AbsorptionAttributes.ResonancePoison) != 0) { list.Add(1113693, prop.ToString()); // Poison Resonance ~1_val~% } if ((prop = AbsorptionAttributes.ResonanceEnergy) != 0) { list.Add(1113694, prop.ToString()); // Energy Resonance ~1_val~% } if ((prop = AbsorptionAttributes.ResonanceKinetic) != 0) { list.Add(1113695, prop.ToString()); // Kinetic Resonance ~1_val~% } #endregion int phys, fire, cold, pois, nrgy, chaos, direct; GetDamageTypes(null, out phys, out fire, out cold, out pois, out nrgy, out chaos, out direct); #region Mondain's Legacy if (chaos != 0) { list.Add(1072846, chaos.ToString()); // chaos damage ~1_val~% } if (direct != 0) { list.Add(1079978, direct.ToString()); // Direct Damage: ~1_PERCENT~% } #endregion if (phys != 0) { list.Add(1060403, phys.ToString()); // physical damage ~1_val~% } if (fire != 0) { list.Add(1060405, fire.ToString()); // fire damage ~1_val~% } if (cold != 0) { list.Add(1060404, cold.ToString()); // cold damage ~1_val~% } if (pois != 0) { list.Add(1060406, pois.ToString()); // poison damage ~1_val~% } if (nrgy != 0) { list.Add(1060407, nrgy.ToString()); // energy damage ~1_val~% } if (Core.ML && chaos != 0) { list.Add(1072846, chaos.ToString()); // chaos damage ~1_val~% } if (Core.ML && direct != 0) { list.Add(1079978, direct.ToString()); // Direct Damage: ~1_PERCENT~% } list.Add(1061168, "{0}\t{1}", MinDamage.ToString(), MaxDamage.ToString()); // weapon damage ~1_val~ - ~2_val~ if (Core.ML) { list.Add(1061167, String.Format("{0}s", Speed)); // weapon speed ~1_val~ } else { list.Add(1061167, Speed.ToString()); } if (MaxRange > 1) { list.Add(1061169, MaxRange.ToString()); // range ~1_val~ } int strReq = AOS.Scale(StrRequirement, 100 - GetLowerStatReq()); if (strReq > 0) { list.Add(1061170, strReq.ToString()); // strength requirement ~1_val~ } if (Layer == Layer.TwoHanded) { list.Add(1061171); // two-handed weapon } else { list.Add(1061824); // one-handed weapon } if (Core.SE || WeaponAttributes.UseBestSkill == 0) { switch (Skill) { case SkillName.Swords: list.Add(1061172); break; // skill required: swordsmanship case SkillName.Macing: list.Add(1061173); break; // skill required: mace fighting case SkillName.Fencing: list.Add(1061174); break; // skill required: fencing case SkillName.Archery: list.Add(1061175); break; // skill required: archery } } if (HitPoints >= 0 && MaxHitPoints > 0) { list.Add(1060639, "{0}\t{1}", HitPoints, MaxHitPoints); // durability ~1_val~ / ~2_val~ } }
static SlayerGroup() { SlayerGroup humanoid = new SlayerGroup(); SlayerGroup undead = new SlayerGroup(); SlayerGroup elemental = new SlayerGroup(); SlayerGroup abyss = new SlayerGroup(); SlayerGroup arachnid = new SlayerGroup(); SlayerGroup reptilian = new SlayerGroup(); SlayerGroup fey = new SlayerGroup(); humanoid.Opposition = new SlayerGroup[] { undead }; humanoid.FoundOn = new Type[] { typeof(BoneKnight), typeof(Lich), typeof(LichLord) }; humanoid.Super = new SlayerEntry(SlayerName.Repond, typeof(ArcticOgreLord), typeof(Cyclops), typeof(Ettin), typeof(EvilMage), typeof(EvilMageLord), typeof(FrostTroll), typeof(MeerCaptain), typeof(MeerEternal), typeof(MeerMage), typeof(MeerWarrior), typeof(Ogre), typeof(OgreLord), typeof(Orc), typeof(OrcBomber), typeof(OrcBrute), typeof(OrcCaptain), typeof(OrcChopper), typeof(OrcScout), typeof(OrcishLord), typeof(OrcishMage), typeof(Ratman), typeof(RatmanArcher), typeof(RatmanMage), typeof(SavageRider), typeof(SavageShaman), typeof(Savage), typeof(Titan), typeof(Troglodyte), typeof(Troll), /* Mondain's Legacy */ typeof(Troglodyte), typeof(MougGuur), typeof(Chiikkaha), typeof(Minotaur) /* ML End, SA begins */, typeof(Medusa), typeof(RakktaviRenowned), typeof(TikitaviRenowned), typeof(VitaviRenowned), typeof(EnslavedGoblinScout), typeof(EnslavedGoblinKeeper), typeof(EnslavedGreenGoblin), typeof(EnslavedGreenGoblinAlchemist), typeof(EnslavedGoblinMage), typeof(EnslavedGrayGoblin), typeof(GreenGoblinScout), typeof(GreenGoblinAlchemist), typeof(GreenGoblin), typeof(GrayGoblinMage), typeof(GrayGoblinKeeper), typeof(GrayGoblin), typeof(GreenGoblinAlchemistRenowned), typeof(GrayGoblinMageRenowned), typeof(BrigandCannibalMage), typeof(Archmage), typeof(CaveTrollWrong), typeof(HungryOgre)); humanoid.Entries = new SlayerEntry[] { new SlayerEntry(SlayerName.OgreTrashing, typeof(Ogre), typeof(OgreLord), typeof(ArcticOgreLord)), new SlayerEntry(SlayerName.OrcSlaying, typeof(Orc), typeof(OrcBomber), typeof(OrcBrute), typeof(OrcCaptain), typeof(OrcChopper), typeof(OrcScout), typeof(OrcishLord), typeof(OrcishMage)), new SlayerEntry(SlayerName.TrollSlaughter, typeof(Troll), typeof(FrostTroll)), }; undead.Opposition = new SlayerGroup[] { humanoid }; undead.Super = new SlayerEntry(SlayerName.Silver, typeof(AncientLich), typeof(AncientLichRenowned), typeof(Bogle), typeof(BoneKnight), typeof(BoneMagi), /* typeof( DarkGuardian ), */ typeof(DarknightCreeper), typeof(FleshGolem), typeof(Ghoul), typeof(GoreFiend), typeof(HellSteed), typeof(LadyOfTheSnow), typeof(Lich), typeof(LichLord), typeof(Mummy), typeof(PestilentBandage), typeof(Revenant), typeof(RevenantLion), typeof(RottingCorpse), typeof(Shade), typeof(ShadowKnight), typeof(SkeletalKnight), typeof(SkeletalMage), typeof(SkeletalMount), typeof(Skeleton), typeof(Spectre), typeof(Wraith), typeof(Zombie), /* Mondain's Legacy */ typeof(UnfrozenMummy), typeof(RedDeath), typeof(SirPatrick), typeof(LadyJennifyr), typeof(MasterMikael), typeof(MasterJonath), typeof(LadyMarai) /* ML End, SA Begins */, typeof(PrimevalLich), typeof(DreamWraith), typeof(UndeadGargoyle), typeof(UndeadGuardian), typeof(PutridUndeadGuardian)); undead.Entries = new SlayerEntry[0]; fey.Opposition = new SlayerGroup[] { abyss }; fey.Super = new SlayerEntry(SlayerName.Fey, typeof(Centaur), typeof(CuSidhe), typeof(EtherealWarrior), typeof(Kirin), typeof(LordOaks), typeof(Pixie), typeof(PixieRenowned), typeof(Silvani), typeof(Treefellow), typeof(Unicorn), typeof(Wisp), typeof(MLDryad), typeof(Satyr), /* Mondain's Legacy */ typeof(InsaneDryad), typeof(CorporealBrume), typeof(CrystalLatticeSeeker), typeof(LadyMelisande) /* End */, typeof(FeralTreefellow)); fey.Entries = new SlayerEntry[0]; elemental.Opposition = new SlayerGroup[] { abyss }; elemental.FoundOn = new Type[] { typeof(Balron), typeof(Daemon) }; elemental.Super = new SlayerEntry(SlayerName.ElementalBan, typeof(ToxicElemental), typeof(AcidElemental), typeof(AcidElementalRenowned), typeof(FireElementalRenowned), typeof(AgapiteElemental), typeof(AirElemental), typeof(SummonedAirElemental), typeof(BloodElemental), typeof(BronzeElemental), typeof(CopperElemental), typeof(CrystalElemental), typeof(DullCopperElemental), typeof(EarthElemental), typeof(SummonedEarthElemental), typeof(Efreet), typeof(FireElemental), typeof(SummonedFireElemental), typeof(GoldenElemental), typeof(IceElemental), typeof(KazeKemono), typeof(PoisonElemental), typeof(RaiJu), typeof(SandVortex), typeof(ShadowIronElemental), typeof(SnowElemental), typeof(ValoriteElemental), typeof(VeriteElemental), typeof(WaterElemental), typeof(SummonedWaterElemental), typeof(Flurry), typeof(Mistral), typeof(Tempest)); elemental.Entries = new SlayerEntry[] { new SlayerEntry(SlayerName.BloodDrinking, typeof(BloodElemental)), new SlayerEntry(SlayerName.EarthShatter, typeof(AgapiteElemental), typeof(BronzeElemental), typeof(CopperElemental), typeof(DullCopperElemental), typeof(EarthElemental), typeof(SummonedEarthElemental), typeof(GoldenElemental), typeof(ShadowIronElemental), typeof(ValoriteElemental), typeof(VeriteElemental)), new SlayerEntry(SlayerName.ElementalHealth, typeof(PoisonElemental)), new SlayerEntry(SlayerName.FlameDousing, typeof(FireElemental), typeof(FireElementalRenowned), typeof(SummonedFireElemental)), new SlayerEntry(SlayerName.SummerWind, typeof(SnowElemental), typeof(IceElemental)), new SlayerEntry(SlayerName.Vacuum, typeof(AirElemental), typeof(SummonedAirElemental), typeof(Flurry), typeof(Mistral), typeof(Tempest)), new SlayerEntry(SlayerName.WaterDissipation, typeof(WaterElemental), typeof(SummonedWaterElemental)) }; abyss.Opposition = new SlayerGroup[] { elemental, fey }; abyss.FoundOn = new Type[] { typeof(BloodElemental) }; if (Core.AOS) { abyss.Super = new SlayerEntry(SlayerName.Exorcism, typeof(DevourerRenowned), typeof(FireDaemonRenowned), typeof(AbysmalHorror), typeof(AbyssalInfernal), typeof(ArcaneDaemon), typeof(Balron), typeof(BoneDemon), typeof(ChaosDaemon), typeof(Daemon), typeof(SummonedDaemon), typeof(DemonKnight), typeof(Devourer), typeof(EnslavedGargoyle), typeof(FanDancer), typeof(FireGargoyle), typeof(Gargoyle), typeof(GargoyleDestroyer), typeof(GargoyleEnforcer), typeof(Gibberling), typeof(HordeMinion), typeof(IceFiend), typeof(Imp), typeof(Impaler), typeof(Moloch), typeof(Oni), typeof(Ravager), typeof(Semidar), typeof(StoneGargoyle), typeof(Succubus), typeof(TsukiWolf), /* Mondain's Legacy */ typeof(Szavetra), typeof(CrystalDaemon) /* End */, typeof(SlasherOfVeils), typeof(GargoyleShade), typeof(Putrefier)); abyss.Entries = new SlayerEntry[] { // Daemon Dismissal & Balron Damnation have been removed and moved up to super slayer on OSI. new SlayerEntry(SlayerName.GargoylesFoe, typeof(EnslavedGargoyle), typeof(FireGargoyle), typeof(Gargoyle), typeof(GargoyleDestroyer), typeof(GargoyleEnforcer), typeof(StoneGargoyle), typeof(GargoyleShade)), }; } else { abyss.Super = new SlayerEntry(SlayerName.Exorcism, typeof(AbysmalHorror), typeof(Balron), typeof(BoneDemon), typeof(ChaosDaemon), typeof(Daemon), typeof(SummonedDaemon), typeof(DemonKnight), typeof(Devourer), typeof(Gargoyle), typeof(FireGargoyle), typeof(Gibberling), typeof(HordeMinion), typeof(IceFiend), typeof(Imp), typeof(Impaler), typeof(Ravager), typeof(StoneGargoyle), typeof(ArcaneDaemon), typeof(EnslavedGargoyle), typeof(GargoyleDestroyer), typeof(GargoyleEnforcer), typeof(Moloch)); abyss.Entries = new SlayerEntry[] { new SlayerEntry(SlayerName.DaemonDismissal, typeof(AbysmalHorror), typeof(Balron), typeof(BoneDemon), typeof(ChaosDaemon), typeof(Daemon), typeof(SummonedDaemon), typeof(DemonKnight), typeof(Devourer), typeof(Gibberling), typeof(HordeMinion), typeof(IceFiend), typeof(Imp), typeof(Impaler), typeof(Ravager), typeof(ArcaneDaemon), typeof(Moloch)), new SlayerEntry(SlayerName.GargoylesFoe, typeof(FireGargoyle), typeof(Gargoyle), typeof(StoneGargoyle), typeof(EnslavedGargoyle), typeof(GargoyleDestroyer), typeof(GargoyleEnforcer)), new SlayerEntry(SlayerName.BalronDamnation, typeof(Balron)) }; } arachnid.Opposition = new SlayerGroup[] { reptilian }; arachnid.FoundOn = new Type[] { typeof(AncientWyrm), typeof(GreaterDragon), typeof(Dragon), typeof(OphidianMatriarch), typeof(ShadowWyrm) }; arachnid.Super = new SlayerEntry(SlayerName.ArachnidDoom, typeof(DreadSpider), typeof(FrostSpider), typeof(GiantBlackWidow), typeof(GiantSpider), typeof(Mephitis), typeof(Scorpion), typeof(TerathanAvenger), typeof(TerathanDrone), typeof(TerathanMatriarch), typeof(TerathanWarrior), /* Mondain's Legacy */ typeof(Miasma), typeof(SpeckledScorpion), typeof(LadyLissith), typeof(LadySabrix), typeof(Virulent), typeof(Silk), typeof(Malefic) /* End */, typeof(Navrey), typeof(SentinelSpider), typeof(WolfSpider), typeof(TrapdoorSpider)); arachnid.Entries = new SlayerEntry[] { new SlayerEntry(SlayerName.ScorpionsBane, typeof(Scorpion), /* Mondain's Legacy */ typeof(Miasma), typeof(SpeckledScorpion) /* End */), new SlayerEntry(SlayerName.SpidersDeath, typeof(DreadSpider), typeof(FrostSpider), typeof(GiantBlackWidow), typeof(GiantSpider), typeof(Mephitis), /* Mondain's Legacy */ typeof(LadyLissith), typeof(LadySabrix), typeof(Virulent), typeof(Silk), typeof(Malefic) /* End */, typeof(Navrey), typeof(SentinelSpider), typeof(WolfSpider), typeof(TrapdoorSpider)), new SlayerEntry(SlayerName.Terathan, typeof(TerathanAvenger), typeof(TerathanDrone), typeof(TerathanMatriarch), typeof(TerathanWarrior)) }; reptilian.Opposition = new SlayerGroup[] { arachnid }; reptilian.FoundOn = new Type[] { typeof(TerathanAvenger), typeof(TerathanMatriarch) }; reptilian.Super = new SlayerEntry(SlayerName.ReptilianDeath, typeof(SkeletalDragonRenowned), typeof(WyvernRenowned), typeof(AncientWyrm), typeof(DeepSeaSerpent), typeof(GreaterDragon), typeof(Dragon), typeof(Drake), typeof(GiantIceWorm), typeof(IceSerpent), typeof(GiantSerpent), typeof(Hiryu), typeof(IceSnake), typeof(JukaLord), typeof(JukaMage), typeof(JukaWarrior), typeof(LavaSerpent), typeof(LavaSnake), typeof(LesserHiryu), typeof(Lizardman), typeof(OphidianArchmage), typeof(OphidianKnight), typeof(OphidianMage), typeof(OphidianMatriarch), typeof(OphidianWarrior), typeof(Reptalon), typeof(SeaSerpent), typeof(Serado), typeof(SerpentineDragon), typeof(ShadowWyrm), typeof(SilverSerpent), typeof(SkeletalDragon), typeof(Snake), typeof(SwampDragon), typeof(WhiteWyrm), typeof(Wyvern), typeof(Yamandon), typeof(Hydra), typeof(CrystalHydra), typeof(CrystalSeaSerpent), typeof(Rend), typeof(Thrasher), typeof(Abscess), typeof(Grim), typeof(ChickenLizard), typeof(StygianDragon), typeof(FairyDragon), typeof(Skree), typeof(Slith), typeof(StoneSlith), typeof(ToxicSlith), typeof(Raptor), typeof(Kepetch), typeof(KepetchAmbusher), typeof(LizardmanSquatter), typeof(LizardmanDefender)); reptilian.Entries = new SlayerEntry[] { new SlayerEntry(SlayerName.DragonSlaying, typeof(SkeletalDragonRenowned), typeof(WyvernRenowned), typeof(AncientWyrm), typeof(GreaterDragon), typeof(Dragon), typeof(Drake), typeof(Hiryu), typeof(LesserHiryu), typeof(Reptalon), typeof(SerpentineDragon), typeof(ShadowWyrm), typeof(SkeletalDragon), typeof(SwampDragon), typeof(WhiteWyrm), typeof(Wyvern), typeof(Hydra), typeof(CrystalHydra), typeof(Rend), typeof(Abscess), typeof(Grim), typeof(StygianDragon), typeof(FairyDragon)), new SlayerEntry(SlayerName.LizardmanSlaughter, typeof(Lizardman), typeof(LizardmanSquatter), typeof(LizardmanDefender)), new SlayerEntry(SlayerName.Ophidian, typeof(OphidianArchmage), typeof(OphidianKnight), typeof(OphidianMage), typeof(OphidianMatriarch), typeof(OphidianWarrior)), new SlayerEntry(SlayerName.SnakesBane, typeof(DeepSeaSerpent), typeof(GiantIceWorm), typeof(GiantSerpent), typeof(IceSerpent), typeof(IceSnake), typeof(LavaSerpent), typeof(LavaSnake), typeof(SeaSerpent), typeof(Serado), typeof(SilverSerpent), typeof(Snake), typeof(Yamandon), typeof(CrystalSeaSerpent)) }; m_Groups = new SlayerGroup[] { humanoid, undead, elemental, abyss, arachnid, reptilian, fey }; m_TotalEntries = CompileEntries(m_Groups); }
static SlayerGroup() { SlayerGroup humanoid = new SlayerGroup(); SlayerGroup undead = new SlayerGroup(); SlayerGroup elemental = new SlayerGroup(); SlayerGroup abyss = new SlayerGroup(); SlayerGroup arachnid = new SlayerGroup(); SlayerGroup reptilian = new SlayerGroup(); SlayerGroup fey = new SlayerGroup(); humanoid.Opposition = new SlayerGroup[]{ undead }; humanoid.FoundOn = new Type[]{ typeof( Bird ) }; humanoid.Super = new SlayerEntry( SlayerName.Repond, typeof( Bird ) ); humanoid.Entries = new SlayerEntry[] { new SlayerEntry( SlayerName.OgreTrashing, typeof( Bird ) ), new SlayerEntry( SlayerName.OrcSlaying, typeof( Bird ) ), new SlayerEntry( SlayerName.TrollSlaughter, typeof( Bird ) ) }; undead.Opposition = new SlayerGroup[]{ humanoid }; undead.Super = new SlayerEntry( SlayerName.Silver, typeof( Bird ) ); undead.Entries = new SlayerEntry[0]; fey.Opposition = new SlayerGroup[]{ abyss }; fey.Super = new SlayerEntry( SlayerName.Fey, typeof( Bird ) ); fey.Entries = new SlayerEntry[0]; elemental.Opposition = new SlayerGroup[]{ abyss }; elemental.FoundOn = new Type[]{ typeof( Bird ) }; elemental.Super = new SlayerEntry( SlayerName.ElementalBan, typeof( Bird ) ); elemental.Entries = new SlayerEntry[] { new SlayerEntry( SlayerName.BloodDrinking, typeof( Bird ) ), new SlayerEntry( SlayerName.EarthShatter, typeof( Bird ) ), new SlayerEntry( SlayerName.ElementalHealth, typeof( Bird ) ), new SlayerEntry( SlayerName.FlameDousing, typeof( Bird ) ), new SlayerEntry( SlayerName.SummerWind, typeof( Bird ) ), new SlayerEntry( SlayerName.Vacuum, typeof( Bird ) ), new SlayerEntry( SlayerName.WaterDissipation, typeof( Bird ) ) }; abyss.Opposition = new SlayerGroup[]{ elemental, fey }; abyss.FoundOn = new Type[]{ typeof( Bird ) }; if( Core.AOS ) { abyss.Super = new SlayerEntry( SlayerName.Exorcism, typeof( Bird ) ); abyss.Entries = new SlayerEntry[] { // Daemon Dismissal & Balron Damnation have been removed and moved up to super slayer on OSI. new SlayerEntry( SlayerName.GargoylesFoe, typeof( Bird ) ), }; } else { abyss.Super = new SlayerEntry( SlayerName.Exorcism, typeof( Bird ) ); abyss.Entries = new SlayerEntry[] { new SlayerEntry( SlayerName.DaemonDismissal, typeof( Bird ) ), new SlayerEntry( SlayerName.GargoylesFoe, typeof( Bird ) ), new SlayerEntry( SlayerName.BalronDamnation, typeof( Bird ) ) }; } arachnid.Opposition = new SlayerGroup[]{ reptilian }; arachnid.FoundOn = new Type[]{ typeof( Bird ) }; arachnid.Super = new SlayerEntry( SlayerName.ArachnidDoom, typeof( Bird ) ); arachnid.Entries = new SlayerEntry[] { new SlayerEntry( SlayerName.ScorpionsBane, typeof( Bird ) ), new SlayerEntry( SlayerName.SpidersDeath, typeof( Bird ) ), new SlayerEntry( SlayerName.Terathan, typeof( Bird ) ) }; reptilian.Opposition = new SlayerGroup[]{ arachnid }; reptilian.FoundOn = new Type[]{ typeof( Bird ) }; reptilian.Super = new SlayerEntry( SlayerName.ReptilianDeath, typeof( Bird ) ); reptilian.Entries = new SlayerEntry[] { new SlayerEntry( SlayerName.DragonSlaying, typeof( Bird ) ), new SlayerEntry( SlayerName.LizardmanSlaughter, typeof( Bird ) ), new SlayerEntry( SlayerName.Ophidian, typeof( Bird ) ), new SlayerEntry( SlayerName.SnakesBane, typeof( Bird ) ) }; m_Groups = new SlayerGroup[] { humanoid, undead, elemental, abyss, arachnid, reptilian, fey }; m_TotalEntries = CompileEntries( m_Groups ); }
public override void GetProperties(ObjectPropertyList list) { base.GetProperties(list); int oldUses = m_UsesRemaining; CheckReplenishUses(false); if (m_Crafter != null) { list.Add(1050043, m_Crafter.Name); // crafted by ~1_NAME~ } list.Add(1060584, m_UsesRemaining.ToString()); // uses remaining: ~1_val~ if (m_ReplenishesCharges) { list.Add(1070928); // Replenish Charges } int oreType; switch (m_Resource) { case CraftResource.AshTree: oreType = 1095399; break; // ash case CraftResource.CherryTree: oreType = 1095400; break; // cherry case CraftResource.EbonyTree: oreType = 1095401; break; // ebony case CraftResource.GoldenOakTree: oreType = 1095402; break; // gold oak case CraftResource.HickoryTree: oreType = 1095403; break; // hickory case CraftResource.MahoganyTree: oreType = 1095404; break; // mahogany case CraftResource.DriftwoodTree: oreType = 1095510; break; // driftwood case CraftResource.OakTree: oreType = 1095405; break; // oak case CraftResource.PineTree: oreType = 1095406; break; // pine case CraftResource.GhostTree: oreType = 1095513; break; // ghostwood case CraftResource.RosewoodTree: oreType = 1095407; break; // rosewood case CraftResource.WalnutTree: oreType = 1095408; break; // walnut case CraftResource.PetrifiedTree: oreType = 1095534; break; // petrified case CraftResource.ElvenTree: oreType = 1095537; break; // elven default: oreType = 0; break; } if (m_Quality == InstrumentQuality.Exceptional) { if (oreType != 0) { list.Add(1053100, "#{0}\t{1}", oreType, "Wood"); // exceptional ~1_oretype~ ~2_armortype~ } else { list.Add(1050040, "Wood"); // exceptional ~1_ITEMNAME~ } } else { if (oreType != 0) { list.Add(1053099, "#{0}\t{1}", oreType, "Wood"); // ~1_oretype~ ~2_armortype~ } } m_AosSkillBonuses.GetProperties(list); int prop; if ((prop = ArtifactRarity) > 0) { list.Add(1061078, prop.ToString()); // artifact rarity ~1_val~ } if ((prop = m_AosAttributes.WeaponDamage) != 0) { list.Add(1060401, prop.ToString()); // damage increase ~1_val~% } if ((prop = m_AosAttributes.DefendChance) != 0) { list.Add(1060408, prop.ToString()); // defense chance increase ~1_val~% } if ((prop = m_AosAttributes.BonusDex) != 0) { list.Add(1060409, prop.ToString()); // dexterity bonus ~1_val~ } if ((prop = m_AosAttributes.EnhancePotions) != 0) { list.Add(1060411, prop.ToString()); // enhance potions ~1_val~% } if ((prop = m_AosAttributes.CastRecovery) != 0) { list.Add(1060412, prop.ToString()); // faster cast recovery ~1_val~ } if ((prop = m_AosAttributes.CastSpeed) != 0) { list.Add(1060413, prop.ToString()); // faster casting ~1_val~ } if ((prop = m_AosAttributes.AttackChance) != 0) { list.Add(1060415, prop.ToString()); // hit chance increase ~1_val~% } if ((prop = m_AosAttributes.BonusHits) != 0) { list.Add(1060431, prop.ToString()); // hit point increase ~1_val~ } if ((prop = m_AosAttributes.BonusInt) != 0) { list.Add(1060432, prop.ToString()); // intelligence bonus ~1_val~ } if ((prop = m_AosAttributes.LowerManaCost) != 0) { list.Add(1060433, prop.ToString()); // lower mana cost ~1_val~% } if ((prop = m_AosAttributes.LowerRegCost) != 0) { list.Add(1060434, prop.ToString()); // lower reagent cost ~1_val~% } if ((prop = m_AosAttributes.Luck) != 0) { list.Add(1060436, prop.ToString()); // luck ~1_val~ } if ((prop = m_AosAttributes.BonusMana) != 0) { list.Add(1060439, prop.ToString()); // mana increase ~1_val~ } if ((prop = m_AosAttributes.RegenMana) != 0) { list.Add(1060440, prop.ToString()); // mana regeneration ~1_val~ } if ((prop = m_AosAttributes.NightSight) != 0) { list.Add(1060441); // night sight } if ((prop = m_AosAttributes.ReflectPhysical) != 0) { list.Add(1060442, prop.ToString()); // reflect physical damage ~1_val~% } if ((prop = m_AosAttributes.RegenStam) != 0) { list.Add(1060443, prop.ToString()); // stamina regeneration ~1_val~ } if ((prop = m_AosAttributes.RegenHits) != 0) { list.Add(1060444, prop.ToString()); // hit point regeneration ~1_val~ } if ((prop = m_AosAttributes.SpellChanneling) != 0) { list.Add(1060482); // spell channeling } if ((prop = m_AosAttributes.SpellDamage) != 0) { list.Add(1060483, prop.ToString()); // spell damage increase ~1_val~% } if ((prop = m_AosAttributes.BonusStam) != 0) { list.Add(1060484, prop.ToString()); // stamina increase ~1_val~ } if ((prop = m_AosAttributes.BonusStr) != 0) { list.Add(1060485, prop.ToString()); // strength bonus ~1_val~ } if ((prop = m_AosAttributes.WeaponSpeed) != 0) { list.Add(1060486, prop.ToString()); // swing speed increase ~1_val~% } base.AddResistanceProperties(list); if (m_HitPoints >= 0 && m_MaxHitPoints > 0) { list.Add(1060639, "{0}\t{1}", m_HitPoints, m_MaxHitPoints); // durability ~1_val~ / ~2_val~ } if (m_Slayer != SlayerName.None) { SlayerEntry entry = SlayerGroup.GetEntryByName(m_Slayer); if (entry != null) { list.Add(entry.Title); } } if (m_Slayer2 != SlayerName.None) { SlayerEntry entry = SlayerGroup.GetEntryByName(m_Slayer2); if (entry != null) { list.Add(entry.Title); } } if (m_UsesRemaining != oldUses) { Timer.DelayCall(TimeSpan.Zero, new TimerCallback(InvalidateProperties)); } }
static SlayerGroup() { SlayerGroup humanoid = new SlayerGroup(); SlayerGroup undead = new SlayerGroup(); SlayerGroup elemental = new SlayerGroup(); SlayerGroup abyss = new SlayerGroup(); SlayerGroup arachnid = new SlayerGroup(); SlayerGroup reptilian = new SlayerGroup(); SlayerGroup fey = new SlayerGroup(); #region Humanoid humanoid.Opposition = new SlayerGroup[] { undead }; humanoid.FoundOn = new Type[] { typeof( BoneKnight ), typeof( Lich ), typeof( LichLord ) }; humanoid.Super = new SlayerEntry ( SlayerName.Repond, typeof( ArcticOgreLord ), typeof( Cyclops ), typeof( Ettin ), typeof( EvilMage ), typeof( EvilMageLord ), typeof( FrostTroll ), typeof( MeerCaptain ), typeof( MeerEternal ), typeof( MeerMage ), typeof( MeerWarrior ), typeof( Ogre ), typeof( OgreLord ), typeof( Orc ), typeof( OrcBomber ), typeof( OrcBrute ), typeof( OrcCaptain ), typeof( OrcChopper ), typeof( OrcScout ), typeof( OrcishLord ), typeof( OrcishMage ), typeof( Ratman ), typeof( RatmanArcher ), typeof( RatmanMage ), typeof( SavageRider ), typeof( SavageShaman ), typeof( Savage ), typeof( Titan ), typeof( Troll ), typeof( Barracoon ), typeof( Troglodyte ), typeof( Minotaur ), typeof( MasterTheophilus ), typeof( Lurg ), typeof( Chiikkaha ), typeof( MougGuur ), typeof( Medusa ), typeof( GrayGoblin ), typeof( EnslavedGrayGoblin ), typeof( GreenGoblin ), typeof( EnslavedGreenGoblin ), typeof( GrayGoblinKeeper ), typeof( EnslavedGoblinKeeper ), typeof( GreenGoblinScout ), typeof( EnslavedGoblinScout ), typeof( GrayGoblinMage ), typeof( EnslavedGoblinMage ), typeof( GreenGoblinAlchemist ), typeof( EnslavedGoblinAlchemist ), typeof( GreenGoblinAlchemistRenowned ), typeof( GrayGoblinMageRenowned ), typeof( ClanChitterAssistant ), typeof( ClanChitterTinkerer ), typeof( RakktaviRenowned ), typeof( ClanRibbonSupplicant ), typeof( ClanRibbonCourtier ), typeof( VitaviRenowned ), typeof( ClanScratchScrounger ), typeof( ClanScratchHenchrat ), typeof( TikitaviRenowned ) ); humanoid.Entries = new SlayerEntry[] { new SlayerEntry ( SlayerName.Ogre, typeof( ArcticOgreLord ), typeof( Ogre ), typeof( OgreLord ) ), new SlayerEntry ( SlayerName.Orc, typeof( Orc ), typeof( OrcBomber ), typeof( OrcBrute ), typeof( OrcCaptain ), typeof( OrcChopper ), typeof( OrcScout ), typeof( OrcishLord ), typeof( OrcishMage ) ), new SlayerEntry ( SlayerName.Troll, typeof( FrostTroll ), typeof( Troll ) ) }; #endregion #region Undead undead.Opposition = new SlayerGroup[] { humanoid }; undead.Super = new SlayerEntry ( SlayerName.Undead, typeof( AncientLich ), typeof( Bogle ), typeof( BoneKnight ), typeof( BoneMagi ), typeof( Ghoul ), typeof( LadyOfTheSnow ), typeof( RevenantLion ), typeof( ShadowKnight ), typeof( SkeletalMount ), typeof( Revenant ), typeof( DarkGuardian ), typeof( DarknightCreeper ), typeof( FleshGolem ), typeof( GoreFiend ), typeof( HellSteed ), typeof( Lich ), typeof( LichLord ), typeof( Mummy ), typeof( RottingCorpse ), typeof( Shade ), typeof( SkeletalKnight ), typeof( SkeletalMage ), typeof( Skeleton ), typeof( Spectre ), typeof( Wraith ), typeof( Zombie ), typeof( UnfrozenMummy ), typeof( RedDeath ), typeof( SirPatrick ), typeof( MasterJonath ), typeof( MasterMikael ), typeof( LadyMarai ), typeof( LadyJennifyr ), typeof( PestilentBandage ), typeof( CursedMetallicKnight ), typeof( CursedMetallicMage ), typeof( EffeteUndeadGargoyle ), typeof( Niporailem ), typeof( PutridUndeadGargoyle ), typeof( PutridUndeadGuardian ), typeof( UndeadGuardian ), typeof( AncientLichRenowned ), typeof( DreamWraith ), typeof( PrimevalLich ), typeof( UndeadGargoyle ) /* * TODO: * - Drelgor the Impaler * - Spectral Spellbinder * - Challenger of Ol'Haven */ ); undead.Entries = new SlayerEntry[0]; #endregion #region Fey fey.Opposition = new SlayerGroup[] { abyss }; fey.Super = new SlayerEntry ( SlayerName.Fey, typeof( Centaur ), typeof( EtherealWarrior ), typeof( Kirin ), typeof( LordOaks ), typeof( Pixie ), typeof( Silvani ), typeof( Treefellow ), typeof( Unicorn ), typeof( Wisp ), typeof( Changeling ), typeof( InsaneDryad ), typeof( CuSidhe ), typeof( Satyr ), typeof( Dryad ), typeof( CrystalLatticeSeeker ), typeof( LadyMelisande ), typeof( DreadHorn ), typeof( Travesty ), typeof( ShimmeringEffusion ), typeof( Guile ), typeof( Irk ), typeof( TwauloOfTheGlade ), typeof( FeralTreefellow ), typeof( DarkWisp ), typeof( PixieRenowned ) ); fey.Entries = new SlayerEntry[0]; #endregion #region Elemental elemental.Opposition = new SlayerGroup[] { abyss }; elemental.FoundOn = new Type[] { typeof( Balron ), typeof( Putrefier ), typeof( Daemon ), typeof( FireDaemonRenowned ) }; elemental.Super = new SlayerEntry ( SlayerName.Elemental, typeof( ToxicElemental ), typeof( AgapiteElemental ), typeof( AirElemental ), typeof( SummonedAirElemental ), typeof( BloodElemental ), typeof( BronzeElemental ), typeof( CopperElemental ), typeof( DullCopperElemental ), typeof( EarthElemental ), typeof( SummonedEarthElemental ), typeof( Efreet ), typeof( SummonedFireElemental ), typeof( FireElemental ), typeof( GoldenElemental ), typeof( IceElemental ), typeof( CrystalElemental ), typeof( KazeKemono ), typeof( RaiJu ), typeof( PoisonElemental ), typeof( ShadowIronElemental ), typeof( SandVortex ), typeof( ValoriteElemental ), typeof( SnowElemental ), typeof( VeriteElemental ), typeof( WaterElemental ), typeof( SummonedWaterElemental ), typeof( LavaElemental ), typeof( FireElementalRenowned ), typeof( AcidElementalRenowned ), typeof( Mistral ), typeof( Flurry ), typeof( Tempest ) /* * TODO: * - Blackrock Elemental */ ); elemental.Entries = new SlayerEntry[] { new SlayerEntry ( SlayerName.BloodElemental, typeof( BloodElemental ) ), new SlayerEntry ( SlayerName.EarthElemental, typeof( AgapiteElemental ), typeof( BronzeElemental ), typeof( CopperElemental ), typeof( EarthElemental ), typeof( SummonedEarthElemental ), typeof( GoldenElemental ), typeof( ShadowIronElemental ), typeof( ValoriteElemental ), typeof( VeriteElemental ) ), new SlayerEntry ( SlayerName.PoisonElemental, typeof( PoisonElemental ) ), new SlayerEntry ( SlayerName.FireElemental, typeof( FireElemental ), typeof( SummonedFireElemental ), typeof( FireElementalRenowned ) ), new SlayerEntry ( SlayerName.SnowElemental, typeof( IceElemental ), typeof( SnowElemental ) ), new SlayerEntry ( SlayerName.AirElemental, typeof( AirElemental ), typeof( SummonedAirElemental ), typeof( Mistral ), typeof( Flurry ), typeof( Tempest ) ), new SlayerEntry ( SlayerName.WaterElemental, typeof( WaterElemental ), typeof( SummonedWaterElemental ) ) }; #endregion #region Demon abyss.Opposition = new SlayerGroup[] { elemental, fey }; abyss.FoundOn = new Type[] { typeof( BloodElemental ) }; abyss.Super = new SlayerEntry ( SlayerName.Demon, typeof( AbysmalHorror ), typeof( ArcaneDaemon ), typeof( Balron ), typeof( BoneDemon ), typeof( ChaosDaemon ), typeof( Daemon ), typeof( SummonedDaemon ), typeof( DemonKnight ), typeof( Devourer ), typeof( Impaler ), typeof( Gibberling ), typeof( Ravager ), typeof( FanDancer ), typeof( Oni ), typeof( EnslavedGargoyle ), typeof( FireGargoyle ), typeof( Gargoyle ), typeof( GargoyleDestroyer ), typeof( GargoyleEnforcer ), typeof( HordeMinion ), typeof( IceFiend ), typeof( Imp ), typeof( Moloch ), typeof( Semidar ), typeof( StoneGargoyle ), typeof( Succubus ), typeof( PatchworkSkeleton ), typeof( TsukiWolf ), typeof( CrystalDaemon ), typeof( ChiefParoxysmus ), typeof( Putrefier ), typeof( Szavetra ), typeof( FireDaemon ), typeof( FireDaemonRenowned ), typeof( DevourerOfSoulsRenowned ), typeof( AbyssalInfernal ), typeof( Anzuanord ), typeof( Ballem ), typeof( Betballem ), typeof( SkeletalLich ), typeof( UsagralemBallem ), typeof( EffetePutridGargoyle ), typeof( EffeteUndeadGargoyle ), typeof( SlasherOfVeils ), typeof( PitFiend ) ); abyss.Entries = new SlayerEntry[] { new SlayerEntry ( SlayerName.Gargoyle, typeof( EnslavedGargoyle ), typeof( FireGargoyle ), typeof( Gargoyle ), typeof( GargoyleDestroyer ), typeof( GargoyleEnforcer ), typeof( StoneGargoyle ), typeof( EffetePutridGargoyle ), typeof( EffeteUndeadGargoyle ) ) }; #endregion #region Arachnid arachnid.Opposition = new SlayerGroup[] { reptilian }; arachnid.FoundOn = new Type[] { typeof( AncientWyrm ), typeof( Dragon ), typeof( OphidianMatriarch ), typeof( ShadowWyrm ) }; arachnid.Super = new SlayerEntry ( SlayerName.Arachnid, typeof( DreadSpider ), typeof( FrostSpider ), typeof( GiantBlackWidow ), typeof( GiantSpider ), typeof( Mephitis ), typeof( Scorpion ), typeof( TerathanAvenger ), typeof( TerathanDrone ), typeof( TerathanMatriarch ), typeof( TerathanWarrior ), typeof( LadySabrix ), typeof( LadyLissith ), typeof( Silk ), typeof( Malefic ), typeof( Virulent ), typeof( Miasma ), typeof( SpeckledScorpion ), typeof( NavreyNightEyes ), typeof( SentinelSpider ), typeof( TrapdoorSpider ), typeof( Anlorzen ), typeof( Anlorlem ) ); arachnid.Entries = new SlayerEntry[] { new SlayerEntry ( SlayerName.Scorpion, typeof( Scorpion ), typeof( Miasma ), typeof( SpeckledScorpion ) ), new SlayerEntry ( SlayerName.Spider, typeof( DreadSpider ), typeof( FrostSpider ), typeof( GiantBlackWidow ), typeof( GiantSpider ), typeof( Mephitis ), typeof( LadySabrix ), typeof( LadyLissith ), typeof( Silk ), typeof( Malefic ), typeof( Virulent ), typeof( NavreyNightEyes ), typeof( SentinelSpider ), typeof( Anlorzen ) ), new SlayerEntry ( SlayerName.Terathan, typeof( TerathanAvenger ), typeof( TerathanDrone ), typeof( TerathanMatriarch ), typeof( TerathanWarrior ), typeof( Anlorlem ) ) }; #endregion #region Reptile reptilian.Opposition = new SlayerGroup[] { arachnid }; reptilian.FoundOn = new Type[] { typeof( TerathanAvenger ), typeof( TerathanMatriarch ) }; reptilian.Super = new SlayerEntry ( SlayerName.Reptile, typeof( AncientWyrm ), typeof( DeepSeaSerpent ), typeof( Dragon ), typeof( GreaterDragon ), typeof( Drake ), typeof( IceSerpent ), typeof( GiantIceWorm ), typeof( GiantSerpent ), typeof( Hiryu ), typeof( LesserHiryu ), typeof( Serado ), typeof( Yamandon ), typeof( IceSnake ), typeof( JukaLord ), typeof( JukaMage ), typeof( JukaWarrior ), typeof( LavaSerpent ), typeof( LavaSnake ), typeof( Lizardman ), typeof( OphidianMage ), typeof( OphidianKnight ), typeof( OphidianWarrior ), typeof( OphidianArchmage ), typeof( OphidianMatriarch ), typeof( SeaSerpent ), typeof( SerpentineDragon ), typeof( ShadowWyrm ), typeof( SilverSerpent ), typeof( SkeletalDragon ), typeof( Snake ), typeof( SwampDragon ), typeof( WhiteWyrm ), typeof( Wyvern ), typeof( Hydra ), typeof( CrystalHydra ), typeof( Reptalon ), typeof( CrystalSeaSerpent ), typeof( Rend ), typeof( Abscess ), typeof( Coil ), typeof( Raptor ), typeof( FairyDragon ), typeof( Kepetch ), typeof( KepetchAmbusher ), typeof( Skree ), typeof( SkeletalDrake ), typeof( SkeletalDragonRenowned ), typeof( CoralSnake ), typeof( StygianDragon ), typeof( WyvernRenowned ), typeof( Rikktor ), typeof( Slith ), typeof( StoneSlith ), typeof( ToxicSlith ), typeof( ColdDrake ), typeof( Grim ) ); reptilian.Entries = new SlayerEntry[] { new SlayerEntry ( SlayerName.Dragon, typeof( AncientWyrm ), typeof( Dragon ), typeof( GreaterDragon ), typeof( Drake ), typeof( Hiryu ), typeof( LesserHiryu ), typeof( SerpentineDragon ), typeof( ShadowWyrm ), typeof( SkeletalDragon ), typeof( SwampDragon ), typeof( WhiteWyrm ), typeof( Wyvern ), typeof( Rend ), typeof( Abscess ), typeof( Reptalon ), typeof( FairyDragon ), typeof( SkeletalDrake ), typeof( SkeletalDragonRenowned ), typeof( StygianDragon ), typeof( WyvernRenowned ), typeof( Rikktor ), typeof( ColdDrake ), typeof( Grim ) ), new SlayerEntry ( SlayerName.Lizardman, typeof( Lizardman ) ), new SlayerEntry ( SlayerName.Ophidian, typeof( OphidianMage ), typeof( OphidianKnight ), typeof( OphidianWarrior ), typeof( OphidianArchmage ), typeof( OphidianMatriarch ) ), new SlayerEntry ( SlayerName.Snake, typeof( DeepSeaSerpent ), typeof( IceSerpent ), typeof( GiantIceWorm ), typeof( GiantSerpent ), typeof( IceSnake ), typeof( LavaSerpent ), typeof( LavaSnake ), typeof( SeaSerpent ), typeof( SilverSerpent ), typeof( Snake ), typeof( Yamandon ), typeof( Serado ), typeof( Coil ), typeof( CoralSnake ) ) }; #endregion m_Groups = new SlayerGroup[] { humanoid, undead, elemental, abyss, arachnid, reptilian, fey }; m_TotalEntries = CompileEntries( m_Groups ); }
static SlayerGroup() { SlayerGroup humanoid = new SlayerGroup(); SlayerGroup undead = new SlayerGroup(); SlayerGroup elemental = new SlayerGroup(); SlayerGroup abyss = new SlayerGroup(); SlayerGroup arachnid = new SlayerGroup(); SlayerGroup reptilian = new SlayerGroup(); SlayerGroup fey = new SlayerGroup(); humanoid.Opposition = new SlayerGroup[]{ undead }; humanoid.FoundOn = new Type[]{ typeof( BoneKnight ), typeof( Lich ), typeof( LichLord ) }; humanoid.Super = new SlayerEntry( SlayerName.Repond, typeof( Cyclops ), typeof( Ettin ), typeof( EvilMage ), typeof( EvilMageLord ), typeof( FrostTroll ), typeof( Ogre ), typeof( OgreLord ), typeof( Orc ), typeof( OrcCaptain ), typeof( OrcishLord ), typeof( OrcishMage ), typeof( Ratman ), typeof( RatmanArcher ), typeof( RatmanMage ), typeof( Titan ), typeof( Troll ) ); humanoid.Entries = new SlayerEntry[] { new SlayerEntry( SlayerName.OgreTrashing, typeof( Ogre ), typeof( OgreLord ) ), new SlayerEntry( SlayerName.OrcSlaying, typeof( Orc ), typeof( OrcCaptain ), typeof( OrcishLord ), typeof( OrcishMage ) ), new SlayerEntry( SlayerName.TrollSlaughter, typeof( Troll ), typeof( FrostTroll ) ) }; undead.Opposition = new SlayerGroup[]{ humanoid }; undead.Super = new SlayerEntry( SlayerName.Silver, typeof( AncientLich ), typeof( BoneKnight ), typeof( BoneMagi ), typeof( Ghoul ), typeof( Lich ), typeof( LichLord ), typeof( Mummy ), typeof( RottingCorpse ), typeof( Shade ), typeof( SkeletalKnight ), typeof( SkeletalMage ), typeof( Skeleton ), typeof( Spectre ), typeof( Wraith ), typeof( Zombie ) ); undead.Entries = new SlayerEntry[0]; fey.Opposition = new SlayerGroup[]{ abyss }; fey.Super = new SlayerEntry( SlayerName.Fey, typeof( Wisp ) ); fey.Entries = new SlayerEntry[0]; elemental.Opposition = new SlayerGroup[]{ abyss }; elemental.FoundOn = new Type[]{ typeof( Balron ), typeof( Daemon ) }; elemental.Super = new SlayerEntry( SlayerName.ElementalBan, typeof( AirElemental ), typeof( BloodElemental ), typeof( EarthElemental ), typeof( Efreet ), typeof( FireElemental ), typeof( IceElemental ), typeof( PoisonElemental ), typeof( SnowElemental ), typeof( WaterElemental ) ); elemental.Entries = new SlayerEntry[] { new SlayerEntry( SlayerName.BloodDrinking, typeof( BloodElemental ) ), new SlayerEntry( SlayerName.EarthShatter, typeof( EarthElemental ) ), new SlayerEntry( SlayerName.ElementalHealth, typeof( PoisonElemental ) ), new SlayerEntry( SlayerName.FlameDousing, typeof( FireElemental ) ), new SlayerEntry( SlayerName.SummerWind, typeof( SnowElemental ), typeof( IceElemental ) ), new SlayerEntry( SlayerName.Vacuum, typeof( AirElemental ) ), new SlayerEntry( SlayerName.WaterDissipation, typeof( WaterElemental ) ) }; abyss.Opposition = new SlayerGroup[]{ elemental, fey }; abyss.FoundOn = new Type[]{ typeof( BloodElemental ) }; abyss.Super = new SlayerEntry( SlayerName.Exorcism, typeof( Balron ), typeof( Daemon ), typeof( Gargoyle ), typeof( IceFiend ), typeof( Imp ), typeof( StoneGargoyle ) ); abyss.Entries = new SlayerEntry[] { new SlayerEntry( SlayerName.DaemonDismissal, typeof( Balron ), typeof( Daemon ), typeof( IceFiend ), typeof( Imp ) ), new SlayerEntry( SlayerName.GargoylesFoe, typeof( Gargoyle ), typeof( StoneGargoyle ) ), new SlayerEntry( SlayerName.BalronDamnation, typeof( Balron ) ) }; arachnid.Opposition = new SlayerGroup[]{ reptilian }; arachnid.FoundOn = new Type[]{ typeof( AncientWyrm ), typeof( Dragon ), typeof( OphidianMatriarch ) }; arachnid.Super = new SlayerEntry( SlayerName.ArachnidDoom, typeof( DreadSpider ), typeof( FrostSpider ), typeof( GiantBlackWidow ), typeof( GiantSpider ), typeof( Scorpion ), typeof( TerathanAvenger ), typeof( TerathanDrone ), typeof( TerathanMatriarch ), typeof( TerathanWarrior ) ); arachnid.Entries = new SlayerEntry[] { new SlayerEntry( SlayerName.ScorpionsBane, typeof( Scorpion ) ), new SlayerEntry( SlayerName.SpidersDeath, typeof( DreadSpider ), typeof( FrostSpider ), typeof( GiantBlackWidow ), typeof( GiantSpider ) ), new SlayerEntry( SlayerName.Terathan, typeof( TerathanAvenger ), typeof( TerathanDrone ), typeof( TerathanMatriarch ), typeof( TerathanWarrior ) ) }; reptilian.Opposition = new SlayerGroup[]{ arachnid }; reptilian.FoundOn = new Type[]{ typeof( TerathanAvenger ), typeof( TerathanMatriarch ) }; reptilian.Super = new SlayerEntry( SlayerName.ReptilianDeath, typeof( AncientWyrm ), typeof( DeepSeaSerpent ), typeof( Dragon ), typeof( Drake ), typeof( IceSerpent ), typeof( GiantSerpent ), typeof( IceSnake ), typeof( LavaSerpent ), typeof( LavaSnake ), typeof( Lizardman ), typeof( OphidianArchmage ), typeof( OphidianKnight ), typeof( OphidianMage ), typeof( OphidianMatriarch ), typeof( OphidianWarrior ), typeof( SeaSerpent ), typeof( SilverSerpent ), typeof( Snake ), typeof( WhiteWyrm ), typeof( Wyvern ) ); reptilian.Entries = new SlayerEntry[] { new SlayerEntry( SlayerName.DragonSlaying, typeof( AncientWyrm ), typeof( Dragon ), typeof( Drake ), typeof( WhiteWyrm ), typeof( Wyvern ) ), new SlayerEntry( SlayerName.LizardmanSlaughter, typeof( Lizardman ) ), new SlayerEntry( SlayerName.Ophidian, typeof( OphidianArchmage ), typeof( OphidianKnight ), typeof( OphidianMage ), typeof( OphidianMatriarch ), typeof( OphidianWarrior ) ), new SlayerEntry( SlayerName.SnakesBane, typeof( DeepSeaSerpent ), typeof( GiantSerpent ), typeof( IceSerpent ), typeof( IceSnake ), typeof( LavaSerpent ), typeof( LavaSnake ), typeof( SeaSerpent ), typeof( SilverSerpent ), typeof( Snake ) ) }; m_Groups = new SlayerGroup[] { humanoid, undead, elemental, abyss, arachnid, reptilian, fey }; m_TotalEntries = CompileEntries( m_Groups ); }
static SlayerGroup() { SlayerGroup humanoid = new SlayerGroup(); SlayerGroup undead = new SlayerGroup(); SlayerGroup elemental = new SlayerGroup(); SlayerGroup abyss = new SlayerGroup(); SlayerGroup arachnid = new SlayerGroup(); SlayerGroup reptilian = new SlayerGroup(); SlayerGroup fey = new SlayerGroup(); humanoid.Opposition = new SlayerGroup[] { undead }; humanoid.FoundOn = new Type[] { typeof(BoneKnight), typeof(Lich), typeof(LichLord) }; humanoid.Super = new SlayerEntry(SlayerName.Repond, typeof(ArcticOgreLord), typeof(Cyclops), typeof(Ettin), typeof(EvilMage), typeof(EvilMageLord), typeof(FrostTroll), typeof(MeerCaptain), typeof(MeerEternal), typeof(MeerMage), typeof(MeerWarrior), typeof(Ogre), typeof(OgreLord), typeof(Orc), typeof(OrcBomber), typeof(OrcBrute), typeof(OrcCaptain), /*typeof( OrcChopper ), typeof( OrcScout ),*/ typeof(OrcishLord), typeof(OrcishMage), typeof(Ratman), typeof(RatmanArcher), typeof(RatmanMage), typeof(SavageRider), typeof(SavageShaman), typeof(Savage), typeof(Titan), typeof(Troglodyte), typeof(Troll)); humanoid.Entries = new SlayerEntry[] { new SlayerEntry(SlayerName.OgreTrashing, typeof(Ogre), typeof(OgreLord), typeof(ArcticOgreLord)), new SlayerEntry(SlayerName.OrcSlaying, typeof(Orc), typeof(OrcBomber), typeof(OrcBrute), typeof(OrcCaptain), /* typeof( OrcChopper ), typeof( OrcScout ),*/ typeof(OrcishLord), typeof(OrcishMage)), new SlayerEntry(SlayerName.TrollSlaughter, typeof(Troll), typeof(FrostTroll)) }; undead.Opposition = new SlayerGroup[] { humanoid }; undead.Super = new SlayerEntry(SlayerName.Silver, typeof(AncientLich), typeof(Bogle), typeof(BoneKnight), typeof(BoneMagi), /* typeof( DarkGuardian ), */ typeof(DarknightCreeper), typeof(FleshGolem), typeof(Ghoul), typeof(GoreFiend), typeof(HellSteed), typeof(LadyOfTheSnow), typeof(Lich), typeof(LichLord), typeof(Mummy), typeof(PestilentBandage), typeof(Revenant), typeof(RevenantLion), typeof(RottingCorpse), typeof(Shade), typeof(ShadowKnight), typeof(SkeletalKnight), typeof(SkeletalMage), typeof(SkeletalMount), typeof(Skeleton), typeof(Spectre), typeof(Wraith), typeof(Zombie)); undead.Entries = new SlayerEntry[0]; fey.Opposition = new SlayerGroup[] { abyss }; fey.Super = new SlayerEntry(SlayerName.Fey, typeof(Centaur), typeof(CuSidhe), typeof(EtherealWarrior), typeof(Kirin), typeof(LordOaks), typeof(Pixie), typeof(Silvani), typeof(Treefellow), typeof(Unicorn), typeof(Wisp), typeof(MLDryad), typeof(Satyr)); fey.Entries = new SlayerEntry[0]; elemental.Opposition = new SlayerGroup[] { abyss }; elemental.FoundOn = new Type[] { typeof(Balron), typeof(Daemon) }; elemental.Super = new SlayerEntry(SlayerName.ElementalBan, typeof(AcidElemental), typeof(AgapiteElemental), typeof(AirElemental), typeof(SummonedAirElemental), typeof(BloodElemental), typeof(BronzeElemental), typeof(CopperElemental), typeof(CrystalElemental), typeof(DullCopperElemental), typeof(EarthElemental), typeof(SummonedEarthElemental), typeof(Efreet), typeof(FireElemental), typeof(SummonedFireElemental), typeof(GoldenElemental), typeof(IceElemental), typeof(KazeKemono), typeof(PoisonElemental), typeof(RaiJu), typeof(SandVortex), typeof(ShadowIronElemental), typeof(SnowElemental), typeof(ValoriteElemental), typeof(VeriteElemental), typeof(WaterElemental), typeof(SummonedWaterElemental)); elemental.Entries = new SlayerEntry[] { new SlayerEntry(SlayerName.BloodDrinking, typeof(BloodElemental)), new SlayerEntry(SlayerName.EarthShatter, typeof(AgapiteElemental), typeof(BronzeElemental), typeof(CopperElemental), typeof(DullCopperElemental), typeof(EarthElemental), typeof(SummonedEarthElemental), typeof(GoldenElemental), typeof(ShadowIronElemental), typeof(ValoriteElemental), typeof(VeriteElemental)), new SlayerEntry(SlayerName.ElementalHealth, typeof(PoisonElemental)), new SlayerEntry(SlayerName.FlameDousing, typeof(FireElemental), typeof(SummonedFireElemental)), new SlayerEntry(SlayerName.SummerWind, typeof(SnowElemental), typeof(IceElemental)), new SlayerEntry(SlayerName.Vacuum, typeof(AirElemental), typeof(SummonedAirElemental)), new SlayerEntry(SlayerName.WaterDissipation, typeof(WaterElemental), typeof(SummonedWaterElemental)) }; abyss.Opposition = new SlayerGroup[] { elemental, fey }; abyss.FoundOn = new Type[] { typeof(BloodElemental) }; if (Core.AOS) { abyss.Super = new SlayerEntry(SlayerName.Exorcism, typeof(AbysmalHorror), typeof(ArcaneDaemon), typeof(Balron), typeof(BoneDemon), typeof(ChaosDaemon), typeof(Daemon), typeof(SummonedDaemon), typeof(DemonKnight), typeof(Devourer), typeof(EnslavedGargoyle), typeof(FanDancer), typeof(FireGargoyle), typeof(Gargoyle), typeof(GargoyleDestroyer), typeof(GargoyleEnforcer), typeof(Gibberling), typeof(HordeMinion), typeof(IceFiend), typeof(Imp), typeof(Impaler), typeof(Moloch), typeof(Oni), typeof(Ravager), typeof(Semidar), typeof(StoneGargoyle), typeof(Succubus), typeof(TsukiWolf)); abyss.Entries = new SlayerEntry[] { // Daemon Dismissal & Balron Damnation have been removed and moved up to super slayer on OSI. new SlayerEntry(SlayerName.GargoylesFoe, typeof(EnslavedGargoyle), typeof(FireGargoyle), typeof(Gargoyle), typeof(GargoyleDestroyer), typeof(GargoyleEnforcer), typeof(StoneGargoyle)), }; } else { abyss.Super = new SlayerEntry(SlayerName.Exorcism, typeof(AbysmalHorror), typeof(Balron), typeof(BoneDemon), typeof(ChaosDaemon), typeof(Daemon), typeof(SummonedDaemon), typeof(DemonKnight), typeof(Devourer), typeof(Gargoyle), typeof(FireGargoyle), typeof(Gibberling), typeof(HordeMinion), typeof(IceFiend), typeof(Imp), typeof(Impaler), typeof(Ravager), typeof(StoneGargoyle), typeof(ArcaneDaemon), typeof(EnslavedGargoyle), typeof(GargoyleDestroyer), typeof(GargoyleEnforcer), typeof(Moloch)); abyss.Entries = new SlayerEntry[] { new SlayerEntry(SlayerName.DaemonDismissal, typeof(AbysmalHorror), typeof(Balron), typeof(BoneDemon), typeof(ChaosDaemon), typeof(Daemon), typeof(SummonedDaemon), typeof(DemonKnight), typeof(Devourer), typeof(Gibberling), typeof(HordeMinion), typeof(IceFiend), typeof(Imp), typeof(Impaler), typeof(Ravager), typeof(ArcaneDaemon), typeof(Moloch)), new SlayerEntry(SlayerName.GargoylesFoe, typeof(FireGargoyle), typeof(Gargoyle), typeof(StoneGargoyle), typeof(EnslavedGargoyle), typeof(GargoyleDestroyer), typeof(GargoyleEnforcer)), new SlayerEntry(SlayerName.BalronDamnation, typeof(Balron)) }; } arachnid.Opposition = new SlayerGroup[] { reptilian }; arachnid.FoundOn = new Type[] { typeof(AncientWyrm), typeof(GreaterDragon), typeof(Dragon), typeof(OphidianMatriarch), typeof(ShadowWyrm) }; arachnid.Super = new SlayerEntry(SlayerName.ArachnidDoom, typeof(DreadSpider), typeof(FrostSpider), typeof(GiantBlackWidow), typeof(GiantSpider), typeof(Mephitis), typeof(Scorpion), typeof(TerathanAvenger), typeof(TerathanDrone), typeof(TerathanMatriarch), typeof(TerathanWarrior)); arachnid.Entries = new SlayerEntry[] { new SlayerEntry(SlayerName.ScorpionsBane, typeof(Scorpion)), new SlayerEntry(SlayerName.SpidersDeath, typeof(DreadSpider), typeof(FrostSpider), typeof(GiantBlackWidow), typeof(GiantSpider), typeof(Mephitis)), new SlayerEntry(SlayerName.Terathan, typeof(TerathanAvenger), typeof(TerathanDrone), typeof(TerathanMatriarch), typeof(TerathanWarrior)) }; reptilian.Opposition = new SlayerGroup[] { arachnid }; reptilian.FoundOn = new Type[] { typeof(TerathanAvenger), typeof(TerathanMatriarch) }; reptilian.Super = new SlayerEntry(SlayerName.ReptilianDeath, typeof(AncientWyrm), typeof(DeepSeaSerpent), typeof(GreaterDragon), typeof(Dragon), typeof(Drake), typeof(GiantIceWorm), typeof(IceSerpent), typeof(GiantSerpent), typeof(Hiryu), typeof(IceSnake), typeof(JukaLord), typeof(JukaMage), typeof(JukaWarrior), typeof(LavaSerpent), typeof(LavaSnake), typeof(LesserHiryu), typeof(Lizardman), typeof(OphidianArchmage), typeof(OphidianKnight), typeof(OphidianMage), typeof(OphidianMatriarch), typeof(OphidianWarrior), typeof(Reptalon), typeof(SeaSerpent), typeof(Serado), typeof(SerpentineDragon), typeof(ShadowWyrm), typeof(SilverSerpent), typeof(SkeletalDragon), typeof(Snake), typeof(SwampDragon), typeof(WhiteWyrm), typeof(Wyvern), typeof(Yamandon)); reptilian.Entries = new SlayerEntry[] { new SlayerEntry(SlayerName.DragonSlaying, typeof(AncientWyrm), typeof(GreaterDragon), typeof(Dragon), typeof(Drake), typeof(Hiryu), typeof(LesserHiryu), typeof(Reptalon), typeof(SerpentineDragon), typeof(ShadowWyrm), typeof(SkeletalDragon), typeof(SwampDragon), typeof(WhiteWyrm), typeof(Wyvern)), new SlayerEntry(SlayerName.LizardmanSlaughter, typeof(Lizardman)), new SlayerEntry(SlayerName.Ophidian, typeof(OphidianArchmage), typeof(OphidianKnight), typeof(OphidianMage), typeof(OphidianMatriarch), typeof(OphidianWarrior)), new SlayerEntry(SlayerName.SnakesBane, typeof(DeepSeaSerpent), typeof(GiantIceWorm), typeof(GiantSerpent), typeof(IceSerpent), typeof(IceSnake), typeof(LavaSerpent), typeof(LavaSnake), typeof(SeaSerpent), typeof(Serado), typeof(SilverSerpent), typeof(Snake), typeof(Yamandon)) }; m_Groups = new SlayerGroup[] { humanoid, undead, elemental, abyss, arachnid, reptilian, fey }; m_TotalEntries = CompileEntries(m_Groups); }
public override void GetProperties(ObjectPropertyList list) { base.GetProperties(list); if (m_Crafter != null) { list.Add(1050043, m_Crafter.Name); // crafted by ~1_NAME~ } m_AosSkillBonuses.GetProperties(list); if (m_Slayer != SlayerName.None) { SlayerEntry entry = SlayerGroup.GetEntryByName(m_Slayer); if (entry != null) { list.Add(entry.Title); } } if (m_Slayer2 != SlayerName.None) { SlayerEntry entry = SlayerGroup.GetEntryByName(m_Slayer2); if (entry != null) { list.Add(entry.Title); } } int prop; if ((prop = m_AosAttributes.WeaponDamage) != 0) { list.Add(1060401, prop.ToString()); // damage increase ~1_val~% } if ((prop = m_AosAttributes.DefendChance) != 0) { list.Add(1060408, prop.ToString()); // defense chance increase ~1_val~% } if ((prop = m_AosAttributes.BonusDex) != 0) { list.Add(1060409, prop.ToString()); // dexterity bonus ~1_val~ } if ((prop = m_AosAttributes.EnhancePotions) != 0) { list.Add(1060411, prop.ToString()); // enhance potions ~1_val~% } if ((prop = m_AosAttributes.CastRecovery) != 0) { list.Add(1060412, prop.ToString()); // faster cast recovery ~1_val~ } if ((prop = m_AosAttributes.CastSpeed) != 0) { list.Add(1060413, prop.ToString()); // faster casting ~1_val~ } if ((prop = m_AosAttributes.AttackChance) != 0) { list.Add(1060415, prop.ToString()); // hit chance increase ~1_val~% } if ((prop = m_AosAttributes.BonusHits) != 0) { list.Add(1060431, prop.ToString()); // hit point increase ~1_val~ } if ((prop = m_AosAttributes.BonusInt) != 0) { list.Add(1060432, prop.ToString()); // intelligence bonus ~1_val~ } if ((prop = m_AosAttributes.LowerManaCost) != 0) { list.Add(1060433, prop.ToString()); // lower mana cost ~1_val~% } if ((prop = m_AosAttributes.LowerRegCost) != 0) { list.Add(1060434, prop.ToString()); // lower reagent cost ~1_val~% } if ((prop = m_AosAttributes.Luck) != 0) { list.Add(1060436, prop.ToString()); // luck ~1_val~ } if ((prop = m_AosAttributes.BonusMana) != 0) { list.Add(1060439, prop.ToString()); // mana increase ~1_val~ } if ((prop = m_AosAttributes.RegenMana) != 0) { list.Add(1060440, prop.ToString()); // mana regeneration ~1_val~ } if ((prop = m_AosAttributes.NightSight) != 0) { list.Add(1060441); // night sight } if ((prop = m_AosAttributes.ReflectPhysical) != 0) { list.Add(1060442, prop.ToString()); // reflect physical damage ~1_val~% } if ((prop = m_AosAttributes.RegenStam) != 0) { list.Add(1060443, prop.ToString()); // stamina regeneration ~1_val~ } if ((prop = m_AosAttributes.RegenHits) != 0) { list.Add(1060444, prop.ToString()); // hit point regeneration ~1_val~ } if ((prop = m_AosAttributes.SpellChanneling) != 0) { list.Add(1060482); // spell channeling } if ((prop = m_AosAttributes.SpellDamage) != 0) { list.Add(1060483, prop.ToString()); // spell damage increase ~1_val~% } if ((prop = m_AosAttributes.BonusStam) != 0) { list.Add(1060484, prop.ToString()); // stamina increase ~1_val~ } if ((prop = m_AosAttributes.BonusStr) != 0) { list.Add(1060485, prop.ToString()); // strength bonus ~1_val~ } if ((prop = m_AosAttributes.WeaponSpeed) != 0) { list.Add(1060486, prop.ToString()); // swing speed increase ~1_val~% } list.Add(1042886, m_Count.ToString()); // ~1_NUMBERS_OF_SPELLS~ Spells }
public double GetDifficultyFor(Mobile targ) { double val = GetBaseDifficulty(targ); if (m_Quality == ItemQuality.Exceptional) { val -= 5.0; // 10% } if (m_Slayer != SlayerName.None) { SlayerEntry entry = SlayerGroup.GetEntryByName(m_Slayer); if (entry != null) { if (entry.Slays(targ)) { val -= 10.0; // 20% } else if (entry.Group.OppositionSuperSlays(targ)) { val += 10.0; // -20% } } } if (m_Slayer2 != SlayerName.None) { SlayerEntry entry = SlayerGroup.GetEntryByName(m_Slayer2); if (entry != null) { if (entry.Slays(targ)) { val -= 10.0; // 20% } else if (entry.Group.OppositionSuperSlays(targ)) { val += 10.0; // -20% } } } if (m_Slayer == SlayerName.None && m_Slayer2 == SlayerName.None) { SlayerEntry entry = SlayerGroup.GetEntryByName(SlayerSocket.GetSlayer(this)); if (entry != null) { if (entry.Slays(targ)) { val -= 10.0; // 20% } else if (entry.Group.OppositionSuperSlays(targ)) { val += 10.0; // -20% } } } return(val); }
public override void GetProperties(ObjectPropertyList list) { base.GetProperties(list); if (m_Quality == BookQuality.Exceptional) { list.Add(1063341); // exceptional } if (m_EngravedText != null) { list.Add(1072305, m_EngravedText); // Engraved: ~1_INSCRIPTION~ } if (m_Crafter != null) { list.Add(1050043, m_Crafter.TitleName); // crafted by ~1_NAME~ } if (IsVvVItem) { list.Add(1154937); // VvV Item } if (OwnerName != null) { list.Add(1153213, OwnerName); } if (m_NegativeAttributes != null) { m_NegativeAttributes.GetProperties(list, this); } m_AosSkillBonuses.GetProperties(list); if (m_Slayer != SlayerName.None) { SlayerEntry entry = SlayerGroup.GetEntryByName(m_Slayer); if (entry != null) { list.Add(entry.Title); } } if (m_Slayer2 != SlayerName.None) { SlayerEntry entry = SlayerGroup.GetEntryByName(m_Slayer2); if (entry != null) { list.Add(entry.Title); } } int prop; if ((prop = m_AosAttributes.WeaponDamage) != 0) { list.Add(1060401, prop.ToString()); // damage increase ~1_val~% } if ((prop = m_AosAttributes.DefendChance) != 0) { list.Add(1060408, prop.ToString()); // defense chance increase ~1_val~% } if ((prop = m_AosAttributes.BonusDex) != 0) { list.Add(1060409, prop.ToString()); // dexterity bonus ~1_val~ } if ((prop = m_AosAttributes.EnhancePotions) != 0) { list.Add(1060411, prop.ToString()); // enhance potions ~1_val~% } if ((prop = m_AosAttributes.CastRecovery) != 0) { list.Add(1060412, prop.ToString()); // faster cast recovery ~1_val~ } if ((prop = m_AosAttributes.CastSpeed) != 0) { list.Add(1060413, prop.ToString()); // faster casting ~1_val~ } if ((prop = m_AosAttributes.AttackChance) != 0) { list.Add(1060415, prop.ToString()); // hit chance increase ~1_val~% } if ((prop = m_AosAttributes.BonusHits) != 0) { list.Add(1060431, prop.ToString()); // hit point increase ~1_val~ } if ((prop = m_AosAttributes.BonusInt) != 0) { list.Add(1060432, prop.ToString()); // intelligence bonus ~1_val~ } if ((prop = m_AosAttributes.LowerManaCost) != 0) { list.Add(1060433, prop.ToString()); // lower mana cost ~1_val~% } if ((prop = m_AosAttributes.LowerRegCost) != 0) { list.Add(1060434, prop.ToString()); // lower reagent cost ~1_val~% } if ((prop = m_AosAttributes.Luck) != 0) { list.Add(1060436, prop.ToString()); // luck ~1_val~ } if ((prop = m_AosAttributes.BonusMana) != 0) { list.Add(1060439, prop.ToString()); // mana increase ~1_val~ } if ((prop = m_AosAttributes.RegenMana) != 0) { list.Add(1060440, prop.ToString()); // mana regeneration ~1_val~ } if ((prop = m_AosAttributes.NightSight) != 0) { list.Add(1060441); // night sight } if ((prop = m_AosAttributes.ReflectPhysical) != 0) { list.Add(1060442, prop.ToString()); // reflect physical damage ~1_val~% } if ((prop = m_AosAttributes.RegenStam) != 0) { list.Add(1060443, prop.ToString()); // stamina regeneration ~1_val~ } if ((prop = m_AosAttributes.RegenHits) != 0) { list.Add(1060444, prop.ToString()); // hit point regeneration ~1_val~ } if ((prop = m_AosAttributes.SpellChanneling) != 0) { list.Add(1060482); // spell channeling } if ((prop = m_AosAttributes.SpellDamage) != 0) { list.Add(1060483, prop.ToString()); // spell damage increase ~1_val~% } if ((prop = m_AosAttributes.BonusStam) != 0) { list.Add(1060484, prop.ToString()); // stamina increase ~1_val~ } if ((prop = m_AosAttributes.BonusStr) != 0) { list.Add(1060485, prop.ToString()); // strength bonus ~1_val~ } if ((prop = m_AosAttributes.WeaponSpeed) != 0) { list.Add(1060486, prop.ToString()); // swing speed increase ~1_val~% } if (Core.ML && (prop = m_AosAttributes.IncreasedKarmaLoss) != 0) { list.Add(1075210, prop.ToString()); // Increased Karma Loss ~1val~% } AddProperty(list); list.Add(1042886, m_Count.ToString()); // ~1_NUMBERS_OF_SPELLS~ Spells if (this.m_MaxHitPoints > 0) { list.Add(1060639, "{0}\t{1}", this.m_HitPoints, this.m_MaxHitPoints); // durability ~1_val~ / ~2_val~ } }
public override void GetProperties(ObjectPropertyList list) { #region Props base.GetProperties(list); if (m_Slayer != SlayerName.None) { list.Add(SlayerGroup.GetEntryByName(m_Slayer).Title); } if (m_Slayer2 != SlayerName.None) { list.Add(SlayerGroup.GetEntryByName(m_Slayer2).Title); } if (m_TalisSlayer != TalisSlayerName.None) { list.Add(TalisSlayerEntry.GetSlayerTitle(m_TalisSlayer)); } m_SkillBonuses.GetProperties(list); if (m_TalismanType != TalismanType.None && m_isequiped && m_ChargeTimeLeft == 0) { list.Add(1074883); // Fully Charged } else if (m_TalismanType != TalismanType.None && m_isequiped && m_ChargeTimeLeft >= 1) { list.Add(1074884, m_ChargeTimeLeft2.ToString()); // Charge time left: ~1_val~ } if (m_KillersEntry != NPC_Name.None && m_KillersValue > 0) { list.Add(1072388, ProtectionKillerEntry.GetProtectionKillerTitle(m_KillersEntry) + "\t" + m_KillersValue); // ~1_NAME~ Killer: +~2_val~% } if (m_ProtectionEntry != NPC_Name.None && m_ProtectionValue > 0) { list.Add(1072387, ProtectionKillerEntry.GetProtectionKillerTitle(m_ProtectionEntry) + "\t" + m_ProtectionValue); // ~1_NAME~ Protection: +~2_val~% } if (m_CraftBonusExcep > 0 && m_CraftBonusExcepValue > 0) { list.Add(1072395, Enum.GetName(typeof(CraftList), m_CraftBonusExcep) + "\t" + m_CraftBonusExcepValue); // ~1_NAME~ Exceptional Bonus: ~2_val~% } if (m_CraftBonusRegular > 0 && m_CraftBonusRegularValue > 0) { list.Add(1072394, Enum.GetName(typeof(CraftList), m_CraftBonusRegular) + "\t" + m_CraftBonusRegularValue); // ~1_NAME~ Bonus: ~2_val~% } int prop; if ((prop = m_MagicalAttributes.WeaponDamage) != 0) { list.Add(1060401, prop.ToString()); // damage increase ~1_val~% } if ((prop = m_MagicalAttributes.DefendChance) != 0) { list.Add(1060408, prop.ToString()); // defense chance increase ~1_val~% } if ((prop = m_MagicalAttributes.BonusDex) != 0) { list.Add(1060409, prop.ToString()); // dexterity bonus ~1_val~ } if ((prop = m_MagicalAttributes.EnhancePotions) != 0) { list.Add(1060411, prop.ToString()); // enhance potions ~1_val~% } if ((prop = m_MagicalAttributes.CastRecovery) != 0) { list.Add(1060412, prop.ToString()); // faster cast recovery ~1_val~ } if ((prop = m_MagicalAttributes.CastSpeed) != 0) { list.Add(1060413, prop.ToString()); // faster casting ~1_val~ } if ((prop = m_MagicalAttributes.AttackChance) != 0) { list.Add(1060415, prop.ToString()); // hit chance increase ~1_val~% } if ((prop = m_MagicalAttributes.BonusHits) != 0) { list.Add(1060431, prop.ToString()); // hit point increase ~1_val~ } if ((prop = m_MagicalAttributes.BonusInt) != 0) { list.Add(1060432, prop.ToString()); // intelligence bonus ~1_val~ } if ((prop = m_MagicalAttributes.LowerManaCost) != 0) { list.Add(1060433, prop.ToString()); // lower mana cost ~1_val~% } if ((prop = m_MagicalAttributes.LowerRegCost) != 0) { list.Add(1060434, prop.ToString()); // lower reagent cost ~1_val~% } if ((prop = m_MagicalAttributes.Luck) != 0) { list.Add(1060436, prop.ToString()); // luck ~1_val~ } if ((prop = m_MagicalAttributes.BonusMana) != 0) { list.Add(1060439, prop.ToString()); // mana increase ~1_val~ } if ((prop = m_MagicalAttributes.RegenMana) != 0) { list.Add(1060440, prop.ToString()); // mana regeneration ~1_val~ } if ((prop = m_MagicalAttributes.NightSight) != 0) { list.Add(1060441); // night sight } if ((prop = m_MagicalAttributes.ReflectPhysical) != 0) { list.Add(1060442, prop.ToString()); // reflect physical damage ~1_val~% } if ((prop = m_MagicalAttributes.RegenStam) != 0) { list.Add(1060443, prop.ToString()); // stamina regeneration ~1_val~ } if ((prop = m_MagicalAttributes.RegenHits) != 0) { list.Add(1060444, prop.ToString()); // hit point regeneration ~1_val~ } if ((prop = m_MagicalAttributes.SpellChanneling) != 0) { list.Add(1060482); // spell channeling } if ((prop = m_MagicalAttributes.SpellDamage) != 0) { list.Add(1060483, prop.ToString()); // spell damage increase ~1_val~% } if ((prop = m_MagicalAttributes.BonusStam) != 0) { list.Add(1060484, prop.ToString()); // stamina increase ~1_val~ } if ((prop = m_MagicalAttributes.BonusStr) != 0) { list.Add(1060485, prop.ToString()); // strength bonus ~1_val~ } if ((prop = m_MagicalAttributes.WeaponSpeed) != 0) { list.Add(1060486, prop.ToString()); // swing speed increase ~1_val~% } if (m_Ownable) { list.Add(1072304, m_Owner != null ? m_Owner.Name : "no one"); // Owned by ~1_name~ } base.AddResistanceProperties(list); if (m_Charges >= 0 && m_TalismanType != TalismanType.None) { list.Add(1060741, m_Charges.ToString()); // charges: ~1_val~ } if (m_TalismanType == TalismanType.ManaPhase) { list.Add(1116158); // Mana Phase } if (Brittle) { list.Add(1116209); // Brittle } if (CanLoseDurability) { list.Add(1060639, "{0}\t{1}", m_HitPoints, m_MaxHitPoints); // durability ~1_val~ / ~2_val~ } #endregion }
static SlayerGroup() { SlayerGroup humanoid = new SlayerGroup(); SlayerGroup undead = new SlayerGroup(); SlayerGroup elemental = new SlayerGroup(); SlayerGroup abyss = new SlayerGroup(); SlayerGroup arachnid = new SlayerGroup(); SlayerGroup reptilian = new SlayerGroup(); SlayerGroup fey = new SlayerGroup(); humanoid.Opposition = new SlayerGroup[] { undead }; humanoid.FoundOn = new Type[] { typeof(BoneKnight), typeof(Lich), typeof(LichLord) }; humanoid.Super = new SlayerEntry(SlayerName.Repond, typeof(Barracoon), typeof(ArcticOgreLord), typeof(Cyclops), typeof(Ettin), typeof(EvilMage), typeof(EvilMageLord), typeof(FrostTroll), typeof(MeerCaptain), typeof(MeerEternal), typeof(MeerMage), typeof(MeerWarrior), typeof(Ogre), typeof(OgreLord), typeof(Orc), typeof(OrcBomber), typeof(OrcBrute), typeof(OrcCaptain), typeof(OrcChopper), typeof(OrcScout), typeof(OrcishLord), typeof(OrcishMage), typeof(Ratman), typeof(RatmanArcher), typeof(RatmanMage), typeof(SavageRider), typeof(SavageShaman), typeof(Savage), typeof(Titan), typeof(Troglodyte), typeof(Troll),/* Mondain's Legacy */ typeof(Troglodyte), typeof(MougGuur), typeof(Chiikkaha), typeof(Minotaur), typeof(MinotaurGeneral) /* ML End, SA begins */, typeof(Medusa), typeof(RakktaviRenowned), typeof(TikitaviRenowned), typeof(VitaviRenowned), typeof(EnslavedGoblinScout), typeof(EnslavedGoblinKeeper), typeof(EnslavedGreenGoblin), typeof(EnslavedGreenGoblinAlchemist), typeof(EnslavedGoblinMage), typeof(EnslavedGrayGoblin), typeof(GreenGoblinScout), typeof(GreenGoblinAlchemist), typeof(GreenGoblin), typeof(GrayGoblinMage), typeof(GrayGoblinKeeper), typeof(GrayGoblin), typeof(GreenGoblinAlchemistRenowned), typeof(GrayGoblinMageRenowned)); humanoid.Entries = new SlayerEntry[] { new SlayerEntry(SlayerName.OgreTrashing, typeof(Ogre), typeof(OgreLord), typeof(ArcticOgreLord)), new SlayerEntry(SlayerName.OrcSlaying, typeof(Orc), typeof(OrcBomber), typeof(OrcBrute), typeof(OrcCaptain), typeof( OrcChopper ), typeof( OrcScout ), typeof(OrcishLord), typeof(OrcishMage)), new SlayerEntry(SlayerName.TrollSlaughter, typeof(Troll), typeof(FrostTroll)), }; undead.Opposition = new SlayerGroup[] { humanoid }; undead.Super = new SlayerEntry(SlayerName.Silver, typeof(AncientLich), typeof(AncientLichRenowned), typeof(Bogle), typeof(BoneKnight), typeof(BoneMagi),/* typeof( DarkGuardian ), */typeof(DarknightCreeper), typeof(FleshGolem), typeof(Ghoul), typeof(GoreFiend), typeof(HellSteed), typeof(LadyOfTheSnow), typeof(Lich), typeof(LichLord), typeof(Mummy), typeof(PestilentBandage), typeof(Revenant), typeof(RevenantLion), typeof(RottingCorpse), typeof(Shade), typeof(ShadowKnight), typeof(SkeletalKnight), typeof(SkeletalMage), typeof(SkeletalMount), typeof(Skeleton), typeof(Spectre), typeof(Wraith), typeof(Zombie),/* Mondain's Legacy */ typeof(UnfrozenMummy), typeof(RedDeath), typeof(SirPatrick), typeof(LadyJennifyr), typeof(MasterMikael), typeof(MasterJonath), typeof(LadyMarai) /* ML End, SA Begins */, typeof(PrimevalLich), typeof(DreamWraith), typeof(UndeadGargoyle), typeof(UndeadGuardian), typeof(PutridUndeadGuardian)); undead.Entries = new SlayerEntry[0]; fey.Opposition = new SlayerGroup[] { abyss }; fey.Super = new SlayerEntry(SlayerName.Fey, typeof(Centaur), typeof(CuSidhe), typeof(EtherealWarrior), typeof(Kirin), typeof(LordOaks), typeof(Pixie), typeof(PixieRenowned), typeof(Silvani), typeof(Treefellow), typeof(Unicorn), typeof(Wisp), typeof(MLDryad), typeof(Satyr),/* Mondain's Legacy */ typeof(InsaneDryad), typeof(CorporealBrume), typeof(CrystalLatticeSeeker), typeof(LadyMelisande) /* End */, typeof(FeralTreefellow)); fey.Entries = new SlayerEntry[0]; elemental.Opposition = new SlayerGroup[] { abyss }; elemental.FoundOn = new Type[] { typeof(Balron), typeof(Daemon) }; elemental.Super = new SlayerEntry(SlayerName.ElementalBan, typeof(ToxicElemental), typeof(AcidElemental), typeof(AcidElementalRenowned), typeof(FireElementalRenowned), typeof(AgapiteElemental), typeof(AirElemental), typeof(SummonedAirElemental), typeof(BloodElemental), typeof(BronzeElemental), typeof(CopperElemental), typeof(CrystalElemental), typeof(DullCopperElemental), typeof(EarthElemental), typeof(SummonedEarthElemental), typeof(Efreet), typeof(FireElemental), typeof(SummonedFireElemental), typeof(GoldenElemental), typeof(IceElemental), typeof(KazeKemono), typeof(PoisonElemental), typeof(RaiJu), typeof(SandVortex), typeof(ShadowIronElemental), typeof(SnowElemental), typeof(ValoriteElemental), typeof(VeriteElemental), typeof(WaterElemental), typeof(SummonedWaterElemental), typeof(Flurry), typeof(Mistral), typeof(Tempest)); elemental.Entries = new SlayerEntry[] { new SlayerEntry(SlayerName.BloodDrinking, typeof(BloodElemental)), new SlayerEntry(SlayerName.EarthShatter, typeof(AgapiteElemental), typeof(BronzeElemental), typeof(CopperElemental), typeof(DullCopperElemental), typeof(EarthElemental), typeof(SummonedEarthElemental), typeof(GoldenElemental), typeof(ShadowIronElemental), typeof(ValoriteElemental), typeof(VeriteElemental)), new SlayerEntry(SlayerName.ElementalHealth, typeof(PoisonElemental)), new SlayerEntry(SlayerName.FlameDousing, typeof(FireElemental), typeof(FireElementalRenowned), typeof(SummonedFireElemental)), new SlayerEntry(SlayerName.SummerWind, typeof(SnowElemental), typeof(IceElemental)), new SlayerEntry(SlayerName.Vacuum, typeof(AirElemental), typeof(SummonedAirElemental), typeof(Flurry), typeof(Mistral), typeof(Tempest)), new SlayerEntry(SlayerName.WaterDissipation, typeof(WaterElemental), typeof(SummonedWaterElemental)) }; abyss.Opposition = new SlayerGroup[] { elemental, fey }; abyss.FoundOn = new Type[] { typeof(BloodElemental) }; if (Core.AOS) { abyss.Super = new SlayerEntry(SlayerName.Exorcism, typeof(DevourerRenowned), typeof(FireDaemonRenowned), typeof(AbysmalHorror), typeof(AbyssalInfernal), typeof(ArcaneDaemon), typeof(Balron), typeof(BoneDemon), typeof(ChaosDaemon), typeof(Daemon), typeof(SummonedDaemon), typeof(DemonKnight), typeof(Devourer), typeof(EnslavedGargoyle), typeof(FanDancer), typeof(FireGargoyle), typeof(Gargoyle), typeof(GargoyleDestroyer), typeof(GargoyleEnforcer), typeof(Gibberling), typeof(HordeMinion), typeof(FireDaemon), typeof(IceFiend), typeof(Imp), typeof(Impaler), typeof(Moloch), typeof(Oni), typeof(Ravager), typeof(Semidar), typeof(StoneGargoyle), typeof(Succubus), typeof(TsukiWolf), /* Mondain's Legacy */ typeof(Szavetra), typeof(CrystalDaemon) /* End */, typeof(SlasherOfVeils), typeof(GargoyleShade), typeof(Putrefier)); abyss.Entries = new SlayerEntry[] { // Daemon Dismissal & Balron Damnation have been removed and moved up to super slayer on OSI. new SlayerEntry(SlayerName.GargoylesFoe, typeof(EnslavedGargoyle), typeof(FireGargoyle), typeof(Gargoyle), typeof(GargoyleDestroyer), typeof(GargoyleEnforcer), typeof(StoneGargoyle), typeof(GargoyleShade)), }; } else { abyss.Super = new SlayerEntry(SlayerName.Exorcism, typeof(AbysmalHorror), typeof(Balron), typeof(BoneDemon), typeof(ChaosDaemon), typeof(Daemon), typeof(SummonedDaemon), typeof(DemonKnight), typeof(Devourer), typeof(Gargoyle), typeof(FireGargoyle), typeof(Gibberling), typeof(HordeMinion), typeof(IceFiend), typeof(Imp), typeof(Impaler), typeof(Ravager), typeof(StoneGargoyle), typeof(ArcaneDaemon), typeof(EnslavedGargoyle), typeof(GargoyleDestroyer), typeof(GargoyleEnforcer), typeof(Moloch)); abyss.Entries = new SlayerEntry[] { new SlayerEntry(SlayerName.DaemonDismissal, typeof(Semidar), typeof(AbyssalInfernal), typeof(AbysmalHorror), typeof(Balron), typeof(BoneDemon), typeof(ChaosDaemon), typeof(Daemon), typeof(SummonedDaemon), typeof(DemonKnight), typeof(Devourer), typeof(Gibberling), typeof(HordeMinion), typeof(IceFiend), typeof(Imp), typeof(Impaler), typeof(Ravager), typeof(ArcaneDaemon), typeof(Moloch)), new SlayerEntry(SlayerName.GargoylesFoe, typeof(FireGargoyle), typeof(Gargoyle), typeof(StoneGargoyle), typeof(EnslavedGargoyle), typeof(GargoyleDestroyer), typeof(GargoyleEnforcer)), new SlayerEntry(SlayerName.BalronDamnation, typeof(Balron)) }; } arachnid.Opposition = new SlayerGroup[] { reptilian }; arachnid.FoundOn = new Type[] { typeof(AncientWyrm), typeof(GreaterDragon), typeof(Dragon), typeof(OphidianMatriarch), typeof(ShadowWyrm) }; arachnid.Super = new SlayerEntry(SlayerName.ArachnidDoom, typeof(DreadSpider), typeof(FrostSpider), typeof(GiantBlackWidow), typeof(GiantSpider), typeof(Mephitis), typeof(Scorpion), typeof(TerathanAvenger), typeof(TerathanDrone), typeof(TerathanMatriarch), typeof(TerathanWarrior),/* Mondain's Legacy */ typeof(Miasma), typeof(SpeckledScorpion), typeof(LadyLissith), typeof(LadySabrix), typeof(Virulent), typeof(Silk), typeof(Malefic) /* End */, typeof(Navrey), typeof(SentinelSpider), typeof(WolfSpider), typeof(TrapdoorSpider)); arachnid.Entries = new SlayerEntry[] { new SlayerEntry(SlayerName.ScorpionsBane, typeof(Scorpion),/* Mondain's Legacy */ typeof(Miasma), typeof(SpeckledScorpion) /* End */), new SlayerEntry(SlayerName.SpidersDeath, typeof(DreadSpider), typeof(FrostSpider), typeof(GiantBlackWidow), typeof(GiantSpider), typeof(Mephitis),/* Mondain's Legacy */ typeof(LadyLissith), typeof(LadySabrix), typeof(Virulent), typeof(Silk), typeof(Malefic) /* End */, typeof(Navrey), typeof(SentinelSpider), typeof(WolfSpider), typeof(TrapdoorSpider)), new SlayerEntry(SlayerName.Terathan, typeof(TerathanAvenger), typeof(TerathanDrone), typeof(TerathanMatriarch), typeof(TerathanWarrior)) }; reptilian.Opposition = new SlayerGroup[] { arachnid }; reptilian.FoundOn = new Type[] { typeof(TerathanAvenger), typeof(TerathanMatriarch) }; reptilian.Super = new SlayerEntry(SlayerName.ReptilianDeath, typeof(Rikktor), typeof(Serado), typeof(SkeletalDragonRenowned), typeof(WyvernRenowned), typeof(AncientWyrm), typeof(DeepSeaSerpent), typeof(GreaterDragon), typeof(Dragon), typeof(Drake), typeof(GiantIceWorm), typeof(IceSerpent), typeof(GiantSerpent), typeof(Hiryu), typeof(IceSnake), typeof(JukaLord), typeof(JukaMage), typeof(JukaWarrior), typeof(LavaSerpent), typeof(LavaSnake), typeof(LesserHiryu), typeof(Lizardman), typeof(OphidianArchmage), typeof(OphidianKnight), typeof(OphidianMage), typeof(OphidianMatriarch), typeof(OphidianWarrior), typeof(Reptalon), typeof(SeaSerpent), typeof(Serado), typeof(SerpentineDragon), typeof(ShadowWyrm), typeof(SilverSerpent), typeof(SkeletalDragon), typeof(Snake), typeof(SwampDragon), typeof(WhiteWyrm), typeof(Wyvern), typeof(Yamandon), typeof(Hydra), typeof(CrystalHydra), typeof(CrystalSeaSerpent), typeof(Rend), typeof(Thrasher), typeof(Abscess), typeof(Grim), typeof(ChickenLizard), typeof(StygianDragon), typeof(FairyDragon), typeof(Skree), typeof(Slith), typeof(StoneSlith), typeof(ToxicSlith), typeof(Raptor), typeof(Kepetch), typeof(KepetchAmbusher), typeof(FrostDragon), typeof(ColdDrake)); reptilian.Entries = new SlayerEntry[] { new SlayerEntry(SlayerName.DragonSlaying, typeof(Rikktor), typeof(SkeletalDragonRenowned), typeof(WyvernRenowned), typeof(AncientWyrm), typeof(GreaterDragon), typeof(Dragon), typeof(Drake), typeof(Hiryu), typeof(LesserHiryu), typeof(Reptalon), typeof(SerpentineDragon), typeof(ShadowWyrm), typeof(SkeletalDragon), typeof(SwampDragon), typeof(WhiteWyrm), typeof(Wyvern), typeof(Hydra), typeof(CrystalHydra), typeof(Rend), typeof(Abscess), typeof(Grim), typeof(StygianDragon), typeof(FairyDragon)), new SlayerEntry(SlayerName.LizardmanSlaughter, typeof(Lizardman)), new SlayerEntry(SlayerName.Ophidian, typeof(OphidianArchmage), typeof(OphidianKnight), typeof(OphidianMage), typeof(OphidianMatriarch), typeof(OphidianWarrior)), new SlayerEntry(SlayerName.SnakesBane, typeof(Serado), typeof(DeepSeaSerpent), typeof(GiantIceWorm), typeof(GiantSerpent), typeof(IceSerpent), typeof(IceSnake), typeof(LavaSerpent), typeof(LavaSnake), typeof(SeaSerpent), typeof(Serado), typeof(SilverSerpent), typeof(Snake), typeof(Yamandon), typeof(CrystalSeaSerpent)) }; m_Groups = new SlayerGroup[] { humanoid, undead, elemental, abyss, arachnid, reptilian, fey }; m_TotalEntries = CompileEntries(m_Groups); }
static SlayerGroup() { SlayerGroup humanoid = new SlayerGroup(); SlayerGroup undead = new SlayerGroup(); SlayerGroup elemental = new SlayerGroup(); SlayerGroup abyss = new SlayerGroup(); SlayerGroup arachnid = new SlayerGroup(); SlayerGroup reptilian = new SlayerGroup(); SlayerGroup fey = new SlayerGroup(); humanoid.Opposition = new SlayerGroup[] { undead }; humanoid.FoundOn = new Type[] { typeof(BoneKnight), typeof(Lich), typeof(LichLord) }; humanoid.Super = new SlayerEntry(SlayerName.Repond, typeof(Cyclops), typeof(Ettin), typeof(EvilMage), typeof(EvilMageLord), typeof(FrostTroll), typeof(Ogre), typeof(OgreLord), typeof(Orc), typeof(OrcCaptain), /*typeof( OrcChopper ), typeof( OrcScout ),*/ typeof(OrcishLord), typeof(OrcishMage), typeof(Ratman), typeof(RatmanArcher), typeof(RatmanMage), typeof(Titan), typeof(Troll)); humanoid.Entries = new SlayerEntry[] { new SlayerEntry(SlayerName.OgreTrashing, typeof(Ogre), typeof(OgreLord)), new SlayerEntry(SlayerName.OrcSlaying, typeof(Orc), typeof(OrcCaptain), /* typeof( OrcChopper ), typeof( OrcScout ),*/ typeof(OrcishLord), typeof(OrcishMage)), new SlayerEntry(SlayerName.TrollSlaughter, typeof(Troll), typeof(FrostTroll)) }; undead.Opposition = new SlayerGroup[] { humanoid }; undead.Super = new SlayerEntry(SlayerName.Silver, typeof(BoneKnight), typeof(BoneMagi), typeof(Ghoul), typeof(Lich), typeof(LichLord), typeof(Mummy), typeof(RottingCorpse), typeof(Shade), typeof(SkeletalKnight), typeof(SkeletalMage), typeof(Skeleton), typeof(Spectre), typeof(Wraith), typeof(Zombie)); undead.Entries = new SlayerEntry[0]; fey.Opposition = new SlayerGroup[] { abyss }; fey.Super = new SlayerEntry(SlayerName.Fey, typeof(Wisp)); fey.Entries = new SlayerEntry[0]; elemental.Opposition = new SlayerGroup[] { abyss }; elemental.FoundOn = new Type[] { typeof(Balron), typeof(Daemon) }; elemental.Super = new SlayerEntry(SlayerName.ElementalBan, typeof(AirElemental), typeof(BloodElemental), typeof(EarthElemental), typeof(Efreet), typeof(FireElemental), typeof(IceElemental), typeof(PoisonElemental), typeof(WaterElemental)); elemental.Entries = new SlayerEntry[] { new SlayerEntry(SlayerName.BloodDrinking, typeof(BloodElemental)), new SlayerEntry(SlayerName.EarthShatter, typeof(EarthElemental)), new SlayerEntry(SlayerName.ElementalHealth, typeof(PoisonElemental)), new SlayerEntry(SlayerName.FlameDousing, typeof(FireElemental)), new SlayerEntry(SlayerName.SummerWind, typeof(IceElemental)), new SlayerEntry(SlayerName.Vacuum, typeof(AirElemental)), new SlayerEntry(SlayerName.WaterDissipation, typeof(WaterElemental)) }; abyss.Opposition = new SlayerGroup[] { elemental, fey }; abyss.FoundOn = new Type[] { typeof(BloodElemental) }; abyss.Super = new SlayerEntry(SlayerName.Exorcism, typeof(Balron), typeof(Daemon), typeof(Gargoyle), typeof(IceFiend), typeof(Imp), typeof(StoneGargoyle)); abyss.Entries = new SlayerEntry[] { new SlayerEntry(SlayerName.DaemonDismissal, typeof(Balron), typeof(Daemon), typeof(IceFiend), typeof(Imp)), new SlayerEntry(SlayerName.GargoylesFoe, typeof(Gargoyle), typeof(StoneGargoyle)), new SlayerEntry(SlayerName.BalronDamnation, typeof(Balron)) }; arachnid.Opposition = new SlayerGroup[] { reptilian }; arachnid.FoundOn = new Type[] { typeof(AncientWyrm), typeof(Dragon), typeof(OphidianMatriarch) }; arachnid.Super = new SlayerEntry(SlayerName.ArachnidDoom, typeof(FrostSpider), typeof(GiantSpider), typeof(Scorpion), typeof(TerathanAvenger), typeof(TerathanDrone), typeof(TerathanMatriarch), typeof(TerathanWarrior)); arachnid.Entries = new SlayerEntry[] { new SlayerEntry(SlayerName.ScorpionsBane, typeof(Scorpion)), new SlayerEntry(SlayerName.SpidersDeath, typeof(FrostSpider), typeof(GiantSpider)), new SlayerEntry(SlayerName.Terathan, typeof(TerathanAvenger), typeof(TerathanDrone), typeof(TerathanMatriarch), typeof(TerathanWarrior)) }; reptilian.Opposition = new SlayerGroup[] { arachnid }; reptilian.FoundOn = new Type[] { typeof(TerathanAvenger), typeof(TerathanMatriarch) }; reptilian.Super = new SlayerEntry(SlayerName.ReptilianDeath, typeof(AncientWyrm), typeof(DeepSeaSerpent), typeof(Dragon), typeof(Drake), typeof(IceSerpent), typeof(GiantSerpent), typeof(IceSnake), typeof(LavaSerpent), typeof(LavaSnake), typeof(Lizardman), typeof(OphidianArchmage), typeof(OphidianKnight), typeof(OphidianMage), typeof(OphidianMatriarch), typeof(OphidianWarrior), typeof(SeaSerpent), typeof(SilverSerpent), typeof(Snake), typeof(WhiteWyrm), typeof(Wyvern)); reptilian.Entries = new SlayerEntry[] { new SlayerEntry(SlayerName.DragonSlaying, typeof(AncientWyrm), typeof(Dragon), typeof(Drake), typeof(WhiteWyrm), typeof(Wyvern)), new SlayerEntry(SlayerName.LizardmanSlaughter, typeof(Lizardman)), new SlayerEntry(SlayerName.Ophidian, typeof(OphidianArchmage), typeof(OphidianKnight), typeof(OphidianMage), typeof(OphidianMatriarch), typeof(OphidianWarrior)), new SlayerEntry(SlayerName.SnakesBane, typeof(DeepSeaSerpent), typeof(GiantSerpent), typeof(IceSerpent), typeof(IceSnake), typeof(LavaSerpent), typeof(LavaSnake), typeof(SeaSerpent), typeof(SilverSerpent), typeof(Snake)) }; m_Groups = new SlayerGroup[] { humanoid, undead, elemental, abyss, arachnid, reptilian, fey }; m_TotalEntries = CompileEntries(m_Groups); }
static SlayerGroup() { var humanoid = new SlayerGroup(); var undead = new SlayerGroup(); var elemental = new SlayerGroup(); var abyss = new SlayerGroup(); var arachnid = new SlayerGroup(); var reptilian = new SlayerGroup(); var fey = new SlayerGroup(); humanoid.Opposition = new[] {undead}; humanoid.FoundOn = new[] {typeof(BoneKnight), typeof(Lich), typeof(LichLord)}; humanoid.Super = new SlayerEntry( SlayerName.Repond, typeof(ArcticOgreLord), typeof(Cyclops), typeof(Ettin), typeof(EvilMage), typeof(EvilMageLord), typeof(FrostTroll), typeof(MeerCaptain), typeof(MeerEternal), typeof(MeerMage), typeof(MeerWarrior), typeof(Ogre), typeof(OgreLord), typeof(Orc), typeof(OrcBomber), typeof(OrcBrute), typeof(OrcCaptain), typeof(OrcishLord), typeof(OrcishMage), typeof(Ratman), typeof(RatmanArcher), typeof(RatmanMage), typeof(SavageRider), typeof(SavageShaman), typeof(Savage), typeof(Titan), typeof(Troglodyte), typeof(Troll), typeof(OrcishMineOverseer), typeof(OrcLeader), typeof(LummoxMagePortal), typeof(LummoxWarHeroPortal), typeof(LummoxWarriorPortal), typeof(MinotaurWarHeroPortal), typeof(MinotaurWarriorPortal), typeof(OrcMineBomber), typeof(OrcMiner)); humanoid.Entries = new[] { new SlayerEntry(SlayerName.OgreTrashing, typeof(Ogre), typeof(OgreLord), typeof(ArcticOgreLord)), new SlayerEntry(SlayerName.OrcSlaying, typeof(Orc), typeof(OrcBomber), typeof(OrcBrute), typeof(OrcCaptain), typeof(OrcishLord), typeof(OrcishMage), typeof(OrcishMineOverseer), typeof(OrcMiner), typeof(OrcLeader), typeof(OrcMineBomber)), new SlayerEntry(SlayerName.TrollSlaughter, typeof(Troll), typeof(FrostTroll)) }; undead.Opposition = new[] {humanoid}; undead.Super = new SlayerEntry(SlayerName.Silver, typeof(AncientLich), typeof(Bogle), typeof(BoneKnight), typeof(BoneMage), typeof(DarknightCreeper), typeof(FleshGolem), typeof(Ghoul), typeof(GoreFiend), typeof(HellSteed), typeof(LadyOfTheSnow), typeof(Lich), typeof(LichLord), typeof(Mummy), typeof(PestilentBandage), typeof(Revenant), typeof(RevenantLion), typeof(RottingCorpse), typeof(Shade), typeof(ShadowKnight), typeof(SkeletalKnight), typeof(SkeletalMage), typeof(SkeletalMount), typeof(Skeleton), typeof(Spectre), typeof(Wraith), typeof(DreamWraithPortal), typeof(MaddeningHorrorPortal), typeof(UndeadWarDogPortal), typeof(Zombie)); undead.Entries = new SlayerEntry[0]; fey.Opposition = new[] {abyss}; fey.Super = new SlayerEntry( SlayerName.Fey, typeof(Centaur), typeof(CuSidhe), typeof(EtherealWarrior), typeof(Kirin), typeof(LordOaks), typeof(Pixie), typeof(Silvani), typeof(Treefellow), typeof(Unicorn), typeof(Wisp), typeof(MLDryad), typeof(Satyr)); fey.Entries = new SlayerEntry[0]; elemental.Opposition = new[] {abyss}; elemental.FoundOn = new[] {typeof(Balron), typeof(Daemon)}; elemental.Super = new SlayerEntry(SlayerName.ElementalBan, typeof(AcidElemental), typeof(ToxicElemental), typeof(AgapiteElemental), typeof(AirElemental), typeof(SummonedAirElemental), typeof(BloodElemental), typeof(BronzeElemental), typeof(CopperElemental), typeof(CrystalElemental), typeof(CrystalVortex), typeof(DullCopperElemental), typeof(EarthElemental), typeof(SummonedEarthElemental), typeof(Efreet), typeof(FireElemental), typeof(SummonedFireElemental), typeof(GoldenElemental), typeof(GreaterBloodElemental), typeof(IceElemental), typeof(KazeKemono), typeof(PoisonElemental), typeof(RaiJu), typeof(SandVortex), typeof(ShadowIronElemental), typeof(SnowElemental), typeof(ValoriteElemental), typeof(VeriteElemental), typeof(WaterElemental), typeof(SummonedWaterElemental), typeof(DeepEarthElemental), typeof(DeepWaterElemental), typeof(GreaterPoisonElemental), typeof(MagmaElemental), typeof(MagnetiteElemental), typeof(PyroclasticElemental)); elemental.Entries = new[] { new SlayerEntry(SlayerName.BloodDrinking, typeof(BloodElemental), typeof(GreaterBloodElemental)), new SlayerEntry(SlayerName.EarthShatter, typeof(AgapiteElemental), typeof(BronzeElemental), typeof(CopperElemental), typeof(CrystalVortex), typeof(DullCopperElemental), typeof(EarthElemental), typeof(SummonedEarthElemental), typeof(GoldenElemental), typeof(GreaterBloodElemental), typeof(ShadowIronElemental), typeof(ValoriteElemental), typeof(VeriteElemental), typeof(DeepEarthElemental), typeof(MagnetiteElemental)), new SlayerEntry(SlayerName.ElementalHealth, typeof(PoisonElemental), typeof(GreaterPoisonElemental)), new SlayerEntry(SlayerName.FlameDousing, typeof(FireElemental), typeof(SummonedFireElemental), typeof(MagmaElemental), typeof(PyroclasticElemental)), new SlayerEntry(SlayerName.SummerWind, typeof(SnowElemental), typeof(IceElemental)), new SlayerEntry(SlayerName.Vacuum, typeof(AirElemental), typeof(SummonedAirElemental)), new SlayerEntry(SlayerName.WaterDissipation, typeof(WaterElemental), typeof(SummonedWaterElemental), typeof(DeepWaterElemental)) }; abyss.Opposition = new[] {elemental, fey}; abyss.FoundOn = new[] {typeof(BloodElemental)}; abyss.Super = new SlayerEntry( SlayerName.Exorcism, typeof(AbysmalHorror), typeof(Balron), typeof(BoneDaemon), typeof(ChaosDaemon), typeof(Daemon), typeof(SummonedDaemon), typeof(DemonKnight), typeof(Devourer), typeof(Gargoyle), typeof(FireGargoyle), typeof(Gibberling), typeof(HordeMinion), typeof(IceFiend), typeof(Imp), typeof(NetherImp), typeof(BurningImp), typeof(Impaler), typeof(Ravager), typeof(StoneGargoyle), typeof(ArcaneDaemon), typeof(EnslavedGargoyle), typeof(GargoyleDestroyer), typeof(GargoyleEnforcer), typeof(DevourerPortal), typeof(AbysmalHorrorPortal), typeof(DarkFatherPortal), typeof(Moloch)); abyss.Entries = new[] { new SlayerEntry( SlayerName.DaemonDismissal, typeof(AbysmalHorror), typeof(Balron), typeof(BoneDaemon), typeof(ChaosDaemon), typeof(Daemon), typeof(SummonedDaemon), typeof(DemonKnight), typeof(Devourer), typeof(Gibberling), typeof(HordeMinion), typeof(IceFiend), typeof(Imp), typeof(Impaler), typeof(Ravager), typeof(ArcaneDaemon), typeof(Moloch)), new SlayerEntry(SlayerName.GargoylesFoe, typeof(FireGargoyle), typeof(Gargoyle), typeof(StoneGargoyle), typeof(EnslavedGargoyle), typeof(GargoyleDestroyer), typeof(GargoyleEnforcer)), new SlayerEntry(SlayerName.BalronDamnation, typeof(Balron)) }; arachnid.Opposition = new[] {reptilian}; arachnid.FoundOn = new[] { typeof(AncientWyrm), typeof(GreaterDragon), typeof(Dragon), typeof(OphidianMatriarch), typeof(ShadowWyrm), typeof(DragonPortal), typeof(AncientWyrmPortal), typeof(ShadowWyrmPortal), typeof(Bahamut) }; arachnid.Super = new SlayerEntry( SlayerName.ArachnidDoom, typeof(DreadSpider), typeof(FrostSpider), typeof(GiantBlackWidow), typeof(GiantSpider), typeof(Mephitis), typeof(Scorpion), typeof(TerathanAvenger), typeof(TerathanDrone), typeof(TerathanMatriarch), typeof(TerathanWarrior), typeof(AbnormalDreadSpider)); arachnid.Entries = new[] { new SlayerEntry(SlayerName.ScorpionsBane, typeof(Scorpion)), new SlayerEntry( SlayerName.SpidersDeath, typeof(DreadSpider), typeof(FrostSpider), typeof(GiantBlackWidow), typeof(GiantSpider), typeof(Mephitis), typeof(AbnormalDreadSpider)), new SlayerEntry( SlayerName.Terathan, typeof(TerathanAvenger), typeof(TerathanDrone), typeof(TerathanMatriarch), typeof(TerathanWarrior)) }; reptilian.Opposition = new[] {arachnid}; reptilian.FoundOn = new[] {typeof(TerathanAvenger), typeof(TerathanMatriarch)}; reptilian.Super = new SlayerEntry( SlayerName.ReptilianDeath, typeof(AncientWyrm), typeof(DeepSeaSerpent), typeof(GreaterDragon), typeof(ElderDragon), typeof(Dragon), typeof(DragonPortal), typeof(AncientWyrmPortal), typeof(ShadowWyrmPortal), typeof(Bahamut), typeof(Drake), typeof(GiantIceWorm), typeof(IceSerpent), typeof(GiantSerpent), typeof(Hiryu), typeof(IceSnake), typeof(JukaLord), typeof(JukaMage), typeof(JukaWarrior), typeof(LavaSerpent), typeof(LavaSnake), typeof(LesserHiryu), typeof(Lizardman), typeof(OphidianArchmage), typeof(OphidianKnight), typeof(OphidianMage), typeof(OphidianMatriarch), typeof(OphidianWarrior), typeof(Reptalon), typeof(SeaSerpent), typeof(Serado), typeof(SerpentineDragon), typeof(ShadowWyrm), typeof(SilverSerpent), typeof(SkeletalDragon), typeof(Snake), typeof(SwampDragon), typeof(WhiteWyrm), typeof(PathaleoDrake), typeof(Wyvern), typeof(Yamandon)); reptilian.Entries = new[] { new SlayerEntry( SlayerName.DragonSlaying, typeof(AncientWyrm), typeof(DragonPortal), typeof(AncientWyrmPortal), typeof(ShadowWyrmPortal), typeof(Bahamut), typeof(GreaterDragon), typeof(ElderDragon), typeof(Dragon), typeof(Drake), typeof(Hiryu), typeof(LesserHiryu), typeof(Reptalon), typeof(SerpentineDragon), typeof(ShadowWyrm), typeof(SkeletalDragon), typeof(SwampDragon), typeof(WhiteWyrm), typeof(PathaleoDrake), typeof(Wyvern)), new SlayerEntry(SlayerName.LizardmanSlaughter, typeof(Lizardman)), new SlayerEntry( SlayerName.Ophidian, typeof(OphidianArchmage), typeof(OphidianKnight), typeof(OphidianMage), typeof(OphidianMatriarch), typeof(OphidianWarrior)), new SlayerEntry(SlayerName.SnakesBane, typeof(DeepSeaSerpent), typeof(GiantIceWorm), typeof(GiantSerpent), typeof(IceSerpent), typeof(IceSnake), typeof(LavaSerpent), typeof(LavaSnake), typeof(SeaSerpent), typeof(Serado), typeof(SilverSerpent), typeof(Snake), typeof(Yamandon)) }; m_Groups = new[] {humanoid, undead, elemental, abyss, arachnid, reptilian, fey}; m_TotalEntries = CompileEntries(m_Groups); }
private static SlayerEntry[] CompileEntries( SlayerGroup[] groups ) { SlayerEntry[] entries = new SlayerEntry[27]; for ( int i = 0; i < groups.Length; ++i ) { SlayerGroup g = groups[i]; g.Super.Group = g; entries[(int)g.Super.Name] = g.Super; for ( int j = 0; j < g.Entries.Length; ++j ) { g.Entries[j].Group = g; entries[(int)g.Entries[j].Name] = g.Entries[j]; } } /* ** DELETE ** // Adam: test { Console.WriteLine("count" + entries.Length.ToString()); for (int ix=0; ix < entries.Length; ix++) { //Console.WriteLine("entries:" + entries[ix].ToString()); if ((entries[ix] as SlayerEntry) != null) { Console.Write("entries: "); Console.WriteLine(entries[ix].Group.Super.Name.ToString()); } else { Console.Write("entries: "); Console.WriteLine("bogus"); } } } */ return entries; }