using System; using Server.Gumps; using Server.Network; namespace Server.Items { public abstract class StValentinesBear : Item { private string m_Line1; private string m_Line2; private string m_Line3; private string m_Owner; public StValentinesBear(int itemid, string name) : base(itemid) { m_Owner = name; LootType = LootType.Blessed; } public StValentinesBear(Serial serial) : base(serial) { } public override string DefaultName { get { if (m_Owner != null) return $"{m_Owner}'s St. Valentine Bear"; return "St. Valentine Bear"; } } [CommandProperty(AccessLevel.GameMaster)] public string Owner { get => m_Owner; set { m_Owner = value; InvalidateProperties(); } } [CommandProperty(AccessLevel.GameMaster)] public string Line1 { get => m_Line1; set { m_Line1 = value; InvalidateProperties(); } } [CommandProperty(AccessLevel.GameMaster)] public string Line2 { get => m_Line2; set { m_Line2 = value; InvalidateProperties(); } } [CommandProperty(AccessLevel.GameMaster)] public string Line3 { get => m_Line3; set { m_Line3 = value; InvalidateProperties(); } } [CommandProperty(AccessLevel.GameMaster)] public DateTime EditLimit{ get; set; } public bool IsSigned => m_Line1 != null || m_Line2 != null || m_Line3 != null; public bool CanSign => !IsSigned || DateTime.UtcNow <= EditLimit; 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 override void Serialize(GenericWriter writer) { base.Serialize(writer); writer.Write(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, "