namespace Server.Items { [Flippable] public class LeafGloves : BaseArmor, IArcaneEquip { [Constructible] public LeafGloves() : base(0x2FC6) { Weight = 2.0; } public LeafGloves(Serial serial) : base(serial) { } public override Race RequiredRace => Race.Elf; public override int BasePhysicalResistance => 2; public override int BaseFireResistance => 3; public override int BaseColdResistance => 2; public override int BasePoisonResistance => 4; public override int BaseEnergyResistance => 4; public override int InitMinHits => 30; public override int InitMaxHits => 40; public override int AosStrReq => 10; 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; public override void Serialize(GenericWriter writer) { base.Serialize(writer); writer.WriteEncodedInt(0); // version if (IsArcane) { writer.Write(true); writer.Write(m_CurArcaneCharges); writer.Write(m_MaxArcaneCharges); } else { writer.Write(false); } } public override void Deserialize(GenericReader reader) { base.Deserialize(reader); int version = reader.ReadEncodedInt(); switch (version) { case 0: { if (reader.ReadBool()) { m_CurArcaneCharges = reader.ReadInt(); m_MaxArcaneCharges = reader.ReadInt(); if (Hue == 2118) Hue = ArcaneGem.DefaultArcaneHue; } break; } } } #region Arcane Impl private int m_MaxArcaneCharges, m_CurArcaneCharges; [CommandProperty(AccessLevel.GameMaster)] public int MaxArcaneCharges { get => m_MaxArcaneCharges; set { m_MaxArcaneCharges = value; InvalidateProperties(); Update(); } } [CommandProperty(AccessLevel.GameMaster)] public int CurArcaneCharges { get => m_CurArcaneCharges; set { m_CurArcaneCharges = value; InvalidateProperties(); Update(); } } [CommandProperty(AccessLevel.GameMaster)] public bool IsArcane => m_MaxArcaneCharges > 0 && m_CurArcaneCharges >= 0; public void Update() { if (IsArcane) ItemID = 0x26B0; // TODO: Check else if (ItemID == 0x26B0) ItemID = 0x2FC6; if (IsArcane && CurArcaneCharges == 0) Hue = 0; } public override void GetProperties(ObjectPropertyList list) { base.GetProperties(list); if (IsArcane) list.Add(1061837, "{0}\t{1}", m_CurArcaneCharges, m_MaxArcaneCharges); // arcane charges: ~1_val~ / ~2_val~ } public override void OnSingleClick(Mobile from) { base.OnSingleClick(from); if (IsArcane) LabelTo(from, 1061837, $"{m_CurArcaneCharges}\t{m_MaxArcaneCharges}"); } public void Flip() { if (ItemID == 0x2FC6) ItemID = 0x317C; else if (ItemID == 0x317C) ItemID = 0x2FC6; } #endregion } }