AvatarsConquest/Scripts/Mobiles/Base/AI/SpeedInfo.cs

458 lines
No EOL
11 KiB
C#

using System;
using System.Collections;
using Server;
using Server.Mobiles;
namespace Server
{
public class SpeedInfo
{
// Should we use the new method of speeds?
private static bool Enabled = true;
private double m_ActiveSpeed;
private double m_PassiveSpeed;
private Type[] m_Types;
public double ActiveSpeed
{
get{ return m_ActiveSpeed; }
set{ m_ActiveSpeed = value; }
}
public double PassiveSpeed
{
get{ return m_PassiveSpeed; }
set{ m_PassiveSpeed = value; }
}
public Type[] Types
{
get{ return m_Types; }
set{ m_Types = value; }
}
public SpeedInfo( double activeSpeed, double passiveSpeed, Type[] types )
{
m_ActiveSpeed = activeSpeed;
m_PassiveSpeed = passiveSpeed;
m_Types = types;
}
public static bool Contains( object obj )
{
if ( !Enabled )
return false;
if ( m_Table == null )
LoadTable();
SpeedInfo sp = (SpeedInfo)m_Table[obj.GetType()];
return ( sp != null );
}
public static bool GetSpeeds( object obj, ref double activeSpeed, ref double passiveSpeed )
{
if ( !Enabled )
return false;
if ( m_Table == null )
LoadTable();
SpeedInfo sp = (SpeedInfo)m_Table[obj.GetType()];
if ( sp == null )
return false;
activeSpeed = sp.ActiveSpeed;
passiveSpeed = sp.PassiveSpeed;
return true;
}
private static void LoadTable()
{
m_Table = new Hashtable();
for ( int i = 0; i < m_Speeds.Length; ++i )
{
SpeedInfo info = m_Speeds[i];
Type[] types = info.Types;
for ( int j = 0; j < types.Length; ++j )
m_Table[types[j]] = info;
}
}
private static Hashtable m_Table;
private static SpeedInfo[] m_Speeds = new SpeedInfo[]
{
/* Slow */
new SpeedInfo( 0.3, 0.6, new Type[]
{
typeof( RottingDrake ),
typeof( ZombieDragon ),
typeof( CarcassWorm ),
typeof( Meglasaur ),
typeof( Gorceratops ),
typeof( Stegosaurus ),
typeof( Turtle ),
typeof( Shambler ),
typeof( ShamblingMound ),
typeof( AntLion ),
typeof( ArcticOgreLord ),
typeof( BoneKnight ),
typeof( EarthElemental ),
typeof( MeteorElemental ),
typeof( StoneGolem ),
typeof( StoneStatue ),
typeof( Goliath ),
typeof( MudElemental ),
typeof( MagmaElemental ),
typeof( WoodElemental ),
typeof( Ettin ),
typeof( SnowEttin ),
typeof( SwampThing ),
typeof( FrostOoze ),
typeof( FrostTroll ),
typeof( Ghoul ),
typeof( Wight ),
typeof( Golem ),
typeof( HeadlessOne ),
typeof( Mummy ),
typeof( Ogre ),
typeof( Owlbear ),
typeof( Sasquatch ),
typeof( CorpseGolem ),
typeof( FleshGolem ),
typeof( FleshGoliath ),
typeof( Caveman ),
typeof( OgreLord ),
typeof( ForestGiant ),
typeof( HillGiant ),
typeof( MountainGiant ),
typeof( FrostGiant ),
typeof( Xorn ),
typeof( Rat ),
typeof( RottingCorpse ),
typeof( Skeleton ),
typeof( Slime ),
typeof( Sludge ),
typeof( LargeSlime ),
typeof( Zombie ),
typeof( ZombieGargoyle ),
typeof( GargoyleUndead ),
typeof( Walrus )
} ),
/* Fast */
new SpeedInfo( 0.2, 0.4, new Type[]
{
typeof( BoneClaw ),
typeof( ShadowDemon ),
typeof( Torax ),
typeof( Teradactyl ),
typeof( AirElemental ),
typeof( Typhoon ),
typeof( AncientWyrm ),
typeof( Balron ),
typeof( SeaDevil ),
typeof( DemonClaw ),
typeof( BladeSpirits ),
typeof( DreadSpider ),
typeof( Efreet ),
typeof( Lich ),
typeof( Vampire ),
typeof( Nightmare ),
typeof( Cerberus ),
typeof( Serperus ),
typeof( Haderus ),
typeof( OphidianArchmage ),
typeof( OphidianMage ),
typeof( OphidianWarrior ),
typeof( OphidianMatriarch ),
typeof( OphidianKnight ),
typeof( Naga ),
typeof( NagaWarrior ),
typeof( NagaQueen ),
typeof( FireNaga ),
typeof( Kobra ),
typeof( Medusa ),
typeof( PoisonElemental ),
typeof( GasCloud ),
typeof( StormCloud ),
typeof( IceSalamander ),
typeof( FireSalamander ),
typeof( Raptor ),
typeof( SandVortex ),
typeof( SavageShaman ),
typeof( SnowElemental ),
typeof( SuccubusQueen ),
typeof( WhiteWyrm ),
typeof( Wisp ),
typeof( WidowQueen ),
typeof( Kith ),
typeof( BloodSpider ),
typeof( GiantBlackWidow )
} ),
/* Very Fast */
new SpeedInfo( 0.175, 0.350, new Type[]
{
typeof( EnergyVortex ),
typeof( Pixie ),
typeof( Fairy ),
typeof( Swarm ),
typeof( SilverSerpent ),
typeof( Leviathan ),
} ),
/* Medium */
new SpeedInfo( 0.25, 0.5, new Type[]
{
typeof( Demoness ),
typeof( Hydra ),
typeof( SeaHydra ),
typeof( Goblin ),
typeof( GoblinArcher ),
typeof( GoblinWarrior ),
typeof( MummyLord ),
typeof( GiantCrab ),
typeof( Lobstran ),
typeof( Lurker ),
typeof( ForestStalker ),
typeof( CaveDweller ),
typeof( Minotaur ),
typeof( MinotaurLord ),
typeof( MinotaurChief ),
typeof( Ent ),
typeof( Fungal ),
typeof( FungalMage ),
typeof( Sphinx ),
typeof( RoyalSphinx ),
typeof( AncientSphinx ),
typeof( AcidElemental ),
typeof( Alligator ),
typeof( AncientLich ),
typeof( AncientVampire ),
typeof( Bird ),
typeof( BlackBear ),
typeof( BloodElemental ),
typeof( BloodElementalElder ),
typeof( PoisonElementalElder ),
typeof( WaterElementalElder ),
typeof( Boar ),
typeof( BoneMagi ),
typeof( Brigand ),
typeof( BlackKnight ),
typeof( BrownBear ),
typeof( Bull ),
typeof( BullFrog ),
typeof( Cat ),
typeof( Centaur ),
typeof( Chicken ),
typeof( Cougar ),
typeof( Cow ),
typeof( Cyclops ),
typeof( CyclopsChief ),
typeof( CyclopsLord ),
typeof( Daemon ),
typeof( Ktulu ),
typeof( Deviless ),
typeof( HornedDevil ),
typeof( IceDevil ),
typeof( DeepSeaSerpent ),
typeof( GiantEel ),
typeof( GiantSquid ),
typeof( DemonicSpirit ),
typeof( DireWolf ),
typeof( Dog ),
typeof( Dolphin ),
typeof( GreatWhite ),
typeof( Lochasaur ),
typeof( Megalodon ),
typeof( Shark ),
typeof( Seahorse ),
typeof( Tyranasaur ),
typeof( SeaDragon ),
typeof( Dragon ),
typeof( Drakkhen ),
typeof( DragonTurtle ),
typeof( Drake ),
typeof( LavaDrake ),
typeof( SeaDrake ),
typeof( SwampDragon ),
typeof( Dwarf ),
typeof( DwarfWarrior ),
typeof( DwarfKnight ),
typeof( Eagle ),
typeof( ElderGazer ),
typeof( AncientGazer ),
typeof( EvilMage ),
typeof( EvilMageLord ),
typeof( MindFlayer ),
typeof( Executioner ),
typeof( Savage ),
typeof( SavageLeader ),
typeof( FireElemental ),
typeof( LightningElemental ),
typeof( FireGargoyle ),
typeof( FrostSpider ),
typeof( Shaclaw ),
typeof( Gargoyle ),
typeof( GargoyleMage ),
typeof( GargoyleKnight ),
typeof( GargoyleIce ),
typeof( GargoyleStone ),
typeof( GargoyleWizard ),
typeof( GargoyleCrimson ),
typeof( Gazer ),
typeof( IceSerpent ),
typeof( GiantRat ),
typeof( GiantSerpent ),
typeof( Viper ),
typeof( Cobra ),
typeof( GiantSpider ),
typeof( GiantToad ),
typeof( IceToad ),
typeof( FireToad ),
typeof( Goat ),
typeof( Gorilla ),
typeof( Ape ),
typeof( GreatDeer ),
typeof( GreyWolf ),
typeof( GrizzlyBear ),
typeof( CaveBear ),
typeof( KodiakBear ),
typeof( Lion ),
typeof( Tiger ),
typeof( Manticore ),
typeof( SnowBear ),
typeof( PandaBear ),
typeof( Harpy ),
typeof( ElderHarpy ),
typeof( GiantHawk ),
typeof( GiantRaven ),
typeof( Roc ),
typeof( AxeBeak ),
typeof( Griffon ),
typeof( Hippogriff ),
typeof( HellHound ),
typeof( Deer ),
typeof( Hobgoblin ),
typeof( HobgoblinChief ),
typeof( HobgoblinArcher ),
typeof( HobgoblinShaman ),
typeof( Horse ),
typeof( IceElemental ),
typeof( IceFiend ),
typeof( Imp ),
typeof( FireImp ),
typeof( IceImp ),
typeof( Kraken ),
typeof( HellCat ),
typeof( LavaLizard ),
typeof( GiantLizard ),
typeof( LavaSerpent ),
typeof( Lizardman ),
typeof( Drasolisk ),
typeof( Silisk ),
typeof( Sakkhra ),
typeof( SakkhraShaman ),
typeof( Sahuagin ),
typeof( SahuaginMage ),
typeof( Llama ),
typeof( Mongbat ),
typeof( MountainGoat ),
typeof( Dagon ),
typeof( Krakoa ),
typeof( OgreMagi ),
typeof( Minion ),
typeof( MinionWizard ),
typeof( MinionWarrior ),
typeof( Orc ),
typeof( OrcCaptain ),
typeof( OrcishLord ),
typeof( OrcishMage ),
typeof( PackHorse ),
typeof( PackLlama ),
typeof( Pirate ),
typeof( Panther ),
typeof( Pig ),
typeof( PolarBear ),
typeof( Rabbit ),
typeof( Raccoon ),
typeof( Squirrel ),
typeof( Ratman ),
typeof( RatmanArcher ),
typeof( RatmanMage ),
typeof( Satyr ),
typeof( FlameCrawler ),
typeof( Scorpion ),
typeof( Mantis ),
typeof( SandScorpion ),
typeof( DeadlyScorpion ),
typeof( SeaSerpent ),
typeof( Shade ),
typeof( ShadowWyrm ),
typeof( Sheep ),
typeof( BoneDrake ),
typeof( SkeletalDragon ),
typeof( VampiricDragon ),
typeof( VampiricDrake ),
typeof( SkeletalMage ),
typeof( SkeletonArcher ),
typeof( Snake ),
typeof( SnowLeopard ),
typeof( Spectre ),
typeof( StoneGargoyle ),
typeof( StoneHarpy ),
typeof( StormGiant ),
typeof( ShadowTitan ),
typeof( SandGiant ),
typeof( JungleGiant ),
typeof( Succubus ),
typeof( SwampTentacle ),
typeof( AntaurWorker ),
typeof( AntaurSoldier ),
typeof( AntaurLord ),
typeof( AntaurQueen ),
typeof( TerathanAvenger ),
typeof( TerathanDrone ),
typeof( TerathanMatriarch ),
typeof( TerathanWarrior ),
typeof( TimberWolf ),
typeof( Titan ),
typeof( Troll ),
typeof( Yeti ),
typeof( Bugbear ),
typeof( Unicorn ),
typeof( DreadHorn ),
typeof( WaterElemental ),
typeof( DeepSeaElemental ),
typeof( WhippingVine ),
typeof( WhiteWolf ),
typeof( Wraith ),
typeof( AncientWyvern ),
typeof( Wyvern ),
typeof( Pharaoh ),
typeof( LichLord ),
typeof( Nazghoul ),
typeof( Demilich ),
typeof( VampireLord ),
typeof( SkeletalKnight ),
typeof( Bat ),
typeof( VampireBat ),
typeof( CaveBat ),
typeof( Stirge ),
typeof( ArcaneScarab ),
typeof( Werewolf ),
typeof( Scarab ),
typeof( GoraxHorned ),
typeof( GoraxSlicer ),
typeof( GiantScarab ),
typeof( IronBeetle ),
typeof( Beetle )
} )
};
}
}