196 lines
5.6 KiB
C#
196 lines
5.6 KiB
C#
using System;
|
||
using Server.Mobiles;
|
||
using Server.Targeting;
|
||
|
||
namespace Server.Items
|
||
{
|
||
public class ValentinesCard : Item
|
||
{
|
||
private static readonly string Unsigned = "___";
|
||
private int m_LabelNumber;
|
||
private string m_From;
|
||
private string m_To;
|
||
[Constructable]
|
||
public ValentinesCard(int itemid)
|
||
: base(itemid)
|
||
{
|
||
this.LootType = LootType.Blessed;
|
||
this.Hue = Utility.RandomDouble() < .001 ? 0x47E : 0xE8;
|
||
this.m_LabelNumber = Utility.Random(1077589, 5);
|
||
}
|
||
|
||
public ValentinesCard(Serial serial)
|
||
: base(serial)
|
||
{
|
||
}
|
||
|
||
[CommandProperty(AccessLevel.GameMaster)]
|
||
public virtual string From
|
||
{
|
||
get
|
||
{
|
||
return this.m_From;
|
||
}
|
||
set
|
||
{
|
||
this.m_From = value;
|
||
}
|
||
}
|
||
[CommandProperty(AccessLevel.GameMaster)]
|
||
public virtual string To
|
||
{
|
||
get
|
||
{
|
||
return this.m_To;
|
||
}
|
||
set
|
||
{
|
||
this.m_To = value;
|
||
}
|
||
}
|
||
/*
|
||
* 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 AddNameProperty(ObjectPropertyList list)
|
||
{
|
||
list.Add(this.m_LabelNumber, String.Format("{0}\t{1}", (this.m_To != null) ? this.m_To : Unsigned, (this.m_From != null) ? this.m_From : Unsigned));
|
||
}
|
||
|
||
public override void OnDoubleClick(Mobile from)
|
||
{
|
||
if (this.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 (!this.Deleted)
|
||
{
|
||
if (targeted != null && targeted is Mobile)
|
||
{
|
||
Mobile to = targeted as Mobile;
|
||
|
||
if (to is PlayerMobile)
|
||
{
|
||
if (to != from)
|
||
{
|
||
this.m_From = from.Name;
|
||
this.m_To = to.Name;
|
||
from.SendLocalizedMessage(1077498); //You fill out the card. Hopefully the other person actually likes you...
|
||
this.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 override void Serialize(GenericWriter writer)
|
||
{
|
||
base.Serialize(writer);
|
||
|
||
writer.Write((int)0); // version
|
||
writer.Write((int)this.m_LabelNumber);
|
||
writer.Write((string)this.m_From);
|
||
writer.Write((string)this.m_To);
|
||
}
|
||
|
||
public override void Deserialize(GenericReader reader)
|
||
{
|
||
base.Deserialize(reader);
|
||
|
||
int version = reader.ReadInt();
|
||
this.m_LabelNumber = reader.ReadInt();
|
||
this.m_From = reader.ReadString();
|
||
this.m_To = reader.ReadString();
|
||
|
||
Utility.Intern(ref this.m_From);
|
||
Utility.Intern(ref this.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();
|
||
}
|
||
}
|
||
} |