protected override void OnTarget(Mobile from, object targeted) { PlayerMobile pm = targeted as PlayerMobile; if (pm == null) { from.SendMessage("Speech logs aren't supported on that target."); } else if (from != targeted && from.AccessLevel <= pm.AccessLevel && from.AccessLevel != AccessLevel.Owner) { from.SendMessage("You don't have the required access level to view {0} speech log.", pm.Female ? "her" : "his"); } else if (pm.SpeechLog == null) { from.SendMessage("{0} has no speech log.", pm.Female ? "She" : "He"); } else { CommandLogging.WriteLine(from, "{0} {1} viewing speech log of {2}", from.AccessLevel, CommandLogging.Format(from), CommandLogging.Format(targeted)); Gump gump = new SpeechLogGump(pm, pm.SpeechLog); from.SendGump(gump); } }
public override void OnResponse(NetState state, RelayInfo info) { if (info.ButtonID != 0 && PageQueue.List.IndexOf(m_Entry) < 0) { state.Mobile.SendGump(new PageQueueGump()); state.Mobile.SendMessage("That page has been removed."); return; } switch (info.ButtonID) { case 0: // close { if (m_Entry.Handler != state.Mobile) { PageQueueGump g = new PageQueueGump(); g.SendTo(state); } break; } case 1: // go to sender { Mobile m = state.Mobile; if (m_Entry.Sender.Deleted) { m.SendMessage("That character no longer exists."); } else if (m_Entry.Sender.Map == null || m_Entry.Sender.Map == Map.Internal) { m.SendMessage("That character is not in the world."); } else { m_Entry.AddResponse(state.Mobile, "[Go Sender]"); m.MoveToWorld(m_Entry.Sender.Location, m_Entry.Sender.Map); m.SendMessage("You have been teleported to that page's sender."); Resend(state); } break; } case 2: // go to handler { Mobile m = state.Mobile; Mobile h = m_Entry.Handler; if (h != null) { if (h.Deleted) { m.SendMessage("That character no longer exists."); } else if (h.Map == null || h.Map == Map.Internal) { m.SendMessage("That character is not in the world."); } else { m_Entry.AddResponse(state.Mobile, "[Go Handler]"); m.MoveToWorld(h.Location, h.Map); m.SendMessage("You have been teleported to that page's handler."); Resend(state); } } else { m.SendMessage("Nobody is handling that page."); Resend(state); } break; } case 3: // go to page location { Mobile m = state.Mobile; if (m_Entry.PageMap == null || m_Entry.PageMap == Map.Internal) { m.SendMessage("That location is not in the world."); } else { m_Entry.AddResponse(state.Mobile, "[Go PageLoc]"); m.MoveToWorld(m_Entry.PageLocation, m_Entry.PageMap); state.Mobile.SendMessage("You have been teleported to the original page location."); Resend(state); } break; } case 4: // handle page { if (m_Entry.Handler == null) { m_Entry.AddResponse(state.Mobile, "[Handling]"); m_Entry.Handler = state.Mobile; state.Mobile.SendMessage("You are now handling the page."); } else { state.Mobile.SendMessage("Someone is already handling that page."); } Resend(state); break; } case 5: // delete page { if (m_Entry.Handler == null) { m_Entry.AddResponse(state.Mobile, "[Deleting]"); PageQueue.Remove(m_Entry); state.Mobile.SendMessage("You delete the page."); PageQueueGump g = new PageQueueGump(); g.SendTo(state); } else { state.Mobile.SendMessage("Someone is handling that page, it can not be deleted."); Resend(state); } break; } case 6: // abandon page { if (m_Entry.Handler == state.Mobile) { m_Entry.AddResponse(state.Mobile, "[Abandoning]"); state.Mobile.SendMessage("You abandon the page."); m_Entry.Handler = null; } else { state.Mobile.SendMessage("You are not handling that page."); } Resend(state); break; } case 7: // page handled { if (m_Entry.Handler == state.Mobile) { m_Entry.AddResponse(state.Mobile, "[Handled]"); PageQueue.Remove(m_Entry); m_Entry.Handler = null; state.Mobile.SendMessage("You mark the page as handled, and remove it from the queue."); PageQueueGump g = new PageQueueGump(); g.SendTo(state); } else { state.Mobile.SendMessage("You are not handling that page."); Resend(state); } break; } case 8: // Send message { TextRelay text = info.GetTextEntry(0); if (text != null) { m_Entry.AddResponse(state.Mobile, "[Response] " + text.Text); m_Entry.Sender.SendGump(new MessageSentGump(m_Entry.Sender, state.Mobile.Name, text.Text)); //m_Entry.Sender.SendMessage( 0x482, "{0} tells you:", state.Mobile.Name ); //m_Entry.Sender.SendMessage( 0x482, text.Text ); } Resend(state); break; } case 9: // predef overview { Resend(state); state.Mobile.SendGump(new PredefGump(state.Mobile, null)); break; } case 10: // View Speech Log { Resend(state); if (m_Entry.SpeechLog != null) { Gump gump = new SpeechLogGump(m_Entry.Sender, m_Entry.SpeechLog); state.Mobile.SendGump(gump); } break; } default: { int index = info.ButtonID - 100; ArrayList preresp = PredefinedResponse.List; if (index >= 0 && index < preresp.Count) { m_Entry.AddResponse(state.Mobile, "[PreDef] " + ((PredefinedResponse)preresp[index]).Title); m_Entry.Sender.SendGump(new MessageSentGump(m_Entry.Sender, state.Mobile.Name, ((PredefinedResponse)preresp[index]).Message)); } Resend(state); break; } } }