Files
abysmal-isle/Scripts/Services/ExploringTheDeep/Items/QuestItems/MercutiosCutlass.cs
Unstable Kitsune b918192e4e Overwrite
Complete Overwrite of the Folder with the free shard. ServUO 57.3 has been added.
2023-11-28 23:20:26 -05:00

141 lines
4.3 KiB
C#

using System;
using Server.Network;
namespace Server.Items
{
public class MercutiosCutlass : Cutlass
{
public override int LabelNumber { get { return 1154240; } } // Mercutio's Cutlass
private int m_Lifespan;
private Timer m_Timer;
[Constructable]
public MercutiosCutlass()
{
Hue = 2595;
LootType = LootType.Blessed;
if (Lifespan > 0)
{
m_Lifespan = Lifespan;
StartTimer();
}
}
public virtual int Lifespan { get { return 18000; } }
public override void OnDoubleClick(Mobile from)
{
base.OnDoubleClick(from);
from.PublicOverheadMessage(MessageType.Regular, 0x3B2, 1154241); // *It is a beautifully and masterfully crafted blade. The hilt bears the family crest of the former owner*
}
public override void GetProperties(ObjectPropertyList list)
{
base.GetProperties(list);
list.Add(1072351); // Quest Item
if (Lifespan > 0)
{
TimeSpan t = TimeSpan.FromSeconds(m_Lifespan);
int weeks = (int)t.Days / 7;
int days = t.Days;
int hours = t.Hours;
int minutes = t.Minutes;
if (weeks > 0)
list.Add(string.Format("Lifespan: {0} {1}", weeks, weeks == 1 ? "week" : "weeks"));
else if (days > 0)
list.Add(string.Format("Lifespan: {0} {1}", days, days == 1 ? "day" : "days"));
else if (hours > 0)
list.Add(string.Format("Lifespan: {0} {1}", hours, hours == 1 ? "hour" : "hours"));
else if (minutes > 0)
list.Add(string.Format("Lifespan: {0} {1}", minutes, minutes == 1 ? "minute" : "minutes"));
else
list.Add(1072517, m_Lifespan.ToString()); // Lifespan: ~1_val~ seconds
}
}
public virtual void StartTimer()
{
if (m_Timer != null)
return;
m_Timer = Timer.DelayCall(TimeSpan.FromSeconds(10), TimeSpan.FromSeconds(10), new TimerCallback(Slice));
m_Timer.Priority = TimerPriority.OneSecond;
}
public virtual void StopTimer()
{
if (m_Timer != null)
m_Timer.Stop();
m_Timer = null;
}
public virtual void Slice()
{
m_Lifespan -= 10;
InvalidateProperties();
if (m_Lifespan <= 0)
Decay();
}
public virtual void Decay()
{
if (RootParent is Mobile)
{
Mobile parent = (Mobile)RootParent;
if (Name == null)
parent.SendLocalizedMessage(1072515, "#" + LabelNumber); // The ~1_name~ expired...
else
parent.SendLocalizedMessage(1072515, Name); // The ~1_name~ expired...
Effects.SendLocationParticles(EffectItem.Create(parent.Location, parent.Map, EffectItem.DefaultDuration), 0x3728, 8, 20, 5042);
Effects.PlaySound(parent.Location, parent.Map, 0x201);
}
else
{
Effects.SendLocationParticles(EffectItem.Create(Location, Map, EffectItem.DefaultDuration), 0x3728, 8, 20, 5042);
Effects.PlaySound(Location, Map, 0x201);
}
StopTimer();
Delete();
}
public override void GetDamageTypes(Mobile wielder, out int phys, out int fire, out int cold, out int pois, out int nrgy, out int chaos, out int direct)
{
cold = fire = chaos = pois = nrgy = direct = 0;
phys = 100;
}
public MercutiosCutlass(Serial serial) : base(serial)
{
}
public override void Serialize(GenericWriter writer)
{
base.Serialize(writer);
writer.Write((int)0); // version
writer.Write((int)m_Lifespan);
}
public override void Deserialize(GenericReader reader)
{
base.Deserialize(reader);
int version = reader.ReadInt();
m_Lifespan = reader.ReadInt();
StartTimer();
}
}
}