RunUO/Scripts/Regions/DungeonRegion.cs

79 lines
2.3 KiB
C#

using System;
using System.Xml;
using Server;
using Server.Mobiles;
using Server.Gumps;
namespace Server.Regions
{
public class DungeonRegion : BaseRegion
{
public override bool YoungProtected { get { return false; } }
private Point3D m_EntranceLocation;
private Map m_EntranceMap;
public Point3D EntranceLocation{ get{ return m_EntranceLocation; } set{ m_EntranceLocation = value; } }
public Map EntranceMap{ get{ return m_EntranceMap; } set{ m_EntranceMap = value; } }
public DungeonRegion( XmlElement xml, Map map, Region parent ) : base( xml, map, parent )
{
XmlElement entrEl = xml["entrance"];
Map entrMap = map;
ReadMap( entrEl, "map", ref entrMap, false );
if ( ReadPoint3D( entrEl, entrMap, ref m_EntranceLocation, false ) )
m_EntranceMap = entrMap;
}
public override bool AllowHousing( Mobile from, Point3D p )
{
return false;
}
public override void AlterLightLevel( Mobile m, ref int global, ref int personal )
{
global = LightCycle.DungeonLevel;
}
public override bool CanUseStuckMenu( Mobile m )
{
if ( this.Map == Map.Felucca )
return false;
return base.CanUseStuckMenu( m );
}
public override void OnEnter( Mobile m )
{
base.OnEnter( m );
if ( m != null && m.Player )
{
m.SendMessage( "You have entered <BASEFONT COLOR='#FF0000'>{0}</BASEFONT>", this.Name);
Timer.DelayCall( TimeSpan.FromMilliseconds( 100 ), delegate()
{
if ( m != null && m.Alive )
{
Server.Commands.StableMountCommand.ForceDismountAndStore((PlayerMobile)m);
}
});
}
}
public override void OnExit( Mobile m )
{
base.OnExit( m );
if ( m != null && m.Player )
{
Timer.DelayCall( TimeSpan.FromMilliseconds( 100 ), delegate()
{
if ( m != null && m.Alive )
{
Server.Commands.RetrieveMountCommand.AutoRemountPlayer((PlayerMobile)m);
}
});
}
}
}
}