Files
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

159 lines
4.3 KiB
C#

using System;
using Server.Spells;
using Server.Spells.Seventh;
namespace Server.Items
{
public class MaskOfKhalAnkur : BaseHat
{
public override bool IsArtifact { get { return true; } }
public override int LabelNumber { get { return 1158701; } } // Mask of Khal Ankur
[CommandProperty(AccessLevel.GameMaster)]
public int ChargeTime { get; set; }
private int m_Charges;
[CommandProperty(AccessLevel.GameMaster)]
public int Charges
{
get { return m_Charges; }
set
{
m_Charges = value;
if (m_Charges == 0)
StartTimer();
InvalidateProperties();
}
}
[Constructable]
public MaskOfKhalAnkur()
: this(0)
{
}
[Constructable]
public MaskOfKhalAnkur(int hue)
: base(0xA1C7, hue)
{
Weight = 3;
Charges = 1;
//Caddellite Infused
Attributes.BonusHits = 10;
Attributes.BonusMana = 15;
Attributes.EnhancePotions = 35;
Attributes.LowerManaCost = 10;
}
public override void OnDoubleClick(Mobile from)
{
if (Parent != from)
{
from.SendLocalizedMessage(1116250); // That must be equipped before you can use it.
}
else if (ChargeTime > 0)
{
from.SendLocalizedMessage(1074882, ChargeTime.ToString()); // You must wait ~1_val~ seconds for this to recharge.
}
else if (SpellHelper.CheckTown(from.Location, from))
{
MeteorSwarmSpell spell = new MeteorSwarmSpell(from, null, this);
spell.Cast();
}
}
public override void OnAdded(object parent)
{
base.OnAdded(parent);
if (Charges == 0)
StartTimer();
}
public override void OnRemoved(object parent)
{
base.OnRemoved(parent);
if (Charges == 0)
StopTimer();
}
public override int BasePhysicalResistance { get { return 15; } }
public override int BaseFireResistance { get { return 15; } }
public override int BaseColdResistance { get { return 15; } }
public override int BasePoisonResistance { get { return 15; } }
public override int BaseEnergyResistance { get { return 15; } }
public override int InitMinHits { get { return 255; } }
public override int InitMaxHits { get { return 255; } }
public override void AddWeightProperty(ObjectPropertyList list)
{
base.AddWeightProperty(list);
list.Add(1158732, Charges.ToString()); // Meteor Breath Charges: ~1_VAL~
}
public MaskOfKhalAnkur(Serial serial)
: base(serial)
{
}
private Timer m_Timer;
public virtual void StartTimer()
{
ChargeTime = 300;
if (m_Timer == null || !m_Timer.Running)
m_Timer = Timer.DelayCall(TimeSpan.FromSeconds(1), TimeSpan.FromSeconds(1), new TimerCallback(Slice));
}
public virtual void StopTimer()
{
if (m_Timer != null)
m_Timer.Stop();
m_Timer = null;
}
public virtual void Slice()
{
if (ChargeTime > 0)
ChargeTime--;
else
{
ChargeTime = 0;
Charges = 1;
StopTimer();
}
}
public override void Serialize(GenericWriter writer)
{
base.Serialize(writer);
writer.Write((int)0);
writer.Write((int)m_Charges);
writer.Write((int)ChargeTime);
}
public override void Deserialize(GenericReader reader)
{
base.Deserialize(reader);
int version = reader.ReadInt();
m_Charges = reader.ReadInt();
ChargeTime = reader.ReadInt();
if (Parent != null && Parent is Mobile && ChargeTime > 0)
m_Timer = Timer.DelayCall(TimeSpan.FromSeconds(1), TimeSpan.FromSeconds(1), new TimerCallback(Slice));
}
}
}