using System; using System.Net; using Server; using Server.Accounting; using Server.Mobiles; using Server.Network; using Server.Targets; using Server.Commands; using Server.Commands.Generic; namespace Server.Gumps { public class ClientGump : Gump { private NetState m_State; private void Resend( Mobile to, RelayInfo info ) { TextRelay te = info.GetTextEntry( 0 ); to.SendGump( new ClientGump( to, m_State, te == null ? "" : te.Text ) ); } 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; } } } public ClientGump( Mobile from, NetState state ) : this( from, state, "" ) { } private const int LabelColor32 = 0xFFFFFF; public string Center( string text ) { return String.Format( "