Overwrite
Complete Overwrite of the Folder with the free shard. ServUO 57.3 has been added.
This commit is contained in:
@@ -0,0 +1,158 @@
|
||||
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));
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user