diff --git a/Scripts/Engines/CannedEvil/ChampionPlatform.cs b/Scripts/Engines/CannedEvil/ChampionPlatform.cs index f808f2150..95fab394a 100644 --- a/Scripts/Engines/CannedEvil/ChampionPlatform.cs +++ b/Scripts/Engines/CannedEvil/ChampionPlatform.cs @@ -9,38 +9,42 @@ namespace Server.Engines.CannedEvil { private ChampionSpawn m_Spawn; - public ChampionPlatform( ChampionSpawn spawn ) + public ChampionPlatform( ChampionSpawn spawn ) : this ( spawn, false ) + { + } + + public ChampionPlatform( ChampionSpawn spawn, bool rebuild ) { m_Spawn = spawn; for ( int x = -2; x <= 2; ++x ) for ( int y = -2; y <= 2; ++y ) - AddComponent( 0x750, x, y, -5 ); + AddComponent( m_Spawn.PlatformData.ItemIDPlaformBlocks, x, y, -5 ); for ( int x = -1; x <= 1; ++x ) for ( int y = -1; y <= 1; ++y ) - AddComponent( 0x750, x, y, 0 ); + AddComponent( m_Spawn.PlatformData.ItemIDPlaformBlocks, x, y, 0 ); for ( int i = -1; i <= 1; ++i ) { - AddComponent( 0x751, i, 2, 0 ); - AddComponent( 0x752, 2, i, 0 ); + AddComponent( m_Spawn.PlatformData.ItemIDStepsS, i, 2, 0 ); + AddComponent( m_Spawn.PlatformData.ItemIDStepsE, 2, i, 0 ); - AddComponent( 0x753, i, -2, 0 ); - AddComponent( 0x754, -2, i, 0 ); + AddComponent( m_Spawn.PlatformData.ItemIDStepsN, i, -2, 0 ); + AddComponent( m_Spawn.PlatformData.ItemIDStepsW, -2, i, 0 ); } - AddComponent( 0x759, -2, -2, 0 ); - AddComponent( 0x75A, 2, 2, 0 ); - AddComponent( 0x75B, -2, 2, 0 ); - AddComponent( 0x75C, 2, -2, 0 ); + AddComponent( m_Spawn.PlatformData.ItemIDCornerNW, -2, -2, 0 ); + AddComponent( m_Spawn.PlatformData.ItemIDCornerSE, 2, 2, 0 ); + AddComponent( m_Spawn.PlatformData.ItemIDCornerSW, -2, 2, 0 ); + AddComponent( m_Spawn.PlatformData.ItemIDCornerNE, 2, -2, 0 ); } public void AddComponent( int id, int x, int y, int z ) { AddonComponent ac = new AddonComponent( id ); - ac.Hue = 0x497; + ac.Hue = m_Spawn.PlatformData.AddonHueInactive; AddComponent( ac, x, y, z ); } @@ -49,7 +53,7 @@ namespace Server.Engines.CannedEvil { base.OnAfterDelete(); - if ( m_Spawn != null ) + if( m_Spawn != null ) m_Spawn.Delete(); } diff --git a/Scripts/Engines/CannedEvil/ChampionSpawn.cs b/Scripts/Engines/CannedEvil/ChampionSpawn.cs index 6818a29c9..227fff080 100644 --- a/Scripts/Engines/CannedEvil/ChampionSpawn.cs +++ b/Scripts/Engines/CannedEvil/ChampionSpawn.cs @@ -11,6 +11,184 @@ namespace Server.Engines.CannedEvil { public class ChampionSpawn : Item { + [CommandProperty( AccessLevel.GameMaster )] + public bool HasPlatform + { + get + { + return m_HasPlatform; + } + set + { + if( m_HasPlatform != value ) + { + m_HasPlatform = value; + + if( value == true && ( m_Platform == null || m_Platform.Deleted ) ) + { + m_Platform = new ChampionPlatform( this, false ); + } + else if( value == false && ( m_Platform != null && !m_Platform.Deleted ) ) + { + m_Platform.Delete(); + } + } + } + } + + private bool m_HasPlatform; + + [CommandProperty( AccessLevel.GameMaster )] + public bool ConfinedRoaming { get { return m_ConfinedRoaming; } set { m_ConfinedRoaming = value; } } + + [CommandProperty( AccessLevel.GameMaster )] + public bool HasBeenAdvanced { get { return m_HasBeenAdvanced; } set { m_HasBeenAdvanced = value; } } + + [CommandProperty( AccessLevel.GameMaster )] + public CustomSpawnData CustomSpawnData + { + get + { + if( m_CustomSpawnData == null ) + { + m_CustomSpawnData = new CustomSpawnData(); + } + + return m_CustomSpawnData; + } + set + { + m_CustomSpawnData = value; + } + } + + [CommandProperty( AccessLevel.GameMaster )] + public PlatformData PlatformData + { + get + { + if( m_PlatformData == null ) + { + m_PlatformData = new PlatformData(); + } + + return m_PlatformData; + } + set + { + m_PlatformData = value; + } + } + + [CommandProperty( AccessLevel.GameMaster )] + public Mobile LinkedChamp { get { return m_LinkedChamp; } set { m_LinkedChamp = value; } } + + public ChampionSpawnInfo CustomSpawnInfo + { + get + { + if( m_CustomSpawnInfo == null ) + { + m_CustomSpawnInfo = ReGenerateInfo(); + } + + return m_CustomSpawnInfo; + } + set + { + m_CustomSpawnInfo = value; + } + } + + [CommandProperty( AccessLevel.GameMaster )] + public int BaseMaxKills { get { return m_BaseMaxKills; } set { m_BaseMaxKills = value; } } + + [CommandProperty( AccessLevel.GameMaster )] + public int AdjustMaxKills { get { return m_AdjustMaxKills; } set { m_AdjustMaxKills = value; } } + + [CommandProperty( AccessLevel.GameMaster )] + public bool Traps { get { return m_Traps; } set { m_Traps = value; } } + + [CommandProperty( AccessLevel.GameMaster )] + public double TrapsDensity { get { return m_TrapsDensity; } set { m_TrapsDensity = value; } } + + [CommandProperty( AccessLevel.GameMaster )] + public double ArtifactDropChance { get { return m_ArtifactDropChance; } set { m_ArtifactDropChance = value; } } + + [CommandProperty( AccessLevel.GameMaster )] + public Type Reward { get { return m_Reward; } set { m_Reward = value; } } + + [CommandProperty( AccessLevel.GameMaster )] + public Type RewardBig { get { return m_RewardBig; } set { m_RewardBig = value; } } + + [CommandProperty( AccessLevel.GameMaster )] + public bool RandomizeType { get { return m_RandomizeType; } set { m_RandomizeType = value; } } + + [CommandProperty( AccessLevel.GameMaster )] + public int Kills { get { return m_Kills; } set { m_Kills = value; InvalidateProperties(); } } + + [CommandProperty( AccessLevel.GameMaster )] + public Rectangle2D SpawnArea { get { return m_SpawnArea; } set { m_SpawnArea = value; InvalidateProperties(); UpdateRegion(); } } + + [CommandProperty( AccessLevel.GameMaster )] + public TimeSpan RestartDelay { get { return m_RestartDelay; } set { m_RestartDelay = value; } } + + [CommandProperty( AccessLevel.GameMaster )] + public DateTime RestartTime { get { return m_RestartTime; } } + + [CommandProperty( AccessLevel.GameMaster )] + public TimeSpan ExpireDelay { get { return m_ExpireDelay; } set { m_ExpireDelay = value; } } + + [CommandProperty( AccessLevel.GameMaster )] + public DateTime ExpireTime { get { return m_ExpireTime; } set { m_ExpireTime = value; } } + + [CommandProperty( AccessLevel.GameMaster )] + public ChampionSpawnType Type { get { return m_Type; } set { m_Type = value; InvalidateProperties(); } } + + [CommandProperty( AccessLevel.GameMaster )] + public bool Active { get { return m_Active; } set { if( value ) Start(); else Stop(); InvalidateProperties(); } } + + [CommandProperty( AccessLevel.GameMaster )] + public Mobile Champion { get { return m_Champion; } set { m_Champion = value; } } + + [CommandProperty( AccessLevel.GameMaster )] + public int Level + { + get + { + return m_RedSkulls.Count; + } + set + { + for( int i = m_RedSkulls.Count - 1; i >= value; --i ) + { + m_RedSkulls[ i ].Delete(); + m_RedSkulls.RemoveAt( i ); + } + + for( int i = m_RedSkulls.Count; i < value; ++i ) + { + Item skull = new Item( m_PlatformData.ItemIDRedCandles ); + + skull.Hue = m_PlatformData.HueRedCandles; + skull.Movable = false; + skull.Light = LightType.Circle150; + + skull.MoveToWorld( GetRedSkullLocation( i ), Map ); + + m_RedSkulls.Add( skull ); + } + + InvalidateProperties(); + } + } + + public ChampionPlatform Platform { get { return m_Platform; } } + public ChampionAltar Altar { get { return m_Altar; } } + + private CustomSpawnData m_CustomSpawnData; + private PlatformData m_PlatformData; + private Mobile m_LinkedChamp; private bool m_Active; private bool m_RandomizeType; private ChampionSpawnType m_Type; @@ -21,39 +199,26 @@ namespace Server.Engines.CannedEvil private ChampionAltar m_Altar; private int m_Kills; private Mobile m_Champion; - - //private int m_SpawnRange; private Rectangle2D m_SpawnArea; private ChampionSpawnRegion m_Region; - private TimeSpan m_ExpireDelay; private DateTime m_ExpireTime; - private TimeSpan m_RestartDelay; private DateTime m_RestartTime; - private Timer m_Timer, m_RestartTimer; - private IdolOfTheChampion m_Idol; - private bool m_HasBeenAdvanced; private bool m_ConfinedRoaming; - + private int m_BaseMaxKills; + private int m_AdjustMaxKills; private Dictionary m_DamageEntries; - - [CommandProperty( AccessLevel.GameMaster )] - public bool ConfinedRoaming - { - get { return m_ConfinedRoaming; } - set { m_ConfinedRoaming = value; } - } - - [CommandProperty( AccessLevel.GameMaster )] - public bool HasBeenAdvanced - { - get { return m_HasBeenAdvanced; } - set { m_HasBeenAdvanced = value; } - } + private ChampionSpawnInfo m_CustomSpawnInfo; + private Type m_RewardBig; + private Type m_Reward; + private double m_ArtifactDropChance; + private double m_TrapsDensity; + private bool m_Traps; + private bool m_Rebuild; [Constructable] public ChampionSpawn() : base( 0xBD2 ) @@ -74,15 +239,96 @@ namespace Server.Engines.CannedEvil m_DamageEntries = new Dictionary(); + m_CustomSpawnData = new CustomSpawnData(); + + Z += 20; + Timer.DelayCall( TimeSpan.Zero, new TimerCallback( SetInitialSpawnArea ) ); } public void SetInitialSpawnArea() { - //Previous default used to be 24; SpawnArea = new Rectangle2D( new Point2D( X - 24, Y - 24 ), new Point2D( X + 24, Y + 24 ) ); } + private bool Validate() + { + return ( + ( m_CustomSpawnData.ChampType != null || m_LinkedChamp != null ) && + + ( m_CustomSpawnData.MobLevel1A != null && m_CustomSpawnData.MobLevel1B != null ) && + ( m_CustomSpawnData.MobLevel2A != null && m_CustomSpawnData.MobLevel2B != null ) && + ( m_CustomSpawnData.MobLevel3A != null && m_CustomSpawnData.MobLevel3B != null ) && + ( m_CustomSpawnData.MobLevel4A != null && m_CustomSpawnData.MobLevel4B != null ) && + + m_CustomSpawnData.SpawnName != null && + m_CustomSpawnData.TitleLevel1 != null && + m_CustomSpawnData.TitleLevel2 != null && + m_CustomSpawnData.TitleLevel3 != null && + m_CustomSpawnData.ChampType != null + ); + } + + public ChampionSpawnInfo ReGenerateInfo() + { + if( !Validate() ) + { + return null; + } + + return new ChampionSpawnInfo + ( + m_CustomSpawnData.SpawnName, + ConvertToMobileType( m_CustomSpawnData.ChampType ), + new string[] + { + m_CustomSpawnData.TitleLevel1, + m_CustomSpawnData.TitleLevel2, + m_CustomSpawnData.TitleLevel3 + }, + new Type[][] + { + new Type[]{ ConvertToMobileType( m_CustomSpawnData.MobLevel1A ), ConvertToMobileType( m_CustomSpawnData.MobLevel1B ) }, + new Type[]{ ConvertToMobileType( m_CustomSpawnData.MobLevel2A ), ConvertToMobileType( m_CustomSpawnData.MobLevel2B ) }, + new Type[]{ ConvertToMobileType( m_CustomSpawnData.MobLevel3A ), ConvertToMobileType( m_CustomSpawnData.MobLevel3B ) }, + new Type[]{ ConvertToMobileType( m_CustomSpawnData.MobLevel4A ), ConvertToMobileType( m_CustomSpawnData.MobLevel4B ) } + } + ); + } + + private Type ConvertToMobileType( string type ) + { + try + { + if( type != null ) + { + Type newType = ScriptCompiler.FindTypeByName( type, true ); + + if( newType != null ) + { + return newType; + } + } + } + catch + { + } + + return null; + } + + private Item GetCustomDrop() + { + Type type = ( Utility.RandomDouble() < .34 ) ? m_RewardBig.GetType() : m_Reward.GetType(); + + if( type != null ) + { + return InstantiateObject( type ) as Item; + } + + return null; + } + public void UpdateRegion() { if( m_Region != null ) @@ -93,189 +339,9 @@ namespace Server.Engines.CannedEvil m_Region = new ChampionSpawnRegion( this ); m_Region.Register(); } - - /* - if( m_Region == null ) - { - m_Region = new ChampionSpawnRegion( this ); - } - else - { - m_Region.Unregister(); - //Why doesn't Region allow me to set it's map/Area meself? >< - m_Region = new ChampionSpawnRegion( this ); - } - */ } - [CommandProperty( AccessLevel.GameMaster )] - public bool RandomizeType - { - get { return m_RandomizeType; } - set { m_RandomizeType = value; } - } - - [CommandProperty( AccessLevel.GameMaster )] - public int Kills - { - get - { - return m_Kills; - } - set - { - m_Kills = value; - InvalidateProperties(); - } - } - - [CommandProperty( AccessLevel.GameMaster )] - public Rectangle2D SpawnArea - { - get - { - return m_SpawnArea; - } - set - { - m_SpawnArea = value; - InvalidateProperties(); - UpdateRegion(); - } - } - - [CommandProperty( AccessLevel.GameMaster )] - public TimeSpan RestartDelay - { - get - { - return m_RestartDelay; - } - set - { - m_RestartDelay = value; - } - } - - [CommandProperty( AccessLevel.GameMaster )] - public DateTime RestartTime - { - get - { - return m_RestartTime; - } - } - - [CommandProperty( AccessLevel.GameMaster )] - public TimeSpan ExpireDelay - { - get - { - return m_ExpireDelay; - } - set - { - m_ExpireDelay = value; - } - } - - [CommandProperty( AccessLevel.GameMaster )] - public DateTime ExpireTime - { - get - { - return m_ExpireTime; - } - set - { - m_ExpireTime = value; - } - } - - [CommandProperty( AccessLevel.GameMaster )] - public ChampionSpawnType Type - { - get - { - return m_Type; - } - set - { - m_Type = value; - InvalidateProperties(); - } - } - - [CommandProperty( AccessLevel.GameMaster )] - public bool Active - { - get - { - return m_Active; - } - set - { - if( value ) - Start(); - else - Stop(); - - InvalidateProperties(); - } - } - - [CommandProperty( AccessLevel.GameMaster )] - public Mobile Champion - { - get - { - return m_Champion; - } - set - { - m_Champion = value; - } - } - - [CommandProperty( AccessLevel.GameMaster )] - public int Level - { - get - { - return m_RedSkulls.Count; - } - set - { - for( int i = m_RedSkulls.Count - 1; i >= value; --i ) - { - m_RedSkulls[i].Delete(); - m_RedSkulls.RemoveAt( i ); - } - - for( int i = m_RedSkulls.Count; i < value; ++i ) - { - Item skull = new Item( 0x1854 ); - - skull.Hue = 0x26; - skull.Movable = false; - skull.Light = LightType.Circle150; - - skull.MoveToWorld( GetRedSkullLocation( i ), Map ); - - m_RedSkulls.Add( skull ); - } - - InvalidateProperties(); - } - } - - public int MaxKills - { - get - { - return 250 - (Level * 12); - } - } + public int MaxKills { get { return m_BaseMaxKills - ( Level * m_AdjustMaxKills ); } } public bool IsChampionSpawn( Mobile m ) { @@ -292,11 +358,11 @@ namespace Server.Engines.CannedEvil for( int i = m_WhiteSkulls.Count; i < val; ++i ) { - Item skull = new Item( 0x1854 ); + Item skull = new Item( m_PlatformData.ItemIDWhiteCandles ); skull.Movable = false; skull.Light = LightType.Circle150; - + skull.Hue = m_PlatformData.HueWhiteCandles; skull.MoveToWorld( GetWhiteSkullLocation( i ), Map ); m_WhiteSkulls.Add( skull ); @@ -328,13 +394,13 @@ namespace Server.Engines.CannedEvil if( m_Altar != null ) { if ( m_Champion != null ) - m_Altar.Hue = 0x26; + m_Altar.Hue = m_PlatformData.AddonHueChampion; else - m_Altar.Hue = 0; + m_Altar.Hue = m_PlatformData.AddonHueActive; } if ( m_Platform != null ) - m_Platform.Hue = 0x452; + m_Platform.Hue = m_PlatformData.PlatformHueActive; } public void Stop() @@ -356,10 +422,10 @@ namespace Server.Engines.CannedEvil m_RestartTimer = null; if( m_Altar != null ) - m_Altar.Hue = 0; + m_Altar.Hue = m_PlatformData.AddonHueInactive; if ( m_Platform != null ) - m_Platform.Hue = 0x497; + m_Platform.Hue = m_PlatformData.PlatformHueInactive; } public void BeginRestart( TimeSpan ts ) @@ -650,6 +716,27 @@ namespace Server.Engines.CannedEvil m_Champion.MoveToWorld( new Point3D( X, Y, Z - 15 ), Map ); } + public object InstantiateObject( object obj ) + { + if( obj is BaseCreature ) + { + try + { + object Object = Activator.CreateInstance( obj.GetType() ) as object; + + if( Object is BaseCreature || Object is Item ) + { + return Object; + } + } + catch + { + } + } + + return null; + } + public void Respawn() { if( !m_Active || Deleted || m_Champion != null ) @@ -1006,7 +1093,7 @@ namespace Server.Engines.CannedEvil { } - public virtual void RegisterDamageTo( Mobile m ) + public void RegisterDamageTo( Mobile m ) { if( m == null ) return; @@ -1276,12 +1363,15 @@ namespace Server.Engines.CannedEvil } - public IdolOfTheChampion( ChampionSpawn spawn ): base( 0x1F18 ) + public IdolOfTheChampion( ChampionSpawn spawn ) + : base( spawn.PlatformData.ItemIDIdol ) { m_Spawn = spawn; Movable = false; } + public override bool DisplayWeight { get { return false; } } + public override void OnAfterDelete() { base.OnAfterDelete(); diff --git a/Scripts/Engines/CannedEvil/ChampionSpawnType.cs b/Scripts/Engines/CannedEvil/ChampionSpawnType.cs index 78ac3c4ee..c37e910ad 100644 --- a/Scripts/Engines/CannedEvil/ChampionSpawnType.cs +++ b/Scripts/Engines/CannedEvil/ChampionSpawnType.cs @@ -1,6 +1,7 @@ using System; using Server; using Server.Mobiles; +using Server.Items; namespace Server.Engines.CannedEvil { @@ -14,7 +15,200 @@ namespace Server.Engines.CannedEvil UnholyTerror, SleepingDragon, Glade, - Pestilence + Pestilence, + Custom + } + + [NoSort] + [Parsable] + [PropertyObject] + public class PlatformData + { + [CommandProperty( AccessLevel.GameMaster )] + public Type Addon { get { return m_Addon; } set { m_Addon = value; } } + + [CommandProperty( AccessLevel.GameMaster )] + public int AddonHueActive { get { return m_AddonHueActive; } set { m_AddonHueActive = value; } } + + [CommandProperty( AccessLevel.GameMaster )] + public int AddonHueInactive { get { return m_AddonHueInactive; } set { m_AddonHueInactive = value; } } + + [CommandProperty( AccessLevel.GameMaster )] + public int AddonHueChampion { get { return m_AddonHueChampion; } set { m_AddonHueChampion = value; } } + + [CommandProperty( AccessLevel.GameMaster )] + public int PlatformHueActive { get { return m_PlaformHueActive; } set { m_PlaformHueActive = value; } } + + [CommandProperty( AccessLevel.GameMaster )] + public int PlatformHueInactive { get { return m_PlatformHueInactive; } set { m_PlatformHueInactive = value; } } + + [CommandProperty( AccessLevel.GameMaster )] + public int ItemIDPlaformBlocks { get { return m_ItemIDPlaformBlocks; } set { m_ItemIDPlaformBlocks = value; } } + + [CommandProperty( AccessLevel.GameMaster )] + public int ItemIDCornerNW { get { return m_ItemIDCornerNW; } set { m_ItemIDCornerNW = value; } } + + [CommandProperty( AccessLevel.GameMaster )] + public int ItemIDCornerSE { get { return m_ItemIDCornerSE; } set { m_ItemIDCornerSE = value; } } + + [CommandProperty( AccessLevel.GameMaster )] + public int ItemIDCornerSW { get { return m_ItemIDCornerSW; } set { m_ItemIDCornerSW = value; } } + + [CommandProperty( AccessLevel.GameMaster )] + public int ItemIDCornerNE { get { return m_ItemIDCornerNE; } set { m_ItemIDCornerNE = value; } } + + [CommandProperty( AccessLevel.GameMaster )] + public int ItemIDStepsS { get { return m_ItemIDStepsS; } set { m_ItemIDStepsS = value; } } + + [CommandProperty( AccessLevel.GameMaster )] + public int ItemIDStepsE { get { return m_ItemIDStepsE; } set { m_ItemIDStepsE = value; } } + + [CommandProperty( AccessLevel.GameMaster )] + public int ItemIDStepsN { get { return m_ItemIDStepsN; } set { m_ItemIDStepsN = value; } } + + [CommandProperty( AccessLevel.GameMaster )] + public int ItemIDStepsW { get { return m_ItemIDStepsW; } set { m_ItemIDStepsW = value; } } + + [CommandProperty( AccessLevel.GameMaster )] + public int ItemIDRedCandles { get { return m_ItemIDRedCandles; } set { m_ItemIDRedCandles = value; } } + + [CommandProperty( AccessLevel.GameMaster )] + public int HueRedCandles { get { return m_HueRedCandles; } set { m_HueRedCandles = value; } } + + [CommandProperty( AccessLevel.GameMaster )] + public int ItemIDWhiteCandles { get { return m_ItemIDWhiteCandles; } set { m_ItemIDWhiteCandles = value; } } + + [CommandProperty( AccessLevel.GameMaster )] + public int HueWhiteCandles { get { return m_HueWhiteCandles; } set { m_HueWhiteCandles = value; } } + + [CommandProperty( AccessLevel.GameMaster )] + public int ItemIDIdol { get { return m_ItemIDIdol; } set { m_ItemIDIdol = value; } } + + [CommandProperty( AccessLevel.GameMaster )] + public int HueIdol { get { return m_HueIdol; } set { m_HueIdol = value; } } + + private int m_ItemIDWhiteCandles; + private int m_ItemIDRedCandles; + private int m_ItemIDPlaformBlocks; + private int m_ItemIDCornerNE; + private int m_ItemIDCornerNW; + private int m_ItemIDCornerSW; + private int m_ItemIDCornerSE; + private int m_ItemIDStepsS; + private int m_ItemIDStepsE; + private int m_ItemIDStepsN; + private int m_ItemIDStepsW; + private int m_ItemIDIdol; + private int m_HueWhiteCandles; + private int m_HueRedCandles; + private int m_PlaformHueActive; + private int m_PlatformHueInactive; + private Type m_Addon; + private int m_AddonHueActive; + private int m_AddonHueInactive; + private int m_AddonHueChampion; + private int m_HueIdol; + + public PlatformData() + { + m_Addon = typeof( PentagramAddon ); + m_AddonHueInactive = 0x455; + m_AddonHueActive = 0; + m_AddonHueChampion = 0x26; + m_ItemIDPlaformBlocks = 0x3ee; + m_ItemIDCornerNW = 0x3f7; + m_ItemIDCornerSE = 0x3f8; + m_ItemIDCornerSW = 0x3f9; + m_ItemIDCornerNE = 0x3fa; + m_ItemIDStepsS = 0x3ef; + m_ItemIDStepsE = 0x3f0; + m_ItemIDStepsN = 0x3f1; + m_ItemIDStepsW = 0x3f2; + m_PlaformHueActive = 0x455; + m_PlatformHueInactive = 0x454; + m_ItemIDRedCandles = 0x1854; + m_HueRedCandles = 0x26; + m_ItemIDWhiteCandles = 0x1854; + m_HueWhiteCandles = 0x26; + m_ItemIDIdol = 0x1f18; + m_HueIdol = 0; + } + } + + [NoSort] + [Parsable] + [PropertyObject] + public class CustomSpawnData + { + [CommandProperty( AccessLevel.GameMaster )] + public string SpawnName { get { return m_SpawnName; } set { m_SpawnName = value; } } + + [CommandProperty( AccessLevel.GameMaster )] + public string ChampType { get { return m_ChampType; } set { m_ChampType = value; } } + + [CommandProperty( AccessLevel.GameMaster )] + public string TitleLevel1 { get { return m_TitleLevel1; } set { m_TitleLevel1 = value; } } + + [CommandProperty( AccessLevel.GameMaster )] + public string TitleLevel2 { get { return m_TitleLevel2; } set { m_TitleLevel2 = value; } } + + [CommandProperty( AccessLevel.GameMaster )] + public string TitleLevel3 { get { return m_TitleLevel3; } set { m_TitleLevel3 = value; } } + + [CommandProperty( AccessLevel.GameMaster )] + public string MobLevel1A { get { return m_MobLevel1A; } set { m_MobLevel1A = value; } } + + [CommandProperty( AccessLevel.GameMaster )] + public string MobLevel1B { get { return m_MobLevel1B; } set { m_MobLevel1B = value; } } + + [CommandProperty( AccessLevel.GameMaster )] + public string MobLevel2A { get { return m_MobLevel2A; } set { m_MobLevel2A = value; } } + + [CommandProperty( AccessLevel.GameMaster )] + public string MobLevel2B { get { return m_MobLevel2B; } set { m_MobLevel2B = value; } } + + [CommandProperty( AccessLevel.GameMaster )] + public string MobLevel3A { get { return m_MobLevel3A; } set { m_MobLevel3A = value; } } + + [CommandProperty( AccessLevel.GameMaster )] + public string MobLevel3B { get { return m_MobLevel3B; } set { m_MobLevel3B = value; } } + + [CommandProperty( AccessLevel.GameMaster )] + public string MobLevel4A { get { return m_MobLevel4A; } set { m_MobLevel4A = value; } } + + [CommandProperty( AccessLevel.GameMaster )] + public string MobLevel4B { get { return m_MobLevel4B; } set { m_MobLevel4B = value; } } + + private string m_SpawnName; + private string m_ChampType; + private string m_TitleLevel1; + private string m_TitleLevel2; + private string m_TitleLevel3; + private string m_MobLevel1A; + private string m_MobLevel1B; + private string m_MobLevel2A; + private string m_MobLevel2B; + private string m_MobLevel3A; + private string m_MobLevel3B; + private string m_MobLevel4A; + private string m_MobLevel4B; + + public CustomSpawnData() + { + m_SpawnName = "Demise"; + m_ChampType = "GreaterMongbat"; + m_TitleLevel1 = "Challenger"; + m_TitleLevel2 = "Conqueror"; + m_TitleLevel3 = "Champion"; + m_MobLevel1A = "Mongbat"; + m_MobLevel1B = "Mongbat"; + m_MobLevel2A = "Mongbat"; + m_MobLevel2B = "Mongbat"; + m_MobLevel3A = "Mongbat"; + m_MobLevel3B = "Mongbat"; + m_MobLevel4A = "Mongbat"; + m_MobLevel4B = "Mongbat"; + } } public class ChampionSpawnInfo diff --git a/Scripts/Misc/SkillCheck.cs b/Scripts/Misc/SkillCheck.cs index f9f5733b1..d69c0932d 100644 --- a/Scripts/Misc/SkillCheck.cs +++ b/Scripts/Misc/SkillCheck.cs @@ -335,7 +335,7 @@ namespace Server.Misc } } - private static TimeSpan m_StatGainDelay = TimeSpan.FromMinutes( 15.0 ); + private static TimeSpan m_StatGainDelay = TimeSpan.FromMinutes( ( Core.ML ) ? 15.0 : 0.05 ); private static TimeSpan m_PetStatGainDelay = TimeSpan.FromMinutes( 5.0 ); public static void GainStat( Mobile from, Stat stat )