Files
abysmal-isle/Scripts/Items/Equipment/Talismans/TalismanSlayer.cs
Unstable Kitsune b918192e4e Overwrite
Complete Overwrite of the Folder with the free shard. ServUO 57.3 has been added.
2023-11-28 23:20:26 -05:00

188 lines
7.3 KiB
C#

using System;
using System.Collections.Generic;
using Server.Mobiles;
namespace Server.Items
{
public enum TalismanSlayerName
{
None,
Bear,
Vermin,
Bat,
Mage,
Beetle,
Bird,
Ice,
Flame,
Bovine,
Wolf,
Undead,
Goblin,
Repond,
Elemental,
Demon,
Arachnid,
Reptile,
Fey,
}
public static class TalismanSlayer
{
private static readonly Dictionary<TalismanSlayerName, Type[]> m_Table = new Dictionary<TalismanSlayerName, Type[]>();
public static void Initialize()
{
m_Table[TalismanSlayerName.Bear] = new Type[]
{
typeof(GrizzlyBear), typeof(BlackBear),
typeof(BrownBear), typeof(PolarBear),
typeof(Grobu), typeof(GrizzlyBear),
typeof(RagingGrizzlyBear)
};
m_Table[TalismanSlayerName.Vermin] = new Type[]
{
typeof(RatmanMage), typeof(RatmanMage),
typeof(RatmanArcher), typeof(Barracoon),
typeof(Ratman), typeof(Sewerrat),
typeof(Rat), typeof(GiantRat),
typeof(Chiikkaha), typeof(ClanRibbonPlagueRat),
typeof(ClanRS), typeof(ClanRC),
typeof(VitaviRenowned), typeof(ClanCA),
typeof(ClanCT), typeof(RakktaviRenowned),
typeof(ClanSH), typeof(ClanSS),
typeof(TikitaviRenowned)
};
m_Table[TalismanSlayerName.Bat] = new Type[]
{
typeof(Mongbat), typeof(StrongMongbat),
typeof(VampireBat)
};
m_Table[TalismanSlayerName.Mage] = new Type[]
{
typeof(EvilMage), typeof(EvilMageLord),
typeof(AncientLich), typeof(Lich),
typeof(LichLord), typeof(SkeletalMage),
typeof(BoneMagi), typeof(OrcishMage),
typeof(KhaldunZealot), typeof(JukaMage),
typeof(KhaldunSummoner), typeof(MasterTheophilus),
typeof(GrayGoblinMage), typeof(MeerMage)
};
m_Table[TalismanSlayerName.Beetle] = new Type[]
{
typeof(Beetle), typeof(RuneBeetle),
typeof(FireBeetle), typeof(DeathwatchBeetle),
typeof(DeathwatchBeetleHatchling), typeof(IronBeetle)
};
m_Table[TalismanSlayerName.Bird] = new Type[]
{
typeof(Bird), typeof(TropicalBird),
typeof(Chicken), typeof(Crane),
typeof(DesertOstard), typeof(Eagle),
typeof(ForestOstard), typeof(FrenziedOstard),
typeof(Phoenix), typeof(Pyre),
typeof(Swoop), typeof(Saliva)
};
m_Table[TalismanSlayerName.Ice] = new Type[]
{
typeof(ArcticOgreLord), typeof(IceElemental),
typeof(SnowElemental), typeof(FrostOoze),
typeof(IceFiend), typeof(UnfrozenMummy),
typeof(FrostSpider), typeof(LadyOfTheSnow),
typeof(FrostTroll), typeof(IceSnake),
typeof(SnowLeopard), typeof(PolarBear),
typeof(IceSerpent), typeof(GiantIceWorm),
typeof(IceHound), typeof(Wight)
};
m_Table[TalismanSlayerName.Flame] = new Type[]
{
typeof(FireBeetle), typeof(HellHound),
typeof(LavaSerpent), typeof(FireElemental),
typeof(PredatorHellCat), typeof(Phoenix),
typeof(FireGargoyle), typeof(HellCat),
typeof(Pyre), typeof(FireSteed),
typeof(LavaLizard), typeof(LavaSnake),
typeof(FireRabbit)
};
m_Table[TalismanSlayerName.Bovine] = new Type[]
{
typeof(Cow), typeof(Bull),
typeof(Gaman), typeof(MinotaurCaptain),
typeof(MinotaurScout), typeof(Minotaur),
typeof(TormentedMinotaur), typeof(LowlandBoura),
typeof(RuddyBoura), typeof(HighPlainsBoura),
typeof(Meraktus)
};
m_Table[TalismanSlayerName.Wolf] = new Type[]
{
typeof(CuSidhe), typeof(Gnaw),
typeof(TimberWolf), typeof(DireWolf),
typeof(GreyWolf), typeof(TsukiWolf),
typeof(Dog), typeof(HellHound),
typeof(IceHound), typeof(WhiteWolf),
typeof(BakeKitsune), typeof(ClanSSW),
typeof(CuSidhe)
};
m_Table[TalismanSlayerName.Goblin] = new Type[]
{
typeof(EnslavedGoblinScout), typeof(EnslavedGoblinKeeper),
typeof(EnslavedGreenGoblin), typeof(EnslavedGreenGoblinAlchemist),
typeof(EnslavedGoblinMage), typeof(EnslavedGreenGoblinAlchemist),
typeof(EnslavedGrayGoblin), typeof(GreenGoblinScout),
typeof(GreenGoblinAlchemist), typeof(GreenGoblin),
typeof(GrayGoblinMage), typeof(GrayGoblinKeeper),
typeof(GrayGoblin), typeof(GreenGoblinAlchemistRenowned),
typeof(GrayGoblinMageRenowned)
};
m_Table[TalismanSlayerName.Repond] = SlayerGroup.Groups[0].Super.Types;
m_Table[TalismanSlayerName.Undead] = SlayerGroup.Groups[1].Super.Types;
m_Table[TalismanSlayerName.Elemental] = SlayerGroup.Groups[2].Super.Types;
m_Table[TalismanSlayerName.Demon] = SlayerGroup.Groups[3].Super.Types;
m_Table[TalismanSlayerName.Arachnid] = SlayerGroup.Groups[4].Super.Types;
m_Table[TalismanSlayerName.Reptile] = SlayerGroup.Groups[5].Super.Types;
m_Table[TalismanSlayerName.Fey] = SlayerGroup.Groups[6].Super.Types;
}
public static bool Slays(TalismanSlayerName name, Mobile m)
{
if (m.SpecialSlayerMechanics)
{
if (m.SlayerVulnerabilities.Contains(name.ToString()))
return true;
else
return false;
}
if (!m_Table.ContainsKey(name))
return false;
Type[] types = m_Table[name];
if (types == null || m == null)
return false;
Type type = m.GetType();
for (int i = 0; i < types.Length; i++)
{
if (types[i].IsAssignableFrom(type))
return true;
}
return false;
}
}
}