119 lines
3.2 KiB
C#
119 lines
3.2 KiB
C#
namespace Server.Items
|
|
{
|
|
[Flippable]
|
|
[Serializable(0, false)]
|
|
public partial class LeatherGloves : BaseArmor, IArcaneEquip
|
|
{
|
|
private int _maxArcaneCharges;
|
|
private int _curArcaneCharges;
|
|
|
|
[Constructible]
|
|
public LeatherGloves() : base(0x13C6) => Weight = 1.0;
|
|
|
|
public override int BasePhysicalResistance => 2;
|
|
public override int BaseFireResistance => 4;
|
|
public override int BaseColdResistance => 3;
|
|
public override int BasePoisonResistance => 3;
|
|
public override int BaseEnergyResistance => 3;
|
|
|
|
public override int InitMinHits => 30;
|
|
public override int InitMaxHits => 40;
|
|
|
|
public override int AosStrReq => 20;
|
|
public override int OldStrReq => 10;
|
|
|
|
public override int ArmorBase => 13;
|
|
|
|
public override ArmorMaterialType MaterialType => ArmorMaterialType.Leather;
|
|
public override CraftResource DefaultResource => CraftResource.RegularLeather;
|
|
|
|
public override ArmorMeditationAllowance DefMedAllowance => ArmorMeditationAllowance.All;
|
|
|
|
[EncodedInt]
|
|
[SerializableField(0)]
|
|
[CommandProperty(AccessLevel.GameMaster)]
|
|
public int CurArcaneCharges
|
|
{
|
|
get => _curArcaneCharges;
|
|
set
|
|
{
|
|
_curArcaneCharges = value;
|
|
InvalidateProperties();
|
|
Update();
|
|
}
|
|
}
|
|
|
|
[EncodedInt]
|
|
[SerializableField(1)]
|
|
[CommandProperty(AccessLevel.GameMaster)]
|
|
public int MaxArcaneCharges
|
|
{
|
|
get => _maxArcaneCharges;
|
|
set
|
|
{
|
|
_maxArcaneCharges = value;
|
|
InvalidateProperties();
|
|
Update();
|
|
}
|
|
}
|
|
|
|
[CommandProperty(AccessLevel.GameMaster)]
|
|
public bool IsArcane => _maxArcaneCharges > 0 && _curArcaneCharges >= 0;
|
|
|
|
private void Deserialize(IGenericReader reader, int version)
|
|
{
|
|
if (reader.ReadBool())
|
|
{
|
|
_curArcaneCharges = reader.ReadInt();
|
|
_maxArcaneCharges = reader.ReadInt();
|
|
}
|
|
}
|
|
|
|
public void Update()
|
|
{
|
|
if (IsArcane)
|
|
{
|
|
ItemID = 0x26B0;
|
|
}
|
|
else if (ItemID == 0x26B0)
|
|
{
|
|
ItemID = 0x13C6;
|
|
}
|
|
|
|
if (IsArcane && CurArcaneCharges == 0)
|
|
{
|
|
Hue = 0;
|
|
}
|
|
}
|
|
|
|
public override void GetProperties(ObjectPropertyList list)
|
|
{
|
|
base.GetProperties(list);
|
|
|
|
if (IsArcane)
|
|
{
|
|
list.Add(1061837, "{0}\t{1}", _curArcaneCharges, _maxArcaneCharges); // arcane charges: ~1_val~ / ~2_val~
|
|
}
|
|
}
|
|
|
|
public override void OnSingleClick(Mobile from)
|
|
{
|
|
base.OnSingleClick(from);
|
|
|
|
if (IsArcane)
|
|
{
|
|
LabelTo(from, 1061837, $"{_curArcaneCharges}\t{_maxArcaneCharges}");
|
|
}
|
|
}
|
|
|
|
public void Flip()
|
|
{
|
|
ItemID = ItemID switch
|
|
{
|
|
0x13C6 => 0x13CE,
|
|
0x13CE => 0x13C6,
|
|
_ => ItemID
|
|
};
|
|
}
|
|
}
|
|
}
|