81 lines
No EOL
1.7 KiB
C#
81 lines
No EOL
1.7 KiB
C#
using System;
|
|
using System.Xml;
|
|
using Server;
|
|
using Server.Mobiles;
|
|
using Server.Gumps;
|
|
using Server.Network;
|
|
|
|
namespace Server.Regions
|
|
{
|
|
public class DungeonRegion : BaseRegion
|
|
{
|
|
public DungeonRegion( XmlElement xml, Map map, Region parent ) : base( xml, map, parent )
|
|
{
|
|
}
|
|
|
|
public override bool AllowHousing( Mobile from, Point3D p )
|
|
{
|
|
return false;
|
|
}
|
|
|
|
public override bool NoMounts( Mobile from, Point3D p )
|
|
{
|
|
return true;
|
|
}
|
|
|
|
public override void AlterLightLevel( Mobile m, ref int global, ref int personal )
|
|
{
|
|
global = LightCycle.DungeonLevel;
|
|
}
|
|
|
|
public override bool CanUseStuckMenu( Mobile m )
|
|
{
|
|
return false;
|
|
}
|
|
|
|
public override void OnEnter( Mobile m )
|
|
{
|
|
base.OnEnter( m );
|
|
if ( m is PlayerMobile )
|
|
m.SendMessage( "You have entered " + this.Name + "." );
|
|
}
|
|
|
|
public override void OnExit(Mobile m)
|
|
{
|
|
base.OnExit( m );
|
|
if ( m is PlayerMobile )
|
|
{
|
|
if ( !PlayersLeftInRegion( m, this ) )
|
|
{
|
|
foreach ( Mobile creature in World.Mobiles.Values )
|
|
if ( creature.Region == this && creature is BaseCreature )
|
|
{
|
|
BaseCreature dweller = (BaseCreature)creature;
|
|
Point3D loc = dweller.Home;
|
|
if ( loc.X > 0 && dweller.RangeHome < 10 && dweller.SummonMaster == null && dweller.ControlMaster == null )
|
|
{
|
|
dweller.Location = dweller.Home;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
public static bool PlayersLeftInRegion( Mobile from, Region region )
|
|
{
|
|
bool occupied = false;
|
|
|
|
foreach ( NetState state in NetState.Instances )
|
|
{
|
|
Mobile m = state.Mobile;
|
|
|
|
if ( m != null && m != from && m.Region == region )
|
|
{
|
|
occupied = true;
|
|
}
|
|
}
|
|
|
|
return occupied;
|
|
}
|
|
}
|
|
} |