From bfa04544c670d17aaf214e3094dccb5071f110c9 Mon Sep 17 00:00:00 2001 From: xavier Date: Tue, 4 Jan 2011 22:50:22 +0000 Subject: [PATCH] 2007 valentines gifts package. See comments in RedVelvetGiftBox.cs. --- .../Valentines/2007/RedVelvetGiftBox.cs | 65 +++++++ .../Special/Valentines/2007/RoseInAVase.cs | 37 ++++ .../Special/Valentines/2007/ValentinesCard.cs | 182 ++++++++++++++++++ 3 files changed, 284 insertions(+) create mode 100644 Scripts/Items/Special/Valentines/2007/RedVelvetGiftBox.cs create mode 100644 Scripts/Items/Special/Valentines/2007/RoseInAVase.cs create mode 100644 Scripts/Items/Special/Valentines/2007/ValentinesCard.cs diff --git a/Scripts/Items/Special/Valentines/2007/RedVelvetGiftBox.cs b/Scripts/Items/Special/Valentines/2007/RedVelvetGiftBox.cs new file mode 100644 index 000000000..c26b57a9c --- /dev/null +++ b/Scripts/Items/Special/Valentines/2007/RedVelvetGiftBox.cs @@ -0,0 +1,65 @@ +using System; +using Server; + +/* + * Simply add this box with param true to create the entire valentine's 2007 package. + * Adding it with no params or false will create an empty box. + */ + +namespace Server.Items +{ + public class RedVelvetGiftBox : BaseContainer + { + public override int DefaultGumpID { get { return 0x3f; } } + public override int LabelNumber { get { return 1077596; } } // A Red Velvet Box + + [Constructable] + public RedVelvetGiftBox() + : this( false ) + { + } + + [Constructable] + public RedVelvetGiftBox( bool fill ) + : base( 0xE7A ) + { + Hue = 0x20; + + if (fill) + { + for (int i = 0; i < 5; i++) + { + AddToBox(new ValentinesCardSouth(), new Point3D(60 + (i * 10), 47, 0)); + AddToBox(new ValentinesCardEast(), new Point3D(20 + (i * 10), 72, 0)); + } + AddToBox(new Bacon(), new Point3D(90, 85, 0)); + AddToBox(new RoseInAVase(), new Point3D(130, 55, 0)); + } + } + + public virtual void AddToBox(Item item, Point3D loc) + { + DropItem(item); + item.Location = loc; + } + + public RedVelvetGiftBox( Serial serial ) + : base( serial ) + { + } + + public override void Serialize( GenericWriter writer ) + { + base.Serialize( writer ); + + writer.Write( (int)0 ); // version + } + + public override void Deserialize( GenericReader reader ) + { + base.Deserialize( reader ); + + int version = reader.ReadInt(); + } + } +} \ No newline at end of file diff --git a/Scripts/Items/Special/Valentines/2007/RoseInAVase.cs b/Scripts/Items/Special/Valentines/2007/RoseInAVase.cs new file mode 100644 index 000000000..6ec084705 --- /dev/null +++ b/Scripts/Items/Special/Valentines/2007/RoseInAVase.cs @@ -0,0 +1,37 @@ +using System; +using Server; + +namespace Server.Items +{ + public class RoseInAVase : Item /* TODO: when dye tub changes are implemented, furny dyable this */ + { + public override int LabelNumber { get { return 1023760; } } // A Rose in a Vase 1023760 + + [Constructable] + public RoseInAVase( ) + : base( 0x0EB0 ) + { + Hue = 0x20; + LootType = LootType.Blessed; + } + + public RoseInAVase( Serial serial ) + : base( serial ) + { + } + + public override void Serialize( GenericWriter writer ) + { + base.Serialize( writer ); + + writer.Write( (int)0 ); // version + } + + public override void Deserialize( GenericReader reader ) + { + base.Deserialize( reader ); + + int version = reader.ReadInt(); + } + } +} \ No newline at end of file diff --git a/Scripts/Items/Special/Valentines/2007/ValentinesCard.cs b/Scripts/Items/Special/Valentines/2007/ValentinesCard.cs new file mode 100644 index 000000000..80e8b6e5b --- /dev/null +++ b/Scripts/Items/Special/Valentines/2007/ValentinesCard.cs @@ -0,0 +1,182 @@ +using System; +using Server.Mobiles; +using Server.Targeting; + +namespace Server.Items +{ + public class ValentinesCard : Item + { + [CommandProperty(AccessLevel.GameMaster)] + public virtual string From { get { return m_From; } set { m_From = value; } } + + [CommandProperty(AccessLevel.GameMaster)] + public virtual string To { get { return m_To; } set { m_To = value; } } + + private static string Unsigned = "___"; + + private int m_LabelNumber; + private string m_From; + private string m_To; + + [Constructable] + public ValentinesCard( int itemid ) + : base(itemid) + { + Hue = Utility.RandomDouble() < .001 ? 0x47E : 0xE8; + m_LabelNumber = Utility.Random(1077589, 5); + } + + /* + * Five possible messages to be signed: + * + * To my one true love, ~1_target_player~. Signed: ~2_player~ 1077589 + * You’ve pwnd my heart, ~1_target_player~. Signed: ~2_player~ 1077590 + * Happy Valentine’s Day, ~1_target_player~. Signed: ~2_player~ 1077591 + * Blackrock has driven me crazy... for ~1_target_player~! Signed: ~2_player~ 1077592 + * You light my Candle of Love, ~1_target_player~! Signed: ~2_player~ 1077593 + * + */ + + public override void GetProperties(ObjectPropertyList list) + { + list.Add(m_LabelNumber, String.Format("{0}\t{1}", (m_To != null) ? m_To : Unsigned, (m_From != null) ? m_From : Unsigned)); + list.Add("Blessed"); + AddWeightProperty(list); + } + + public override void OnDoubleClick(Mobile from) + { + if (m_To == null) + { + if (this.IsChildOf(from)) + { + from.BeginTarget(10, false, TargetFlags.None, new TargetCallback(OnTarget)); + + from.SendLocalizedMessage(1077497); //To whom do you wish to give this card? + } + else + { + from.SendLocalizedMessage(1080063); // This must be in your backpack to use it. + } + } + } + + public virtual void OnTarget(Mobile from, object targeted) + { + if (!Deleted) + { + if (targeted != null && targeted is Mobile) + { + Mobile to = targeted as Mobile; + + if (to is PlayerMobile) + { + if (to != from) + { + m_From = from.Name; + m_To = to.Name; + from.SendLocalizedMessage(1077498); //You fill out the card. Hopefully the other person actually likes you... + InvalidateProperties(); + } + else + { + from.SendLocalizedMessage(1077495); //You can't give yourself a card, silly! + } + } + else + { + from.SendLocalizedMessage(1077496); //You can't possibly be THAT lonely! + } + } + else + { + from.SendLocalizedMessage(1077488); //That's not another player! + } + } + } + + public ValentinesCard(Serial serial) + : base( serial ) + { + } + + public override void Serialize( GenericWriter writer ) + { + base.Serialize( writer ); + + writer.Write( (int)0 ); // version + writer.Write((int)m_LabelNumber); + writer.Write((string)m_From); + writer.Write((string)m_To); + } + + public override void Deserialize( GenericReader reader ) + { + base.Deserialize( reader ); + + int version = reader.ReadInt(); + m_LabelNumber = reader.ReadInt(); + m_From = reader.ReadString(); + m_To = reader.ReadString(); + + Utility.Intern(ref m_From); + Utility.Intern(ref m_To); + } + } + + public class ValentinesCardSouth : ValentinesCard + { + [Constructable] + public ValentinesCardSouth() + : base(0x0EBD) + { + } + + public ValentinesCardSouth(Serial serial) + : base(serial) + { + } + + public override void Serialize(GenericWriter writer) + { + base.Serialize(writer); + + writer.Write((int)0); // version + } + + public override void Deserialize(GenericReader reader) + { + base.Deserialize(reader); + + int version = reader.ReadInt(); + } + } + + public class ValentinesCardEast : ValentinesCard + { + [Constructable] + public ValentinesCardEast() + : base(0x0EBE) + { + } + + public ValentinesCardEast(Serial serial) + : base(serial) + { + } + + public override void Serialize(GenericWriter writer) + { + base.Serialize(writer); + + writer.Write((int)0); // version + } + + public override void Deserialize(GenericReader reader) + { + base.Deserialize(reader); + + int version = reader.ReadInt(); + } + } +} \ No newline at end of file