diff --git a/Projects/UOContent/Items/Shields/Artifacts/Aegis.cs b/Projects/UOContent/Items/Shields/Artifacts/Aegis.cs index 52ecdc322..727bb9357 100644 --- a/Projects/UOContent/Items/Shields/Artifacts/Aegis.cs +++ b/Projects/UOContent/Items/Shields/Artifacts/Aegis.cs @@ -1,46 +1,25 @@ -namespace Server.Items +using ModernUO.Serialization; + +namespace Server.Items; + +[SerializationGenerator(0, false)] +public partial class Aegis : HeaterShield { - public class Aegis : HeaterShield + [Constructible] + public Aegis() { - [Constructible] - public Aegis() - { - Hue = 0x47E; - ArmorAttributes.SelfRepair = 5; - Attributes.ReflectPhysical = 15; - Attributes.DefendChance = 15; - Attributes.LowerManaCost = 8; - } - - public Aegis(Serial serial) : base(serial) - { - } - - public override int LabelNumber => 1061602; // Ægis - public override int ArtifactRarity => 11; - - public override int BasePhysicalResistance => 15; - - 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(); - - if (version < 1) - { - PhysicalBonus = 0; - } - } + Hue = 0x47E; + ArmorAttributes.SelfRepair = 5; + Attributes.ReflectPhysical = 15; + Attributes.DefendChance = 15; + Attributes.LowerManaCost = 8; } + + public override int LabelNumber => 1061602; // Ægis + public override int ArtifactRarity => 11; + + public override int BasePhysicalResistance => 15; + + public override int InitMinHits => 255; + public override int InitMaxHits => 255; } diff --git a/Projects/UOContent/Items/Shields/Artifacts/ArcaneShield.cs b/Projects/UOContent/Items/Shields/Artifacts/ArcaneShield.cs index 491f1d44b..ca6f1bb91 100644 --- a/Projects/UOContent/Items/Shields/Artifacts/ArcaneShield.cs +++ b/Projects/UOContent/Items/Shields/Artifacts/ArcaneShield.cs @@ -1,45 +1,24 @@ -namespace Server.Items +using ModernUO.Serialization; + +namespace Server.Items; + +[SerializationGenerator(0, false)] +public partial class ArcaneShield : WoodenKiteShield { - public class ArcaneShield : WoodenKiteShield + [Constructible] + public ArcaneShield() { - [Constructible] - public ArcaneShield() - { - ItemID = 0x1B78; - Hue = 0x556; - Attributes.NightSight = 1; - Attributes.SpellChanneling = 1; - Attributes.DefendChance = 15; - Attributes.CastSpeed = 1; - } - - public ArcaneShield(Serial serial) : base(serial) - { - } - - public override int LabelNumber => 1061101; // Arcane Shield - public override int ArtifactRarity => 11; - - public override int InitMinHits => 255; - public override int InitMaxHits => 255; - - public override void Serialize(IGenericWriter writer) - { - base.Serialize(writer); - - writer.Write(0); - } - - public override void Deserialize(IGenericReader reader) - { - base.Deserialize(reader); - - var version = reader.ReadInt(); - - if (Attributes.NightSight == 0) - { - Attributes.NightSight = 1; - } - } + ItemID = 0x1B78; + Hue = 0x556; + Attributes.NightSight = 1; + Attributes.SpellChanneling = 1; + Attributes.DefendChance = 15; + Attributes.CastSpeed = 1; } + + public override int LabelNumber => 1061101; // Arcane Shield + public override int ArtifactRarity => 11; + + public override int InitMinHits => 255; + public override int InitMaxHits => 255; } diff --git a/Projects/UOContent/Items/Shields/BaseShield.cs b/Projects/UOContent/Items/Shields/BaseShield.cs index 1b2ca14cd..0e287f6f9 100644 --- a/Projects/UOContent/Items/Shields/BaseShield.cs +++ b/Projects/UOContent/Items/Shields/BaseShield.cs @@ -1,176 +1,114 @@ using System; +using ModernUO.Serialization; using Server.Network; -namespace Server.Items +namespace Server.Items; + +[SerializationGenerator(0, false)] +public partial class BaseShield : BaseArmor { - public class BaseShield : BaseArmor + public BaseShield(int itemID) : base(itemID) { - public BaseShield(int itemID) : base(itemID) + } + + public override ArmorMaterialType MaterialType => ArmorMaterialType.Plate; + + public override double ArmorRating + { + get { + var m = Parent as Mobile; + var ar = base.ArmorRating; + + if (m != null) + { + return m.Skills.Parry.Value * ar / 200.0 + 1.0; + } + + return ar; + } + } + + public override int OnHit(BaseWeapon weapon, int damage) + { + if (Core.AOS) + { + if (ArmorAttributes.SelfRepair > Utility.Random(10)) + { + HitPoints += 2; + } + else + { + var halfArmor = ArmorRating / 2.0; + var absorbed = Math.Max(2, (int)(halfArmor + halfArmor * Utility.RandomDouble())); + + TryLowerDurability(weapon.Type == WeaponType.Bashing ? absorbed / 2 : Utility.Random(2)); + } + + return 0; } - public BaseShield(Serial serial) : base(serial) + if (Parent is not Mobile owner) { - } - - public override ArmorMaterialType MaterialType => ArmorMaterialType.Plate; - - public override double ArmorRating - { - get - { - var m = Parent as Mobile; - var ar = base.ArmorRating; - - if (m != null) - { - return m.Skills.Parry.Value * ar / 200.0 + 1.0; - } - - return ar; - } - } - - public override void Serialize(IGenericWriter writer) - { - base.Serialize(writer); - - writer.Write(1); // version - } - - public override void Deserialize(IGenericReader reader) - { - base.Deserialize(reader); - - var version = reader.ReadInt(); - - if (version < 1) - { - if (this is Aegis) - { - return; - } - - // The 15 bonus points to resistances are not applied to shields on OSI. - PhysicalBonus = 0; - FireBonus = 0; - ColdBonus = 0; - PoisonBonus = 0; - EnergyBonus = 0; - } - } - - public override int OnHit(BaseWeapon weapon, int damage) - { - if (Core.AOS) - { - if (ArmorAttributes.SelfRepair > Utility.Random(10)) - { - HitPoints += 2; - } - else - { - var halfArmor = ArmorRating / 2.0; - var absorbed = (int)(halfArmor + halfArmor * Utility.RandomDouble()); - - if (absorbed < 2) - { - absorbed = 2; - } - - var wear = weapon.Type == WeaponType.Bashing ? absorbed / 2 : Utility.Random(2); - - if (wear > 0 && MaxHitPoints > 0) - { - if (HitPoints >= wear) - { - HitPoints -= wear; - wear = 0; - } - else - { - wear -= HitPoints; - HitPoints = 0; - } - - if (wear > 0) - { - if (MaxHitPoints > wear) - { - MaxHitPoints -= wear; - - if (Parent is Mobile mobile) - { - // Your equipment is severely damaged. - mobile.LocalOverheadMessage(MessageType.Regular, 0x3B2, 1061121); - } - } - else - { - Delete(); - } - } - } - } - - return 0; - } - - if (Parent is not Mobile owner) - { - return damage; - } - - var ar = ArmorRating; - var chance = (owner.Skills.Parry.Value - ar * 2.0) / 100.0; - - if (chance < 0.01) - { - chance = 0.01; - } - - if (owner.CheckSkill(SkillName.Parry, chance)) - { - damage -= Math.Min(damage, weapon.Skill == SkillName.Archery ? (int)ar : (int)(ar / 2.0)); - - owner.FixedEffect(0x37B9, 10, 16); - - if (Utility.Random(100) < 25) // 25% chance to lower durability - { - var wear = Utility.Random(2); - - if (wear > 0 && MaxHitPoints > 0) - { - if (HitPoints >= wear) - { - HitPoints -= wear; - wear = 0; - } - else - { - wear -= HitPoints; - HitPoints = 0; - } - - if (wear > 0) - { - if (MaxHitPoints > wear) - { - MaxHitPoints -= wear; - - // Your equipment is severely damaged. - ((Mobile)Parent).LocalOverheadMessage(MessageType.Regular, 0x3B2, 1061121); - } - else - { - Delete(); - } - } - } - } - } - return damage; } + + var ar = ArmorRating; + var chance = (owner.Skills.Parry.Value - ar * 2.0) / 100.0; + + if (chance < 0.01) + { + chance = 0.01; + } + + if (owner.CheckSkill(SkillName.Parry, chance)) + { + damage -= Math.Min(damage, weapon.Skill == SkillName.Archery ? (int)ar : (int)(ar / 2.0)); + + owner.FixedEffect(0x37B9, 10, 16); + + if (Utility.Random(100) < 25) // 25% chance to lower durability + { + TryLowerDurability(Utility.Random(2)); + } + } + + return damage; + } + + private void TryLowerDurability(int wear) + { + if (wear <= 0 || MaxHitPoints <= 0) + { + return; + } + + if (HitPoints >= wear) + { + HitPoints -= wear; + wear = 0; + } + else + { + wear -= HitPoints; + HitPoints = 0; + } + + if (wear <= 0) + { + return; + } + + if (MaxHitPoints > wear) + { + MaxHitPoints -= wear; + + // Your equipment is severely damaged. + (Parent as Mobile)?.LocalOverheadMessage(MessageType.Regular, 0x3B2, 1061121); + } + else + { + Delete(); + } } } diff --git a/Projects/UOContent/Items/Shields/BronzeShield.cs b/Projects/UOContent/Items/Shields/BronzeShield.cs index c1e0dd85e..8261d28c0 100644 --- a/Projects/UOContent/Items/Shields/BronzeShield.cs +++ b/Projects/UOContent/Items/Shields/BronzeShield.cs @@ -1,39 +1,23 @@ -namespace Server.Items +using ModernUO.Serialization; + +namespace Server.Items; + +[SerializationGenerator(0, false)] +public partial class BronzeShield : BaseShield { - public class BronzeShield : BaseShield - { - [Constructible] - public BronzeShield() : base(0x1B72) => Weight = 6.0; + [Constructible] + public BronzeShield() : base(0x1B72) => Weight = 6.0; - public BronzeShield(Serial serial) : base(serial) - { - } + public override int BasePhysicalResistance => 0; + public override int BaseFireResistance => 0; + public override int BaseColdResistance => 1; + public override int BasePoisonResistance => 0; + public override int BaseEnergyResistance => 0; - public override int BasePhysicalResistance => 0; - public override int BaseFireResistance => 0; - public override int BaseColdResistance => 1; - public override int BasePoisonResistance => 0; - public override int BaseEnergyResistance => 0; + public override int InitMinHits => 25; + public override int InitMaxHits => 30; - public override int InitMinHits => 25; - public override int InitMaxHits => 30; + public override int AosStrReq => 35; - public override int AosStrReq => 35; - - public override int ArmorBase => 10; - - public override void Deserialize(IGenericReader reader) - { - base.Deserialize(reader); - - var version = reader.ReadInt(); - } - - public override void Serialize(IGenericWriter writer) - { - base.Serialize(writer); - - writer.Write(0); // version - } - } + public override int ArmorBase => 10; } diff --git a/Projects/UOContent/Items/Shields/Buckler.cs b/Projects/UOContent/Items/Shields/Buckler.cs index 1db820691..ea720c0b8 100644 --- a/Projects/UOContent/Items/Shields/Buckler.cs +++ b/Projects/UOContent/Items/Shields/Buckler.cs @@ -1,39 +1,23 @@ -namespace Server.Items +using ModernUO.Serialization; + +namespace Server.Items; + +[SerializationGenerator(0, false)] +public partial class Buckler : BaseShield { - public class Buckler : BaseShield - { - [Constructible] - public Buckler() : base(0x1B73) => Weight = 5.0; + [Constructible] + public Buckler() : base(0x1B73) => Weight = 5.0; - public Buckler(Serial serial) : base(serial) - { - } + public override int BasePhysicalResistance => 0; + public override int BaseFireResistance => 0; + public override int BaseColdResistance => 0; + public override int BasePoisonResistance => 1; + public override int BaseEnergyResistance => 0; - public override int BasePhysicalResistance => 0; - public override int BaseFireResistance => 0; - public override int BaseColdResistance => 0; - public override int BasePoisonResistance => 1; - public override int BaseEnergyResistance => 0; + public override int InitMinHits => 40; + public override int InitMaxHits => 50; - public override int InitMinHits => 40; - public override int InitMaxHits => 50; + public override int AosStrReq => 20; - public override int AosStrReq => 20; - - public override int ArmorBase => 7; - - public override void Deserialize(IGenericReader reader) - { - base.Deserialize(reader); - - var version = reader.ReadInt(); - } - - public override void Serialize(IGenericWriter writer) - { - base.Serialize(writer); - - writer.Write(0); // version - } - } + public override int ArmorBase => 7; } diff --git a/Projects/UOContent/Items/Shields/ChaosShield.cs b/Projects/UOContent/Items/Shields/ChaosShield.cs index bbc80947c..dd7707c95 100644 --- a/Projects/UOContent/Items/Shields/ChaosShield.cs +++ b/Projects/UOContent/Items/Shields/ChaosShield.cs @@ -1,77 +1,60 @@ +using ModernUO.Serialization; using Server.Guilds; -namespace Server.Items +namespace Server.Items; + +[SerializationGenerator(0, false)] +public partial class ChaosShield : BaseShield { - public class ChaosShield : BaseShield + [Constructible] + public ChaosShield() : base(0x1BC3) { - [Constructible] - public ChaosShield() : base(0x1BC3) + if (!Core.AOS) { - if (!Core.AOS) - { - LootType = LootType.Newbied; - } - - Weight = 5.0; + LootType = LootType.Newbied; } - public ChaosShield(Serial serial) : base(serial) + Weight = 5.0; + } + + public override int BasePhysicalResistance => 1; + public override int BaseFireResistance => 0; + public override int BaseColdResistance => 0; + public override int BasePoisonResistance => 0; + public override int BaseEnergyResistance => 0; + + public override int InitMinHits => 100; + public override int InitMaxHits => 125; + + public override int AosStrReq => 95; + + public override int ArmorBase => 32; + + public override bool OnEquip(Mobile from) => Validate(from) && base.OnEquip(from); + + public override void OnSingleClick(Mobile from) + { + if (Validate(Parent as Mobile)) { - } - - public override int BasePhysicalResistance => 1; - public override int BaseFireResistance => 0; - public override int BaseColdResistance => 0; - public override int BasePoisonResistance => 0; - public override int BaseEnergyResistance => 0; - - public override int InitMinHits => 100; - public override int InitMaxHits => 125; - - public override int AosStrReq => 95; - - public override int ArmorBase => 32; - - public override void Deserialize(IGenericReader reader) - { - base.Deserialize(reader); - - var version = reader.ReadInt(); - } - - public override void Serialize(IGenericWriter writer) - { - base.Serialize(writer); - - writer.Write(0); // version - } - - public override bool OnEquip(Mobile from) => Validate(from) && base.OnEquip(from); - - public override void OnSingleClick(Mobile from) - { - if (Validate(Parent as Mobile)) - { - base.OnSingleClick(from); - } - } - - public virtual bool Validate(Mobile m) - { - if (m?.Player != true || m.AccessLevel != AccessLevel.Player || Core.AOS) - { - return true; - } - - if (m.Guild is not Guild g || g.Type != GuildType.Chaos) - { - m.FixedEffect(0x3728, 10, 13); - Delete(); - - return false; - } - - return true; + base.OnSingleClick(from); } } + + public virtual bool Validate(Mobile m) + { + if (Core.AOS || m is not { Player: true, AccessLevel: AccessLevel.Player }) + { + return true; + } + + if (m.Guild is not Guild { Type: GuildType.Chaos }) + { + m.FixedEffect(0x3728, 10, 13); + Delete(); + + return false; + } + + return true; + } } diff --git a/Projects/UOContent/Items/Shields/GargishWoodenShield.cs b/Projects/UOContent/Items/Shields/GargishWoodenShield.cs index e332c7cb1..d2cf78790 100644 --- a/Projects/UOContent/Items/Shields/GargishWoodenShield.cs +++ b/Projects/UOContent/Items/Shields/GargishWoodenShield.cs @@ -1,23 +1,22 @@ using ModernUO.Serialization; -namespace Server.Items +namespace Server.Items; + +[Flippable(0x4200, 0x4207)] +[SerializationGenerator(0)] +public partial class GargishWoodenShield : BaseShield { - [Flippable(0x4200, 0x4207)] - [SerializationGenerator(0)] - public partial class GargishWoodenShield : BaseShield - { - [Constructible] - public GargishWoodenShield() : base(0x4200) => Weight = 5.0; + [Constructible] + public GargishWoodenShield() : base(0x4200) => Weight = 5.0; - public override int BasePhysicalResistance => 0; - public override int BaseFireResistance => 0; - public override int BaseColdResistance => 0; - public override int BasePoisonResistance => 0; - public override int BaseEnergyResistance => 1; - public override int InitMinHits => 20; - public override int InitMaxHits => 25; - public override int AosStrReq => 20; + public override int BasePhysicalResistance => 0; + public override int BaseFireResistance => 0; + public override int BaseColdResistance => 0; + public override int BasePoisonResistance => 0; + public override int BaseEnergyResistance => 1; + public override int InitMinHits => 20; + public override int InitMaxHits => 25; + public override int AosStrReq => 20; - public override int RequiredRaces => Race.AllowGargoylesOnly; - } -} + public override int RequiredRaces => Race.AllowGargoylesOnly; +} \ No newline at end of file diff --git a/Projects/UOContent/Items/Shields/HeaterShield.cs b/Projects/UOContent/Items/Shields/HeaterShield.cs index d627456da..40dccdeb3 100644 --- a/Projects/UOContent/Items/Shields/HeaterShield.cs +++ b/Projects/UOContent/Items/Shields/HeaterShield.cs @@ -1,39 +1,23 @@ -namespace Server.Items +using ModernUO.Serialization; + +namespace Server.Items; + +[SerializationGenerator(0, false)] +public partial class HeaterShield : BaseShield { - public class HeaterShield : BaseShield - { - [Constructible] - public HeaterShield() : base(0x1B76) => Weight = 8.0; + [Constructible] + public HeaterShield() : base(0x1B76) => Weight = 8.0; - public HeaterShield(Serial serial) : base(serial) - { - } + public override int BasePhysicalResistance => 0; + public override int BaseFireResistance => 1; + public override int BaseColdResistance => 0; + public override int BasePoisonResistance => 0; + public override int BaseEnergyResistance => 0; - public override int BasePhysicalResistance => 0; - public override int BaseFireResistance => 1; - public override int BaseColdResistance => 0; - public override int BasePoisonResistance => 0; - public override int BaseEnergyResistance => 0; + public override int InitMinHits => 50; + public override int InitMaxHits => 65; - public override int InitMinHits => 50; - public override int InitMaxHits => 65; + public override int AosStrReq => 90; - public override int AosStrReq => 90; - - public override int ArmorBase => 23; - - public override void Deserialize(IGenericReader reader) - { - base.Deserialize(reader); - - var version = reader.ReadInt(); - } - - public override void Serialize(IGenericWriter writer) - { - base.Serialize(writer); - - writer.Write(0); // version - } - } + public override int ArmorBase => 23; } diff --git a/Projects/UOContent/Items/Shields/MetalKiteShield.cs b/Projects/UOContent/Items/Shields/MetalKiteShield.cs index 0653d14b8..855b9ecff 100644 --- a/Projects/UOContent/Items/Shields/MetalKiteShield.cs +++ b/Projects/UOContent/Items/Shields/MetalKiteShield.cs @@ -1,56 +1,35 @@ -namespace Server.Items +using ModernUO.Serialization; + +namespace Server.Items; + +[SerializationGenerator(0, false)] +public partial class MetalKiteShield : BaseShield, IDyable { - public class MetalKiteShield : BaseShield, IDyable + [Constructible] + public MetalKiteShield() : base(0x1B74) => Weight = 7.0; + + public override int BasePhysicalResistance => 0; + public override int BaseFireResistance => 0; + public override int BaseColdResistance => 0; + public override int BasePoisonResistance => 0; + public override int BaseEnergyResistance => 1; + + public override int InitMinHits => 45; + public override int InitMaxHits => 60; + + public override int AosStrReq => 45; + + public override int ArmorBase => 16; + + public bool Dye(Mobile from, DyeTub sender) { - [Constructible] - public MetalKiteShield() : base(0x1B74) => Weight = 7.0; - - public MetalKiteShield(Serial serial) : base(serial) + if (Deleted) { + return false; } - public override int BasePhysicalResistance => 0; - public override int BaseFireResistance => 0; - public override int BaseColdResistance => 0; - public override int BasePoisonResistance => 0; - public override int BaseEnergyResistance => 1; + Hue = sender.DyedHue; - public override int InitMinHits => 45; - public override int InitMaxHits => 60; - - public override int AosStrReq => 45; - - public override int ArmorBase => 16; - - public bool Dye(Mobile from, DyeTub sender) - { - if (Deleted) - { - return false; - } - - Hue = sender.DyedHue; - - return true; - } - - public override void Deserialize(IGenericReader reader) - { - base.Deserialize(reader); - - var version = reader.ReadInt(); - - if (Weight == 5.0) - { - Weight = 7.0; - } - } - - public override void Serialize(IGenericWriter writer) - { - base.Serialize(writer); - - writer.Write(0); // version - } + return true; } } diff --git a/Projects/UOContent/Items/Shields/MetalShield.cs b/Projects/UOContent/Items/Shields/MetalShield.cs index a44a1b4ce..5c9a5a148 100644 --- a/Projects/UOContent/Items/Shields/MetalShield.cs +++ b/Projects/UOContent/Items/Shields/MetalShield.cs @@ -1,39 +1,23 @@ -namespace Server.Items +using ModernUO.Serialization; + +namespace Server.Items; + +[SerializationGenerator(0, false)] +public partial class MetalShield : BaseShield { - public class MetalShield : BaseShield - { - [Constructible] - public MetalShield() : base(0x1B7B) => Weight = 6.0; + [Constructible] + public MetalShield() : base(0x1B7B) => Weight = 6.0; - public MetalShield(Serial serial) : base(serial) - { - } + public override int BasePhysicalResistance => 0; + public override int BaseFireResistance => 1; + public override int BaseColdResistance => 0; + public override int BasePoisonResistance => 0; + public override int BaseEnergyResistance => 0; - public override int BasePhysicalResistance => 0; - public override int BaseFireResistance => 1; - public override int BaseColdResistance => 0; - public override int BasePoisonResistance => 0; - public override int BaseEnergyResistance => 0; + public override int InitMinHits => 50; + public override int InitMaxHits => 65; - public override int InitMinHits => 50; - public override int InitMaxHits => 65; + public override int AosStrReq => 45; - public override int AosStrReq => 45; - - public override int ArmorBase => 11; - - public override void Deserialize(IGenericReader reader) - { - base.Deserialize(reader); - - var version = reader.ReadInt(); - } - - public override void Serialize(IGenericWriter writer) - { - base.Serialize(writer); - - writer.Write(0); // version - } - } + public override int ArmorBase => 11; } diff --git a/Projects/UOContent/Items/Shields/OrderShield.cs b/Projects/UOContent/Items/Shields/OrderShield.cs index 1547c85aa..04ba88909 100644 --- a/Projects/UOContent/Items/Shields/OrderShield.cs +++ b/Projects/UOContent/Items/Shields/OrderShield.cs @@ -1,82 +1,60 @@ +using ModernUO.Serialization; using Server.Guilds; -namespace Server.Items +namespace Server.Items; + +[SerializationGenerator(0, false)] +public partial class OrderShield : BaseShield { - public class OrderShield : BaseShield + [Constructible] + public OrderShield() : base(0x1BC4) { - [Constructible] - public OrderShield() : base(0x1BC4) + if (!Core.AOS) { - if (!Core.AOS) - { - LootType = LootType.Newbied; - } - - Weight = 7.0; + LootType = LootType.Newbied; } - public OrderShield(Serial serial) : base(serial) + Weight = 7.0; + } + + public override int BasePhysicalResistance => 1; + public override int BaseFireResistance => 0; + public override int BaseColdResistance => 0; + public override int BasePoisonResistance => 0; + public override int BaseEnergyResistance => 0; + + public override int InitMinHits => 100; + public override int InitMaxHits => 125; + + public override int AosStrReq => 95; + + public override int ArmorBase => 30; + + public override bool OnEquip(Mobile from) => Validate(from) && base.OnEquip(from); + + public override void OnSingleClick(Mobile from) + { + if (Validate(Parent as Mobile)) { - } - - public override int BasePhysicalResistance => 1; - public override int BaseFireResistance => 0; - public override int BaseColdResistance => 0; - public override int BasePoisonResistance => 0; - public override int BaseEnergyResistance => 0; - - public override int InitMinHits => 100; - public override int InitMaxHits => 125; - - public override int AosStrReq => 95; - - public override int ArmorBase => 30; - - public override void Deserialize(IGenericReader reader) - { - base.Deserialize(reader); - - var version = reader.ReadInt(); - - if (Weight == 6.0) - { - Weight = 7.0; - } - } - - public override void Serialize(IGenericWriter writer) - { - base.Serialize(writer); - - writer.Write(0); // version - } - - public override bool OnEquip(Mobile from) => Validate(from) && base.OnEquip(from); - - public override void OnSingleClick(Mobile from) - { - if (Validate(Parent as Mobile)) - { - base.OnSingleClick(from); - } - } - - public virtual bool Validate(Mobile m) - { - if (Core.AOS || m?.Player != true || m.AccessLevel != AccessLevel.Player) - { - return true; - } - - if (m.Guild is not Guild g || g.Type != GuildType.Order) - { - m.FixedEffect(0x3728, 10, 13); - Delete(); - - return false; - } - - return true; + base.OnSingleClick(from); } } + + public virtual bool Validate(Mobile m) + { + if (Core.AOS || m is not { Player: true, AccessLevel: AccessLevel.Player }) + { + return true; + } + + if (m.Guild is not Guild { Type: GuildType.Order }) + { + m.FixedEffect(0x3728, 10, 13); + Delete(); + + return false; + } + + return true; + } } diff --git a/Projects/UOContent/Items/Shields/WoodenKiteShield.cs b/Projects/UOContent/Items/Shields/WoodenKiteShield.cs index 16309a8ac..a6fea5c87 100644 --- a/Projects/UOContent/Items/Shields/WoodenKiteShield.cs +++ b/Projects/UOContent/Items/Shields/WoodenKiteShield.cs @@ -1,44 +1,23 @@ -namespace Server.Items +using ModernUO.Serialization; + +namespace Server.Items; + +[SerializationGenerator(0, false)] +public partial class WoodenKiteShield : BaseShield { - public class WoodenKiteShield : BaseShield - { - [Constructible] - public WoodenKiteShield() : base(0x1B79) => Weight = 5.0; + [Constructible] + public WoodenKiteShield() : base(0x1B79) => Weight = 5.0; - public WoodenKiteShield(Serial serial) : base(serial) - { - } + public override int BasePhysicalResistance => 0; + public override int BaseFireResistance => 0; + public override int BaseColdResistance => 0; + public override int BasePoisonResistance => 0; + public override int BaseEnergyResistance => 1; - public override int BasePhysicalResistance => 0; - public override int BaseFireResistance => 0; - public override int BaseColdResistance => 0; - public override int BasePoisonResistance => 0; - public override int BaseEnergyResistance => 1; + public override int InitMinHits => 50; + public override int InitMaxHits => 65; - public override int InitMinHits => 50; - public override int InitMaxHits => 65; + public override int AosStrReq => 20; - public override int AosStrReq => 20; - - public override int ArmorBase => 12; - - public override void Deserialize(IGenericReader reader) - { - base.Deserialize(reader); - - var version = reader.ReadInt(); - - if (Weight == 7.0) - { - Weight = 5.0; - } - } - - public override void Serialize(IGenericWriter writer) - { - base.Serialize(writer); - - writer.Write(0); // version - } - } + public override int ArmorBase => 12; } diff --git a/Projects/UOContent/Items/Shields/WoodenShield.cs b/Projects/UOContent/Items/Shields/WoodenShield.cs index 5dd8ae7d0..e09f7884c 100644 --- a/Projects/UOContent/Items/Shields/WoodenShield.cs +++ b/Projects/UOContent/Items/Shields/WoodenShield.cs @@ -1,39 +1,23 @@ -namespace Server.Items +using ModernUO.Serialization; + +namespace Server.Items; + +[SerializationGenerator(0, false)] +public partial class WoodenShield : BaseShield { - public class WoodenShield : BaseShield - { - [Constructible] - public WoodenShield() : base(0x1B7A) => Weight = 5.0; + [Constructible] + public WoodenShield() : base(0x1B7A) => Weight = 5.0; - public WoodenShield(Serial serial) : base(serial) - { - } + public override int BasePhysicalResistance => 0; + public override int BaseFireResistance => 0; + public override int BaseColdResistance => 0; + public override int BasePoisonResistance => 0; + public override int BaseEnergyResistance => 1; - public override int BasePhysicalResistance => 0; - public override int BaseFireResistance => 0; - public override int BaseColdResistance => 0; - public override int BasePoisonResistance => 0; - public override int BaseEnergyResistance => 1; + public override int InitMinHits => 20; + public override int InitMaxHits => 25; - public override int InitMinHits => 20; - public override int InitMaxHits => 25; + public override int AosStrReq => 20; - public override int AosStrReq => 20; - - public override int ArmorBase => 8; - - public override void Deserialize(IGenericReader reader) - { - base.Deserialize(reader); - - var version = reader.ReadInt(); - } - - public override void Serialize(IGenericWriter writer) - { - base.Serialize(writer); - - writer.Write(0); // version - } - } + public override int ArmorBase => 8; } diff --git a/Projects/UOContent/Migrations/Server.Items.Aegis.v0.json b/Projects/UOContent/Migrations/Server.Items.Aegis.v0.json new file mode 100644 index 000000000..f84d18d0b --- /dev/null +++ b/Projects/UOContent/Migrations/Server.Items.Aegis.v0.json @@ -0,0 +1,4 @@ +{ + "version": 0, + "type": "Server.Items.Aegis" +} \ No newline at end of file diff --git a/Projects/UOContent/Migrations/Server.Items.ArcaneShield.v0.json b/Projects/UOContent/Migrations/Server.Items.ArcaneShield.v0.json new file mode 100644 index 000000000..9c7e6c61e --- /dev/null +++ b/Projects/UOContent/Migrations/Server.Items.ArcaneShield.v0.json @@ -0,0 +1,4 @@ +{ + "version": 0, + "type": "Server.Items.ArcaneShield" +} \ No newline at end of file diff --git a/Projects/UOContent/Migrations/Server.Items.BaseShield.v0.json b/Projects/UOContent/Migrations/Server.Items.BaseShield.v0.json new file mode 100644 index 000000000..d7f9202c2 --- /dev/null +++ b/Projects/UOContent/Migrations/Server.Items.BaseShield.v0.json @@ -0,0 +1,4 @@ +{ + "version": 0, + "type": "Server.Items.BaseShield" +} \ No newline at end of file diff --git a/Projects/UOContent/Migrations/Server.Items.BronzeShield.v0.json b/Projects/UOContent/Migrations/Server.Items.BronzeShield.v0.json new file mode 100644 index 000000000..2ff22732c --- /dev/null +++ b/Projects/UOContent/Migrations/Server.Items.BronzeShield.v0.json @@ -0,0 +1,4 @@ +{ + "version": 0, + "type": "Server.Items.BronzeShield" +} \ No newline at end of file diff --git a/Projects/UOContent/Migrations/Server.Items.Buckler.v0.json b/Projects/UOContent/Migrations/Server.Items.Buckler.v0.json new file mode 100644 index 000000000..c02ca4d97 --- /dev/null +++ b/Projects/UOContent/Migrations/Server.Items.Buckler.v0.json @@ -0,0 +1,4 @@ +{ + "version": 0, + "type": "Server.Items.Buckler" +} \ No newline at end of file diff --git a/Projects/UOContent/Migrations/Server.Items.ChaosShield.v0.json b/Projects/UOContent/Migrations/Server.Items.ChaosShield.v0.json new file mode 100644 index 000000000..77c98343d --- /dev/null +++ b/Projects/UOContent/Migrations/Server.Items.ChaosShield.v0.json @@ -0,0 +1,4 @@ +{ + "version": 0, + "type": "Server.Items.ChaosShield" +} \ No newline at end of file diff --git a/Projects/UOContent/Migrations/Server.Items.HeaterShield.v0.json b/Projects/UOContent/Migrations/Server.Items.HeaterShield.v0.json new file mode 100644 index 000000000..a5036a682 --- /dev/null +++ b/Projects/UOContent/Migrations/Server.Items.HeaterShield.v0.json @@ -0,0 +1,4 @@ +{ + "version": 0, + "type": "Server.Items.HeaterShield" +} \ No newline at end of file diff --git a/Projects/UOContent/Migrations/Server.Items.MetalKiteShield.v0.json b/Projects/UOContent/Migrations/Server.Items.MetalKiteShield.v0.json new file mode 100644 index 000000000..781e8af7c --- /dev/null +++ b/Projects/UOContent/Migrations/Server.Items.MetalKiteShield.v0.json @@ -0,0 +1,4 @@ +{ + "version": 0, + "type": "Server.Items.MetalKiteShield" +} \ No newline at end of file diff --git a/Projects/UOContent/Migrations/Server.Items.MetalShield.v0.json b/Projects/UOContent/Migrations/Server.Items.MetalShield.v0.json new file mode 100644 index 000000000..b66a56b68 --- /dev/null +++ b/Projects/UOContent/Migrations/Server.Items.MetalShield.v0.json @@ -0,0 +1,4 @@ +{ + "version": 0, + "type": "Server.Items.MetalShield" +} \ No newline at end of file diff --git a/Projects/UOContent/Migrations/Server.Items.OrderShield.v0.json b/Projects/UOContent/Migrations/Server.Items.OrderShield.v0.json new file mode 100644 index 000000000..eb7083b72 --- /dev/null +++ b/Projects/UOContent/Migrations/Server.Items.OrderShield.v0.json @@ -0,0 +1,4 @@ +{ + "version": 0, + "type": "Server.Items.OrderShield" +} \ No newline at end of file diff --git a/Projects/UOContent/Migrations/Server.Items.WoodenKiteShield.v0.json b/Projects/UOContent/Migrations/Server.Items.WoodenKiteShield.v0.json new file mode 100644 index 000000000..18d599331 --- /dev/null +++ b/Projects/UOContent/Migrations/Server.Items.WoodenKiteShield.v0.json @@ -0,0 +1,4 @@ +{ + "version": 0, + "type": "Server.Items.WoodenKiteShield" +} \ No newline at end of file diff --git a/Projects/UOContent/Migrations/Server.Items.WoodenShield.v0.json b/Projects/UOContent/Migrations/Server.Items.WoodenShield.v0.json new file mode 100644 index 000000000..07d8e1c3d --- /dev/null +++ b/Projects/UOContent/Migrations/Server.Items.WoodenShield.v0.json @@ -0,0 +1,4 @@ +{ + "version": 0, + "type": "Server.Items.WoodenShield" +} \ No newline at end of file