private static void EventSink_OpenDoorMacroUsed( OpenDoorMacroEventArgs args )
{
Mobile m = args.Mobile;
if ( m.Map != null )
{
int x = m.X, y = m.Y;
switch ( m.Direction & Direction.Mask )
{
case Direction.North: --y; break;
case Direction.Right: ++x; --y; break;
case Direction.East: ++x; break;
case Direction.Down: ++x; ++y; break;
case Direction.South: ++y; break;
case Direction.Left: --x; ++y; break;
case Direction.West: --x; break;
case Direction.Up: --x; --y; break;
}
Sector sector = m.Map.GetSector( x, y );
foreach ( Item item in sector.Items )
{
if ( item.Location.X == x && item.Location.Y == y && (item.Z + item.ItemData.Height) > m.Z && (m.Z + 16) > item.Z && item is BaseDoor && m.CanSee( item ) && m.InLOS( item ) )
{
if ( m.CheckAlive() )
{
m.SendLocalizedMessage( 500024 ); // Opening door...
item.OnDoubleClick( m );
}
break;
}
}
}
}