775 lines
30 KiB
C#
775 lines
30 KiB
C#
using System;
|
|
using Server.Mobiles;
|
|
using Server.Engines.Shadowguard;
|
|
|
|
namespace Server.Items
|
|
{
|
|
public class SlayerGroup
|
|
{
|
|
private static SlayerEntry[] m_TotalEntries;
|
|
private static SlayerGroup[] m_Groups;
|
|
private SlayerGroup[] m_Opposition;
|
|
private SlayerEntry m_Super;
|
|
private SlayerEntry[] m_Entries;
|
|
private Type[] m_FoundOn;
|
|
|
|
public SlayerGroup()
|
|
{
|
|
}
|
|
|
|
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),
|
|
typeof(PirateCrew), typeof(LizardmanWitchdoctor),
|
|
typeof(OrcFootSoldier), typeof(RatmanAssassin),
|
|
typeof(OgreBoneCrusher), typeof(TitanRockHunter)
|
|
);
|
|
|
|
humanoid.Entries = new SlayerEntry[]
|
|
{
|
|
new SlayerEntry
|
|
(
|
|
SlayerName.OgreTrashing,
|
|
|
|
typeof(Ogre), typeof(OgreLord),
|
|
typeof(ArcticOgreLord), typeof(OgreBoneCrusher)
|
|
),
|
|
|
|
new SlayerEntry
|
|
(
|
|
SlayerName.OrcSlaying,
|
|
|
|
typeof(Orc), typeof(OrcBomber),
|
|
typeof(OrcBrute), typeof(OrcCaptain),
|
|
typeof(OrcChopper), typeof(OrcScout),
|
|
typeof(OrcishLord), typeof(OrcishMage),
|
|
typeof(OrcFootSoldier)
|
|
),
|
|
|
|
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), typeof(AngeredSpirit),
|
|
typeof(BoneSwordSlinger), typeof(CovetousRevenant),
|
|
typeof(DiseasedLich), typeof(VileCadaver),
|
|
typeof(GrizzledMare), typeof(SkeletalCat)
|
|
);
|
|
|
|
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),
|
|
typeof(CovetousEarthElemental), typeof(VenomElemental),
|
|
typeof(SearingElemental), typeof(VortexElemental),
|
|
typeof(CovetousWaterElemental)
|
|
);
|
|
|
|
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),
|
|
typeof(CovetousEarthElemental)
|
|
),
|
|
|
|
new SlayerEntry
|
|
(
|
|
SlayerName.ElementalHealth,
|
|
|
|
typeof(PoisonElemental), typeof(DemonKnight),
|
|
typeof(VenomElemental)
|
|
),
|
|
|
|
new SlayerEntry
|
|
(
|
|
SlayerName.FlameDousing,
|
|
|
|
typeof(FireElemental), typeof(FireElementalRenowned),
|
|
typeof(SummonedFireElemental), typeof(FlameElemental),
|
|
typeof(DemonKnight), typeof(SearingElemental)
|
|
),
|
|
|
|
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), typeof(VortexElemental)
|
|
),
|
|
|
|
new SlayerEntry
|
|
(
|
|
SlayerName.WaterDissipation,
|
|
|
|
typeof(WaterElemental), typeof(SummonedWaterElemental),
|
|
typeof(DemonKnight), typeof(CovetousWaterElemental)
|
|
)
|
|
};
|
|
|
|
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), typeof(LesserOni),
|
|
typeof(Lifestealer)
|
|
);
|
|
|
|
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), typeof(DaemonMongbat),
|
|
typeof(CovetousDoppleganger), typeof(CovetousFireDaemon),
|
|
typeof(GargoyleAssassin), typeof(LesserOni)
|
|
),
|
|
};
|
|
}
|
|
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(FrostDrake), 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(TRex), 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(TRex), typeof(MyrmidexWarrior));
|
|
|
|
dino.Entries = new SlayerEntry[] { };
|
|
|
|
myrmidex.Opposition = new SlayerGroup[] { fey };
|
|
myrmidex.FoundOn = new Type[] { };
|
|
myrmidex.Super = new SlayerEntry(
|
|
|
|
SlayerName.Myrmidex,
|
|
|
|
typeof(MyrmidexLarvae), typeof(MyrmidexDrone),
|
|
typeof(MyrmidexWarrior));
|
|
myrmidex.Entries = new SlayerEntry[] { };
|
|
|
|
m_Groups = new SlayerGroup[]
|
|
{
|
|
humanoid,
|
|
undead,
|
|
elemental,
|
|
abyss,
|
|
arachnid,
|
|
reptilian,
|
|
fey,
|
|
eodon,
|
|
eodonTribe,
|
|
dino,
|
|
myrmidex,
|
|
};
|
|
|
|
m_TotalEntries = CompileEntries(m_Groups);
|
|
}
|
|
|
|
public static SlayerEntry[] TotalEntries
|
|
{
|
|
get
|
|
{
|
|
return m_TotalEntries;
|
|
}
|
|
}
|
|
public static SlayerGroup[] Groups
|
|
{
|
|
get
|
|
{
|
|
return m_Groups;
|
|
}
|
|
}
|
|
public SlayerGroup[] Opposition
|
|
{
|
|
get
|
|
{
|
|
return this.m_Opposition;
|
|
}
|
|
set
|
|
{
|
|
this.m_Opposition = value;
|
|
}
|
|
}
|
|
public SlayerEntry Super
|
|
{
|
|
get
|
|
{
|
|
return this.m_Super;
|
|
}
|
|
set
|
|
{
|
|
this.m_Super = value;
|
|
}
|
|
}
|
|
public SlayerEntry[] Entries
|
|
{
|
|
get
|
|
{
|
|
return this.m_Entries;
|
|
}
|
|
set
|
|
{
|
|
this.m_Entries = value;
|
|
}
|
|
}
|
|
public Type[] FoundOn
|
|
{
|
|
get
|
|
{
|
|
return this.m_FoundOn;
|
|
}
|
|
set
|
|
{
|
|
this.m_FoundOn = value;
|
|
}
|
|
}
|
|
public static SlayerEntry GetEntryByName(SlayerName name)
|
|
{
|
|
int v = (int)name;
|
|
|
|
if (v >= 0 && v < m_TotalEntries.Length)
|
|
return m_TotalEntries[v];
|
|
|
|
return null;
|
|
}
|
|
|
|
public static SlayerName GetLootSlayerType(Type type)
|
|
{
|
|
for (int i = 0; i < m_Groups.Length; ++i)
|
|
{
|
|
SlayerGroup group = m_Groups[i];
|
|
Type[] foundOn = group.FoundOn;
|
|
|
|
bool inGroup = false;
|
|
|
|
for (int j = 0; foundOn != null && !inGroup && j < foundOn.Length; ++j)
|
|
inGroup = (foundOn[j] == type);
|
|
|
|
if (inGroup)
|
|
{
|
|
int index = Utility.Random(1 + group.Entries.Length);
|
|
|
|
if (index == 0)
|
|
return group.m_Super.Name;
|
|
|
|
return group.Entries[index - 1].Name;
|
|
}
|
|
}
|
|
|
|
return SlayerName.Silver;
|
|
}
|
|
|
|
public bool OppositionSuperSlays(Mobile m)
|
|
{
|
|
for (int i = 0; i < this.Opposition.Length; i++)
|
|
{
|
|
if (this.Opposition[i].Super.Slays(m))
|
|
return true;
|
|
}
|
|
|
|
if (m_Super.Name == SlayerName.Eodon && !m_Super.Slays(m))
|
|
return true;
|
|
|
|
return false;
|
|
}
|
|
|
|
private static SlayerEntry[] CompileEntries(SlayerGroup[] groups)
|
|
{
|
|
SlayerEntry[] entries = new SlayerEntry[32];
|
|
|
|
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;
|
|
}
|
|
|
|
public static SlayerName RandomSuperSlayerAOS(bool excludeFey = true)
|
|
{
|
|
int maxIndex = excludeFey ? 5 : 6;
|
|
|
|
return Groups[Utility.Random(maxIndex)].Super.Name;
|
|
}
|
|
|
|
public static SlayerName RandomSuperSlayerTOL()
|
|
{
|
|
return Groups[Utility.Random(Groups.Length)].Super.Name;
|
|
}
|
|
}
|
|
}
|