From ca3faec01d1dd08c83fed3a1cf68cdb9983d62be Mon Sep 17 00:00:00 2001 From: Kamron Batman <3953314+kamronbatman@users.noreply.github.com> Date: Tue, 24 Aug 2021 23:11:59 -0700 Subject: [PATCH] fix(codegen): Codegens clothing (#714) --- .../SerializableFieldAttributeAttribute.cs | 2 +- .../Items/Armor/Leather/LeafGloves.cs | 28 +- .../Clothing/Artifacts/CrimsonCincture.cs | 23 +- .../Clothing/Artifacts/DivineCountenance.cs | 33 +- .../Items/Clothing/Artifacts/HatOfTheMagi.cs | 31 +- .../Clothing/Artifacts/HuntersHeaddress.cs | 29 +- .../Clothing/Artifacts/SpiritOfTheTotem.cs | 30 +- .../UOContent/Items/Clothing/BaseClothing.cs | 562 ++++++--------- Projects/UOContent/Items/Clothing/Cloaks.cs | 248 ++----- Projects/UOContent/Items/Clothing/Hats.cs | 507 ++------------ .../UOContent/Items/Clothing/MiddleTorso.cs | 199 +----- .../UOContent/Items/Clothing/OuterLegs.cs | 110 +-- .../UOContent/Items/Clothing/OuterTorso.cs | 649 ++++-------------- Projects/UOContent/Items/Clothing/Pants.cs | 105 +-- Projects/UOContent/Items/Clothing/Shirts.cs | 134 +--- Projects/UOContent/Items/Clothing/Shoes.cs | 309 ++------- Projects/UOContent/Items/Clothing/Waist.cs | 84 +-- .../UOContent/Items/Misc/Corpses/Corpse.cs | 1 - .../Migrations/Server.Items.Bandana.v0.json | 4 + .../Migrations/Server.Items.BaseCloak.v0.json | 4 + .../Server.Items.BaseClothing.v6.json | 96 +++ .../Migrations/Server.Items.BaseHat.v0.json | 14 + .../Server.Items.BaseMiddleTorso.v0.json | 4 + .../Server.Items.BaseOuterLegs.v0.json | 4 + .../Server.Items.BaseOuterTorso.v0.json | 4 + .../Migrations/Server.Items.BasePants.v0.json | 4 + .../Migrations/Server.Items.BaseShirt.v0.json | 4 + .../Migrations/Server.Items.BaseShoes.v0.json | 4 + .../Migrations/Server.Items.BaseWaist.v0.json | 4 + .../Migrations/Server.Items.BearMask.v0.json | 4 + .../Migrations/Server.Items.BodySash.v0.json | 4 + .../Migrations/Server.Items.Bonnet.v0.json | 4 + .../Migrations/Server.Items.Boots.v0.json | 4 + .../Migrations/Server.Items.Cap.v0.json | 4 + .../Migrations/Server.Items.Cloak.v2.json | 22 + .../Server.Items.ClothNinjaHood.v0.json | 4 + .../Server.Items.ClothNinjaJacket.v0.json | 4 + .../Server.Items.CrimsonCincture.v0.json | 4 + .../Migrations/Server.Items.DeathRobe.v3.json | 14 + .../Migrations/Server.Items.DeerMask.v0.json | 4 + .../Server.Items.DivineCountenance.v0.json | 4 + .../Migrations/Server.Items.Doublet.v0.json | 4 + .../Server.Items.ElvenBoots.v0.json | 4 + .../Server.Items.ElvenDarkShirt.v0.json | 4 + .../Server.Items.ElvenPants.v0.json | 4 + .../Server.Items.ElvenShirt.v0.json | 4 + .../Server.Items.FancyDress.v0.json | 4 + .../Server.Items.FancyShirt.v0.json | 4 + .../Server.Items.FeatheredHat.v0.json | 4 + .../Server.Items.FemaleElvenRobe.v0.json | 4 + .../Server.Items.FemaleKimono.v0.json | 4 + .../Migrations/Server.Items.FloppyHat.v0.json | 4 + .../Server.Items.FlowerGarland.v0.json | 4 + .../Server.Items.FormalShirt.v0.json | 4 + .../Migrations/Server.Items.FullApron.v0.json | 4 + .../Migrations/Server.Items.FurBoots.v0.json | 4 + .../Migrations/Server.Items.FurCape.v0.json | 4 + .../Migrations/Server.Items.FurSarong.v0.json | 4 + .../Server.Items.GildedDress.v0.json | 4 + .../Migrations/Server.Items.Hakama.v0.json | 4 + .../Server.Items.HakamaShita.v0.json | 4 + .../Migrations/Server.Items.HalfApron.v0.json | 4 + .../Server.Items.HatOfTheMagi.v0.json | 4 + .../Server.Items.HornedTribalMask.v0.json | 4 + .../Server.Items.HuntersHeaddress.v0.json | 4 + .../Migrations/Server.Items.JesterHat.v0.json | 4 + .../Server.Items.JesterSuit.v0.json | 4 + .../Migrations/Server.Items.JinBaori.v0.json | 4 + .../Migrations/Server.Items.Kamishimo.v0.json | 4 + .../Migrations/Server.Items.Kasa.v0.json | 4 + .../Migrations/Server.Items.Kilt.v0.json | 4 + .../Migrations/Server.Items.LongPants.v0.json | 4 + .../Server.Items.MagicWizardsHat.v0.json | 4 + .../Server.Items.MaleElvenRobe.v0.json | 4 + .../Server.Items.MaleKimono.v0.json | 4 + .../Migrations/Server.Items.MonkRobe.v0.json | 4 + .../Migrations/Server.Items.NinjaTabi.v0.json | 4 + .../Migrations/Server.Items.Obi.v0.json | 4 + .../Server.Items.OrcishKinMask.v0.json | 4 + .../Server.Items.PlainDress.v0.json | 4 + .../Server.Items.RewardCloak.v0.json | 22 + .../Server.Items.RewardDress.v0.json | 22 + .../Server.Items.RewardRobe.v0.json | 22 + .../Migrations/Server.Items.Robe.v2.json | 22 + .../Server.Items.SamuraiTabi.v0.json | 4 + .../Migrations/Server.Items.Sandals.v0.json | 4 + .../Server.Items.SavageMask.v0.json | 4 + .../Migrations/Server.Items.Shirt.v0.json | 4 + .../Migrations/Server.Items.Shoes.v0.json | 4 + .../Server.Items.ShortPants.v0.json | 4 + .../Migrations/Server.Items.Skirt.v0.json | 4 + .../Migrations/Server.Items.SkullCap.v0.json | 4 + .../Server.Items.SpiritOfTheTotem.v0.json | 4 + .../Migrations/Server.Items.StrawHat.v0.json | 4 + .../Migrations/Server.Items.Surcoat.v0.json | 4 + .../Server.Items.TallStrawHat.v0.json | 4 + .../Server.Items.TattsukeHakama.v0.json | 4 + .../Server.Items.ThighBoots.v2.json | 22 + .../Server.Items.TribalMask.v0.json | 4 + .../Server.Items.TricorneHat.v0.json | 4 + .../Migrations/Server.Items.Tunic.v0.json | 4 + .../Migrations/Server.Items.Waraji.v0.json | 4 + .../Server.Items.WideBrimHat.v0.json | 4 + .../Server.Items.WizardsHat.v0.json | 4 + .../Server.Items.WoodlandBelt.v0.json | 4 + 105 files changed, 1175 insertions(+), 2477 deletions(-) create mode 100644 Projects/UOContent/Migrations/Server.Items.Bandana.v0.json create mode 100644 Projects/UOContent/Migrations/Server.Items.BaseCloak.v0.json create mode 100644 Projects/UOContent/Migrations/Server.Items.BaseClothing.v6.json create mode 100644 Projects/UOContent/Migrations/Server.Items.BaseHat.v0.json create mode 100644 Projects/UOContent/Migrations/Server.Items.BaseMiddleTorso.v0.json create mode 100644 Projects/UOContent/Migrations/Server.Items.BaseOuterLegs.v0.json create mode 100644 Projects/UOContent/Migrations/Server.Items.BaseOuterTorso.v0.json create mode 100644 Projects/UOContent/Migrations/Server.Items.BasePants.v0.json create mode 100644 Projects/UOContent/Migrations/Server.Items.BaseShirt.v0.json create mode 100644 Projects/UOContent/Migrations/Server.Items.BaseShoes.v0.json create mode 100644 Projects/UOContent/Migrations/Server.Items.BaseWaist.v0.json create mode 100644 Projects/UOContent/Migrations/Server.Items.BearMask.v0.json create mode 100644 Projects/UOContent/Migrations/Server.Items.BodySash.v0.json create mode 100644 Projects/UOContent/Migrations/Server.Items.Bonnet.v0.json create mode 100644 Projects/UOContent/Migrations/Server.Items.Boots.v0.json create mode 100644 Projects/UOContent/Migrations/Server.Items.Cap.v0.json create mode 100644 Projects/UOContent/Migrations/Server.Items.Cloak.v2.json create mode 100644 Projects/UOContent/Migrations/Server.Items.ClothNinjaHood.v0.json create mode 100644 Projects/UOContent/Migrations/Server.Items.ClothNinjaJacket.v0.json create mode 100644 Projects/UOContent/Migrations/Server.Items.CrimsonCincture.v0.json create mode 100644 Projects/UOContent/Migrations/Server.Items.DeathRobe.v3.json create mode 100644 Projects/UOContent/Migrations/Server.Items.DeerMask.v0.json create mode 100644 Projects/UOContent/Migrations/Server.Items.DivineCountenance.v0.json create mode 100644 Projects/UOContent/Migrations/Server.Items.Doublet.v0.json create mode 100644 Projects/UOContent/Migrations/Server.Items.ElvenBoots.v0.json create mode 100644 Projects/UOContent/Migrations/Server.Items.ElvenDarkShirt.v0.json create mode 100644 Projects/UOContent/Migrations/Server.Items.ElvenPants.v0.json create mode 100644 Projects/UOContent/Migrations/Server.Items.ElvenShirt.v0.json create mode 100644 Projects/UOContent/Migrations/Server.Items.FancyDress.v0.json create mode 100644 Projects/UOContent/Migrations/Server.Items.FancyShirt.v0.json create mode 100644 Projects/UOContent/Migrations/Server.Items.FeatheredHat.v0.json create mode 100644 Projects/UOContent/Migrations/Server.Items.FemaleElvenRobe.v0.json create mode 100644 Projects/UOContent/Migrations/Server.Items.FemaleKimono.v0.json create mode 100644 Projects/UOContent/Migrations/Server.Items.FloppyHat.v0.json create mode 100644 Projects/UOContent/Migrations/Server.Items.FlowerGarland.v0.json create mode 100644 Projects/UOContent/Migrations/Server.Items.FormalShirt.v0.json create mode 100644 Projects/UOContent/Migrations/Server.Items.FullApron.v0.json create mode 100644 Projects/UOContent/Migrations/Server.Items.FurBoots.v0.json create mode 100644 Projects/UOContent/Migrations/Server.Items.FurCape.v0.json create mode 100644 Projects/UOContent/Migrations/Server.Items.FurSarong.v0.json create mode 100644 Projects/UOContent/Migrations/Server.Items.GildedDress.v0.json create mode 100644 Projects/UOContent/Migrations/Server.Items.Hakama.v0.json create mode 100644 Projects/UOContent/Migrations/Server.Items.HakamaShita.v0.json create mode 100644 Projects/UOContent/Migrations/Server.Items.HalfApron.v0.json create mode 100644 Projects/UOContent/Migrations/Server.Items.HatOfTheMagi.v0.json create mode 100644 Projects/UOContent/Migrations/Server.Items.HornedTribalMask.v0.json create mode 100644 Projects/UOContent/Migrations/Server.Items.HuntersHeaddress.v0.json create mode 100644 Projects/UOContent/Migrations/Server.Items.JesterHat.v0.json create mode 100644 Projects/UOContent/Migrations/Server.Items.JesterSuit.v0.json create mode 100644 Projects/UOContent/Migrations/Server.Items.JinBaori.v0.json create mode 100644 Projects/UOContent/Migrations/Server.Items.Kamishimo.v0.json create mode 100644 Projects/UOContent/Migrations/Server.Items.Kasa.v0.json create mode 100644 Projects/UOContent/Migrations/Server.Items.Kilt.v0.json create mode 100644 Projects/UOContent/Migrations/Server.Items.LongPants.v0.json create mode 100644 Projects/UOContent/Migrations/Server.Items.MagicWizardsHat.v0.json create mode 100644 Projects/UOContent/Migrations/Server.Items.MaleElvenRobe.v0.json create mode 100644 Projects/UOContent/Migrations/Server.Items.MaleKimono.v0.json create mode 100644 Projects/UOContent/Migrations/Server.Items.MonkRobe.v0.json create mode 100644 Projects/UOContent/Migrations/Server.Items.NinjaTabi.v0.json create mode 100644 Projects/UOContent/Migrations/Server.Items.Obi.v0.json create mode 100644 Projects/UOContent/Migrations/Server.Items.OrcishKinMask.v0.json create mode 100644 Projects/UOContent/Migrations/Server.Items.PlainDress.v0.json create mode 100644 Projects/UOContent/Migrations/Server.Items.RewardCloak.v0.json create mode 100644 Projects/UOContent/Migrations/Server.Items.RewardDress.v0.json create mode 100644 Projects/UOContent/Migrations/Server.Items.RewardRobe.v0.json create mode 100644 Projects/UOContent/Migrations/Server.Items.Robe.v2.json create mode 100644 Projects/UOContent/Migrations/Server.Items.SamuraiTabi.v0.json create mode 100644 Projects/UOContent/Migrations/Server.Items.Sandals.v0.json create mode 100644 Projects/UOContent/Migrations/Server.Items.SavageMask.v0.json create mode 100644 Projects/UOContent/Migrations/Server.Items.Shirt.v0.json create mode 100644 Projects/UOContent/Migrations/Server.Items.Shoes.v0.json create mode 100644 Projects/UOContent/Migrations/Server.Items.ShortPants.v0.json create mode 100644 Projects/UOContent/Migrations/Server.Items.Skirt.v0.json create mode 100644 Projects/UOContent/Migrations/Server.Items.SkullCap.v0.json create mode 100644 Projects/UOContent/Migrations/Server.Items.SpiritOfTheTotem.v0.json create mode 100644 Projects/UOContent/Migrations/Server.Items.StrawHat.v0.json create mode 100644 Projects/UOContent/Migrations/Server.Items.Surcoat.v0.json create mode 100644 Projects/UOContent/Migrations/Server.Items.TallStrawHat.v0.json create mode 100644 Projects/UOContent/Migrations/Server.Items.TattsukeHakama.v0.json create mode 100644 Projects/UOContent/Migrations/Server.Items.ThighBoots.v2.json create mode 100644 Projects/UOContent/Migrations/Server.Items.TribalMask.v0.json create mode 100644 Projects/UOContent/Migrations/Server.Items.TricorneHat.v0.json create mode 100644 Projects/UOContent/Migrations/Server.Items.Tunic.v0.json create mode 100644 Projects/UOContent/Migrations/Server.Items.Waraji.v0.json create mode 100644 Projects/UOContent/Migrations/Server.Items.WideBrimHat.v0.json create mode 100644 Projects/UOContent/Migrations/Server.Items.WizardsHat.v0.json create mode 100644 Projects/UOContent/Migrations/Server.Items.WoodlandBelt.v0.json diff --git a/Projects/Server/Serialization/Attributes/SerializableFieldAttributeAttribute.cs b/Projects/Server/Serialization/Attributes/SerializableFieldAttributeAttribute.cs index 791ccfe1b..1cf8d6bb5 100644 --- a/Projects/Server/Serialization/Attributes/SerializableFieldAttributeAttribute.cs +++ b/Projects/Server/Serialization/Attributes/SerializableFieldAttributeAttribute.cs @@ -23,7 +23,7 @@ namespace Server /// -or- /// [SerializableFieldAttr(typeof(CommandPropertyAttribute), AccessLevel.GameMaster)] /// - [AttributeUsage(AttributeTargets.Field)] + [AttributeUsage(AttributeTargets.Field, AllowMultiple = true)] public sealed class SerializableFieldAttrAttribute : Attribute { public string AttributeString { get; } diff --git a/Projects/UOContent/Items/Armor/Leather/LeafGloves.cs b/Projects/UOContent/Items/Armor/Leather/LeafGloves.cs index f56df993c..eec7394e2 100644 --- a/Projects/UOContent/Items/Armor/Leather/LeafGloves.cs +++ b/Projects/UOContent/Items/Armor/Leather/LeafGloves.cs @@ -30,20 +30,6 @@ namespace Server.Items public override ArmorMeditationAllowance DefMedAllowance => ArmorMeditationAllowance.All; - [EncodedInt] - [SerializableField(1)] - [CommandProperty(AccessLevel.GameMaster)] - public int MaxArcaneCharges - { - get => _maxArcaneCharges; - set - { - _maxArcaneCharges = value; - InvalidateProperties(); - Update(); - } - } - [EncodedInt] [SerializableField(0)] [CommandProperty(AccessLevel.GameMaster)] @@ -58,6 +44,20 @@ namespace Server.Items } } + [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; diff --git a/Projects/UOContent/Items/Clothing/Artifacts/CrimsonCincture.cs b/Projects/UOContent/Items/Clothing/Artifacts/CrimsonCincture.cs index c565b1aee..ea81189ec 100644 --- a/Projects/UOContent/Items/Clothing/Artifacts/CrimsonCincture.cs +++ b/Projects/UOContent/Items/Clothing/Artifacts/CrimsonCincture.cs @@ -1,6 +1,7 @@ namespace Server.Items { - public class CrimsonCincture : HalfApron + [Serializable(0, false)] + public partial class CrimsonCincture : HalfApron { [Constructible] public CrimsonCincture() @@ -11,25 +12,5 @@ namespace Server.Items Attributes.BonusHits = 10; Attributes.RegenHits = 2; } - - public CrimsonCincture(Serial serial) : base(serial) - { - } - - public override int LabelNumber => 1075043; // Crimson Cincture - - public override void Serialize(IGenericWriter writer) - { - base.Serialize(writer); - - writer.Write(0); // version - } - - public override void Deserialize(IGenericReader reader) - { - base.Deserialize(reader); - - var version = reader.ReadInt(); - } } } diff --git a/Projects/UOContent/Items/Clothing/Artifacts/DivineCountenance.cs b/Projects/UOContent/Items/Clothing/Artifacts/DivineCountenance.cs index 2bea1de05..302c2acec 100644 --- a/Projects/UOContent/Items/Clothing/Artifacts/DivineCountenance.cs +++ b/Projects/UOContent/Items/Clothing/Artifacts/DivineCountenance.cs @@ -1,6 +1,7 @@ namespace Server.Items { - public class DivineCountenance : HornedTribalMask + [Serializable(0, false)] + public partial class DivineCountenance : HornedTribalMask { [Constructible] public DivineCountenance() @@ -13,10 +14,6 @@ namespace Server.Items Attributes.LowerManaCost = 8; } - public DivineCountenance(Serial serial) : base(serial) - { - } - public override int LabelNumber => 1061289; // Divine Countenance public override int ArtifactRarity => 11; @@ -28,31 +25,5 @@ namespace Server.Items public override int InitMinHits => 255; public override int InitMaxHits => 255; - - public override void Serialize(IGenericWriter writer) - { - base.Serialize(writer); - - writer.Write(1); - } - - public override void Deserialize(IGenericReader reader) - { - base.Deserialize(reader); - - var version = reader.ReadInt(); - - switch (version) - { - case 0: - { - Resistances.Physical = 0; - Resistances.Fire = 0; - Resistances.Cold = 0; - Resistances.Energy = 0; - break; - } - } - } } } diff --git a/Projects/UOContent/Items/Clothing/Artifacts/HatOfTheMagi.cs b/Projects/UOContent/Items/Clothing/Artifacts/HatOfTheMagi.cs index f7fc11610..717d14ac1 100644 --- a/Projects/UOContent/Items/Clothing/Artifacts/HatOfTheMagi.cs +++ b/Projects/UOContent/Items/Clothing/Artifacts/HatOfTheMagi.cs @@ -1,6 +1,7 @@ namespace Server.Items { - public class HatOfTheMagi : WizardsHat + [Serializable(0, false)] + public partial class HatOfTheMagi : WizardsHat { [Constructible] public HatOfTheMagi() @@ -12,10 +13,6 @@ namespace Server.Items Attributes.SpellDamage = 10; } - public HatOfTheMagi(Serial serial) : base(serial) - { - } - public override int LabelNumber => 1061597; // Hat of the Magi public override int ArtifactRarity => 11; @@ -25,29 +22,5 @@ namespace Server.Items public override int InitMinHits => 255; public override int InitMaxHits => 255; - - public override void Serialize(IGenericWriter writer) - { - base.Serialize(writer); - - writer.Write(1); - } - - public override void Deserialize(IGenericReader reader) - { - base.Deserialize(reader); - - var version = reader.ReadInt(); - - switch (version) - { - case 0: - { - Resistances.Poison = 0; - Resistances.Energy = 0; - break; - } - } - } } } diff --git a/Projects/UOContent/Items/Clothing/Artifacts/HuntersHeaddress.cs b/Projects/UOContent/Items/Clothing/Artifacts/HuntersHeaddress.cs index e43713b72..eef2c19e4 100644 --- a/Projects/UOContent/Items/Clothing/Artifacts/HuntersHeaddress.cs +++ b/Projects/UOContent/Items/Clothing/Artifacts/HuntersHeaddress.cs @@ -1,6 +1,7 @@ namespace Server.Items { - public class HuntersHeaddress : DeerMask + [Serializable(0, false)] + public partial class HuntersHeaddress : DeerMask { [Constructible] public HuntersHeaddress() @@ -14,10 +15,6 @@ namespace Server.Items Attributes.AttackChance = 15; } - public HuntersHeaddress(Serial serial) : base(serial) - { - } - public override int LabelNumber => 1061595; // Hunter's Headdress public override int ArtifactRarity => 11; @@ -26,27 +23,5 @@ namespace Server.Items public override int InitMinHits => 255; public override int InitMaxHits => 255; - - public override void Serialize(IGenericWriter writer) - { - base.Serialize(writer); - - writer.Write(1); - } - - public override void Deserialize(IGenericReader reader) - { - base.Deserialize(reader); - - var version = reader.ReadInt(); - switch (version) - { - case 0: - { - Resistances.Cold = 0; - break; - } - } - } } } diff --git a/Projects/UOContent/Items/Clothing/Artifacts/SpiritOfTheTotem.cs b/Projects/UOContent/Items/Clothing/Artifacts/SpiritOfTheTotem.cs index 25a3c800f..ff90f494f 100644 --- a/Projects/UOContent/Items/Clothing/Artifacts/SpiritOfTheTotem.cs +++ b/Projects/UOContent/Items/Clothing/Artifacts/SpiritOfTheTotem.cs @@ -1,6 +1,7 @@ namespace Server.Items { - public class SpiritOfTheTotem : BearMask + [Serializable(0, false)] + public partial class SpiritOfTheTotem : BearMask { [Constructible] public SpiritOfTheTotem() @@ -12,10 +13,6 @@ namespace Server.Items Attributes.AttackChance = 15; } - public SpiritOfTheTotem(Serial serial) : base(serial) - { - } - public override int LabelNumber => 1061599; // Spirit of the Totem public override int ArtifactRarity => 11; @@ -24,28 +21,5 @@ namespace Server.Items public override int InitMinHits => 255; public override int InitMaxHits => 255; - - public override void Serialize(IGenericWriter writer) - { - base.Serialize(writer); - - writer.Write(1); - } - - public override void Deserialize(IGenericReader reader) - { - base.Deserialize(reader); - - var version = reader.ReadInt(); - - switch (version) - { - case 0: - { - Resistances.Physical = 0; - break; - } - } - } } } diff --git a/Projects/UOContent/Items/Clothing/BaseClothing.cs b/Projects/UOContent/Items/Clothing/BaseClothing.cs index 79d226332..bac0c4e6b 100644 --- a/Projects/UOContent/Items/Clothing/BaseClothing.cs +++ b/Projects/UOContent/Items/Clothing/BaseClothing.cs @@ -22,27 +22,88 @@ namespace Server.Items int MaxArcaneCharges { get; set; } } - public abstract class BaseClothing : Item, IDyable, IScissorable, IFactionItem, ICraftable, IWearableDurability + [Serializable(6, false)] + public abstract partial class BaseClothing : Item, IDyable, IScissorable, IFactionItem, ICraftable, IWearableDurability { - private Mobile m_Crafter; + // Field 0 + private CraftResource _resource; - private FactionItem m_FactionState; - private int m_HitPoints; + [SerializableField(1, setter: "private")] + [SerializableFieldAttr("[CommandProperty(AccessLevel.GameMaster, canModify: true)]")] + private AosAttributes _attributes; - private int m_MaxHitPoints; - private ClothingQuality m_Quality; - protected CraftResource m_Resource; - private int m_StrReq = -1; + [SerializableFieldSaveFlag(1)] + private bool ShouldSerializeAttributes() => !_attributes.IsEmpty; + + [SerializableField(2, setter: "private")] + [SerializableFieldAttr("[CommandProperty(AccessLevel.GameMaster, canModify: true)]")] + private AosArmorAttributes _clothingAttributes; + + [SerializableFieldSaveFlag(2)] + private bool ShouldSerializeClothingAttributes() => !_clothingAttributes.IsEmpty; + + [SerializableField(3, setter: "private")] + [SerializableFieldAttr("[CommandProperty(AccessLevel.GameMaster, canModify: true)]")] + private AosSkillBonuses _skillBonuses; + + [SerializableFieldSaveFlag(3)] + private bool ShouldSerializeSkillBonuses() => !_skillBonuses.IsEmpty; + + [SerializableField(4, setter: "private")] + [SerializableFieldAttr("[CommandProperty(AccessLevel.GameMaster, canModify: true)]")] + private AosElementAttributes _resistances; + + [SerializableFieldSaveFlag(4)] + private bool ShouldSerializeResistances() => !_resistances.IsEmpty; + + [EncodedInt] + [InvalidateProperties] + [SerializableField(5)] + [SerializableFieldAttr("[CommandProperty(AccessLevel.GameMaster)]")] + private int _maxHitPoints; + + [SerializableFieldSaveFlag(5)] + private bool ShouldSerializeMaxHitPoints() => _maxHitPoints != 0; + + // Field 6 + private int _hitPoints; + + [SerializableField(7)] + [SerializableFieldAttr("[CommandProperty(AccessLevel.GameMaster)]")] + private bool _playerConstructed; + + [SerializableFieldSaveFlag(7)] + private bool ShouldSerializePlayerConstructed() => _playerConstructed; + + [InvalidateProperties] + [SerializableField(8)] + [SerializableFieldAttr("[CommandProperty(AccessLevel.GameMaster)]")] + private Mobile _crafter; + + [SerializableFieldSaveFlag(8)] + private bool ShouldSerializeCrafter() => _crafter != null; + + [InvalidateProperties] + [SerializableField(9)] + [SerializableFieldAttr("[CommandProperty(AccessLevel.GameMaster)]")] + private ClothingQuality _quality = ClothingQuality.Regular; + + [SerializableFieldSaveFlag(9)] + private bool ShouldSerializeQuality() => _quality != ClothingQuality.Regular; + + // Field 10 + private int _strReq = -1; + + private FactionItem _factionState; public BaseClothing(int itemID, Layer layer, int hue = 0) : base(itemID) { Layer = layer; Hue = hue; - m_Resource = DefaultResource; - m_Quality = ClothingQuality.Regular; + _resource = DefaultResource; - m_HitPoints = m_MaxHitPoints = Utility.RandomMinMax(InitMinHits, InitMaxHits); + _hitPoints = _maxHitPoints = Utility.RandomMinMax(InitMinHits, InitMaxHits); Attributes = new AosAttributes(this); ClothingAttributes = new AosArmorAttributes(this); @@ -50,71 +111,40 @@ namespace Server.Items Resistances = new AosElementAttributes(this); } - public BaseClothing(Serial serial) : base(serial) - { - } - - [CommandProperty(AccessLevel.GameMaster)] - public Mobile Crafter - { - get => m_Crafter; - set - { - m_Crafter = value; - InvalidateProperties(); - } - } - - [CommandProperty(AccessLevel.GameMaster)] - public int StrRequirement - { - get => m_StrReq == -1 ? Core.AOS ? AosStrReq : OldStrReq : m_StrReq; - set - { - m_StrReq = value; - InvalidateProperties(); - } - } - - [CommandProperty(AccessLevel.GameMaster)] - public ClothingQuality Quality - { - get => m_Quality; - set - { - m_Quality = value; - InvalidateProperties(); - } - } - - [CommandProperty(AccessLevel.GameMaster)] - public bool PlayerConstructed { get; set; } - - public virtual CraftResource DefaultResource => CraftResource.None; - + [SerializableField(0)] [CommandProperty(AccessLevel.GameMaster)] public CraftResource Resource { - get => m_Resource; + get => _resource; set { - m_Resource = value; - Hue = CraftResources.GetHue(m_Resource); + _resource = value; + Hue = CraftResources.GetHue(_resource); InvalidateProperties(); + this.MarkDirty(); } } - [CommandProperty(AccessLevel.GameMaster, canModify: true)] - public AosAttributes Attributes { get; private set; } + [SerializableFieldSaveFlag(0)] + private bool ShouldSerializeResource() => _resource != DefaultResource; - [CommandProperty(AccessLevel.GameMaster, canModify: true)] - public AosArmorAttributes ClothingAttributes { get; private set; } + [SerializableField(10)] + [CommandProperty(AccessLevel.GameMaster)] + public int StrRequirement + { + get => _strReq == -1 ? Core.AOS ? AosStrReq : OldStrReq : _strReq; + set + { + _strReq = value; + InvalidateProperties(); + this.MarkDirty(); + } + } - [CommandProperty(AccessLevel.GameMaster, canModify: true)] - public AosSkillBonuses SkillBonuses { get; private set; } + [SerializableFieldSaveFlag(10)] + private bool ShouldSerializeStrReq() => _strReq != -1; - [CommandProperty(AccessLevel.GameMaster, canModify: true)] - public AosElementAttributes Resistances { get; private set; } + public virtual CraftResource DefaultResource => CraftResource.None; public virtual int BasePhysicalResistance => 0; public virtual int BaseFireResistance => 0; @@ -197,17 +227,17 @@ namespace Server.Items public FactionItem FactionItemState { - get => m_FactionState; + get => _factionState; set { - m_FactionState = value; + _factionState = value; - if (m_FactionState == null) + if (_factionState == null) { Hue = 0; } - LootType = m_FactionState == null ? LootType.Regular : LootType.Blessed; + LootType = _factionState == null ? LootType.Regular : LootType.Blessed; } } @@ -233,7 +263,7 @@ namespace Server.Items { try { - var info = CraftResources.GetInfo(m_Resource); + var info = CraftResources.GetInfo(_resource); var resourceType = info.ResourceTypes?[0] ?? item.Resources[0].ItemType; @@ -257,41 +287,36 @@ namespace Server.Items public virtual bool CanFortify => true; - [CommandProperty(AccessLevel.GameMaster)] - public int MaxHitPoints - { - get => m_MaxHitPoints; - set - { - m_MaxHitPoints = value; - InvalidateProperties(); - } - } - + [EncodedInt] + [SerializableField(6)] [CommandProperty(AccessLevel.GameMaster)] public int HitPoints { - get => m_HitPoints; + get => _hitPoints; set { - if (value != m_HitPoints && MaxHitPoints > 0) + if (value != _hitPoints && MaxHitPoints > 0) { - m_HitPoints = value; + _hitPoints = value; - if (m_HitPoints < 0) + if (_hitPoints < 0) { Delete(); } - else if (m_HitPoints > MaxHitPoints) + else if (_hitPoints > MaxHitPoints) { - m_HitPoints = MaxHitPoints; + _hitPoints = MaxHitPoints; } InvalidateProperties(); + this.MarkDirty(); } } } + [SerializableFieldSaveFlag(6)] + private bool ShouldSerializeHitPoints() => _hitPoints != 0; + public virtual int InitMinHits => 0; public virtual int InitMaxHits => 0; @@ -321,9 +346,9 @@ namespace Server.Items wear = Utility.Random(2); } - if (wear > 0 && m_MaxHitPoints > 0) + if (wear > 0 && _maxHitPoints > 0) { - if (m_HitPoints >= wear) + if (_hitPoints >= wear) { HitPoints -= wear; wear = 0; @@ -336,7 +361,7 @@ namespace Server.Items if (wear > 0) { - if (m_MaxHitPoints > wear) + if (_maxHitPoints > wear) { MaxHitPoints -= wear; @@ -362,20 +387,22 @@ namespace Server.Items { var scale = 100 + ClothingAttributes.DurabilityBonus; - m_HitPoints = (m_HitPoints * 100 + (scale - 1)) / scale; - m_MaxHitPoints = (m_MaxHitPoints * 100 + (scale - 1)) / scale; + _hitPoints = (_hitPoints * 100 + (scale - 1)) / scale; + _maxHitPoints = (_maxHitPoints * 100 + (scale - 1)) / scale; InvalidateProperties(); + this.MarkDirty(); } public void ScaleDurability() { var scale = 100 + ClothingAttributes.DurabilityBonus; - m_HitPoints = (m_HitPoints * scale + 99) / 100; - m_MaxHitPoints = (m_MaxHitPoints * scale + 99) / 100; + _hitPoints = (_hitPoints * scale + 99) / 100; + _maxHitPoints = (_maxHitPoints * scale + 99) / 100; InvalidateProperties(); + this.MarkDirty(); } public override bool AllowSecureTrade(Mobile from, Mobile to, Mobile newOwner, bool accepted) => @@ -445,15 +472,7 @@ namespace Server.Items return base.CanEquip(from); } - public int ComputeStatReq(StatType type) - { - int v; - - // if (type == StatType.Str) - v = StrRequirement; - - return AOS.Scale(v, 100 - GetLowerStatReq()); - } + public int ComputeStatReq(StatType type) => AOS.Scale(StrRequirement, 100 - GetLowerStatReq()); public int ComputeStatBonus(StatType type) => type switch @@ -553,15 +572,7 @@ namespace Server.Items } } - public int GetLowerStatReq() - { - if (!Core.AOS) - { - return 0; - } - - return ClothingAttributes.LowerStatReq; - } + public int GetLowerStatReq() => !Core.AOS ? 0 : ClothingAttributes.LowerStatReq; public override void OnAdded(IEntity parent) { @@ -635,7 +646,7 @@ namespace Server.Items public override void AddNameProperty(ObjectPropertyList list) { - var oreType = m_Resource switch + var oreType = _resource switch { CraftResource.DullCopper => 1053108, CraftResource.ShadowIron => 1053107, @@ -675,17 +686,17 @@ namespace Server.Items { base.GetProperties(list); - if (m_Crafter != null) + if (_crafter != null) { - list.Add(1050043, m_Crafter.Name); // crafted by ~1_NAME~ + list.Add(1050043, _crafter.Name); // crafted by ~1_NAME~ } - if (m_FactionState != null) + if (_factionState != null) { list.Add(1041350); // faction item } - if (m_Quality == ClothingQuality.Exceptional) + if (_quality == ClothingQuality.Exceptional) { list.Add(1060636); // exceptional } @@ -851,9 +862,9 @@ namespace Server.Items list.Add(1061170, prop.ToString()); // strength requirement ~1_val~ } - if (m_HitPoints >= 0 && m_MaxHitPoints > 0) + if (_hitPoints >= 0 && _maxHitPoints > 0) { - list.Add(1060639, "{0}\t{1}", m_HitPoints, m_MaxHitPoints); // durability ~1_val~ / ~2_val~ + list.Add(1060639, "{0}\t{1}", _hitPoints, _maxHitPoints); // durability ~1_val~ / ~2_val~ } } @@ -880,7 +891,7 @@ namespace Server.Items return; } - from.NetState.SendDisplayEquipmentInfo(Serial, number, m_Crafter?.RawName, false, attrs); + from.NetState.SendDisplayEquipmentInfo(Serial, number, _crafter?.RawName, false, attrs); } public virtual void AddEquipInfoAttributes(Mobile from, List attrs) @@ -897,14 +908,14 @@ namespace Server.Items } } - if (m_FactionState != null) + if (_factionState != null) { attrs.Add(new EquipInfoAttribute(1041350)); // faction item } - if (m_Quality == ClothingQuality.Exceptional) + if (_quality == ClothingQuality.Exceptional) { - attrs.Add(new EquipInfoAttribute(1018305 - (int)m_Quality)); + attrs.Add(new EquipInfoAttribute(1018305 - (int)_quality)); } } @@ -935,240 +946,91 @@ namespace Server.Items InvalidateProperties(); } - private static void SetSaveFlag(ref SaveFlag flags, SaveFlag toSet, bool setIf) + private static bool GetSaveFlag(OldSaveFlag flags, OldSaveFlag toGet) => (flags & toGet) != 0; + + private void Deserialize(IGenericReader reader, int version) { - if (setIf) + var flags = (OldSaveFlag)reader.ReadEncodedInt(); + + if (GetSaveFlag(flags, OldSaveFlag.Resource)) { - flags |= toSet; + _resource = (CraftResource)reader.ReadEncodedInt(); } + else + { + _resource = DefaultResource; + } + + Attributes = new AosAttributes(this); + + if (GetSaveFlag(flags, OldSaveFlag.Attributes)) + { + Attributes.Deserialize(reader); + } + + ClothingAttributes = new AosArmorAttributes(this); + + if (GetSaveFlag(flags, OldSaveFlag.ClothingAttributes)) + { + ClothingAttributes.Deserialize(reader); + } + + SkillBonuses = new AosSkillBonuses(this); + + if (GetSaveFlag(flags, OldSaveFlag.SkillBonuses)) + { + SkillBonuses.Deserialize(reader); + } + + Resistances = new AosElementAttributes(this); + + if (GetSaveFlag(flags, OldSaveFlag.Resistances)) + { + Resistances.Deserialize(reader); + } + + if (GetSaveFlag(flags, OldSaveFlag.MaxHitPoints)) + { + _maxHitPoints = reader.ReadEncodedInt(); + } + + if (GetSaveFlag(flags, OldSaveFlag.HitPoints)) + { + _hitPoints = reader.ReadEncodedInt(); + } + + if (GetSaveFlag(flags, OldSaveFlag.Crafter)) + { + _crafter = reader.ReadEntity(); + } + + if (GetSaveFlag(flags, OldSaveFlag.Quality)) + { + _quality = (ClothingQuality)reader.ReadEncodedInt(); + } + else + { + _quality = ClothingQuality.Regular; + } + + if (GetSaveFlag(flags, OldSaveFlag.StrReq)) + { + _strReq = reader.ReadEncodedInt(); + } + else + { + _strReq = -1; + } + + PlayerConstructed = GetSaveFlag(flags, OldSaveFlag.PlayerConstructed); } - private static bool GetSaveFlag(SaveFlag flags, SaveFlag toGet) => (flags & toGet) != 0; - - public override void Serialize(IGenericWriter writer) + [AfterDeserialization] + private void AfterDeserialization() { - base.Serialize(writer); - - writer.Write(5); // version - - var flags = SaveFlag.None; - - SetSaveFlag(ref flags, SaveFlag.Resource, m_Resource != DefaultResource); - SetSaveFlag(ref flags, SaveFlag.Attributes, !Attributes.IsEmpty); - SetSaveFlag(ref flags, SaveFlag.ClothingAttributes, !ClothingAttributes.IsEmpty); - SetSaveFlag(ref flags, SaveFlag.SkillBonuses, !SkillBonuses.IsEmpty); - SetSaveFlag(ref flags, SaveFlag.Resistances, !Resistances.IsEmpty); - SetSaveFlag(ref flags, SaveFlag.MaxHitPoints, m_MaxHitPoints != 0); - SetSaveFlag(ref flags, SaveFlag.HitPoints, m_HitPoints != 0); - SetSaveFlag(ref flags, SaveFlag.PlayerConstructed, PlayerConstructed); - SetSaveFlag(ref flags, SaveFlag.Crafter, m_Crafter != null); - SetSaveFlag(ref flags, SaveFlag.Quality, m_Quality != ClothingQuality.Regular); - SetSaveFlag(ref flags, SaveFlag.StrReq, m_StrReq != -1); - - writer.WriteEncodedInt((int)flags); - - if (GetSaveFlag(flags, SaveFlag.Resource)) + if (_maxHitPoints == 0 && _hitPoints == 0) { - writer.WriteEncodedInt((int)m_Resource); - } - - if (GetSaveFlag(flags, SaveFlag.Attributes)) - { - Attributes.Serialize(writer); - } - - if (GetSaveFlag(flags, SaveFlag.ClothingAttributes)) - { - ClothingAttributes.Serialize(writer); - } - - if (GetSaveFlag(flags, SaveFlag.SkillBonuses)) - { - SkillBonuses.Serialize(writer); - } - - if (GetSaveFlag(flags, SaveFlag.Resistances)) - { - Resistances.Serialize(writer); - } - - if (GetSaveFlag(flags, SaveFlag.MaxHitPoints)) - { - writer.WriteEncodedInt(m_MaxHitPoints); - } - - if (GetSaveFlag(flags, SaveFlag.HitPoints)) - { - writer.WriteEncodedInt(m_HitPoints); - } - - if (GetSaveFlag(flags, SaveFlag.Crafter)) - { - writer.Write(m_Crafter); - } - - if (GetSaveFlag(flags, SaveFlag.Quality)) - { - writer.WriteEncodedInt((int)m_Quality); - } - - if (GetSaveFlag(flags, SaveFlag.StrReq)) - { - writer.WriteEncodedInt(m_StrReq); - } - } - - public override void Deserialize(IGenericReader reader) - { - base.Deserialize(reader); - - var version = reader.ReadInt(); - - switch (version) - { - case 5: - { - var flags = (SaveFlag)reader.ReadEncodedInt(); - - if (GetSaveFlag(flags, SaveFlag.Resource)) - { - m_Resource = (CraftResource)reader.ReadEncodedInt(); - } - else - { - m_Resource = DefaultResource; - } - - Attributes = new AosAttributes(this); - - if (GetSaveFlag(flags, SaveFlag.Attributes)) - { - Attributes.Deserialize(reader); - } - - ClothingAttributes = new AosArmorAttributes(this); - - if (GetSaveFlag(flags, SaveFlag.ClothingAttributes)) - { - ClothingAttributes.Deserialize(reader); - } - - SkillBonuses = new AosSkillBonuses(this); - - if (GetSaveFlag(flags, SaveFlag.SkillBonuses)) - { - SkillBonuses.Deserialize(reader); - } - - Resistances = new AosElementAttributes(this); - - if (GetSaveFlag(flags, SaveFlag.Resistances)) - { - Resistances.Deserialize(reader); - } - - if (GetSaveFlag(flags, SaveFlag.MaxHitPoints)) - { - m_MaxHitPoints = reader.ReadEncodedInt(); - } - - if (GetSaveFlag(flags, SaveFlag.HitPoints)) - { - m_HitPoints = reader.ReadEncodedInt(); - } - - if (GetSaveFlag(flags, SaveFlag.Crafter)) - { - m_Crafter = reader.ReadEntity(); - } - - if (GetSaveFlag(flags, SaveFlag.Quality)) - { - m_Quality = (ClothingQuality)reader.ReadEncodedInt(); - } - else - { - m_Quality = ClothingQuality.Regular; - } - - if (GetSaveFlag(flags, SaveFlag.StrReq)) - { - m_StrReq = reader.ReadEncodedInt(); - } - else - { - m_StrReq = -1; - } - - if (GetSaveFlag(flags, SaveFlag.PlayerConstructed)) - { - PlayerConstructed = true; - } - - break; - } - case 4: - { - m_Resource = (CraftResource)reader.ReadInt(); - - goto case 3; - } - case 3: - { - Attributes = new AosAttributes(this); - Attributes.Deserialize(reader); - - ClothingAttributes = new AosArmorAttributes(this); - ClothingAttributes.Deserialize(reader); - - SkillBonuses = new AosSkillBonuses(this); - SkillBonuses.Deserialize(reader); - - Resistances = new AosElementAttributes(this); - Resistances.Deserialize(reader); - - goto case 2; - } - case 2: - { - PlayerConstructed = reader.ReadBool(); - goto case 1; - } - case 1: - { - m_Crafter = reader.ReadEntity(); - m_Quality = (ClothingQuality)reader.ReadInt(); - break; - } - case 0: - { - m_Crafter = null; - m_Quality = ClothingQuality.Regular; - break; - } - } - - if (version < 2) - { - PlayerConstructed = true; // we don't know, so, assume it's crafted - } - - if (version < 3) - { - Attributes = new AosAttributes(this); - ClothingAttributes = new AosArmorAttributes(this); - SkillBonuses = new AosSkillBonuses(this); - Resistances = new AosElementAttributes(this); - } - - if (version < 4) - { - m_Resource = DefaultResource; - } - - if (m_MaxHitPoints == 0 && m_HitPoints == 0) - { - m_HitPoints = m_MaxHitPoints = Utility.RandomMinMax(InitMinHits, InitMaxHits); + _hitPoints = _maxHitPoints = Utility.RandomMinMax(InitMinHits, InitMaxHits); } if (Parent is Mobile parent) @@ -1184,7 +1046,7 @@ namespace Server.Items } [Flags] - private enum SaveFlag + private enum OldSaveFlag { None = 0x00000000, Resource = 0x00000001, diff --git a/Projects/UOContent/Items/Clothing/Cloaks.cs b/Projects/UOContent/Items/Clothing/Cloaks.cs index d0688bcd8..f5b3a0a5f 100644 --- a/Projects/UOContent/Items/Clothing/Cloaks.cs +++ b/Projects/UOContent/Items/Clothing/Cloaks.cs @@ -2,116 +2,63 @@ using Server.Engines.VeteranRewards; namespace Server.Items { - public abstract class BaseCloak : BaseClothing + [Serializable(0, false)] + public abstract partial class BaseCloak : BaseClothing { public BaseCloak(int itemID, int hue = 0) : base(itemID, Layer.Cloak, hue) { } - - public BaseCloak(Serial serial) : base(serial) - { - } - - public override void Serialize(IGenericWriter writer) - { - base.Serialize(writer); - - writer.Write(0); // version - } - - public override void Deserialize(IGenericReader reader) - { - base.Deserialize(reader); - - var version = reader.ReadInt(); - } } [Flippable] - public class Cloak : BaseCloak, IArcaneEquip + [Serializable(2, false)] + public partial class Cloak : BaseCloak, IArcaneEquip { - private int m_MaxArcaneCharges, m_CurArcaneCharges; + private int _maxArcaneCharges; + private int _curArcaneCharges; [Constructible] public Cloak(int hue = 0) : base(0x1515, hue) => Weight = 5.0; - public Cloak(Serial serial) : base(serial) - { - } - - [CommandProperty(AccessLevel.GameMaster)] - public int MaxArcaneCharges - { - get => m_MaxArcaneCharges; - set - { - m_MaxArcaneCharges = value; - InvalidateProperties(); - Update(); - } - } - + [EncodedInt] + [SerializableField(0)] [CommandProperty(AccessLevel.GameMaster)] public int CurArcaneCharges { - get => m_CurArcaneCharges; + get => _curArcaneCharges; set { - m_CurArcaneCharges = value; + _curArcaneCharges = value; + this.MarkDirty(); + InvalidateProperties(); + Update(); + } + } + + [EncodedInt] + [SerializableField(1)] + [CommandProperty(AccessLevel.GameMaster)] + public int MaxArcaneCharges + { + get => _maxArcaneCharges; + set + { + _maxArcaneCharges = value; + this.MarkDirty(); InvalidateProperties(); Update(); } } [CommandProperty(AccessLevel.GameMaster)] - public bool IsArcane => m_MaxArcaneCharges > 0 && m_CurArcaneCharges >= 0; + public bool IsArcane => _maxArcaneCharges > 0 && _curArcaneCharges >= 0; - public override void Serialize(IGenericWriter writer) + private void Deserialize(IGenericReader reader, int version) { - base.Serialize(writer); - - writer.Write(1); // version - - if (IsArcane) + if (reader.ReadBool()) { - writer.Write(true); - writer.Write(m_CurArcaneCharges); - writer.Write(m_MaxArcaneCharges); - } - else - { - writer.Write(false); - } - } - - public override void Deserialize(IGenericReader reader) - { - base.Deserialize(reader); - - var version = reader.ReadInt(); - - switch (version) - { - case 1: - { - if (reader.ReadBool()) - { - m_CurArcaneCharges = reader.ReadInt(); - m_MaxArcaneCharges = reader.ReadInt(); - - if (Hue == 2118) - { - Hue = ArcaneGem.DefaultArcaneHue; - } - } - - break; - } - } - - if (Weight == 4.0) - { - Weight = 5.0; + _curArcaneCharges = reader.ReadInt(); + _maxArcaneCharges = reader.ReadInt(); } } @@ -126,7 +73,7 @@ namespace Server.Items ItemID = 0x1515; } - if (IsArcane && CurArcaneCharges == 0) + if (IsArcane && _curArcaneCharges == 0) { Hue = 0; } @@ -138,7 +85,7 @@ namespace Server.Items if (IsArcane) { - list.Add(1061837, "{0}\t{1}", m_CurArcaneCharges, m_MaxArcaneCharges); // arcane charges: ~1_val~ / ~2_val~ + list.Add(1061837, "{0}\t{1}", _curArcaneCharges, _maxArcaneCharges); // arcane charges: ~1_val~ / ~2_val~ } } @@ -148,27 +95,33 @@ namespace Server.Items if (IsArcane) { - LabelTo(from, 1061837, $"{m_CurArcaneCharges}\t{m_MaxArcaneCharges}"); + LabelTo(from, 1061837, $"{_curArcaneCharges}\t{_maxArcaneCharges}"); } } public void Flip() { - if (ItemID == 0x1515) + ItemID = ItemID switch { - ItemID = 0x1530; - } - else if (ItemID == 0x1530) - { - ItemID = 0x1515; - } + 0x1515 => 0x1530, + 0x1530 => 0x1515, + _ => ItemID + }; } } [Flippable] - public class RewardCloak : BaseCloak, IRewardItem + [Serializable(0, false)] + public partial class RewardCloak : BaseCloak, IRewardItem { - private int m_LabelNumber; + [InvalidateProperties] + [SerializableField(0)] + [SerializableFieldAttr("[CommandProperty(AccessLevel.GameMaster)]")] + private int _number; + + [SerializableField(1)] + [SerializableFieldAttr("[CommandProperty(AccessLevel.GameMaster)]")] + private bool _isRewardItem; [Constructible] public RewardCloak(int hue = 0, int labelNumber = 0) : base(0x1515, hue) @@ -176,42 +129,13 @@ namespace Server.Items Weight = 5.0; LootType = LootType.Blessed; - m_LabelNumber = labelNumber; + _number = labelNumber; } - public RewardCloak(Serial serial) : base(serial) - { - } - - [CommandProperty(AccessLevel.GameMaster)] - public int Number - { - get => m_LabelNumber; - set - { - m_LabelNumber = value; - InvalidateProperties(); - } - } - - public override int LabelNumber - { - get - { - if (m_LabelNumber > 0) - { - return m_LabelNumber; - } - - return base.LabelNumber; - } - } + public override int LabelNumber => _number > 0 ? _number : base.LabelNumber; public override int BasePhysicalResistance => 3; - [CommandProperty(AccessLevel.GameMaster)] - public bool IsRewardItem { get; set; } - public override void OnAdded(IEntity parent) { base.OnAdded(parent); @@ -244,51 +168,18 @@ namespace Server.Items if (Core.ML && IsRewardItem) { - list.Add( - RewardSystem.GetRewardYearLabel( - this, - new object[] { Hue, m_LabelNumber } - ) - ); // X Year Veteran Reward + // X Year Veteran Reward + list.Add(RewardSystem.GetRewardYearLabel(this, new object[] { Hue, _number })); } } - public override bool CanEquip(Mobile m) + public override bool CanEquip(Mobile m) => + base.CanEquip(m) && + (!IsRewardItem || RewardSystem.CheckIsUsableBy(m, this, new object[] { Hue, _number })); + + [AfterDeserialization] + private void AfterDeserialization() { - if (!base.CanEquip(m)) - { - return false; - } - - return !IsRewardItem || RewardSystem.CheckIsUsableBy(m, this, new object[] { Hue, m_LabelNumber }); - } - - public override void Serialize(IGenericWriter writer) - { - base.Serialize(writer); - - writer.Write(0); // version - - writer.Write(m_LabelNumber); - writer.Write(IsRewardItem); - } - - public override void Deserialize(IGenericReader reader) - { - base.Deserialize(reader); - - var version = reader.ReadInt(); - - switch (version) - { - case 0: - { - m_LabelNumber = reader.ReadInt(); - IsRewardItem = reader.ReadBool(); - break; - } - } - if (Parent is Mobile mobile) { mobile.VirtualArmorMod += 2; @@ -297,27 +188,10 @@ namespace Server.Items } [Flippable(0x230A, 0x2309)] - public class FurCape : BaseCloak + [Serializable(0, false)] + public partial class FurCape : BaseCloak { [Constructible] public FurCape(int hue = 0) : base(0x230A, hue) => Weight = 4.0; - - public FurCape(Serial serial) : base(serial) - { - } - - public override void Serialize(IGenericWriter writer) - { - base.Serialize(writer); - - writer.Write(0); // version - } - - public override void Deserialize(IGenericReader reader) - { - base.Deserialize(reader); - - var version = reader.ReadInt(); - } } } diff --git a/Projects/UOContent/Items/Clothing/Hats.cs b/Projects/UOContent/Items/Clothing/Hats.cs index 0fc0c9bd0..98c31d746 100644 --- a/Projects/UOContent/Items/Clothing/Hats.cs +++ b/Projects/UOContent/Items/Clothing/Hats.cs @@ -6,44 +6,17 @@ using Server.Network; namespace Server.Items { - public abstract class BaseHat : BaseClothing, IShipwreckedItem + [Serializable(0, false)] + public abstract partial class BaseHat : BaseClothing, IShipwreckedItem { + [SerializableField(0)] + [SerializableFieldAttr("[CommandProperty(AccessLevel.GameMaster)]")] + private bool _isShipwreckedItem; + public BaseHat(int itemID, int hue = 0) : base(itemID, Layer.Helm, hue) { } - public BaseHat(Serial serial) : base(serial) - { - } - - [CommandProperty(AccessLevel.GameMaster)] - public bool IsShipwreckedItem { get; set; } - - public override void Serialize(IGenericWriter writer) - { - base.Serialize(writer); - - writer.Write(1); // version - - writer.Write(IsShipwreckedItem); - } - - public override void Deserialize(IGenericReader reader) - { - base.Deserialize(reader); - - var version = reader.ReadInt(); - - switch (version) - { - case 1: - { - IsShipwreckedItem = reader.ReadBool(); - break; - } - } - } - public override void AddEquipInfoAttributes(Mobile from, List attrs) { base.AddEquipInfoAttributes(from, attrs); @@ -84,15 +57,12 @@ namespace Server.Items } [Flippable(0x2798, 0x27E3)] - public class Kasa : BaseHat + [Serializable(0, false)] + public partial class Kasa : BaseHat { [Constructible] public Kasa(int hue = 0) : base(0x2798, hue) => Weight = 3.0; - public Kasa(Serial serial) : base(serial) - { - } - public override int BasePhysicalResistance => 0; public override int BaseFireResistance => 5; public override int BaseColdResistance => 9; @@ -101,32 +71,15 @@ namespace Server.Items public override int InitMinHits => 20; public override int InitMaxHits => 30; - - public override void Serialize(IGenericWriter writer) - { - base.Serialize(writer); - - writer.Write(0); // version - } - - public override void Deserialize(IGenericReader reader) - { - base.Deserialize(reader); - - var version = reader.ReadInt(); - } } [Flippable(0x278F, 0x27DA)] - public class ClothNinjaHood : BaseHat + [Serializable(0, false)] + public partial class ClothNinjaHood : BaseHat { [Constructible] public ClothNinjaHood(int hue = 0) : base(0x278F, hue) => Weight = 2.0; - public ClothNinjaHood(Serial serial) : base(serial) - { - } - public override int BasePhysicalResistance => 3; public override int BaseFireResistance => 3; public override int BaseColdResistance => 6; @@ -135,32 +88,15 @@ namespace Server.Items public override int InitMinHits => 20; public override int InitMaxHits => 30; - - public override void Serialize(IGenericWriter writer) - { - base.Serialize(writer); - - writer.Write(0); // version - } - - public override void Deserialize(IGenericReader reader) - { - base.Deserialize(reader); - - var version = reader.ReadInt(); - } } [Flippable(0x2306, 0x2305)] - public class FlowerGarland : BaseHat + [Serializable(0, false)] + public partial class FlowerGarland : BaseHat { [Constructible] public FlowerGarland(int hue = 0) : base(0x2306, hue) => Weight = 1.0; - public FlowerGarland(Serial serial) : base(serial) - { - } - public override int BasePhysicalResistance => 3; public override int BaseFireResistance => 3; public override int BaseColdResistance => 6; @@ -169,31 +105,14 @@ namespace Server.Items public override int InitMinHits => 20; public override int InitMaxHits => 30; - - public override void Serialize(IGenericWriter writer) - { - base.Serialize(writer); - - writer.Write(0); // version - } - - public override void Deserialize(IGenericReader reader) - { - base.Deserialize(reader); - - var version = reader.ReadInt(); - } } - public class FloppyHat : BaseHat + [Serializable(0, false)] + public partial class FloppyHat : BaseHat { [Constructible] public FloppyHat(int hue = 0) : base(0x1713, hue) => Weight = 1.0; - public FloppyHat(Serial serial) : base(serial) - { - } - public override int BasePhysicalResistance => 0; public override int BaseFireResistance => 5; public override int BaseColdResistance => 9; @@ -202,31 +121,14 @@ namespace Server.Items public override int InitMinHits => 20; public override int InitMaxHits => 30; - - public override void Serialize(IGenericWriter writer) - { - base.Serialize(writer); - - writer.Write(0); // version - } - - public override void Deserialize(IGenericReader reader) - { - base.Deserialize(reader); - - var version = reader.ReadInt(); - } } - public class WideBrimHat : BaseHat + [Serializable(0, false)] + public partial class WideBrimHat : BaseHat { [Constructible] public WideBrimHat(int hue = 0) : base(0x1714, hue) => Weight = 1.0; - public WideBrimHat(Serial serial) : base(serial) - { - } - public override int BasePhysicalResistance => 0; public override int BaseFireResistance => 5; public override int BaseColdResistance => 9; @@ -235,31 +137,14 @@ namespace Server.Items public override int InitMinHits => 20; public override int InitMaxHits => 30; - - public override void Serialize(IGenericWriter writer) - { - base.Serialize(writer); - - writer.Write(0); // version - } - - public override void Deserialize(IGenericReader reader) - { - base.Deserialize(reader); - - var version = reader.ReadInt(); - } } - public class Cap : BaseHat + [Serializable(0, false)] + public partial class Cap : BaseHat { [Constructible] public Cap(int hue = 0) : base(0x1715, hue) => Weight = 1.0; - public Cap(Serial serial) : base(serial) - { - } - public override int BasePhysicalResistance => 0; public override int BaseFireResistance => 5; public override int BaseColdResistance => 9; @@ -268,31 +153,14 @@ namespace Server.Items public override int InitMinHits => 20; public override int InitMaxHits => 30; - - public override void Serialize(IGenericWriter writer) - { - base.Serialize(writer); - - writer.Write(0); // version - } - - public override void Deserialize(IGenericReader reader) - { - base.Deserialize(reader); - - var version = reader.ReadInt(); - } } - public class SkullCap : BaseHat + [Serializable(0, false)] + public partial class SkullCap : BaseHat { [Constructible] public SkullCap(int hue = 0) : base(0x1544, hue) => Weight = 1.0; - public SkullCap(Serial serial) : base(serial) - { - } - public override int BasePhysicalResistance => 0; public override int BaseFireResistance => 3; public override int BaseColdResistance => 5; @@ -301,31 +169,14 @@ namespace Server.Items public override int InitMinHits => Core.ML ? 14 : 7; public override int InitMaxHits => Core.ML ? 28 : 12; - - public override void Serialize(IGenericWriter writer) - { - base.Serialize(writer); - - writer.Write(0); // version - } - - public override void Deserialize(IGenericReader reader) - { - base.Deserialize(reader); - - var version = reader.ReadInt(); - } } - public class Bandana : BaseHat + [Serializable(0, false)] + public partial class Bandana : BaseHat { [Constructible] public Bandana(int hue = 0) : base(0x1540, hue) => Weight = 1.0; - public Bandana(Serial serial) : base(serial) - { - } - public override int BasePhysicalResistance => 0; public override int BaseFireResistance => 3; public override int BaseColdResistance => 5; @@ -334,31 +185,14 @@ namespace Server.Items public override int InitMinHits => 20; public override int InitMaxHits => 30; - - public override void Serialize(IGenericWriter writer) - { - base.Serialize(writer); - - writer.Write(0); // version - } - - public override void Deserialize(IGenericReader reader) - { - base.Deserialize(reader); - - var version = reader.ReadInt(); - } } - public class BearMask : BaseHat + [Serializable(0, false)] + public partial class BearMask : BaseHat { [Constructible] public BearMask(int hue = 0) : base(0x1545, hue) => Weight = 5.0; - public BearMask(Serial serial) : base(serial) - { - } - public override int BasePhysicalResistance => 5; public override int BaseFireResistance => 3; public override int BaseColdResistance => 8; @@ -373,31 +207,14 @@ namespace Server.Items from.SendLocalizedMessage(sender.FailMessage); return false; } - - public override void Serialize(IGenericWriter writer) - { - base.Serialize(writer); - - writer.Write(0); // version - } - - public override void Deserialize(IGenericReader reader) - { - base.Deserialize(reader); - - var version = reader.ReadInt(); - } } - public class DeerMask : BaseHat + [Serializable(0, false)] + public partial class DeerMask : BaseHat { [Constructible] public DeerMask(int hue = 0) : base(0x1547, hue) => Weight = 4.0; - public DeerMask(Serial serial) : base(serial) - { - } - public override int BasePhysicalResistance => 2; public override int BaseFireResistance => 6; public override int BaseColdResistance => 8; @@ -412,31 +229,14 @@ namespace Server.Items from.SendLocalizedMessage(sender.FailMessage); return false; } - - public override void Serialize(IGenericWriter writer) - { - base.Serialize(writer); - - writer.Write(0); // version - } - - public override void Deserialize(IGenericReader reader) - { - base.Deserialize(reader); - - var version = reader.ReadInt(); - } } - public class HornedTribalMask : BaseHat + [Serializable(0, false)] + public partial class HornedTribalMask : BaseHat { [Constructible] public HornedTribalMask(int hue = 0) : base(0x1549, hue) => Weight = 2.0; - public HornedTribalMask(Serial serial) : base(serial) - { - } - public override int BasePhysicalResistance => 6; public override int BaseFireResistance => 9; public override int BaseColdResistance => 0; @@ -451,31 +251,14 @@ namespace Server.Items from.SendLocalizedMessage(sender.FailMessage); return false; } - - public override void Serialize(IGenericWriter writer) - { - base.Serialize(writer); - - writer.Write(0); // version - } - - public override void Deserialize(IGenericReader reader) - { - base.Deserialize(reader); - - var version = reader.ReadInt(); - } } - public class TribalMask : BaseHat + [Serializable(0, false)] + public partial class TribalMask : BaseHat { [Constructible] public TribalMask(int hue = 0) : base(0x154B, hue) => Weight = 2.0; - public TribalMask(Serial serial) : base(serial) - { - } - public override int BasePhysicalResistance => 3; public override int BaseFireResistance => 0; public override int BaseColdResistance => 6; @@ -490,31 +273,14 @@ namespace Server.Items from.SendLocalizedMessage(sender.FailMessage); return false; } - - public override void Serialize(IGenericWriter writer) - { - base.Serialize(writer); - - writer.Write(0); // version - } - - public override void Deserialize(IGenericReader reader) - { - base.Deserialize(reader); - - var version = reader.ReadInt(); - } } - public class TallStrawHat : BaseHat + [Serializable(0, false)] + public partial class TallStrawHat : BaseHat { [Constructible] public TallStrawHat(int hue = 0) : base(0x1716, hue) => Weight = 1.0; - public TallStrawHat(Serial serial) : base(serial) - { - } - public override int BasePhysicalResistance => 0; public override int BaseFireResistance => 5; public override int BaseColdResistance => 9; @@ -523,31 +289,14 @@ namespace Server.Items public override int InitMinHits => 20; public override int InitMaxHits => 30; - - public override void Serialize(IGenericWriter writer) - { - base.Serialize(writer); - - writer.Write(0); // version - } - - public override void Deserialize(IGenericReader reader) - { - base.Deserialize(reader); - - var version = reader.ReadInt(); - } } - public class StrawHat : BaseHat + [Serializable(0, false)] + public partial class StrawHat : BaseHat { [Constructible] public StrawHat(int hue = 0) : base(0x1717, hue) => Weight = 1.0; - public StrawHat(Serial serial) : base(serial) - { - } - public override int BasePhysicalResistance => 0; public override int BaseFireResistance => 5; public override int BaseColdResistance => 9; @@ -556,31 +305,14 @@ namespace Server.Items public override int InitMinHits => 20; public override int InitMaxHits => 30; - - public override void Serialize(IGenericWriter writer) - { - base.Serialize(writer); - - writer.Write(0); // version - } - - public override void Deserialize(IGenericReader reader) - { - base.Deserialize(reader); - - var version = reader.ReadInt(); - } } - public class OrcishKinMask : BaseHat + [Serializable(0, false)] + public partial class OrcishKinMask : BaseHat { [Constructible] public OrcishKinMask(int hue = 0x8A4) : base(0x141B, hue) => Weight = 2.0; - public OrcishKinMask(Serial serial) : base(serial) - { - } - public override int BasePhysicalResistance => 1; public override int BaseFireResistance => 1; public override int BaseColdResistance => 7; @@ -623,26 +355,10 @@ namespace Server.Items Titles.AwardKarma(mobile, -20, true); } } - - public override void Serialize(IGenericWriter writer) - { - base.Serialize(writer); - - writer.Write(0); // version - } - - public override void Deserialize(IGenericReader reader) - { - base.Deserialize(reader); - - var version = reader.ReadInt(); - - /*if (Hue != 0x8A4) - Hue = 0x8A4;*/ - } } - public class SavageMask : BaseHat + [Serializable(0, false)] + public partial class SavageMask : BaseHat { [Constructible] public SavageMask() : this(GetRandomHue()) @@ -652,10 +368,6 @@ namespace Server.Items [Constructible] public SavageMask(int hue) : base(0x154B, hue) => Weight = 2.0; - public SavageMask(Serial serial) : base(serial) - { - } - public override int BasePhysicalResistance => 3; public override int BaseFireResistance => 0; public override int BaseColdResistance => 6; @@ -682,34 +394,14 @@ namespace Server.Items from.SendLocalizedMessage(sender.FailMessage); return false; } - - public override void Serialize(IGenericWriter writer) - { - base.Serialize(writer); - - writer.Write(0); // version - } - - public override void Deserialize(IGenericReader reader) - { - base.Deserialize(reader); - - var version = reader.ReadInt(); - - /*if (Hue != 0 && (Hue < 2101 || Hue > 2130)) - Hue = GetRandomHue();*/ - } } - public class WizardsHat : BaseHat + [Serializable(0, false)] + public partial class WizardsHat : BaseHat { [Constructible] public WizardsHat(int hue = 0) : base(0x1718, hue) => Weight = 1.0; - public WizardsHat(Serial serial) : base(serial) - { - } - public override int BasePhysicalResistance => 0; public override int BaseFireResistance => 5; public override int BaseColdResistance => 9; @@ -718,31 +410,14 @@ namespace Server.Items public override int InitMinHits => 20; public override int InitMaxHits => 30; - - public override void Serialize(IGenericWriter writer) - { - base.Serialize(writer); - - writer.Write(0); // version - } - - public override void Deserialize(IGenericReader reader) - { - base.Deserialize(reader); - - var version = reader.ReadInt(); - } } - public class MagicWizardsHat : BaseHat + [Serializable(0, false)] + public partial class MagicWizardsHat : BaseHat { [Constructible] public MagicWizardsHat(int hue = 0) : base(0x1718, hue) => Weight = 1.0; - public MagicWizardsHat(Serial serial) : base(serial) - { - } - public override int BasePhysicalResistance => 0; public override int BaseFireResistance => 5; public override int BaseColdResistance => 9; @@ -757,31 +432,14 @@ namespace Server.Items public override int BaseStrBonus => -5; public override int BaseDexBonus => -5; public override int BaseIntBonus => +5; - - public override void Serialize(IGenericWriter writer) - { - base.Serialize(writer); - - writer.Write(0); // version - } - - public override void Deserialize(IGenericReader reader) - { - base.Deserialize(reader); - - var version = reader.ReadInt(); - } } - public class Bonnet : BaseHat + [Serializable(0, false)] + public partial class Bonnet : BaseHat { [Constructible] public Bonnet(int hue = 0) : base(0x1719, hue) => Weight = 1.0; - public Bonnet(Serial serial) : base(serial) - { - } - public override int BasePhysicalResistance => 0; public override int BaseFireResistance => 5; public override int BaseColdResistance => 9; @@ -790,31 +448,14 @@ namespace Server.Items public override int InitMinHits => 20; public override int InitMaxHits => 30; - - public override void Serialize(IGenericWriter writer) - { - base.Serialize(writer); - - writer.Write(0); // version - } - - public override void Deserialize(IGenericReader reader) - { - base.Deserialize(reader); - - var version = reader.ReadInt(); - } } - public class FeatheredHat : BaseHat + [Serializable(0, false)] + public partial class FeatheredHat : BaseHat { [Constructible] public FeatheredHat(int hue = 0) : base(0x171A, hue) => Weight = 1.0; - public FeatheredHat(Serial serial) : base(serial) - { - } - public override int BasePhysicalResistance => 0; public override int BaseFireResistance => 5; public override int BaseColdResistance => 9; @@ -823,31 +464,14 @@ namespace Server.Items public override int InitMinHits => 20; public override int InitMaxHits => 30; - - public override void Serialize(IGenericWriter writer) - { - base.Serialize(writer); - - writer.Write(0); // version - } - - public override void Deserialize(IGenericReader reader) - { - base.Deserialize(reader); - - var version = reader.ReadInt(); - } } - public class TricorneHat : BaseHat + [Serializable(0, false)] + public partial class TricorneHat : BaseHat { [Constructible] public TricorneHat(int hue = 0) : base(0x171B, hue) => Weight = 1.0; - public TricorneHat(Serial serial) : base(serial) - { - } - public override int BasePhysicalResistance => 0; public override int BaseFireResistance => 5; public override int BaseColdResistance => 9; @@ -856,31 +480,14 @@ namespace Server.Items public override int InitMinHits => 20; public override int InitMaxHits => 30; - - public override void Serialize(IGenericWriter writer) - { - base.Serialize(writer); - - writer.Write(0); // version - } - - public override void Deserialize(IGenericReader reader) - { - base.Deserialize(reader); - - var version = reader.ReadInt(); - } } - public class JesterHat : BaseHat + [Serializable(0, false)] + public partial class JesterHat : BaseHat { [Constructible] public JesterHat(int hue = 0) : base(0x171C, hue) => Weight = 1.0; - public JesterHat(Serial serial) : base(serial) - { - } - public override int BasePhysicalResistance => 0; public override int BaseFireResistance => 5; public override int BaseColdResistance => 9; @@ -889,19 +496,5 @@ namespace Server.Items public override int InitMinHits => 20; public override int InitMaxHits => 30; - - public override void Serialize(IGenericWriter writer) - { - base.Serialize(writer); - - writer.Write(0); // version - } - - public override void Deserialize(IGenericReader reader) - { - base.Deserialize(reader); - - var version = reader.ReadInt(); - } } } diff --git a/Projects/UOContent/Items/Clothing/MiddleTorso.cs b/Projects/UOContent/Items/Clothing/MiddleTorso.cs index a209eaf9a..ae7957bcd 100644 --- a/Projects/UOContent/Items/Clothing/MiddleTorso.cs +++ b/Projects/UOContent/Items/Clothing/MiddleTorso.cs @@ -1,237 +1,74 @@ namespace Server.Items { - public abstract class BaseMiddleTorso : BaseClothing + [Serializable(0, false)] + public abstract partial class BaseMiddleTorso : BaseClothing { public BaseMiddleTorso(int itemID, int hue = 0) : base(itemID, Layer.MiddleTorso, hue) { } - - public BaseMiddleTorso(Serial serial) : base(serial) - { - } - - public override void Serialize(IGenericWriter writer) - { - base.Serialize(writer); - - writer.Write(0); // version - } - - public override void Deserialize(IGenericReader reader) - { - base.Deserialize(reader); - - var version = reader.ReadInt(); - } } + [Serializable(0, false)] [Flippable(0x1541, 0x1542)] - public class BodySash : BaseMiddleTorso + public partial class BodySash : BaseMiddleTorso { [Constructible] public BodySash(int hue = 0) : base(0x1541, hue) => Weight = 1.0; - - public BodySash(Serial serial) : base(serial) - { - } - - public override void Serialize(IGenericWriter writer) - { - base.Serialize(writer); - - writer.Write(0); // version - } - - public override void Deserialize(IGenericReader reader) - { - base.Deserialize(reader); - - var version = reader.ReadInt(); - } } + [Serializable(0, false)] [Flippable(0x153d, 0x153e)] - public class FullApron : BaseMiddleTorso + public partial class FullApron : BaseMiddleTorso { [Constructible] public FullApron(int hue = 0) : base(0x153d, hue) => Weight = 4.0; - - public FullApron(Serial serial) : base(serial) - { - } - - public override void Serialize(IGenericWriter writer) - { - base.Serialize(writer); - - writer.Write(0); // version - } - - public override void Deserialize(IGenericReader reader) - { - base.Deserialize(reader); - - var version = reader.ReadInt(); - } } + [Serializable(0, false)] [Flippable(0x1f7b, 0x1f7c)] - public class Doublet : BaseMiddleTorso + public partial class Doublet : BaseMiddleTorso { [Constructible] public Doublet(int hue = 0) : base(0x1F7B, hue) => Weight = 2.0; - - public Doublet(Serial serial) : base(serial) - { - } - - public override void Serialize(IGenericWriter writer) - { - base.Serialize(writer); - - writer.Write(0); // version - } - - public override void Deserialize(IGenericReader reader) - { - base.Deserialize(reader); - - var version = reader.ReadInt(); - } } + [Serializable(0, false)] [Flippable(0x1ffd, 0x1ffe)] - public class Surcoat : BaseMiddleTorso + public partial class Surcoat : BaseMiddleTorso { [Constructible] public Surcoat(int hue = 0) : base(0x1FFD, hue) => Weight = 6.0; - - public Surcoat(Serial serial) : base(serial) - { - } - - public override void Serialize(IGenericWriter writer) - { - base.Serialize(writer); - - writer.Write(0); // version - } - - public override void Deserialize(IGenericReader reader) - { - base.Deserialize(reader); - - var version = reader.ReadInt(); - - if (Weight == 3.0) - { - Weight = 6.0; - } - } } + [Serializable(0, false)] [Flippable(0x1fa1, 0x1fa2)] - public class Tunic : BaseMiddleTorso + public partial class Tunic : BaseMiddleTorso { [Constructible] public Tunic(int hue = 0) : base(0x1FA1, hue) => Weight = 5.0; - - public Tunic(Serial serial) : base(serial) - { - } - - public override void Serialize(IGenericWriter writer) - { - base.Serialize(writer); - - writer.Write(0); // version - } - - public override void Deserialize(IGenericReader reader) - { - base.Deserialize(reader); - - var version = reader.ReadInt(); - } } + [Serializable(0, false)] [Flippable(0x2310, 0x230F)] - public class FormalShirt : BaseMiddleTorso + public partial class FormalShirt : BaseMiddleTorso { [Constructible] public FormalShirt(int hue = 0) : base(0x2310, hue) => Weight = 1.0; - - public FormalShirt(Serial serial) : base(serial) - { - } - - public override void Serialize(IGenericWriter writer) - { - base.Serialize(writer); - - writer.Write(0); // version - - if (Weight == 2.0) - { - Weight = 1.0; - } - } - - public override void Deserialize(IGenericReader reader) - { - base.Deserialize(reader); - - var version = reader.ReadInt(); - } } + [Serializable(0, false)] [Flippable(0x1f9f, 0x1fa0)] - public class JesterSuit : BaseMiddleTorso + public partial class JesterSuit : BaseMiddleTorso { [Constructible] public JesterSuit(int hue = 0) : base(0x1F9F, hue) => Weight = 4.0; - - public JesterSuit(Serial serial) : base(serial) - { - } - - public override void Serialize(IGenericWriter writer) - { - base.Serialize(writer); - - writer.Write(0); // version - } - - public override void Deserialize(IGenericReader reader) - { - base.Deserialize(reader); - - var version = reader.ReadInt(); - } } + [Serializable(0, false)] [Flippable(0x27A1, 0x27EC)] - public class JinBaori : BaseMiddleTorso + public partial class JinBaori : BaseMiddleTorso { [Constructible] public JinBaori(int hue = 0) : base(0x27A1, hue) => Weight = 3.0; - - public JinBaori(Serial serial) : base(serial) - { - } - - public override void Serialize(IGenericWriter writer) - { - base.Serialize(writer); - - writer.Write(0); // version - } - - public override void Deserialize(IGenericReader reader) - { - base.Deserialize(reader); - - var version = reader.ReadInt(); - } } } diff --git a/Projects/UOContent/Items/Clothing/OuterLegs.cs b/Projects/UOContent/Items/Clothing/OuterLegs.cs index 3a72e4dea..d5bef9eea 100644 --- a/Projects/UOContent/Items/Clothing/OuterLegs.cs +++ b/Projects/UOContent/Items/Clothing/OuterLegs.cs @@ -1,132 +1,42 @@ namespace Server.Items { - public abstract class BaseOuterLegs : BaseClothing + [Serializable(0, false)] + public abstract partial class BaseOuterLegs : BaseClothing { public BaseOuterLegs(int itemID, int hue = 0) : base(itemID, Layer.OuterLegs, hue) { } - - public BaseOuterLegs(Serial serial) : base(serial) - { - } - - public override void Serialize(IGenericWriter writer) - { - base.Serialize(writer); - - writer.Write(0); // version - } - - public override void Deserialize(IGenericReader reader) - { - base.Deserialize(reader); - - var version = reader.ReadInt(); - } } + [Serializable(0, false)] [Flippable(0x230C, 0x230B)] - public class FurSarong : BaseOuterLegs + public partial class FurSarong : BaseOuterLegs { [Constructible] public FurSarong(int hue = 0) : base(0x230C, hue) => Weight = 3.0; - - public FurSarong(Serial serial) : base(serial) - { - } - - public override void Serialize(IGenericWriter writer) - { - base.Serialize(writer); - - writer.Write(0); // version - } - - public override void Deserialize(IGenericReader reader) - { - base.Deserialize(reader); - - var version = reader.ReadInt(); - - if (Weight == 4.0) - { - Weight = 3.0; - } - } } + [Serializable(0, false)] [Flippable(0x1516, 0x1531)] - public class Skirt : BaseOuterLegs + public partial class Skirt : BaseOuterLegs { [Constructible] public Skirt(int hue = 0) : base(0x1516, hue) => Weight = 4.0; - - public Skirt(Serial serial) : base(serial) - { - } - - public override void Serialize(IGenericWriter writer) - { - base.Serialize(writer); - - writer.Write(0); // version - } - - public override void Deserialize(IGenericReader reader) - { - base.Deserialize(reader); - - var version = reader.ReadInt(); - } } + [Serializable(0, false)] [Flippable(0x1537, 0x1538)] - public class Kilt : BaseOuterLegs + public partial class Kilt : BaseOuterLegs { [Constructible] public Kilt(int hue = 0) : base(0x1537, hue) => Weight = 2.0; - - public Kilt(Serial serial) : base(serial) - { - } - - public override void Serialize(IGenericWriter writer) - { - base.Serialize(writer); - - writer.Write(0); // version - } - - public override void Deserialize(IGenericReader reader) - { - base.Deserialize(reader); - - var version = reader.ReadInt(); - } } + [Serializable(0, false)] [Flippable(0x279A, 0x27E5)] - public class Hakama : BaseOuterLegs + public partial class Hakama : BaseOuterLegs { [Constructible] public Hakama(int hue = 0) : base(0x279A, hue) => Weight = 2.0; - - public Hakama(Serial serial) : base(serial) - { - } - - public override void Serialize(IGenericWriter writer) - { - base.Serialize(writer); - - writer.Write(0); // version - } - - public override void Deserialize(IGenericReader reader) - { - base.Deserialize(reader); - - var version = reader.ReadInt(); - } } } diff --git a/Projects/UOContent/Items/Clothing/OuterTorso.cs b/Projects/UOContent/Items/Clothing/OuterTorso.cs index 7125f219d..ecd0b5d55 100644 --- a/Projects/UOContent/Items/Clothing/OuterTorso.cs +++ b/Projects/UOContent/Items/Clothing/OuterTorso.cs @@ -1,88 +1,50 @@ using System; +using System.Runtime.CompilerServices; using Server.Engines.VeteranRewards; namespace Server.Items { - public abstract class BaseOuterTorso : BaseClothing + [Serializable(0, false)] + public abstract partial class BaseOuterTorso : BaseClothing { public BaseOuterTorso(int itemID, int hue = 0) : base(itemID, Layer.OuterTorso, hue) { } - - public BaseOuterTorso(Serial serial) : base(serial) - { - } - - public override void Serialize(IGenericWriter writer) - { - base.Serialize(writer); - - writer.Write(0); // version - } - - public override void Deserialize(IGenericReader reader) - { - base.Deserialize(reader); - - var version = reader.ReadInt(); - } } + [Serializable(0, false)] [Flippable(0x230E, 0x230D)] - public class GildedDress : BaseOuterTorso + public partial class GildedDress : BaseOuterTorso { [Constructible] public GildedDress(int hue = 0) : base(0x230E, hue) => Weight = 3.0; - - public GildedDress(Serial serial) : base(serial) - { - } - - public override void Serialize(IGenericWriter writer) - { - base.Serialize(writer); - - writer.Write(0); // version - } - - public override void Deserialize(IGenericReader reader) - { - base.Deserialize(reader); - - var version = reader.ReadInt(); - } } + [Serializable(0, false)] [Flippable(0x1F00, 0x1EFF)] - public class FancyDress : BaseOuterTorso + public partial class FancyDress : BaseOuterTorso { [Constructible] public FancyDress(int hue = 0) : base(0x1F00, hue) => Weight = 3.0; - - public FancyDress(Serial serial) : base(serial) - { - } - - public override void Serialize(IGenericWriter writer) - { - base.Serialize(writer); - - writer.Write(0); // version - } - - public override void Deserialize(IGenericReader reader) - { - base.Deserialize(reader); - - var version = reader.ReadInt(); - } } - public class DeathRobe : Robe + [Serializable(3, false)] + public partial class DeathRobe : Robe { private static readonly TimeSpan m_DefaultDecayTime = TimeSpan.FromMinutes(1.0); - private DateTime m_DecayTime; - private Timer m_DecayTimer; + + [TimerDrift] + [SerializableField(0)] + private Timer _decayTimer; + + [DeserializeTimerField(0)] + private void DeserializeDecayTimer(TimeSpan delay) + { + if (delay != TimeSpan.MinValue) + { + BeginDecay(delay); + } + } [Constructible] public DeathRobe() @@ -92,10 +54,6 @@ namespace Server.Items BeginDecay(m_DefaultDecayTime); } - public DeathRobe(Serial serial) : base(serial) - { - } - public override bool DisplayLootType => false; public new bool Scissor(Mobile from, Scissors scissors) @@ -109,14 +67,18 @@ namespace Server.Items BeginDecay(m_DefaultDecayTime); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + private void StopTimer() + { + _decayTimer?.Stop(); + _decayTimer = null; + } + private void BeginDecay(TimeSpan delay) { - m_DecayTimer?.Stop(); - - m_DecayTime = Core.Now + delay; - - m_DecayTimer = new InternalTimer(this, delay); - m_DecayTimer.Start(); + StopTimer(); + _decayTimer = new InternalTimer(this, delay); + _decayTimer.Start(); } public override bool OnDroppedToWorld(Mobile from, Point3D p) @@ -126,101 +88,70 @@ namespace Server.Items return true; } - public override bool OnDroppedToMobile(Mobile from, Mobile target) + public override bool OnDroppedInto(Mobile from, Container target, Point3D p) { - if (m_DecayTimer != null) + if (base.OnDroppedInto(from, target, p)) { - m_DecayTimer.Stop(); - m_DecayTimer = null; + StopTimer(); + return true; } + return false; + } + + public override bool OnDroppedToMobile(Mobile from, Mobile target) + { + StopTimer(); return true; } public override void OnAfterDelete() { - m_DecayTimer?.Stop(); - - m_DecayTimer = null; + StopTimer(); } - public override void Serialize(IGenericWriter writer) + private void Deserialize(IGenericReader reader, int version) { - base.Serialize(writer); - - writer.Write(2); // version - - writer.Write(m_DecayTimer != null); - - if (m_DecayTimer != null) + if (reader.ReadBool()) { - writer.WriteDeltaTime(m_DecayTime); - } - } - - public override void Deserialize(IGenericReader reader) - { - base.Deserialize(reader); - - var version = reader.ReadInt(); - - switch (version) - { - case 2: - { - if (reader.ReadBool()) - { - m_DecayTime = reader.ReadDeltaTime(); - BeginDecay(m_DecayTime - Core.Now); - } - - break; - } - case 1: - case 0: - { - if (Parent == null) - { - BeginDecay(m_DefaultDecayTime); - } - - break; - } - } - - if (version < 1 && Hue == 0) - { - Hue = 2301; + var delay = reader.ReadDeltaTime(); + BeginDecay(delay - Core.Now); } } private class InternalTimer : Timer { - private readonly DeathRobe m_Robe; + private readonly DeathRobe _robe; - public InternalTimer(DeathRobe c, TimeSpan delay) : base(delay) - { - m_Robe = c; - } + public InternalTimer(DeathRobe c, TimeSpan delay) : base(delay) => _robe = c; protected override void OnTick() { - if (m_Robe.Parent != null || m_Robe.IsLockedDown) + if (_robe.Parent != null || _robe.IsLockedDown) { Stop(); + _robe._decayTimer = null; } else { - m_Robe.Delete(); + _robe.Delete(); } } } } [Flippable] - public class RewardRobe : BaseOuterTorso, IRewardItem + [Serializable(0, false)] + public partial class RewardRobe : BaseOuterTorso, IRewardItem { - private int m_LabelNumber; + [InvalidateProperties] + [SerializableField(0)] + [SerializableFieldAttr("[CommandProperty(AccessLevel.GameMaster)]")] + private int _number; + + [SerializableField(1)] + [SerializableFieldAttr("[CommandProperty(AccessLevel.GameMaster)]")] + private bool _isRewardItem; [Constructible] public RewardRobe(int hue = 0, int labelNumber = 0) : base(0x1F03, hue) @@ -228,42 +159,13 @@ namespace Server.Items Weight = 3.0; LootType = LootType.Blessed; - m_LabelNumber = labelNumber; + _number = labelNumber; } - public RewardRobe(Serial serial) : base(serial) - { - } - - [CommandProperty(AccessLevel.GameMaster)] - public int Number - { - get => m_LabelNumber; - set - { - m_LabelNumber = value; - InvalidateProperties(); - } - } - - public override int LabelNumber - { - get - { - if (m_LabelNumber > 0) - { - return m_LabelNumber; - } - - return base.LabelNumber; - } - } + public override int LabelNumber => _number > 0 ? _number : base.LabelNumber; public override int BasePhysicalResistance => 3; - [CommandProperty(AccessLevel.GameMaster)] - public bool IsRewardItem { get; set; } - public override void OnAdded(IEntity parent) { base.OnAdded(parent); @@ -296,51 +198,23 @@ namespace Server.Items if (Core.ML && IsRewardItem) { + // X Year Veteran Reward list.Add( RewardSystem.GetRewardYearLabel( this, - new object[] { Hue, m_LabelNumber } + new object[] { Hue, _number } ) - ); // X Year Veteran Reward + ); } } - public override bool CanEquip(Mobile m) + public override bool CanEquip(Mobile m) => + base.CanEquip(m) && + (!IsRewardItem || RewardSystem.CheckIsUsableBy(m, this, new object[] { Hue, _number })); + + [AfterDeserialization] + private void AfterDeserialization() { - if (!base.CanEquip(m)) - { - return false; - } - - return !IsRewardItem || RewardSystem.CheckIsUsableBy(m, this, new object[] { Hue, m_LabelNumber }); - } - - public override void Serialize(IGenericWriter writer) - { - base.Serialize(writer); - - writer.Write(0); // version - - writer.Write(m_LabelNumber); - writer.Write(IsRewardItem); - } - - public override void Deserialize(IGenericReader reader) - { - base.Deserialize(reader); - - var version = reader.ReadInt(); - - switch (version) - { - case 0: - { - m_LabelNumber = reader.ReadInt(); - IsRewardItem = reader.ReadBool(); - break; - } - } - if (Parent is Mobile mobile) { mobile.VirtualArmorMod += 2; @@ -349,9 +223,17 @@ namespace Server.Items } [Flippable] - public class RewardDress : BaseOuterTorso, IRewardItem + [Serializable(0, false)] + public partial class RewardDress : BaseOuterTorso, IRewardItem { - private int m_LabelNumber; + [InvalidateProperties] + [SerializableField(0)] + [SerializableFieldAttr("[CommandProperty(AccessLevel.GameMaster)]")] + private int _number; + + [SerializableField(1)] + [SerializableFieldAttr("[CommandProperty(AccessLevel.GameMaster)]")] + private bool _isRewardItem; [Constructible] public RewardDress(int hue = 0, int labelNumber = 0) : base(0x1F01, hue) @@ -359,42 +241,13 @@ namespace Server.Items Weight = 2.0; LootType = LootType.Blessed; - m_LabelNumber = labelNumber; + _number = labelNumber; } - public RewardDress(Serial serial) : base(serial) - { - } - - [CommandProperty(AccessLevel.GameMaster)] - public int Number - { - get => m_LabelNumber; - set - { - m_LabelNumber = value; - InvalidateProperties(); - } - } - - public override int LabelNumber - { - get - { - if (m_LabelNumber > 0) - { - return m_LabelNumber; - } - - return base.LabelNumber; - } - } + public override int LabelNumber => _number > 0 ? _number : base.LabelNumber; public override int BasePhysicalResistance => 3; - [CommandProperty(AccessLevel.GameMaster)] - public bool IsRewardItem { get; set; } - public override void OnAdded(IEntity parent) { base.OnAdded(parent); @@ -425,53 +278,25 @@ namespace Server.Items { base.GetProperties(list); - if (IsRewardItem) + if (_isRewardItem) { + // X Year Veteran Reward list.Add( RewardSystem.GetRewardYearLabel( this, - new object[] { Hue, m_LabelNumber } + new object[] { Hue, _number } ) - ); // X Year Veteran Reward + ); } } - public override bool CanEquip(Mobile m) + public override bool CanEquip(Mobile m) => + base.CanEquip(m) && + (!_isRewardItem || RewardSystem.CheckIsUsableBy(m, this, new object[] { Hue, _number })); + + [AfterDeserialization] + private void AfterDeserialization() { - if (!base.CanEquip(m)) - { - return false; - } - - return !IsRewardItem || RewardSystem.CheckIsUsableBy(m, this, new object[] { Hue, m_LabelNumber }); - } - - public override void Serialize(IGenericWriter writer) - { - base.Serialize(writer); - - writer.Write(0); // version - - writer.Write(m_LabelNumber); - writer.Write(IsRewardItem); - } - - public override void Deserialize(IGenericReader reader) - { - base.Deserialize(reader); - - var version = reader.ReadInt(); - - switch (version) - { - case 0: - { - m_LabelNumber = reader.ReadInt(); - IsRewardItem = reader.ReadBool(); - break; - } - } - if (Parent is Mobile mobile) { mobile.VirtualArmorMod += 2; @@ -480,85 +305,54 @@ namespace Server.Items } [Flippable] - public class Robe : BaseOuterTorso, IArcaneEquip + [Serializable(2, false)] + public partial class Robe : BaseOuterTorso, IArcaneEquip { - private int m_MaxArcaneCharges, m_CurArcaneCharges; + private int _curArcaneCharges; + private int _maxArcaneCharges; [Constructible] public Robe(int hue = 0) : base(0x1F03, hue) => Weight = 3.0; - public Robe(Serial serial) : base(serial) - { - } - - [CommandProperty(AccessLevel.GameMaster)] - public int MaxArcaneCharges - { - get => m_MaxArcaneCharges; - set - { - m_MaxArcaneCharges = value; - InvalidateProperties(); - Update(); - } - } - + [EncodedInt] + [SerializableField(0)] [CommandProperty(AccessLevel.GameMaster)] public int CurArcaneCharges { - get => m_CurArcaneCharges; + get => _curArcaneCharges; set { - m_CurArcaneCharges = value; + _curArcaneCharges = value; InvalidateProperties(); Update(); + this.MarkDirty(); + } + } + + [EncodedInt] + [SerializableField(1)] + [CommandProperty(AccessLevel.GameMaster)] + public int MaxArcaneCharges + { + get => _maxArcaneCharges; + set + { + _maxArcaneCharges = value; + InvalidateProperties(); + Update(); + this.MarkDirty(); } } [CommandProperty(AccessLevel.GameMaster)] - public bool IsArcane => m_MaxArcaneCharges > 0 && m_CurArcaneCharges >= 0; + public bool IsArcane => _maxArcaneCharges > 0 && _curArcaneCharges >= 0; - public override void Serialize(IGenericWriter writer) + private void Deserialize(IGenericReader reader, int version) { - base.Serialize(writer); - - writer.Write(1); // version - - if (IsArcane) + if (reader.ReadBool()) { - writer.Write(true); - writer.Write(m_CurArcaneCharges); - writer.Write(m_MaxArcaneCharges); - } - else - { - writer.Write(false); - } - } - - public override void Deserialize(IGenericReader reader) - { - base.Deserialize(reader); - - var version = reader.ReadInt(); - - switch (version) - { - case 1: - { - if (reader.ReadBool()) - { - m_CurArcaneCharges = reader.ReadInt(); - m_MaxArcaneCharges = reader.ReadInt(); - - if (Hue == 2118) - { - Hue = ArcaneGem.DefaultArcaneHue; - } - } - - break; - } + _curArcaneCharges = reader.ReadInt(); + _maxArcaneCharges = reader.ReadInt(); } } @@ -585,7 +379,7 @@ namespace Server.Items if (IsArcane) { - list.Add(1061837, "{0}\t{1}", m_CurArcaneCharges, m_MaxArcaneCharges); // arcane charges: ~1_val~ / ~2_val~ + list.Add(1061837, "{0}\t{1}", _curArcaneCharges, _maxArcaneCharges); // arcane charges: ~1_val~ / ~2_val~ } } @@ -595,24 +389,23 @@ namespace Server.Items if (IsArcane) { - LabelTo(from, 1061837, $"{m_CurArcaneCharges}\t{m_MaxArcaneCharges}"); + LabelTo(from, 1061837, $"{_curArcaneCharges}\t{_maxArcaneCharges}"); } } public void Flip() { - if (ItemID == 0x1F03) + ItemID = ItemID switch { - ItemID = 0x1F04; - } - else if (ItemID == 0x1F04) - { - ItemID = 0x1F03; - } + 0x1F03 => 0x1F04, + 0x1F04 => 0x1F03, + _ => ItemID + }; } } - public class MonkRobe : BaseOuterTorso + [Serializable(0, false)] + public partial class MonkRobe : BaseOuterTorso { [Constructible] public MonkRobe(int hue = 0x21E) : base(0x2687, hue) @@ -621,10 +414,6 @@ namespace Server.Items StrRequirement = 0; } - public MonkRobe(Serial serial) : base(serial) - { - } - public override int LabelNumber => 1076584; // A monk's robe public override bool CanBeBlessed => false; @@ -633,209 +422,65 @@ namespace Server.Items from.SendLocalizedMessage(sender.FailMessage); return false; } - - public override void Serialize(IGenericWriter writer) - { - base.Serialize(writer); - - writer.Write(0); // version - } - - public override void Deserialize(IGenericReader reader) - { - base.Deserialize(reader); - - var version = reader.ReadInt(); - } } [Flippable(0x1f01, 0x1f02)] - public class PlainDress : BaseOuterTorso + [Serializable(0, false)] + public partial class PlainDress : BaseOuterTorso { [Constructible] public PlainDress(int hue = 0) : base(0x1F01, hue) => Weight = 2.0; - - public PlainDress(Serial serial) : base(serial) - { - } - - public override void Serialize(IGenericWriter writer) - { - base.Serialize(writer); - - writer.Write(0); // version - } - - public override void Deserialize(IGenericReader reader) - { - base.Deserialize(reader); - - var version = reader.ReadInt(); - - if (Weight == 3.0) - { - Weight = 2.0; - } - } } [Flippable(0x2799, 0x27E4)] - public class Kamishimo : BaseOuterTorso + [Serializable(0, false)] + public partial class Kamishimo : BaseOuterTorso { [Constructible] public Kamishimo(int hue = 0) : base(0x2799, hue) => Weight = 3.0; - - public Kamishimo(Serial serial) : base(serial) - { - } - - public override void Serialize(IGenericWriter writer) - { - base.Serialize(writer); - - writer.Write(0); // version - } - - public override void Deserialize(IGenericReader reader) - { - base.Deserialize(reader); - - var version = reader.ReadInt(); - } } [Flippable(0x279C, 0x27E7)] - public class HakamaShita : BaseOuterTorso + [Serializable(0, false)] + public partial class HakamaShita : BaseOuterTorso { [Constructible] public HakamaShita(int hue = 0) : base(0x279C, hue) => Weight = 3.0; - - public HakamaShita(Serial serial) : base(serial) - { - } - - public override void Serialize(IGenericWriter writer) - { - base.Serialize(writer); - - writer.Write(0); // version - } - - public override void Deserialize(IGenericReader reader) - { - base.Deserialize(reader); - - var version = reader.ReadInt(); - } } [Flippable(0x2782, 0x27CD)] - public class MaleKimono : BaseOuterTorso + [Serializable(0, false)] + public partial class MaleKimono : BaseOuterTorso { [Constructible] public MaleKimono(int hue = 0) : base(0x2782, hue) => Weight = 3.0; - - public MaleKimono(Serial serial) : base(serial) - { - } - - public override bool AllowFemaleWearer => false; - - public override void Serialize(IGenericWriter writer) - { - base.Serialize(writer); - - writer.Write(0); // version - } - - public override void Deserialize(IGenericReader reader) - { - base.Deserialize(reader); - - var version = reader.ReadInt(); - } } [Flippable(0x2783, 0x27CE)] - public class FemaleKimono : BaseOuterTorso + [Serializable(0, false)] + public partial class FemaleKimono : BaseOuterTorso { [Constructible] public FemaleKimono(int hue = 0) : base(0x2783, hue) => Weight = 3.0; - - public FemaleKimono(Serial serial) : base(serial) - { - } - - public override bool AllowMaleWearer => false; - - public override void Serialize(IGenericWriter writer) - { - base.Serialize(writer); - - writer.Write(0); // version - } - - public override void Deserialize(IGenericReader reader) - { - base.Deserialize(reader); - - var version = reader.ReadInt(); - } } [Flippable(0x2FB9, 0x3173)] - public class MaleElvenRobe : BaseOuterTorso + [Serializable(0)] + public partial class MaleElvenRobe : BaseOuterTorso { [Constructible] public MaleElvenRobe(int hue = 0) : base(0x2FB9, hue) => Weight = 2.0; - - public MaleElvenRobe(Serial serial) : base(serial) - { - } - - public override Race RequiredRace => Race.Elf; - - public override void Serialize(IGenericWriter writer) - { - base.Serialize(writer); - - writer.WriteEncodedInt(0); // version - } - - public override void Deserialize(IGenericReader reader) - { - base.Deserialize(reader); - - var version = reader.ReadEncodedInt(); - } } [Flippable(0x2FBA, 0x3174)] - public class FemaleElvenRobe : BaseOuterTorso + [Serializable(0)] + public partial class FemaleElvenRobe : BaseOuterTorso { [Constructible] public FemaleElvenRobe(int hue = 0) : base(0x2FBA, hue) => Weight = 2.0; - public FemaleElvenRobe(Serial serial) : base(serial) - { - } - public override Race RequiredRace => Race.Elf; public override bool AllowMaleWearer => false; - - public override void Serialize(IGenericWriter writer) - { - base.Serialize(writer); - - writer.WriteEncodedInt(0); // version - } - - public override void Deserialize(IGenericReader reader) - { - base.Deserialize(reader); - - var version = reader.ReadEncodedInt(); - } } } diff --git a/Projects/UOContent/Items/Clothing/Pants.cs b/Projects/UOContent/Items/Clothing/Pants.cs index eb967aa8f..dee8788f3 100644 --- a/Projects/UOContent/Items/Clothing/Pants.cs +++ b/Projects/UOContent/Items/Clothing/Pants.cs @@ -1,129 +1,44 @@ namespace Server.Items { - public abstract class BasePants : BaseClothing + [Serializable(0, false)] + public abstract partial class BasePants : BaseClothing { public BasePants(int itemID, int hue = 0) : base(itemID, Layer.Pants, hue) { } - - public BasePants(Serial serial) : base(serial) - { - } - - public override void Serialize(IGenericWriter writer) - { - base.Serialize(writer); - - writer.Write(0); // version - } - - public override void Deserialize(IGenericReader reader) - { - base.Deserialize(reader); - - var version = reader.ReadInt(); - } } [Flippable(0x152e, 0x152f)] - public class ShortPants : BasePants + [Serializable(0, false)] + public partial class ShortPants : BasePants { [Constructible] public ShortPants(int hue = 0) : base(0x152E, hue) => Weight = 2.0; - - public ShortPants(Serial serial) : base(serial) - { - } - - public override void Serialize(IGenericWriter writer) - { - base.Serialize(writer); - - writer.Write(0); // version - } - - public override void Deserialize(IGenericReader reader) - { - base.Deserialize(reader); - - var version = reader.ReadInt(); - } } [Flippable(0x1539, 0x153a)] - public class LongPants : BasePants + [Serializable(0, false)] + public partial class LongPants : BasePants { [Constructible] public LongPants(int hue = 0) : base(0x1539, hue) => Weight = 2.0; - - public LongPants(Serial serial) : base(serial) - { - } - - public override void Serialize(IGenericWriter writer) - { - base.Serialize(writer); - - writer.Write(0); // version - } - - public override void Deserialize(IGenericReader reader) - { - base.Deserialize(reader); - - var version = reader.ReadInt(); - } } [Flippable(0x279B, 0x27E6)] - public class TattsukeHakama : BasePants + [Serializable(0, false)] + public partial class TattsukeHakama : BasePants { [Constructible] public TattsukeHakama(int hue = 0) : base(0x279B, hue) => Weight = 2.0; - - public TattsukeHakama(Serial serial) : base(serial) - { - } - - public override void Serialize(IGenericWriter writer) - { - base.Serialize(writer); - - writer.Write(0); // version - } - - public override void Deserialize(IGenericReader reader) - { - base.Deserialize(reader); - - var version = reader.ReadInt(); - } } [Flippable(0x2FC3, 0x3179)] - public class ElvenPants : BasePants + [Serializable(0)] + public partial class ElvenPants : BasePants { [Constructible] public ElvenPants(int hue = 0) : base(0x2FC3, hue) => Weight = 2.0; - public ElvenPants(Serial serial) : base(serial) - { - } - public override Race RequiredRace => Race.Elf; - - public override void Serialize(IGenericWriter writer) - { - base.Serialize(writer); - - writer.WriteEncodedInt(0); // version - } - - public override void Deserialize(IGenericReader reader) - { - base.Deserialize(reader); - - var version = reader.ReadEncodedInt(); - } } } diff --git a/Projects/UOContent/Items/Clothing/Shirts.cs b/Projects/UOContent/Items/Clothing/Shirts.cs index 8c504a923..a21f489aa 100644 --- a/Projects/UOContent/Items/Clothing/Shirts.cs +++ b/Projects/UOContent/Items/Clothing/Shirts.cs @@ -1,87 +1,32 @@ namespace Server.Items { - public abstract class BaseShirt : BaseClothing + [Serializable(0, false)] + public abstract partial class BaseShirt : BaseClothing { public BaseShirt(int itemID, int hue = 0) : base(itemID, Layer.Shirt, hue) { } - - public BaseShirt(Serial serial) : base(serial) - { - } - - public override void Serialize(IGenericWriter writer) - { - base.Serialize(writer); - - writer.Write(0); // version - } - - public override void Deserialize(IGenericReader reader) - { - base.Deserialize(reader); - - var version = reader.ReadInt(); - } } [Flippable(0x1efd, 0x1efe)] - public class FancyShirt : BaseShirt + [Serializable(0, false)] + public partial class FancyShirt : BaseShirt { [Constructible] public FancyShirt(int hue = 0) : base(0x1EFD, hue) => Weight = 2.0; - - public FancyShirt(Serial serial) : base(serial) - { - } - - public override void Serialize(IGenericWriter writer) - { - base.Serialize(writer); - - writer.Write(0); // version - } - - public override void Deserialize(IGenericReader reader) - { - base.Deserialize(reader); - - var version = reader.ReadInt(); - } } [Flippable(0x1517, 0x1518)] - public class Shirt : BaseShirt + [Serializable(0, false)] + public partial class Shirt : BaseShirt { [Constructible] public Shirt(int hue = 0) : base(0x1517, hue) => Weight = 1.0; - - public Shirt(Serial serial) : base(serial) - { - } - - public override void Serialize(IGenericWriter writer) - { - base.Serialize(writer); - - writer.Write(0); // version - } - - public override void Deserialize(IGenericReader reader) - { - base.Deserialize(reader); - - var version = reader.ReadInt(); - - if (Weight == 2.0) - { - Weight = 1.0; - } - } } [Flippable(0x2794, 0x27DF)] - public class ClothNinjaJacket : BaseShirt + [Serializable(0, false)] + public partial class ClothNinjaJacket : BaseShirt { [Constructible] public ClothNinjaJacket(int hue = 0) : base(0x2794, hue) @@ -89,76 +34,21 @@ namespace Server.Items Weight = 5.0; Layer = Layer.InnerTorso; } - - public ClothNinjaJacket(Serial serial) : base(serial) - { - } - - public override void Serialize(IGenericWriter writer) - { - base.Serialize(writer); - - writer.Write(0); // version - } - - public override void Deserialize(IGenericReader reader) - { - base.Deserialize(reader); - - var version = reader.ReadInt(); - } } - public class ElvenShirt : BaseShirt + [Serializable(0)] + public partial class ElvenShirt : BaseShirt { [Constructible] public ElvenShirt(int hue = 0) : base(0x3175, hue) => Weight = 2.0; - public ElvenShirt(Serial serial) - : base(serial) - { - } - public override Race RequiredRace => Race.Elf; - - public override void Serialize(IGenericWriter writer) - { - base.Serialize(writer); - - writer.WriteEncodedInt(0); // version - } - - public override void Deserialize(IGenericReader reader) - { - base.Deserialize(reader); - - var version = reader.ReadEncodedInt(); - } } - public class ElvenDarkShirt : BaseShirt + [Serializable(0)] + public partial class ElvenDarkShirt : BaseShirt { [Constructible] public ElvenDarkShirt(int hue = 0) : base(0x3176, hue) => Weight = 2.0; - - public ElvenDarkShirt(Serial serial) : base(serial) - { - } - - public override Race RequiredRace => Race.Elf; - - public override void Serialize(IGenericWriter writer) - { - base.Serialize(writer); - - writer.WriteEncodedInt(0); // version - } - - public override void Deserialize(IGenericReader reader) - { - base.Deserialize(reader); - - var version = reader.ReadEncodedInt(); - } } } diff --git a/Projects/UOContent/Items/Clothing/Shoes.cs b/Projects/UOContent/Items/Clothing/Shoes.cs index 0a51835fa..0c955eac7 100644 --- a/Projects/UOContent/Items/Clothing/Shoes.cs +++ b/Projects/UOContent/Items/Clothing/Shoes.cs @@ -1,15 +1,12 @@ namespace Server.Items { - public abstract class BaseShoes : BaseClothing + [Serializable(0, false)] + public abstract partial class BaseShoes : BaseClothing { public BaseShoes(int itemID, int hue = 0) : base(itemID, Layer.Shoes, hue) { } - public BaseShoes(Serial serial) : base(serial) - { - } - public override bool Scissor(Mobile from, Scissors scissors) { if (DefaultResource == CraftResource.None) @@ -20,171 +17,77 @@ namespace Server.Items from.SendLocalizedMessage(502440); // Scissors can not be used on that to produce anything. return false; } - - public override void Serialize(IGenericWriter writer) - { - base.Serialize(writer); - - writer.Write(2); // version - } - - public override void Deserialize(IGenericReader reader) - { - base.Deserialize(reader); - - var version = reader.ReadInt(); - - switch (version) - { - case 2: break; // empty, resource removed - case 1: - { - m_Resource = (CraftResource)reader.ReadInt(); - break; - } - case 0: - { - m_Resource = DefaultResource; - break; - } - } - } } [Flippable(0x2307, 0x2308)] - public class FurBoots : BaseShoes + [Serializable(0, false)] + public partial class FurBoots : BaseShoes { [Constructible] public FurBoots(int hue = 0) : base(0x2307, hue) => Weight = 3.0; - - public FurBoots(Serial serial) : base(serial) - { - } - - public override void Serialize(IGenericWriter writer) - { - base.Serialize(writer); - - writer.Write(0); // version - } - - public override void Deserialize(IGenericReader reader) - { - base.Deserialize(reader); - - var version = reader.ReadInt(); - } } [Flippable(0x170b, 0x170c)] - public class Boots : BaseShoes + [Serializable(0, false)] + public partial class Boots : BaseShoes { [Constructible] public Boots(int hue = 0) : base(0x170B, hue) => Weight = 3.0; - public Boots(Serial serial) : base(serial) - { - } - public override CraftResource DefaultResource => CraftResource.RegularLeather; - - public override void Serialize(IGenericWriter writer) - { - base.Serialize(writer); - - writer.Write(0); // version - } - - public override void Deserialize(IGenericReader reader) - { - base.Deserialize(reader); - - var version = reader.ReadInt(); - } } [Flippable] - public class ThighBoots : BaseShoes, IArcaneEquip + [Serializable(2, false)] + public partial class ThighBoots : BaseShoes, IArcaneEquip { - private int m_MaxArcaneCharges, m_CurArcaneCharges; + private int _maxArcaneCharges; + private int _curArcaneCharges; [Constructible] public ThighBoots(int hue = 0) : base(0x1711, hue) => Weight = 4.0; - public ThighBoots(Serial serial) : base(serial) - { - } - public override CraftResource DefaultResource => CraftResource.RegularLeather; - [CommandProperty(AccessLevel.GameMaster)] - public int MaxArcaneCharges - { - get => m_MaxArcaneCharges; - set - { - m_MaxArcaneCharges = value; - InvalidateProperties(); - Update(); - } - } - + [EncodedInt] + [SerializableField(0)] [CommandProperty(AccessLevel.GameMaster)] public int CurArcaneCharges { - get => m_CurArcaneCharges; + get => _curArcaneCharges; set { - m_CurArcaneCharges = value; + _curArcaneCharges = value; InvalidateProperties(); Update(); + this.MarkDirty(); + } + } + + [EncodedInt] + [SerializableField(1)] + [CommandProperty(AccessLevel.GameMaster)] + public int MaxArcaneCharges + { + get => _maxArcaneCharges; + set + { + _maxArcaneCharges = value; + InvalidateProperties(); + Update(); + this.MarkDirty(); } } [CommandProperty(AccessLevel.GameMaster)] - public bool IsArcane => m_MaxArcaneCharges > 0 && m_CurArcaneCharges >= 0; + public bool IsArcane => _maxArcaneCharges > 0 && _curArcaneCharges >= 0; - public override void Serialize(IGenericWriter writer) + private void Deserialize(IGenericReader reader, int version) { - base.Serialize(writer); - - writer.Write(1); // version - - if (IsArcane) + if (reader.ReadBool()) { - writer.Write(true); - writer.Write(m_CurArcaneCharges); - writer.Write(m_MaxArcaneCharges); - } - else - { - writer.Write(false); - } - } - - public override void Deserialize(IGenericReader reader) - { - base.Deserialize(reader); - - var version = reader.ReadInt(); - - switch (version) - { - case 1: - { - if (reader.ReadBool()) - { - m_CurArcaneCharges = reader.ReadInt(); - m_MaxArcaneCharges = reader.ReadInt(); - - if (Hue == 2118) - { - Hue = ArcaneGem.DefaultArcaneHue; - } - } - - break; - } + _curArcaneCharges = reader.ReadInt(); + _maxArcaneCharges = reader.ReadInt(); } } @@ -194,7 +97,7 @@ namespace Server.Items if (IsArcane) { - LabelTo(from, 1061837, $"{m_CurArcaneCharges}\t{m_MaxArcaneCharges}"); + LabelTo(from, 1061837, $"{_curArcaneCharges}\t{_maxArcaneCharges}"); } } @@ -221,182 +124,78 @@ namespace Server.Items if (IsArcane) { - list.Add(1061837, "{0}\t{1}", m_CurArcaneCharges, m_MaxArcaneCharges); // arcane charges: ~1_val~ / ~2_val~ + list.Add(1061837, "{0}\t{1}", _curArcaneCharges, _maxArcaneCharges); // arcane charges: ~1_val~ / ~2_val~ } } public void Flip() { - if (ItemID == 0x1711) + ItemID = ItemID switch { - ItemID = 0x1712; - } - else if (ItemID == 0x1712) - { - ItemID = 0x1711; - } + 0x1711 => 0x1712, + 0x1712 => 0x1711, + _ => ItemID + }; } } [Flippable(0x170f, 0x1710)] - public class Shoes : BaseShoes + [Serializable(0, false)] + public partial class Shoes : BaseShoes { [Constructible] public Shoes(int hue = 0) : base(0x170F, hue) => Weight = 2.0; - public Shoes(Serial serial) : base(serial) - { - } - public override CraftResource DefaultResource => CraftResource.RegularLeather; - - public override void Serialize(IGenericWriter writer) - { - base.Serialize(writer); - - writer.Write(0); // version - } - - public override void Deserialize(IGenericReader reader) - { - base.Deserialize(reader); - - var version = reader.ReadInt(); - } } [Flippable(0x170d, 0x170e)] - public class Sandals : BaseShoes + [Serializable(0, false)] + public partial class Sandals : BaseShoes { [Constructible] public Sandals(int hue = 0) : base(0x170D, hue) => Weight = 1.0; - public Sandals(Serial serial) : base(serial) - { - } - public override CraftResource DefaultResource => CraftResource.RegularLeather; public override bool Dye(Mobile from, DyeTub sender) => false; - - public override void Serialize(IGenericWriter writer) - { - base.Serialize(writer); - - writer.Write(0); // version - } - - public override void Deserialize(IGenericReader reader) - { - base.Deserialize(reader); - - var version = reader.ReadInt(); - } } [Flippable(0x2797, 0x27E2)] - public class NinjaTabi : BaseShoes + [Serializable(0, false)] + public partial class NinjaTabi : BaseShoes { [Constructible] public NinjaTabi(int hue = 0) : base(0x2797, hue) => Weight = 2.0; - - public NinjaTabi(Serial serial) : base(serial) - { - } - - public override void Serialize(IGenericWriter writer) - { - base.Serialize(writer); - - writer.Write(0); // version - } - - public override void Deserialize(IGenericReader reader) - { - base.Deserialize(reader); - - var version = reader.ReadInt(); - } } [Flippable(0x2796, 0x27E1)] - public class SamuraiTabi : BaseShoes + [Serializable(0, false)] + public partial class SamuraiTabi : BaseShoes { [Constructible] public SamuraiTabi(int hue = 0) : base(0x2796, hue) => Weight = 2.0; - - public SamuraiTabi(Serial serial) : base(serial) - { - } - - public override void Serialize(IGenericWriter writer) - { - base.Serialize(writer); - - writer.Write(0); // version - } - - public override void Deserialize(IGenericReader reader) - { - base.Deserialize(reader); - - var version = reader.ReadInt(); - } } [Flippable(0x2796, 0x27E1)] - public class Waraji : BaseShoes + [Serializable(0, false)] + public partial class Waraji : BaseShoes { [Constructible] public Waraji(int hue = 0) : base(0x2796, hue) => Weight = 2.0; - - public Waraji(Serial serial) : base(serial) - { - } - - public override void Serialize(IGenericWriter writer) - { - base.Serialize(writer); - - writer.Write(0); // version - } - - public override void Deserialize(IGenericReader reader) - { - base.Deserialize(reader); - - var version = reader.ReadInt(); - } } [Flippable(0x2FC4, 0x317A)] - public class ElvenBoots : BaseShoes + [Serializable(0)] + public partial class ElvenBoots : BaseShoes { [Constructible] public ElvenBoots(int hue = 0) : base(0x2FC4, hue) => Weight = 2.0; - public ElvenBoots(Serial serial) : base(serial) - { - } - public override CraftResource DefaultResource => CraftResource.RegularLeather; public override Race RequiredRace => Race.Elf; public override bool Dye(Mobile from, DyeTub sender) => false; - - public override void Serialize(IGenericWriter writer) - { - base.Serialize(writer); - - writer.WriteEncodedInt(0); // version - } - - public override void Deserialize(IGenericReader reader) - { - base.Deserialize(reader); - - var version = reader.ReadEncodedInt(); - } } } diff --git a/Projects/UOContent/Items/Clothing/Waist.cs b/Projects/UOContent/Items/Clothing/Waist.cs index 0996a1f66..4fdd22c96 100644 --- a/Projects/UOContent/Items/Clothing/Waist.cs +++ b/Projects/UOContent/Items/Clothing/Waist.cs @@ -1,90 +1,36 @@ namespace Server.Items { - public abstract class BaseWaist : BaseClothing + [Serializable(0, false)] + public abstract partial class BaseWaist : BaseClothing { public BaseWaist(int itemID, int hue = 0) : base(itemID, Layer.Waist, hue) { } - - public BaseWaist(Serial serial) : base(serial) - { - } - - public override void Serialize(IGenericWriter writer) - { - base.Serialize(writer); - - writer.Write(0); // version - } - - public override void Deserialize(IGenericReader reader) - { - base.Deserialize(reader); - - var version = reader.ReadInt(); - } } [Flippable(0x153b, 0x153c)] - public class HalfApron : BaseWaist + [Serializable(0, false)] + public partial class HalfApron : BaseWaist { [Constructible] public HalfApron(int hue = 0) : base(0x153b, hue) => Weight = 2.0; - - public HalfApron(Serial serial) : base(serial) - { - } - - public override void Serialize(IGenericWriter writer) - { - base.Serialize(writer); - - writer.Write(0); // version - } - - public override void Deserialize(IGenericReader reader) - { - base.Deserialize(reader); - - var version = reader.ReadInt(); - } } [Flippable(0x27A0, 0x27EB)] - public class Obi : BaseWaist + [Serializable(0, false)] + public partial class Obi : BaseWaist { [Constructible] public Obi(int hue = 0) : base(0x27A0, hue) => Weight = 1.0; - - public Obi(Serial serial) : base(serial) - { - } - - public override void Serialize(IGenericWriter writer) - { - base.Serialize(writer); - - writer.Write(0); // version - } - - public override void Deserialize(IGenericReader reader) - { - base.Deserialize(reader); - - var version = reader.ReadInt(); - } } [Flippable(0x2B68, 0x315F)] - public class WoodlandBelt : BaseWaist + [Serializable(0)] + public partial class WoodlandBelt : BaseWaist { [Constructible] public WoodlandBelt(int hue = 0) : base(0x2B68, hue) => Weight = 4.0; - public WoodlandBelt(Serial serial) : base(serial) - { - } - public override Race RequiredRace => Race.Elf; public override bool Dye(Mobile from, DyeTub sender) @@ -98,19 +44,5 @@ namespace Server.Items from.SendLocalizedMessage(502440); // Scissors can not be used on that to produce anything. return false; } - - public override void Serialize(IGenericWriter writer) - { - base.Serialize(writer); - - writer.WriteEncodedInt(0); // version - } - - public override void Deserialize(IGenericReader reader) - { - base.Deserialize(reader); - - var version = reader.ReadEncodedInt(); - } } } diff --git a/Projects/UOContent/Items/Misc/Corpses/Corpse.cs b/Projects/UOContent/Items/Misc/Corpses/Corpse.cs index 8fe8bc287..3960d6383 100644 --- a/Projects/UOContent/Items/Misc/Corpses/Corpse.cs +++ b/Projects/UOContent/Items/Misc/Corpses/Corpse.cs @@ -974,7 +974,6 @@ namespace Server.Items if (map != null && map != Map.Internal) { robe.MoveToWorld(from.Location, map); - robe.BeginDecay(); } } diff --git a/Projects/UOContent/Migrations/Server.Items.Bandana.v0.json b/Projects/UOContent/Migrations/Server.Items.Bandana.v0.json new file mode 100644 index 000000000..f41764a43 --- /dev/null +++ b/Projects/UOContent/Migrations/Server.Items.Bandana.v0.json @@ -0,0 +1,4 @@ +{ + "version": 0, + "type": "Server.Items.Bandana" +} \ No newline at end of file diff --git a/Projects/UOContent/Migrations/Server.Items.BaseCloak.v0.json b/Projects/UOContent/Migrations/Server.Items.BaseCloak.v0.json new file mode 100644 index 000000000..fcba9bf74 --- /dev/null +++ b/Projects/UOContent/Migrations/Server.Items.BaseCloak.v0.json @@ -0,0 +1,4 @@ +{ + "version": 0, + "type": "Server.Items.BaseCloak" +} \ No newline at end of file diff --git a/Projects/UOContent/Migrations/Server.Items.BaseClothing.v6.json b/Projects/UOContent/Migrations/Server.Items.BaseClothing.v6.json new file mode 100644 index 000000000..0a921750b --- /dev/null +++ b/Projects/UOContent/Migrations/Server.Items.BaseClothing.v6.json @@ -0,0 +1,96 @@ +{ + "version": 6, + "type": "Server.Items.BaseClothing", + "properties": [ + { + "name": "Resource", + "type": "Server.Items.CraftResource", + "usesSaveFlag": true, + "rule": "EnumMigrationRule" + }, + { + "name": "Attributes", + "type": "Server.AosAttributes", + "usesSaveFlag": true, + "rule": "RawSerializableMigrationRule", + "ruleArguments": [ + "" + ] + }, + { + "name": "ClothingAttributes", + "type": "Server.AosArmorAttributes", + "usesSaveFlag": true, + "rule": "RawSerializableMigrationRule", + "ruleArguments": [ + "" + ] + }, + { + "name": "SkillBonuses", + "type": "Server.AosSkillBonuses", + "usesSaveFlag": true, + "rule": "RawSerializableMigrationRule", + "ruleArguments": [ + "" + ] + }, + { + "name": "Resistances", + "type": "Server.AosElementAttributes", + "usesSaveFlag": true, + "rule": "RawSerializableMigrationRule", + "ruleArguments": [ + "" + ] + }, + { + "name": "MaxHitPoints", + "type": "int", + "usesSaveFlag": true, + "rule": "PrimitiveTypeMigrationRule", + "ruleArguments": [ + "EncodedInt" + ] + }, + { + "name": "HitPoints", + "type": "int", + "usesSaveFlag": true, + "rule": "PrimitiveTypeMigrationRule", + "ruleArguments": [ + "EncodedInt" + ] + }, + { + "name": "PlayerConstructed", + "type": "bool", + "usesSaveFlag": true, + "rule": "PrimitiveTypeMigrationRule", + "ruleArguments": [ + "" + ] + }, + { + "name": "Crafter", + "type": "Server.Mobile", + "usesSaveFlag": true, + "rule": "SerializableInterfaceMigrationRule" + }, + { + "name": "Quality", + "type": "Server.Items.ClothingQuality", + "usesSaveFlag": true, + "rule": "EnumMigrationRule" + }, + { + "name": "StrRequirement", + "type": "int", + "usesSaveFlag": true, + "rule": "PrimitiveTypeMigrationRule", + "ruleArguments": [ + "" + ] + } + ] +} \ No newline at end of file diff --git a/Projects/UOContent/Migrations/Server.Items.BaseHat.v0.json b/Projects/UOContent/Migrations/Server.Items.BaseHat.v0.json new file mode 100644 index 000000000..9f3632994 --- /dev/null +++ b/Projects/UOContent/Migrations/Server.Items.BaseHat.v0.json @@ -0,0 +1,14 @@ +{ + "version": 0, + "type": "Server.Items.BaseHat", + "properties": [ + { + "name": "IsShipwreckedItem", + "type": "bool", + "rule": "PrimitiveTypeMigrationRule", + "ruleArguments": [ + "" + ] + } + ] +} \ No newline at end of file diff --git a/Projects/UOContent/Migrations/Server.Items.BaseMiddleTorso.v0.json b/Projects/UOContent/Migrations/Server.Items.BaseMiddleTorso.v0.json new file mode 100644 index 000000000..617310913 --- /dev/null +++ b/Projects/UOContent/Migrations/Server.Items.BaseMiddleTorso.v0.json @@ -0,0 +1,4 @@ +{ + "version": 0, + "type": "Server.Items.BaseMiddleTorso" +} \ No newline at end of file diff --git a/Projects/UOContent/Migrations/Server.Items.BaseOuterLegs.v0.json b/Projects/UOContent/Migrations/Server.Items.BaseOuterLegs.v0.json new file mode 100644 index 000000000..42034c04c --- /dev/null +++ b/Projects/UOContent/Migrations/Server.Items.BaseOuterLegs.v0.json @@ -0,0 +1,4 @@ +{ + "version": 0, + "type": "Server.Items.BaseOuterLegs" +} \ No newline at end of file diff --git a/Projects/UOContent/Migrations/Server.Items.BaseOuterTorso.v0.json b/Projects/UOContent/Migrations/Server.Items.BaseOuterTorso.v0.json new file mode 100644 index 000000000..a3d6171fd --- /dev/null +++ b/Projects/UOContent/Migrations/Server.Items.BaseOuterTorso.v0.json @@ -0,0 +1,4 @@ +{ + "version": 0, + "type": "Server.Items.BaseOuterTorso" +} \ No newline at end of file diff --git a/Projects/UOContent/Migrations/Server.Items.BasePants.v0.json b/Projects/UOContent/Migrations/Server.Items.BasePants.v0.json new file mode 100644 index 000000000..493acf15d --- /dev/null +++ b/Projects/UOContent/Migrations/Server.Items.BasePants.v0.json @@ -0,0 +1,4 @@ +{ + "version": 0, + "type": "Server.Items.BasePants" +} \ No newline at end of file diff --git a/Projects/UOContent/Migrations/Server.Items.BaseShirt.v0.json b/Projects/UOContent/Migrations/Server.Items.BaseShirt.v0.json new file mode 100644 index 000000000..f04b444e5 --- /dev/null +++ b/Projects/UOContent/Migrations/Server.Items.BaseShirt.v0.json @@ -0,0 +1,4 @@ +{ + "version": 0, + "type": "Server.Items.BaseShirt" +} \ No newline at end of file diff --git a/Projects/UOContent/Migrations/Server.Items.BaseShoes.v0.json b/Projects/UOContent/Migrations/Server.Items.BaseShoes.v0.json new file mode 100644 index 000000000..739e2e986 --- /dev/null +++ b/Projects/UOContent/Migrations/Server.Items.BaseShoes.v0.json @@ -0,0 +1,4 @@ +{ + "version": 0, + "type": "Server.Items.BaseShoes" +} \ No newline at end of file diff --git a/Projects/UOContent/Migrations/Server.Items.BaseWaist.v0.json b/Projects/UOContent/Migrations/Server.Items.BaseWaist.v0.json new file mode 100644 index 000000000..de1aec80a --- /dev/null +++ b/Projects/UOContent/Migrations/Server.Items.BaseWaist.v0.json @@ -0,0 +1,4 @@ +{ + "version": 0, + "type": "Server.Items.BaseWaist" +} \ No newline at end of file diff --git a/Projects/UOContent/Migrations/Server.Items.BearMask.v0.json b/Projects/UOContent/Migrations/Server.Items.BearMask.v0.json new file mode 100644 index 000000000..8e30bae1f --- /dev/null +++ b/Projects/UOContent/Migrations/Server.Items.BearMask.v0.json @@ -0,0 +1,4 @@ +{ + "version": 0, + "type": "Server.Items.BearMask" +} \ No newline at end of file diff --git a/Projects/UOContent/Migrations/Server.Items.BodySash.v0.json b/Projects/UOContent/Migrations/Server.Items.BodySash.v0.json new file mode 100644 index 000000000..6eb929c52 --- /dev/null +++ b/Projects/UOContent/Migrations/Server.Items.BodySash.v0.json @@ -0,0 +1,4 @@ +{ + "version": 0, + "type": "Server.Items.BodySash" +} \ No newline at end of file diff --git a/Projects/UOContent/Migrations/Server.Items.Bonnet.v0.json b/Projects/UOContent/Migrations/Server.Items.Bonnet.v0.json new file mode 100644 index 000000000..ef8c2cbe7 --- /dev/null +++ b/Projects/UOContent/Migrations/Server.Items.Bonnet.v0.json @@ -0,0 +1,4 @@ +{ + "version": 0, + "type": "Server.Items.Bonnet" +} \ No newline at end of file diff --git a/Projects/UOContent/Migrations/Server.Items.Boots.v0.json b/Projects/UOContent/Migrations/Server.Items.Boots.v0.json new file mode 100644 index 000000000..76cfe4894 --- /dev/null +++ b/Projects/UOContent/Migrations/Server.Items.Boots.v0.json @@ -0,0 +1,4 @@ +{ + "version": 0, + "type": "Server.Items.Boots" +} \ No newline at end of file diff --git a/Projects/UOContent/Migrations/Server.Items.Cap.v0.json b/Projects/UOContent/Migrations/Server.Items.Cap.v0.json new file mode 100644 index 000000000..9421b9100 --- /dev/null +++ b/Projects/UOContent/Migrations/Server.Items.Cap.v0.json @@ -0,0 +1,4 @@ +{ + "version": 0, + "type": "Server.Items.Cap" +} \ No newline at end of file diff --git a/Projects/UOContent/Migrations/Server.Items.Cloak.v2.json b/Projects/UOContent/Migrations/Server.Items.Cloak.v2.json new file mode 100644 index 000000000..290731bc7 --- /dev/null +++ b/Projects/UOContent/Migrations/Server.Items.Cloak.v2.json @@ -0,0 +1,22 @@ +{ + "version": 2, + "type": "Server.Items.Cloak", + "properties": [ + { + "name": "CurArcaneCharges", + "type": "int", + "rule": "PrimitiveTypeMigrationRule", + "ruleArguments": [ + "EncodedInt" + ] + }, + { + "name": "MaxArcaneCharges", + "type": "int", + "rule": "PrimitiveTypeMigrationRule", + "ruleArguments": [ + "EncodedInt" + ] + } + ] +} \ No newline at end of file diff --git a/Projects/UOContent/Migrations/Server.Items.ClothNinjaHood.v0.json b/Projects/UOContent/Migrations/Server.Items.ClothNinjaHood.v0.json new file mode 100644 index 000000000..71563091b --- /dev/null +++ b/Projects/UOContent/Migrations/Server.Items.ClothNinjaHood.v0.json @@ -0,0 +1,4 @@ +{ + "version": 0, + "type": "Server.Items.ClothNinjaHood" +} \ No newline at end of file diff --git a/Projects/UOContent/Migrations/Server.Items.ClothNinjaJacket.v0.json b/Projects/UOContent/Migrations/Server.Items.ClothNinjaJacket.v0.json new file mode 100644 index 000000000..06e8ff555 --- /dev/null +++ b/Projects/UOContent/Migrations/Server.Items.ClothNinjaJacket.v0.json @@ -0,0 +1,4 @@ +{ + "version": 0, + "type": "Server.Items.ClothNinjaJacket" +} \ No newline at end of file diff --git a/Projects/UOContent/Migrations/Server.Items.CrimsonCincture.v0.json b/Projects/UOContent/Migrations/Server.Items.CrimsonCincture.v0.json new file mode 100644 index 000000000..7ead229e3 --- /dev/null +++ b/Projects/UOContent/Migrations/Server.Items.CrimsonCincture.v0.json @@ -0,0 +1,4 @@ +{ + "version": 0, + "type": "Server.Items.CrimsonCincture" +} \ No newline at end of file diff --git a/Projects/UOContent/Migrations/Server.Items.DeathRobe.v3.json b/Projects/UOContent/Migrations/Server.Items.DeathRobe.v3.json new file mode 100644 index 000000000..5334a9553 --- /dev/null +++ b/Projects/UOContent/Migrations/Server.Items.DeathRobe.v3.json @@ -0,0 +1,14 @@ +{ + "version": 3, + "type": "Server.Items.DeathRobe", + "properties": [ + { + "name": "DecayTimer", + "type": "Server.Timer", + "rule": "TimerMigrationRule", + "ruleArguments": [ + "@TimerDrift" + ] + } + ] +} \ No newline at end of file diff --git a/Projects/UOContent/Migrations/Server.Items.DeerMask.v0.json b/Projects/UOContent/Migrations/Server.Items.DeerMask.v0.json new file mode 100644 index 000000000..e43129bc1 --- /dev/null +++ b/Projects/UOContent/Migrations/Server.Items.DeerMask.v0.json @@ -0,0 +1,4 @@ +{ + "version": 0, + "type": "Server.Items.DeerMask" +} \ No newline at end of file diff --git a/Projects/UOContent/Migrations/Server.Items.DivineCountenance.v0.json b/Projects/UOContent/Migrations/Server.Items.DivineCountenance.v0.json new file mode 100644 index 000000000..4618fae82 --- /dev/null +++ b/Projects/UOContent/Migrations/Server.Items.DivineCountenance.v0.json @@ -0,0 +1,4 @@ +{ + "version": 0, + "type": "Server.Items.DivineCountenance" +} \ No newline at end of file diff --git a/Projects/UOContent/Migrations/Server.Items.Doublet.v0.json b/Projects/UOContent/Migrations/Server.Items.Doublet.v0.json new file mode 100644 index 000000000..aaee16b00 --- /dev/null +++ b/Projects/UOContent/Migrations/Server.Items.Doublet.v0.json @@ -0,0 +1,4 @@ +{ + "version": 0, + "type": "Server.Items.Doublet" +} \ No newline at end of file diff --git a/Projects/UOContent/Migrations/Server.Items.ElvenBoots.v0.json b/Projects/UOContent/Migrations/Server.Items.ElvenBoots.v0.json new file mode 100644 index 000000000..2a30c264f --- /dev/null +++ b/Projects/UOContent/Migrations/Server.Items.ElvenBoots.v0.json @@ -0,0 +1,4 @@ +{ + "version": 0, + "type": "Server.Items.ElvenBoots" +} \ No newline at end of file diff --git a/Projects/UOContent/Migrations/Server.Items.ElvenDarkShirt.v0.json b/Projects/UOContent/Migrations/Server.Items.ElvenDarkShirt.v0.json new file mode 100644 index 000000000..835901604 --- /dev/null +++ b/Projects/UOContent/Migrations/Server.Items.ElvenDarkShirt.v0.json @@ -0,0 +1,4 @@ +{ + "version": 0, + "type": "Server.Items.ElvenDarkShirt" +} \ No newline at end of file diff --git a/Projects/UOContent/Migrations/Server.Items.ElvenPants.v0.json b/Projects/UOContent/Migrations/Server.Items.ElvenPants.v0.json new file mode 100644 index 000000000..9d06208d0 --- /dev/null +++ b/Projects/UOContent/Migrations/Server.Items.ElvenPants.v0.json @@ -0,0 +1,4 @@ +{ + "version": 0, + "type": "Server.Items.ElvenPants" +} \ No newline at end of file diff --git a/Projects/UOContent/Migrations/Server.Items.ElvenShirt.v0.json b/Projects/UOContent/Migrations/Server.Items.ElvenShirt.v0.json new file mode 100644 index 000000000..061d6685e --- /dev/null +++ b/Projects/UOContent/Migrations/Server.Items.ElvenShirt.v0.json @@ -0,0 +1,4 @@ +{ + "version": 0, + "type": "Server.Items.ElvenShirt" +} \ No newline at end of file diff --git a/Projects/UOContent/Migrations/Server.Items.FancyDress.v0.json b/Projects/UOContent/Migrations/Server.Items.FancyDress.v0.json new file mode 100644 index 000000000..7053d4105 --- /dev/null +++ b/Projects/UOContent/Migrations/Server.Items.FancyDress.v0.json @@ -0,0 +1,4 @@ +{ + "version": 0, + "type": "Server.Items.FancyDress" +} \ No newline at end of file diff --git a/Projects/UOContent/Migrations/Server.Items.FancyShirt.v0.json b/Projects/UOContent/Migrations/Server.Items.FancyShirt.v0.json new file mode 100644 index 000000000..2cdc3a7ca --- /dev/null +++ b/Projects/UOContent/Migrations/Server.Items.FancyShirt.v0.json @@ -0,0 +1,4 @@ +{ + "version": 0, + "type": "Server.Items.FancyShirt" +} \ No newline at end of file diff --git a/Projects/UOContent/Migrations/Server.Items.FeatheredHat.v0.json b/Projects/UOContent/Migrations/Server.Items.FeatheredHat.v0.json new file mode 100644 index 000000000..dd1ff2df0 --- /dev/null +++ b/Projects/UOContent/Migrations/Server.Items.FeatheredHat.v0.json @@ -0,0 +1,4 @@ +{ + "version": 0, + "type": "Server.Items.FeatheredHat" +} \ No newline at end of file diff --git a/Projects/UOContent/Migrations/Server.Items.FemaleElvenRobe.v0.json b/Projects/UOContent/Migrations/Server.Items.FemaleElvenRobe.v0.json new file mode 100644 index 000000000..6d2bda3da --- /dev/null +++ b/Projects/UOContent/Migrations/Server.Items.FemaleElvenRobe.v0.json @@ -0,0 +1,4 @@ +{ + "version": 0, + "type": "Server.Items.FemaleElvenRobe" +} \ No newline at end of file diff --git a/Projects/UOContent/Migrations/Server.Items.FemaleKimono.v0.json b/Projects/UOContent/Migrations/Server.Items.FemaleKimono.v0.json new file mode 100644 index 000000000..27032f8f4 --- /dev/null +++ b/Projects/UOContent/Migrations/Server.Items.FemaleKimono.v0.json @@ -0,0 +1,4 @@ +{ + "version": 0, + "type": "Server.Items.FemaleKimono" +} \ No newline at end of file diff --git a/Projects/UOContent/Migrations/Server.Items.FloppyHat.v0.json b/Projects/UOContent/Migrations/Server.Items.FloppyHat.v0.json new file mode 100644 index 000000000..4dc1260d9 --- /dev/null +++ b/Projects/UOContent/Migrations/Server.Items.FloppyHat.v0.json @@ -0,0 +1,4 @@ +{ + "version": 0, + "type": "Server.Items.FloppyHat" +} \ No newline at end of file diff --git a/Projects/UOContent/Migrations/Server.Items.FlowerGarland.v0.json b/Projects/UOContent/Migrations/Server.Items.FlowerGarland.v0.json new file mode 100644 index 000000000..718979395 --- /dev/null +++ b/Projects/UOContent/Migrations/Server.Items.FlowerGarland.v0.json @@ -0,0 +1,4 @@ +{ + "version": 0, + "type": "Server.Items.FlowerGarland" +} \ No newline at end of file diff --git a/Projects/UOContent/Migrations/Server.Items.FormalShirt.v0.json b/Projects/UOContent/Migrations/Server.Items.FormalShirt.v0.json new file mode 100644 index 000000000..4dc790fb7 --- /dev/null +++ b/Projects/UOContent/Migrations/Server.Items.FormalShirt.v0.json @@ -0,0 +1,4 @@ +{ + "version": 0, + "type": "Server.Items.FormalShirt" +} \ No newline at end of file diff --git a/Projects/UOContent/Migrations/Server.Items.FullApron.v0.json b/Projects/UOContent/Migrations/Server.Items.FullApron.v0.json new file mode 100644 index 000000000..2ccc96651 --- /dev/null +++ b/Projects/UOContent/Migrations/Server.Items.FullApron.v0.json @@ -0,0 +1,4 @@ +{ + "version": 0, + "type": "Server.Items.FullApron" +} \ No newline at end of file diff --git a/Projects/UOContent/Migrations/Server.Items.FurBoots.v0.json b/Projects/UOContent/Migrations/Server.Items.FurBoots.v0.json new file mode 100644 index 000000000..86073d92a --- /dev/null +++ b/Projects/UOContent/Migrations/Server.Items.FurBoots.v0.json @@ -0,0 +1,4 @@ +{ + "version": 0, + "type": "Server.Items.FurBoots" +} \ No newline at end of file diff --git a/Projects/UOContent/Migrations/Server.Items.FurCape.v0.json b/Projects/UOContent/Migrations/Server.Items.FurCape.v0.json new file mode 100644 index 000000000..dbf7e0ed2 --- /dev/null +++ b/Projects/UOContent/Migrations/Server.Items.FurCape.v0.json @@ -0,0 +1,4 @@ +{ + "version": 0, + "type": "Server.Items.FurCape" +} \ No newline at end of file diff --git a/Projects/UOContent/Migrations/Server.Items.FurSarong.v0.json b/Projects/UOContent/Migrations/Server.Items.FurSarong.v0.json new file mode 100644 index 000000000..3200c80e7 --- /dev/null +++ b/Projects/UOContent/Migrations/Server.Items.FurSarong.v0.json @@ -0,0 +1,4 @@ +{ + "version": 0, + "type": "Server.Items.FurSarong" +} \ No newline at end of file diff --git a/Projects/UOContent/Migrations/Server.Items.GildedDress.v0.json b/Projects/UOContent/Migrations/Server.Items.GildedDress.v0.json new file mode 100644 index 000000000..a6808c7bf --- /dev/null +++ b/Projects/UOContent/Migrations/Server.Items.GildedDress.v0.json @@ -0,0 +1,4 @@ +{ + "version": 0, + "type": "Server.Items.GildedDress" +} \ No newline at end of file diff --git a/Projects/UOContent/Migrations/Server.Items.Hakama.v0.json b/Projects/UOContent/Migrations/Server.Items.Hakama.v0.json new file mode 100644 index 000000000..d1ecb2eca --- /dev/null +++ b/Projects/UOContent/Migrations/Server.Items.Hakama.v0.json @@ -0,0 +1,4 @@ +{ + "version": 0, + "type": "Server.Items.Hakama" +} \ No newline at end of file diff --git a/Projects/UOContent/Migrations/Server.Items.HakamaShita.v0.json b/Projects/UOContent/Migrations/Server.Items.HakamaShita.v0.json new file mode 100644 index 000000000..e7c8c8e05 --- /dev/null +++ b/Projects/UOContent/Migrations/Server.Items.HakamaShita.v0.json @@ -0,0 +1,4 @@ +{ + "version": 0, + "type": "Server.Items.HakamaShita" +} \ No newline at end of file diff --git a/Projects/UOContent/Migrations/Server.Items.HalfApron.v0.json b/Projects/UOContent/Migrations/Server.Items.HalfApron.v0.json new file mode 100644 index 000000000..78d76a45f --- /dev/null +++ b/Projects/UOContent/Migrations/Server.Items.HalfApron.v0.json @@ -0,0 +1,4 @@ +{ + "version": 0, + "type": "Server.Items.HalfApron" +} \ No newline at end of file diff --git a/Projects/UOContent/Migrations/Server.Items.HatOfTheMagi.v0.json b/Projects/UOContent/Migrations/Server.Items.HatOfTheMagi.v0.json new file mode 100644 index 000000000..a87fa6661 --- /dev/null +++ b/Projects/UOContent/Migrations/Server.Items.HatOfTheMagi.v0.json @@ -0,0 +1,4 @@ +{ + "version": 0, + "type": "Server.Items.HatOfTheMagi" +} \ No newline at end of file diff --git a/Projects/UOContent/Migrations/Server.Items.HornedTribalMask.v0.json b/Projects/UOContent/Migrations/Server.Items.HornedTribalMask.v0.json new file mode 100644 index 000000000..a9e50d2e2 --- /dev/null +++ b/Projects/UOContent/Migrations/Server.Items.HornedTribalMask.v0.json @@ -0,0 +1,4 @@ +{ + "version": 0, + "type": "Server.Items.HornedTribalMask" +} \ No newline at end of file diff --git a/Projects/UOContent/Migrations/Server.Items.HuntersHeaddress.v0.json b/Projects/UOContent/Migrations/Server.Items.HuntersHeaddress.v0.json new file mode 100644 index 000000000..5bed0c74e --- /dev/null +++ b/Projects/UOContent/Migrations/Server.Items.HuntersHeaddress.v0.json @@ -0,0 +1,4 @@ +{ + "version": 0, + "type": "Server.Items.HuntersHeaddress" +} \ No newline at end of file diff --git a/Projects/UOContent/Migrations/Server.Items.JesterHat.v0.json b/Projects/UOContent/Migrations/Server.Items.JesterHat.v0.json new file mode 100644 index 000000000..02d2fcb43 --- /dev/null +++ b/Projects/UOContent/Migrations/Server.Items.JesterHat.v0.json @@ -0,0 +1,4 @@ +{ + "version": 0, + "type": "Server.Items.JesterHat" +} \ No newline at end of file diff --git a/Projects/UOContent/Migrations/Server.Items.JesterSuit.v0.json b/Projects/UOContent/Migrations/Server.Items.JesterSuit.v0.json new file mode 100644 index 000000000..9ed767056 --- /dev/null +++ b/Projects/UOContent/Migrations/Server.Items.JesterSuit.v0.json @@ -0,0 +1,4 @@ +{ + "version": 0, + "type": "Server.Items.JesterSuit" +} \ No newline at end of file diff --git a/Projects/UOContent/Migrations/Server.Items.JinBaori.v0.json b/Projects/UOContent/Migrations/Server.Items.JinBaori.v0.json new file mode 100644 index 000000000..5df4f1438 --- /dev/null +++ b/Projects/UOContent/Migrations/Server.Items.JinBaori.v0.json @@ -0,0 +1,4 @@ +{ + "version": 0, + "type": "Server.Items.JinBaori" +} \ No newline at end of file diff --git a/Projects/UOContent/Migrations/Server.Items.Kamishimo.v0.json b/Projects/UOContent/Migrations/Server.Items.Kamishimo.v0.json new file mode 100644 index 000000000..d705a6d91 --- /dev/null +++ b/Projects/UOContent/Migrations/Server.Items.Kamishimo.v0.json @@ -0,0 +1,4 @@ +{ + "version": 0, + "type": "Server.Items.Kamishimo" +} \ No newline at end of file diff --git a/Projects/UOContent/Migrations/Server.Items.Kasa.v0.json b/Projects/UOContent/Migrations/Server.Items.Kasa.v0.json new file mode 100644 index 000000000..136813c97 --- /dev/null +++ b/Projects/UOContent/Migrations/Server.Items.Kasa.v0.json @@ -0,0 +1,4 @@ +{ + "version": 0, + "type": "Server.Items.Kasa" +} \ No newline at end of file diff --git a/Projects/UOContent/Migrations/Server.Items.Kilt.v0.json b/Projects/UOContent/Migrations/Server.Items.Kilt.v0.json new file mode 100644 index 000000000..9d24ee350 --- /dev/null +++ b/Projects/UOContent/Migrations/Server.Items.Kilt.v0.json @@ -0,0 +1,4 @@ +{ + "version": 0, + "type": "Server.Items.Kilt" +} \ No newline at end of file diff --git a/Projects/UOContent/Migrations/Server.Items.LongPants.v0.json b/Projects/UOContent/Migrations/Server.Items.LongPants.v0.json new file mode 100644 index 000000000..5f144206a --- /dev/null +++ b/Projects/UOContent/Migrations/Server.Items.LongPants.v0.json @@ -0,0 +1,4 @@ +{ + "version": 0, + "type": "Server.Items.LongPants" +} \ No newline at end of file diff --git a/Projects/UOContent/Migrations/Server.Items.MagicWizardsHat.v0.json b/Projects/UOContent/Migrations/Server.Items.MagicWizardsHat.v0.json new file mode 100644 index 000000000..aac40b5ca --- /dev/null +++ b/Projects/UOContent/Migrations/Server.Items.MagicWizardsHat.v0.json @@ -0,0 +1,4 @@ +{ + "version": 0, + "type": "Server.Items.MagicWizardsHat" +} \ No newline at end of file diff --git a/Projects/UOContent/Migrations/Server.Items.MaleElvenRobe.v0.json b/Projects/UOContent/Migrations/Server.Items.MaleElvenRobe.v0.json new file mode 100644 index 000000000..dbefb1010 --- /dev/null +++ b/Projects/UOContent/Migrations/Server.Items.MaleElvenRobe.v0.json @@ -0,0 +1,4 @@ +{ + "version": 0, + "type": "Server.Items.MaleElvenRobe" +} \ No newline at end of file diff --git a/Projects/UOContent/Migrations/Server.Items.MaleKimono.v0.json b/Projects/UOContent/Migrations/Server.Items.MaleKimono.v0.json new file mode 100644 index 000000000..2d70c5275 --- /dev/null +++ b/Projects/UOContent/Migrations/Server.Items.MaleKimono.v0.json @@ -0,0 +1,4 @@ +{ + "version": 0, + "type": "Server.Items.MaleKimono" +} \ No newline at end of file diff --git a/Projects/UOContent/Migrations/Server.Items.MonkRobe.v0.json b/Projects/UOContent/Migrations/Server.Items.MonkRobe.v0.json new file mode 100644 index 000000000..5e46e31ec --- /dev/null +++ b/Projects/UOContent/Migrations/Server.Items.MonkRobe.v0.json @@ -0,0 +1,4 @@ +{ + "version": 0, + "type": "Server.Items.MonkRobe" +} \ No newline at end of file diff --git a/Projects/UOContent/Migrations/Server.Items.NinjaTabi.v0.json b/Projects/UOContent/Migrations/Server.Items.NinjaTabi.v0.json new file mode 100644 index 000000000..b08b5aa96 --- /dev/null +++ b/Projects/UOContent/Migrations/Server.Items.NinjaTabi.v0.json @@ -0,0 +1,4 @@ +{ + "version": 0, + "type": "Server.Items.NinjaTabi" +} \ No newline at end of file diff --git a/Projects/UOContent/Migrations/Server.Items.Obi.v0.json b/Projects/UOContent/Migrations/Server.Items.Obi.v0.json new file mode 100644 index 000000000..6e0d8e6df --- /dev/null +++ b/Projects/UOContent/Migrations/Server.Items.Obi.v0.json @@ -0,0 +1,4 @@ +{ + "version": 0, + "type": "Server.Items.Obi" +} \ No newline at end of file diff --git a/Projects/UOContent/Migrations/Server.Items.OrcishKinMask.v0.json b/Projects/UOContent/Migrations/Server.Items.OrcishKinMask.v0.json new file mode 100644 index 000000000..562c354dc --- /dev/null +++ b/Projects/UOContent/Migrations/Server.Items.OrcishKinMask.v0.json @@ -0,0 +1,4 @@ +{ + "version": 0, + "type": "Server.Items.OrcishKinMask" +} \ No newline at end of file diff --git a/Projects/UOContent/Migrations/Server.Items.PlainDress.v0.json b/Projects/UOContent/Migrations/Server.Items.PlainDress.v0.json new file mode 100644 index 000000000..a314e6526 --- /dev/null +++ b/Projects/UOContent/Migrations/Server.Items.PlainDress.v0.json @@ -0,0 +1,4 @@ +{ + "version": 0, + "type": "Server.Items.PlainDress" +} \ No newline at end of file diff --git a/Projects/UOContent/Migrations/Server.Items.RewardCloak.v0.json b/Projects/UOContent/Migrations/Server.Items.RewardCloak.v0.json new file mode 100644 index 000000000..3bf7757fb --- /dev/null +++ b/Projects/UOContent/Migrations/Server.Items.RewardCloak.v0.json @@ -0,0 +1,22 @@ +{ + "version": 0, + "type": "Server.Items.RewardCloak", + "properties": [ + { + "name": "Number", + "type": "int", + "rule": "PrimitiveTypeMigrationRule", + "ruleArguments": [ + "" + ] + }, + { + "name": "IsRewardItem", + "type": "bool", + "rule": "PrimitiveTypeMigrationRule", + "ruleArguments": [ + "" + ] + } + ] +} \ No newline at end of file diff --git a/Projects/UOContent/Migrations/Server.Items.RewardDress.v0.json b/Projects/UOContent/Migrations/Server.Items.RewardDress.v0.json new file mode 100644 index 000000000..ffd26954f --- /dev/null +++ b/Projects/UOContent/Migrations/Server.Items.RewardDress.v0.json @@ -0,0 +1,22 @@ +{ + "version": 0, + "type": "Server.Items.RewardDress", + "properties": [ + { + "name": "Number", + "type": "int", + "rule": "PrimitiveTypeMigrationRule", + "ruleArguments": [ + "" + ] + }, + { + "name": "IsRewardItem", + "type": "bool", + "rule": "PrimitiveTypeMigrationRule", + "ruleArguments": [ + "" + ] + } + ] +} \ No newline at end of file diff --git a/Projects/UOContent/Migrations/Server.Items.RewardRobe.v0.json b/Projects/UOContent/Migrations/Server.Items.RewardRobe.v0.json new file mode 100644 index 000000000..90f7a9537 --- /dev/null +++ b/Projects/UOContent/Migrations/Server.Items.RewardRobe.v0.json @@ -0,0 +1,22 @@ +{ + "version": 0, + "type": "Server.Items.RewardRobe", + "properties": [ + { + "name": "Number", + "type": "int", + "rule": "PrimitiveTypeMigrationRule", + "ruleArguments": [ + "" + ] + }, + { + "name": "IsRewardItem", + "type": "bool", + "rule": "PrimitiveTypeMigrationRule", + "ruleArguments": [ + "" + ] + } + ] +} \ No newline at end of file diff --git a/Projects/UOContent/Migrations/Server.Items.Robe.v2.json b/Projects/UOContent/Migrations/Server.Items.Robe.v2.json new file mode 100644 index 000000000..8d58dd19e --- /dev/null +++ b/Projects/UOContent/Migrations/Server.Items.Robe.v2.json @@ -0,0 +1,22 @@ +{ + "version": 2, + "type": "Server.Items.Robe", + "properties": [ + { + "name": "CurArcaneCharges", + "type": "int", + "rule": "PrimitiveTypeMigrationRule", + "ruleArguments": [ + "EncodedInt" + ] + }, + { + "name": "MaxArcaneCharges", + "type": "int", + "rule": "PrimitiveTypeMigrationRule", + "ruleArguments": [ + "EncodedInt" + ] + } + ] +} \ No newline at end of file diff --git a/Projects/UOContent/Migrations/Server.Items.SamuraiTabi.v0.json b/Projects/UOContent/Migrations/Server.Items.SamuraiTabi.v0.json new file mode 100644 index 000000000..3c80fdc7b --- /dev/null +++ b/Projects/UOContent/Migrations/Server.Items.SamuraiTabi.v0.json @@ -0,0 +1,4 @@ +{ + "version": 0, + "type": "Server.Items.SamuraiTabi" +} \ No newline at end of file diff --git a/Projects/UOContent/Migrations/Server.Items.Sandals.v0.json b/Projects/UOContent/Migrations/Server.Items.Sandals.v0.json new file mode 100644 index 000000000..610ac7bba --- /dev/null +++ b/Projects/UOContent/Migrations/Server.Items.Sandals.v0.json @@ -0,0 +1,4 @@ +{ + "version": 0, + "type": "Server.Items.Sandals" +} \ No newline at end of file diff --git a/Projects/UOContent/Migrations/Server.Items.SavageMask.v0.json b/Projects/UOContent/Migrations/Server.Items.SavageMask.v0.json new file mode 100644 index 000000000..a7e60a075 --- /dev/null +++ b/Projects/UOContent/Migrations/Server.Items.SavageMask.v0.json @@ -0,0 +1,4 @@ +{ + "version": 0, + "type": "Server.Items.SavageMask" +} \ No newline at end of file diff --git a/Projects/UOContent/Migrations/Server.Items.Shirt.v0.json b/Projects/UOContent/Migrations/Server.Items.Shirt.v0.json new file mode 100644 index 000000000..6790dce9a --- /dev/null +++ b/Projects/UOContent/Migrations/Server.Items.Shirt.v0.json @@ -0,0 +1,4 @@ +{ + "version": 0, + "type": "Server.Items.Shirt" +} \ No newline at end of file diff --git a/Projects/UOContent/Migrations/Server.Items.Shoes.v0.json b/Projects/UOContent/Migrations/Server.Items.Shoes.v0.json new file mode 100644 index 000000000..6c69c188e --- /dev/null +++ b/Projects/UOContent/Migrations/Server.Items.Shoes.v0.json @@ -0,0 +1,4 @@ +{ + "version": 0, + "type": "Server.Items.Shoes" +} \ No newline at end of file diff --git a/Projects/UOContent/Migrations/Server.Items.ShortPants.v0.json b/Projects/UOContent/Migrations/Server.Items.ShortPants.v0.json new file mode 100644 index 000000000..e2153784f --- /dev/null +++ b/Projects/UOContent/Migrations/Server.Items.ShortPants.v0.json @@ -0,0 +1,4 @@ +{ + "version": 0, + "type": "Server.Items.ShortPants" +} \ No newline at end of file diff --git a/Projects/UOContent/Migrations/Server.Items.Skirt.v0.json b/Projects/UOContent/Migrations/Server.Items.Skirt.v0.json new file mode 100644 index 000000000..fd28aa0cd --- /dev/null +++ b/Projects/UOContent/Migrations/Server.Items.Skirt.v0.json @@ -0,0 +1,4 @@ +{ + "version": 0, + "type": "Server.Items.Skirt" +} \ No newline at end of file diff --git a/Projects/UOContent/Migrations/Server.Items.SkullCap.v0.json b/Projects/UOContent/Migrations/Server.Items.SkullCap.v0.json new file mode 100644 index 000000000..d903deb47 --- /dev/null +++ b/Projects/UOContent/Migrations/Server.Items.SkullCap.v0.json @@ -0,0 +1,4 @@ +{ + "version": 0, + "type": "Server.Items.SkullCap" +} \ No newline at end of file diff --git a/Projects/UOContent/Migrations/Server.Items.SpiritOfTheTotem.v0.json b/Projects/UOContent/Migrations/Server.Items.SpiritOfTheTotem.v0.json new file mode 100644 index 000000000..00489e2ec --- /dev/null +++ b/Projects/UOContent/Migrations/Server.Items.SpiritOfTheTotem.v0.json @@ -0,0 +1,4 @@ +{ + "version": 0, + "type": "Server.Items.SpiritOfTheTotem" +} \ No newline at end of file diff --git a/Projects/UOContent/Migrations/Server.Items.StrawHat.v0.json b/Projects/UOContent/Migrations/Server.Items.StrawHat.v0.json new file mode 100644 index 000000000..b1c34e9db --- /dev/null +++ b/Projects/UOContent/Migrations/Server.Items.StrawHat.v0.json @@ -0,0 +1,4 @@ +{ + "version": 0, + "type": "Server.Items.StrawHat" +} \ No newline at end of file diff --git a/Projects/UOContent/Migrations/Server.Items.Surcoat.v0.json b/Projects/UOContent/Migrations/Server.Items.Surcoat.v0.json new file mode 100644 index 000000000..4d37a5b3d --- /dev/null +++ b/Projects/UOContent/Migrations/Server.Items.Surcoat.v0.json @@ -0,0 +1,4 @@ +{ + "version": 0, + "type": "Server.Items.Surcoat" +} \ No newline at end of file diff --git a/Projects/UOContent/Migrations/Server.Items.TallStrawHat.v0.json b/Projects/UOContent/Migrations/Server.Items.TallStrawHat.v0.json new file mode 100644 index 000000000..ae294ea78 --- /dev/null +++ b/Projects/UOContent/Migrations/Server.Items.TallStrawHat.v0.json @@ -0,0 +1,4 @@ +{ + "version": 0, + "type": "Server.Items.TallStrawHat" +} \ No newline at end of file diff --git a/Projects/UOContent/Migrations/Server.Items.TattsukeHakama.v0.json b/Projects/UOContent/Migrations/Server.Items.TattsukeHakama.v0.json new file mode 100644 index 000000000..e3d7a974d --- /dev/null +++ b/Projects/UOContent/Migrations/Server.Items.TattsukeHakama.v0.json @@ -0,0 +1,4 @@ +{ + "version": 0, + "type": "Server.Items.TattsukeHakama" +} \ No newline at end of file diff --git a/Projects/UOContent/Migrations/Server.Items.ThighBoots.v2.json b/Projects/UOContent/Migrations/Server.Items.ThighBoots.v2.json new file mode 100644 index 000000000..cd4792aac --- /dev/null +++ b/Projects/UOContent/Migrations/Server.Items.ThighBoots.v2.json @@ -0,0 +1,22 @@ +{ + "version": 2, + "type": "Server.Items.ThighBoots", + "properties": [ + { + "name": "CurArcaneCharges", + "type": "int", + "rule": "PrimitiveTypeMigrationRule", + "ruleArguments": [ + "EncodedInt" + ] + }, + { + "name": "MaxArcaneCharges", + "type": "int", + "rule": "PrimitiveTypeMigrationRule", + "ruleArguments": [ + "EncodedInt" + ] + } + ] +} \ No newline at end of file diff --git a/Projects/UOContent/Migrations/Server.Items.TribalMask.v0.json b/Projects/UOContent/Migrations/Server.Items.TribalMask.v0.json new file mode 100644 index 000000000..2c199cdd6 --- /dev/null +++ b/Projects/UOContent/Migrations/Server.Items.TribalMask.v0.json @@ -0,0 +1,4 @@ +{ + "version": 0, + "type": "Server.Items.TribalMask" +} \ No newline at end of file diff --git a/Projects/UOContent/Migrations/Server.Items.TricorneHat.v0.json b/Projects/UOContent/Migrations/Server.Items.TricorneHat.v0.json new file mode 100644 index 000000000..5ddf1d7c0 --- /dev/null +++ b/Projects/UOContent/Migrations/Server.Items.TricorneHat.v0.json @@ -0,0 +1,4 @@ +{ + "version": 0, + "type": "Server.Items.TricorneHat" +} \ No newline at end of file diff --git a/Projects/UOContent/Migrations/Server.Items.Tunic.v0.json b/Projects/UOContent/Migrations/Server.Items.Tunic.v0.json new file mode 100644 index 000000000..4a85f85df --- /dev/null +++ b/Projects/UOContent/Migrations/Server.Items.Tunic.v0.json @@ -0,0 +1,4 @@ +{ + "version": 0, + "type": "Server.Items.Tunic" +} \ No newline at end of file diff --git a/Projects/UOContent/Migrations/Server.Items.Waraji.v0.json b/Projects/UOContent/Migrations/Server.Items.Waraji.v0.json new file mode 100644 index 000000000..125a60a32 --- /dev/null +++ b/Projects/UOContent/Migrations/Server.Items.Waraji.v0.json @@ -0,0 +1,4 @@ +{ + "version": 0, + "type": "Server.Items.Waraji" +} \ No newline at end of file diff --git a/Projects/UOContent/Migrations/Server.Items.WideBrimHat.v0.json b/Projects/UOContent/Migrations/Server.Items.WideBrimHat.v0.json new file mode 100644 index 000000000..fd66ef2e7 --- /dev/null +++ b/Projects/UOContent/Migrations/Server.Items.WideBrimHat.v0.json @@ -0,0 +1,4 @@ +{ + "version": 0, + "type": "Server.Items.WideBrimHat" +} \ No newline at end of file diff --git a/Projects/UOContent/Migrations/Server.Items.WizardsHat.v0.json b/Projects/UOContent/Migrations/Server.Items.WizardsHat.v0.json new file mode 100644 index 000000000..4007f8dae --- /dev/null +++ b/Projects/UOContent/Migrations/Server.Items.WizardsHat.v0.json @@ -0,0 +1,4 @@ +{ + "version": 0, + "type": "Server.Items.WizardsHat" +} \ No newline at end of file diff --git a/Projects/UOContent/Migrations/Server.Items.WoodlandBelt.v0.json b/Projects/UOContent/Migrations/Server.Items.WoodlandBelt.v0.json new file mode 100644 index 000000000..b479a2789 --- /dev/null +++ b/Projects/UOContent/Migrations/Server.Items.WoodlandBelt.v0.json @@ -0,0 +1,4 @@ +{ + "version": 0, + "type": "Server.Items.WoodlandBelt" +} \ No newline at end of file