diff --git a/Scripts/Engines/Spawner/DynamicSpawner/SpawnList.cs b/Scripts/Engines/Spawner/DynamicSpawner/SpawnList.cs index 25a183c..5144645 100644 --- a/Scripts/Engines/Spawner/DynamicSpawner/SpawnList.cs +++ b/Scripts/Engines/Spawner/DynamicSpawner/SpawnList.cs @@ -133,6 +133,13 @@ namespace Server typeof( Boar ), typeof( BlackBear ), typeof( BrownBear ), typeof( GreyWolf ) }; + +//-------------------------------------- WaterCreatures ------------------------------------------------ + private static Type[] WaterCreatures = new Type[] + { + typeof( WaterElemental ), typeof( Dolphin ), typeof( DeepSeaSerpent ), + typeof( Leviathan ), typeof( SeaSerpent ), typeof( Kraken ) + }; //-------------------------------------- Tier A------------------------------------------------ private static Type[] Dirt_A = new Type[] @@ -474,6 +481,11 @@ namespace Server else if ( terrain == Terrain.Dirt ) m = Construct( DirtAnimals ) as Mobile; } + else if ( spawn is SpawnWater ) + { + if ( terrain == Terrain.Water ) + m = Construct( WaterCreatures ) as Mobile; + } else if ( spawn is Spawn_A ) { if ( terrain == Terrain.Forest ) diff --git a/Scripts/Engines/Spawner/DynamicSpawner/SpawnRef.cs b/Scripts/Engines/Spawner/DynamicSpawner/SpawnRef.cs index 83fb5bf..9958ee4 100644 --- a/Scripts/Engines/Spawner/DynamicSpawner/SpawnRef.cs +++ b/Scripts/Engines/Spawner/DynamicSpawner/SpawnRef.cs @@ -69,7 +69,13 @@ namespace Server.Items { Point3D savedLocation = this.Location; Map savedMap = this.Map; - + Region reg = Region.Find( savedLocation, savedMap ); + if ( reg is Server.Regions.TownRegion || + reg is Server.Regions.GuardedRegion ) + { + this.Delete(); + return; + } m_TrackedMobile = Server.SpawnList.RandomSpawn( this, savedLocation, savedMap ); if ( m_TrackedMobile != null ) @@ -143,4 +149,9 @@ namespace Server.Items [Constructable] public Spawn_E(){} public Spawn_E( Serial serial ) : base( serial ){} public override void Serialize( GenericWriter writer ){ base.Serialize( writer ); writer.Write( (int) 0 ); } public override void Deserialize( GenericReader reader ){ base.Deserialize( reader ); int version = reader.ReadInt(); } } +public class SpawnWater : BaseSpawner + { + [Constructable] + public SpawnWater(){} public SpawnWater( Serial serial ) : base( serial ){} public override void Serialize( GenericWriter writer ){ base.Serialize( writer ); writer.Write( (int) 0 ); } public override void Deserialize( GenericReader reader ){ base.Deserialize( reader ); int version = reader.ReadInt(); } + } } diff --git a/Scripts/Engines/Spawner/DynamicSpawner/SpawnRef.cs.bak b/Scripts/Engines/Spawner/DynamicSpawner/SpawnRef.cs.bak deleted file mode 100644 index 0ad881e..0000000 --- a/Scripts/Engines/Spawner/DynamicSpawner/SpawnRef.cs.bak +++ /dev/null @@ -1,148 +0,0 @@ -using System; -using Server; - -namespace Server.Items -{ - public abstract class BaseSpawner : Item - { - private Mobile m_TrackedMobile; - private Timer m_TrackerTimer; - - public BaseSpawner() : base( 0x6519 ) - { - Name = "spawn ref"; - Visible = false; - Movable = false; - // Snappy 1-second timer to place the mob - Timer.DelayCall( TimeSpan.FromSeconds( 1.0 ), new TimerCallback( ExecuteSpawn ) ); - } - - public BaseSpawner( Serial serial ) : base( serial ) - { - } - - public override void Serialize( GenericWriter writer ) - { - base.Serialize( writer ); - writer.Write( (int) 0 ); // version - - // Save the mobile we are tracking in case the server restarts - writer.Write( m_TrackedMobile ); - } - - public override void Deserialize( GenericReader reader ) - { - base.Deserialize( reader ); - int version = reader.ReadInt(); - m_TrackedMobile = reader.ReadMobile(); - - if ( m_TrackedMobile != null && !m_TrackedMobile.Deleted ) - { - StartTracking(); - } - else - { - // Clean up abandoned proxies on restart - Timer.DelayCall( TimeSpan.FromSeconds( 1.0 ), new TimerCallback( this.Delete ) ); - } - } - - private void ExecuteSpawn() - { - if ( !this.Deleted && this.Map != null && this.Map != Map.Internal ) - { - Point3D savedLocation = this.Location; - Map savedMap = this.Map; - - m_TrackedMobile = Server.SpawnList.RandomSpawn( this, savedLocation, savedMap ); - - if ( m_TrackedMobile != null ) - { - m_TrackedMobile.MoveToWorld( savedLocation, savedMap ); - - // Hide this proxy item in the void instead of deleting it - this.Internalize(); - StartTracking(); - } - else - { - this.Delete(); - } - } - else if ( !this.Deleted ) - { - this.Delete(); - } - } - - private void StartTracking() - { - if ( m_TrackerTimer != null ) - m_TrackerTimer.Stop(); - - // Ping every 5 seconds to check if the animal is still alive - m_TrackerTimer = Timer.DelayCall( TimeSpan.FromSeconds( 5.0 ), TimeSpan.FromSeconds( 5.0 ), new TimerCallback( TrackMobile ) ); - } - - private void TrackMobile() - { - if ( m_TrackedMobile == null || m_TrackedMobile.Deleted || !m_TrackedMobile.Alive ) - { - if ( m_TrackerTimer != null ) - m_TrackerTimer.Stop(); - - // Kill this proxy item so the Premium Spawner knows it's time to respawn! - if ( !this.Deleted ) - this.Delete(); - } - } - } - - public class SpawnAnimals : BaseSpawner - { - [Constructable] - public SpawnAnimals(){} public SpawnAnimals( Serial serial ) : base( serial ){} public override void Serialize( GenericWriter writer ){ base.Serialize( writer ); writer.Write( (int) 0 ); } public override void Deserialize( GenericReader reader ){ base.Deserialize( reader ); int version = reader.ReadInt(); } - } - - public class SpawnBirds : BaseSpawner - { - [Constructable] - public SpawnBirds(){} public SpawnBirds( Serial serial ) : base( serial ){} public override void Serialize( GenericWriter writer ){ base.Serialize( writer ); writer.Write( (int) 0 ); } public override void Deserialize( GenericReader reader ){ base.Deserialize( reader ); int version = reader.ReadInt(); } - } - - public class SpawnCritters : BaseSpawner - { - [Constructable] - public SpawnCritters(){} public SpawnCritters( Serial serial ) : base( serial ){} public override void Serialize( GenericWriter writer ){ base.Serialize( writer ); writer.Write( (int) 0 ); } public override void Deserialize( GenericReader reader ){ base.Deserialize( reader ); int version = reader.ReadInt(); } - } - - public class Spawn_A : BaseSpawner - { - [Constructable] - public Spawn_A(){} public Spawn_A( Serial serial ) : base( serial ){} public override void Serialize( GenericWriter writer ){ base.Serialize( writer ); writer.Write( (int) 0 ); } public override void Deserialize( GenericReader reader ){ base.Deserialize( reader ); int version = reader.ReadInt(); } - } - - public class Spawn_B : BaseSpawner - { - [Constructable] - public Spawn_B(){} public Spawn_B( Serial serial ) : base( serial ){} public override void Serialize( GenericWriter writer ){ base.Serialize( writer ); writer.Write( (int) 0 ); } public override void Deserialize( GenericReader reader ){ base.Deserialize( reader ); int version = reader.ReadInt(); } - } - - public class Spawn_C : BaseSpawner - { - [Constructable] - public Spawn_C(){} public Spawn_C( Serial serial ) : base( serial ){} public override void Serialize( GenericWriter writer ){ base.Serialize( writer ); writer.Write( (int) 0 ); } public override void Deserialize( GenericReader reader ){ base.Deserialize( reader ); int version = reader.ReadInt(); } - } - - public class Spawn_D : BaseSpawner - { - [Constructable] - public Spawn_D(){} public Spawn_D( Serial serial ) : base( serial ){} public override void Serialize( GenericWriter writer ){ base.Serialize( writer ); writer.Write( (int) 0 ); } public override void Deserialize( GenericReader reader ){ base.Deserialize( reader ); int version = reader.ReadInt(); } - } - - public class Spawn_E : BaseSpawner - { - [Constructable] - public Spawn_E(){} public Spawn_E( Serial serial ) : base( serial ){} public override void Serialize( GenericWriter writer ){ base.Serialize( writer ); writer.Write( (int) 0 ); } public override void Deserialize( GenericReader reader ){ base.Deserialize( reader ); int version = reader.ReadInt(); } - } -}