using System; using Server; using Server.Gumps; using Server.Network; namespace Server.Items { public abstract class StValentinesBear : Item { public override string DefaultName { get { if ( m_Owner != null ) return String.Format( "{0}'s St. Valentine Bear", m_Owner ); else return "St. Valentine Bear"; } } private string m_Owner; private string m_Line1; private string m_Line2; private string m_Line3; private DateTime m_EditLimit; [CommandProperty( AccessLevel.GameMaster )] public string Owner { get { return m_Owner; } set { m_Owner = value; InvalidateProperties(); } } [CommandProperty( AccessLevel.GameMaster )] public string Line1 { get { return m_Line1; } set { m_Line1 = value; InvalidateProperties(); } } [CommandProperty( AccessLevel.GameMaster )] public string Line2 { get { return m_Line2; } set { m_Line2 = value; InvalidateProperties(); } } [CommandProperty( AccessLevel.GameMaster )] public string Line3 { get { return m_Line3; } set { m_Line3 = value; InvalidateProperties(); } } [CommandProperty( AccessLevel.GameMaster )] public DateTime EditLimit { get { return m_EditLimit; } set { m_EditLimit = value; } } public bool IsSigned { get { return ( m_Line1 != null || m_Line2 != null || m_Line3 != null ); } } public bool CanSign { get { return ( !IsSigned || DateTime.UtcNow <= m_EditLimit ); } } public StValentinesBear( int itemid, string name ) : base( itemid ) { m_Owner = name; LootType = LootType.Blessed; } public override void AddNameProperty( ObjectPropertyList list ) { if ( m_Owner != null ) list.Add( 1150295, m_Owner ); // ~1_NAME~'s St. Valentine Bear else list.Add( 1150294 ); // St. Valentine Bear AddLine( list, 1150301, m_Line1 ); // [ ~1_LINE0~ ] AddLine( list, 1150302, m_Line2 ); // [ ~1_LINE1~ ] AddLine( list, 1150303, m_Line3 ); // [ ~1_LINE2~ ] } private static void AddLine( ObjectPropertyList list, int cliloc, string line ) { if ( line != null ) list.Add( cliloc, line ); } public override void OnSingleClick( Mobile from ) { base.OnSingleClick( from ); ShowLine( from, 1150301, m_Line1 ); // [ ~1_LINE0~ ] ShowLine( from, 1150302, m_Line2 ); // [ ~1_LINE1~ ] ShowLine( from, 1150303, m_Line3 ); // [ ~1_LINE2~ ] } private void ShowLine( Mobile from, int cliloc, string line ) { if ( line != null ) LabelTo( from, cliloc, line ); } public override void OnDoubleClick( Mobile from ) { if ( !CupidsArrow.CheckSeason( from ) || !CanSign ) return; if ( !IsChildOf( from.Backpack ) ) { from.SendLocalizedMessage( 1080063 ); // This must be in your backpack to use it. return; } from.SendGump( new InternalGump( this ) ); } public StValentinesBear( Serial serial ) : base( serial ) { } public override void Serialize( GenericWriter writer ) { base.Serialize( writer ); writer.Write( (int)0 ); writer.Write( m_Owner ); writer.Write( m_Line1 ); writer.Write( m_Line2 ); writer.Write( m_Line3 ); } public override void Deserialize( GenericReader reader ) { base.Deserialize( reader ); int version = reader.ReadInt(); m_Owner = Utility.Intern( reader.ReadString() ); m_Line1 = Utility.Intern( reader.ReadString() ); m_Line2 = Utility.Intern( reader.ReadString() ); m_Line3 = Utility.Intern( reader.ReadString() ); } private class InternalGump : Gump { private StValentinesBear m_Bear; public InternalGump( StValentinesBear bear ) : base( 50, 50 ) { m_Bear = bear; AddPage( 0 ); AddBackground( 0, 0, 420, 320, 9300 ); AddHtml( 10, 10, 400, 21, "