public override void OnResponse( NetState state, RelayInfo info )
{
if ( m_State == null )
return;
Mobile focus = m_State.Mobile;
Mobile from = state.Mobile;
if ( focus == null )
{
from.SendMessage( "That character is no longer online." );
return;
}
else if ( focus.Deleted )
{
from.SendMessage( "That character no longer exists." );
return;
}
else if ( from != focus && focus.Hidden && from.AccessLevel < focus.AccessLevel && ( !( focus is PlayerMobile ) || !((PlayerMobile)focus).VisibilityList.Contains( from ) ) )
{
from.SendMessage( "That character is no longer visible." );
return;
}
switch ( info.ButtonID )
{
case 1: // Tell
{
TextRelay text = info.GetTextEntry( 0 );
if ( text != null )
{
focus.SendMessage( 0x482, "{0} tells you:", from.Name );
focus.SendMessage( 0x482, text.Text );
CommandLogging.WriteLine( from, "{0} {1} telling {2} \"{3}\" ", from.AccessLevel, CommandLogging.Format( from ), CommandLogging.Format( focus ), text.Text );
}
from.SendGump( new ClientGump( from, m_State ) );
break;
}
case 4: // Props
{
Resend( from, info );
if ( !BaseCommand.IsAccessible( from, focus ) )
from.SendMessage( "That is not accessible." );
else
{
from.SendGump( new PropertiesGump( from, focus ) );
CommandLogging.WriteLine( from, "{0} {1} opening properties gump of {2} ", from.AccessLevel, CommandLogging.Format( from ), CommandLogging.Format( focus ) );
}
break;
}
case 5: // Go to
{
if ( focus.Map == null || focus.Map == Map.Internal )
{
from.SendMessage( "That character is not in the world." );
}
else
{
from.MoveToWorld( focus.Location, focus.Map );
Resend( from, info );
CommandLogging.WriteLine( from, "{0} {1} going to {2}, Location {3}, Map {4}", from.AccessLevel, CommandLogging.Format( from ), CommandLogging.Format( focus ), focus.Location, focus.Map );
}
break;
}
case 6: // Get
{
if ( from.Map == null || from.Map == Map.Internal )
{
from.SendMessage( "You cannot bring that person here." );
}
else
{
focus.MoveToWorld( from.Location, from.Map );
Resend( from, info );
CommandLogging.WriteLine( from, "{0} {1} bringing {2} to Location {3}, Map {4}", from.AccessLevel, CommandLogging.Format( from ), CommandLogging.Format( focus ), from.Location, from.Map );
}
break;
}
case 7: // Move
{
from.Target = new MoveTarget( focus );
Resend( from, info );
break;
}
case 8: // Kick
{
if ( from.AccessLevel >= AccessLevel.GameMaster && from.AccessLevel > focus.AccessLevel )
{
focus.Say( "I've been kicked!" );
m_State.Dispose();
CommandLogging.WriteLine( from, "{0} {1} kicking {2} ", from.AccessLevel, CommandLogging.Format( from ), CommandLogging.Format( focus ) );
}
break;
}
case 9: // Kill
{
if ( from.AccessLevel >= AccessLevel.GameMaster && from.AccessLevel > focus.AccessLevel )
{
focus.Kill();
CommandLogging.WriteLine( from, "{0} {1} killing {2} ", from.AccessLevel, CommandLogging.Format( from ), CommandLogging.Format( focus ) );
}
Resend( from, info );
break;
}
case 10: //Res
{
if ( from.AccessLevel >= AccessLevel.GameMaster && from.AccessLevel > focus.AccessLevel )
{
focus.PlaySound( 0x214 );
focus.FixedEffect( 0x376A, 10, 16 );
focus.Resurrect();
CommandLogging.WriteLine( from, "{0} {1} resurrecting {2} ", from.AccessLevel, CommandLogging.Format( from ), CommandLogging.Format( focus ) );
}
Resend( from, info );
break;
}
case 11: // Skills
{
Resend( from, info );
if ( from.AccessLevel > focus.AccessLevel )
{
from.SendGump( new SkillsGump( from, (Mobile)focus ) );
CommandLogging.WriteLine( from, "{0} {1} Opening Skills gump of {2} ", from.AccessLevel, CommandLogging.Format( from ), CommandLogging.Format( focus ) );
}
break;
}
}
}