public override bool OnDragDrop(Mobile from, Item dropped) { int val = 0; if (dropped is BankCheck) { val = ((BankCheck)dropped).Worth; } if (dropped is Gold) { val = ((Gold)dropped).Amount; } if (m_UnpaidEntries.ContainsKey(from)) { TownCrierEntry tce = (TownCrierEntry)m_UnpaidEntries[from]; if (val >= tce.CalculateCost()) { LogHelper Logger = new LogHelper("TownCrier.log", false, true); Logger.Log(LogType.Mobile, from); foreach (string s in tce.Lines) { Logger.Log(s); } Logger.Finish(); SayTo(from, "Thankee! I will tell the others of thy message."); foreach (NetState state in NetState.Instances) { Mobile m = state.Mobile; if (m != null && m.AccessLevel >= AccessLevel.Counselor) { m.SendMessage("{0}, {1} has posted the following message to the Town Criers:", from.Name, from.Serial); foreach (string s in tce.Lines) { m.SendMessage(s); } m.SendMessage("This message will run for {0}.", ((TimeSpan)(tce.ExpireTime - DateTime.Now)).ToString()); } } GlobalTownCrierEntryList.Instance.AddEntry(tce); m_UnpaidEntries.Remove(from); dropped.Delete(); return(true); } else { SayTo(from, "Dost thou attempt to cheat me? {0} gold is my price.", tce.CalculateCost()); return(false); } } return(base.OnDragDrop(from, dropped)); }
public override void OnCancel(Mobile from) { if (m_Entry != null) { try { if (from.AccessLevel < AccessLevel.GameMaster) { from.SendMessage("A partial refund was delivered to your bank account."); from.BankBox.DropItem(new Gold(m_Entry.CalculateCost())); } } catch { from.SendMessage("An error occurred while trying to put a refund in your bank account. Contact a Game Master immediately."); } m_Owner.RemoveEntry(m_Entry); } if (m_Lines.Count > 0) { if (from.AccessLevel < AccessLevel.GameMaster) { TownCrierEntry tce = new TownCrierEntry((string[])m_Lines.ToArray(typeof(string)), m_Duration, from.Serial); TownCrier.AddUnpaidEntry(from, tce); from.SendMessage("This message will cost {0}gp. Drag gold or a check onto a Town Crier to pay.", tce.CalculateCost()); } else { m_Owner.AddEntry(new TownCrierEntry((string[])m_Lines.ToArray(typeof(string)), m_Duration, from.Serial)); from.SendMessage("Message has been set."); } } else { if (m_Entry != null) { from.SendMessage("Message deleted."); } else { from.SendLocalizedMessage(502980); // Message entry cancelled. } } from.SendGump(new TownCrierGump(from, m_Owner)); }
public override void OnCancel( Mobile from ) { if ( m_Entry != null ) { try { if (from.AccessLevel < AccessLevel.GameMaster) { from.SendMessage("A partial refund was delivered to your bank account."); from.BankBox.DropItem(new Gold(m_Entry.CalculateCost())); } } catch { from.SendMessage("An error occurred while trying to put a refund in your bank account. Contact a Game Master immediately."); } m_Owner.RemoveEntry( m_Entry ); } if ( m_Lines.Count > 0 ) { if (from.AccessLevel < AccessLevel.GameMaster) { TownCrierEntry tce = new TownCrierEntry((string[])m_Lines.ToArray( typeof( string ) ), m_Duration, from.Serial ); TownCrier.AddUnpaidEntry(from, tce); from.SendMessage("This message will cost {0}gp. Drag gold or a check onto a Town Crier to pay.", tce.CalculateCost()); } else { m_Owner.AddEntry( new TownCrierEntry((string[])m_Lines.ToArray(typeof(string)), m_Duration, from.Serial) ); from.SendMessage( "Message has been set." ); } } else { if ( m_Entry != null ) from.SendMessage( "Message deleted." ); else from.SendLocalizedMessage( 502980 ); // Message entry cancelled. } from.SendGump( new TownCrierGump( from, m_Owner ) ); }