86 lines
2.3 KiB
C#
86 lines
2.3 KiB
C#
using System;
|
|
|
|
using Server;
|
|
using Server.Events.Halloween;
|
|
|
|
namespace Server.Items
|
|
{
|
|
public class ShackledHeartOfThePumpkinKing : Item
|
|
{
|
|
public override int LabelNumber { get { return 1157653; } } // Shackled Heart of the Pumpkin King
|
|
|
|
private Timer Timer { get; set; }
|
|
|
|
[Constructable]
|
|
public ShackledHeartOfThePumpkinKing()
|
|
: base(0x4A9C)
|
|
{
|
|
}
|
|
|
|
public override void OnDoubleClick(Mobile m)
|
|
{
|
|
if (Timer == null)
|
|
{
|
|
m.SendLocalizedMessage(1157631); // Thou shall know the pain of a chained heart...
|
|
m.SendSound(Utility.RandomMinMax(0x423, 0x427));
|
|
|
|
Timer = new InternalTimer(m, this);
|
|
}
|
|
else
|
|
{
|
|
m.SendLocalizedMessage(1157630); // You are already bleeding!
|
|
}
|
|
}
|
|
|
|
private class InternalTimer : Timer
|
|
{
|
|
public Mobile Owner { get; set; }
|
|
public ShackledHeartOfThePumpkinKing Heart { get; set; }
|
|
|
|
public int Ticks { get; set; }
|
|
|
|
public InternalTimer(Mobile m, ShackledHeartOfThePumpkinKing heart)
|
|
: base(TimeSpan.FromSeconds(2), TimeSpan.FromSeconds(2))
|
|
{
|
|
Owner = m;
|
|
Heart = heart;
|
|
|
|
Start();
|
|
}
|
|
|
|
protected override void OnTick()
|
|
{
|
|
if (!Owner.Alive || Owner.Map == Map.Internal || Ticks++ >= 5)
|
|
{
|
|
Stop();
|
|
Heart.Timer = null;
|
|
}
|
|
else
|
|
{
|
|
Owner.PlaySound(0x133);
|
|
|
|
var blood = new Blood();
|
|
blood.ItemID = Utility.Random(0x122A, 5);
|
|
blood.MoveToWorld(Owner.Location, Owner.Map);
|
|
}
|
|
}
|
|
}
|
|
|
|
public ShackledHeartOfThePumpkinKing(Serial serial)
|
|
: base(serial)
|
|
{
|
|
}
|
|
|
|
public override void Serialize(GenericWriter writer)
|
|
{
|
|
base.Serialize(writer);
|
|
writer.Write((int)0);
|
|
}
|
|
|
|
public override void Deserialize(GenericReader reader)
|
|
{
|
|
base.Deserialize(reader);
|
|
int v = reader.ReadInt();
|
|
}
|
|
}
|
|
} |