#W# Initial Commit: Avatars Conquest
This commit is contained in:
commit
5df497787a
7510 changed files with 416048 additions and 0 deletions
106
Scripts/Commands/Wipe.cs
Normal file
106
Scripts/Commands/Wipe.cs
Normal file
|
|
@ -0,0 +1,106 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using Server;
|
||||
using Server.Items;
|
||||
using Server.Multis;
|
||||
using Server.Targeting;
|
||||
|
||||
namespace Server.Commands
|
||||
{
|
||||
public class Wipe
|
||||
{
|
||||
[Flags]
|
||||
public enum WipeType
|
||||
{
|
||||
Items = 0x01,
|
||||
Mobiles = 0x02,
|
||||
Multis = 0x04,
|
||||
All = Items | Mobiles | Multis
|
||||
}
|
||||
|
||||
public static void Initialize()
|
||||
{
|
||||
CommandSystem.Register( "Wipe", AccessLevel.GameMaster, new CommandEventHandler( WipeAll_OnCommand ) );
|
||||
CommandSystem.Register( "WipeItems", AccessLevel.GameMaster, new CommandEventHandler( WipeItems_OnCommand ) );
|
||||
CommandSystem.Register( "WipeNPCs", AccessLevel.GameMaster, new CommandEventHandler( WipeNPCs_OnCommand ) );
|
||||
CommandSystem.Register( "WipeMultis", AccessLevel.GameMaster, new CommandEventHandler( WipeMultis_OnCommand ) );
|
||||
}
|
||||
|
||||
[Usage( "Wipe" )]
|
||||
[Description( "Wipes all items and npcs in a targeted bounding box." )]
|
||||
private static void WipeAll_OnCommand( CommandEventArgs e )
|
||||
{
|
||||
BeginWipe( e.Mobile, WipeType.Items | WipeType.Mobiles );
|
||||
}
|
||||
|
||||
[Usage( "WipeItems" )]
|
||||
[Description( "Wipes all items in a targeted bounding box." )]
|
||||
private static void WipeItems_OnCommand( CommandEventArgs e )
|
||||
{
|
||||
BeginWipe( e.Mobile, WipeType.Items );
|
||||
}
|
||||
|
||||
[Usage( "WipeNPCs" )]
|
||||
[Description( "Wipes all npcs in a targeted bounding box." )]
|
||||
private static void WipeNPCs_OnCommand( CommandEventArgs e )
|
||||
{
|
||||
BeginWipe( e.Mobile, WipeType.Mobiles );
|
||||
}
|
||||
|
||||
[Usage( "WipeMultis" )]
|
||||
[Description( "Wipes all multis in a targeted bounding box." )]
|
||||
private static void WipeMultis_OnCommand( CommandEventArgs e )
|
||||
{
|
||||
BeginWipe( e.Mobile, WipeType.Multis );
|
||||
}
|
||||
|
||||
public static void BeginWipe( Mobile from, WipeType type )
|
||||
{
|
||||
BoundingBoxPicker.Begin( from, new BoundingBoxCallback( WipeBox_Callback ), type );
|
||||
}
|
||||
|
||||
private static void WipeBox_Callback( Mobile from, Map map, Point3D start, Point3D end, object state )
|
||||
{
|
||||
DoWipe( from, map, start, end, (WipeType)state );
|
||||
}
|
||||
|
||||
public static void DoWipe( Mobile from, Map map, Point3D start, Point3D end, WipeType type )
|
||||
{
|
||||
CommandLogging.WriteLine( from, "{0} {1} wiping from {2} to {3} in {5} ({4})", from.AccessLevel, CommandLogging.Format( from ), start, end, type, map );
|
||||
|
||||
bool mobiles = ( (type & WipeType.Mobiles) != 0 );
|
||||
bool multis = ( (type & WipeType.Multis) != 0 );
|
||||
bool items = ( (type & WipeType.Items) != 0 );
|
||||
|
||||
List<IEntity> toDelete = new List<IEntity>();
|
||||
|
||||
Rectangle2D rect = new Rectangle2D( start.X, start.Y, end.X - start.X + 1, end.Y - start.Y + 1 );
|
||||
|
||||
IPooledEnumerable eable;
|
||||
|
||||
if ( (items || multis) && mobiles )
|
||||
eable = map.GetObjectsInBounds( rect );
|
||||
else if ( items || multis )
|
||||
eable = map.GetItemsInBounds( rect );
|
||||
else if ( mobiles )
|
||||
eable = map.GetMobilesInBounds( rect );
|
||||
else
|
||||
return;
|
||||
|
||||
foreach ( IEntity obj in eable )
|
||||
{
|
||||
if ( items && (obj is Item) && !((obj is BaseMulti) || (obj is HouseSign)) )
|
||||
toDelete.Add( obj );
|
||||
else if ( multis && (obj is BaseMulti) )
|
||||
toDelete.Add( obj );
|
||||
else if ( mobiles && (obj is Mobile) && !((Mobile)obj).Player )
|
||||
toDelete.Add( obj );
|
||||
}
|
||||
|
||||
eable.Free();
|
||||
|
||||
for ( int i = 0; i < toDelete.Count; ++i )
|
||||
toDelete[i].Delete();
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue