Пример #1
0
        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 );
        }
Пример #2
0
        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;
        }
Пример #3
0
        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);
        }
Пример #4
0
        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);
        }
Пример #5
0
        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);
        }
Пример #6
0
        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 );
        }
Пример #7
0
 public static IEnumerable <SlayerEntry> GetSlayerEntries(this ISlayer slayer)
 {
     return(new[] { slayer.Slayer, slayer.Slayer2 }
            .Select(name => SlayerGroup.GetEntryByName(name))
            .Where(entry => entry != null));
 }
Пример #8
0
        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);
        }
Пример #9
0
        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));
        }
Пример #10
0
        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 );
        }
Пример #11
0
        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);
        }
Пример #12
0
        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~
            }
        }
Пример #13
0
        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);
        }
Пример #14
0
        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 );
        }
Пример #15
0
        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));
            }
        }
Пример #16
0
        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 );
        }
Пример #17
0
		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 );
		}
Пример #18
0
        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);
        }
Пример #19
0
        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
        }
Пример #20
0
        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);
        }
Пример #21
0
        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~
            }
        }
Пример #22
0
        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
        }
Пример #23
0
        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);
        }
Пример #24
0
        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);
        }
Пример #25
0
        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);
        }
Пример #26
0
		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;
		}