458 lines
No EOL
11 KiB
C#
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 )
|
|
} )
|
|
};
|
|
}
|
|
} |