private static void Slap( Player player, Command cmd )
{
string name = cmd.Next();
string item = cmd.Next();
if ( name == null ) {
player.Message( "Please enter a name" );
return;
}
Player target = Server.FindPlayerOrPrintMatches( player, name, false, true );
if ( target == null )
return;
if ( target.Immortal ) {
player.Message( "&SYou failed to slap {0}&S, they are immortal", target.ClassyName );
return;
}
if ( target == player ) {
player.Message( "&sYou can't slap yourself.... What's wrong with you???" );
return;
}
double time = ( DateTime.UtcNow - player.Info.LastUsedSlap ).TotalSeconds;
if ( time < 10 ) {
player.Message( "&WYou can use /Slap again in " + Math.Round( 10 - time ) + " seconds." );
return;
}
if ( player.Can( Permission.Slap, target.Info.Rank ) ) {
var slap = new Position( target.Position.X, target.Position.Y, ( target.World.Map.Bounds.ZMax ) * 32 );
target.TeleportTo( slap );
string aMessage;
if ( string.IsNullOrEmpty( item ) ) {
Server.Players.CanSee( target ).Union( target ).Message( "{0} &Swas slapped sky high by {1}", target.ClassyName, player.ClassyName );
IRC.PlayerSomethingMessage( player, "slapped", target, null );
player.Info.LastUsedSlap = DateTime.UtcNow;
return;
} else switch (item.ToLower())
{
case "bakingtray":
aMessage = String.Format( "{0} &Swas slapped by {1}&S with a Baking Tray", target.ClassyName, player.ClassyName );
break;
case "fish":
aMessage = String.Format( "{0} &Swas slapped by {1}&S with a Giant Fish", target.ClassyName, player.ClassyName );
break;
case "bitchslap":
aMessage = String.Format( "{0} &Swas bitch-slapped by {1}", target.ClassyName, player.ClassyName );
break;
case "shoe":
aMessage = String.Format( "{0} &Swas slapped by {1}&S with a Shoe", target.ClassyName, player.ClassyName );
break;
default:
Server.Players.CanSee( target ).Union( target ).Message( "{0} &Swas slapped sky high by {1}", target.ClassyName, player.ClassyName );
IRC.PlayerSomethingMessage( player, "slapped", target, null );
player.Info.LastUsedSlap = DateTime.UtcNow;
return;
}
Server.Players.CanSee( target ).Union( target ).Message( aMessage );
IRC.PlayerSomethingMessage( player, "slapped", target, null );
player.Info.LastUsedSlap = DateTime.UtcNow;
return;
} else {
player.Message( "&sYou can only Slap players ranked {0}&S or lower",
player.Info.Rank.GetLimit( Permission.Slap ).ClassyName );
player.Message( "{0}&S is ranked {1}", target.ClassyName, target.Info.Rank.ClassyName );
}
}