RunUO/Scripts/Items/Talismans/TalismanSlayer.cs

114 lines
3.3 KiB
C#

using System;
using System.Collections.Generic;
using Server;
using Server.Mobiles;
namespace Server.Items
{
public enum TalismanSlayerName
{
None,
Bear,
Vermin,
Bat,
Mage,
Beetle,
Bird,
Ice,
Flame,
Bovine
}
public static class TalismanSlayer
{
private static 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 )
};
m_Table[ TalismanSlayerName.Vermin ] = new Type[]
{
typeof( RatmanMage ), typeof( RatmanMage ), typeof( RatmanArcher ), typeof( Barracoon),
typeof( Ratman ), typeof( Sewerrat ), typeof( Rat ), typeof( GiantRat ) //, typeof( Chiikkaha )
};
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 ),
};
m_Table[ TalismanSlayerName.Beetle ] = new Type[]
{
typeof( Beetle ), typeof( RuneBeetle ), typeof( FireBeetle ), typeof( DeathwatchBeetle ),
typeof( DeathwatchBeetleHatchling )
};
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 ),*/ typeof( Harpy ),
typeof( StoneHarpy ) // ?????
};
m_Table[ TalismanSlayerName.Ice ] = new Type[]
{
typeof( ArcticOgreLord ), typeof( IceElemental ), typeof( SnowElemental ), typeof( FrostOoze ),
typeof( IceFiend ), /*typeof( UnfrozenMummy ),*/ typeof( FrostSpider ), typeof( LadyOfTheSnow ),
typeof( FrostTroll ),
// TODO WinterReaper, check
typeof( IceSnake ), typeof( SnowLeopard ), typeof( PolarBear ), typeof( IceSerpent ), typeof( GiantIceWorm )
};
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 ),
// TODO check
typeof( LavaSnake ),
};
m_Table[ TalismanSlayerName.Bovine ] = new Type[]
{
typeof( Cow ), typeof( Bull ), typeof( Gaman ) /*, typeof( MinotaurCaptain ),
typeof( MinotaurScout ), typeof( Minotaur )*/
// TODO TormentedMinotaur
};
}
public static bool Slays( TalismanSlayerName name, Mobile m )
{
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;
}
}
}