using System; using System.IO; using System.Collections; using Server; using Server.Regions; namespace Server { public class UnderworldEntrance : BaseRegion { private const int Range = 10; // No house may be placed within 5 tiles of the entrances public UnderworldEntrance( int x, int y, Map map ): base( null, map, Region.DefaultPriority, new Rectangle2D( x - Range, y - Range, 1 + (Range * 2), 1 + (Range * 2) ) ) { GoLocation = new Point3D( x, y, map.GetAverageZ( x, y ) ); Register(); } public static void Initialize() { string filePath = Path.Combine( Core.BaseDirectory, "Data/Config/entrances.cfg" ); int i = 0, x = 0, y = 0; if ( File.Exists( filePath ) ) { using ( StreamReader ip = new StreamReader( filePath ) ) { string line; while ( (line = ip.ReadLine()) != null ) { i++; try { string[] split = line.Split( ' ' ); x = Convert.ToInt32( split[0] ); y = Convert.ToInt32( split[1] ); try { new UnderworldEntrance( x, y, Map.Britannia ); } catch ( Exception e ) { Console.WriteLine( "{0} {1} {2} {3}", i, x, y, e ); } } catch { Console.WriteLine( "Warning: Error in Line '{0}' of Data/Config/treasure.cfg", line ); } } } } } public override bool AllowHousing( Mobile from, Point3D p ) { return false; } public override void OnEnter( Mobile m ) { if ( m.AccessLevel > AccessLevel.Player ) m.SendMessage( "You have entered a protected underworld entrance area." ); } public override void OnExit( Mobile m ) { if ( m.AccessLevel > AccessLevel.Player ) m.SendMessage( "You have left a protected underworld entrance area." ); } } }