fix: Codegens shields (#1273)
This commit is contained in:
parent
82637a77cd
commit
b75a8f72ec
25 changed files with 434 additions and 652 deletions
|
|
@ -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]
|
Hue = 0x47E;
|
||||||
public Aegis()
|
ArmorAttributes.SelfRepair = 5;
|
||||||
{
|
Attributes.ReflectPhysical = 15;
|
||||||
Hue = 0x47E;
|
Attributes.DefendChance = 15;
|
||||||
ArmorAttributes.SelfRepair = 5;
|
Attributes.LowerManaCost = 8;
|
||||||
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;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
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;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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]
|
ItemID = 0x1B78;
|
||||||
public ArcaneShield()
|
Hue = 0x556;
|
||||||
{
|
Attributes.NightSight = 1;
|
||||||
ItemID = 0x1B78;
|
Attributes.SpellChanneling = 1;
|
||||||
Hue = 0x556;
|
Attributes.DefendChance = 15;
|
||||||
Attributes.NightSight = 1;
|
Attributes.CastSpeed = 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;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public override int LabelNumber => 1061101; // Arcane Shield
|
||||||
|
public override int ArtifactRarity => 11;
|
||||||
|
|
||||||
|
public override int InitMinHits => 255;
|
||||||
|
public override int InitMaxHits => 255;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,176 +1,114 @@
|
||||||
using System;
|
using System;
|
||||||
|
using ModernUO.Serialization;
|
||||||
using Server.Network;
|
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;
|
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();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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 InitMinHits => 25;
|
||||||
public override int BaseFireResistance => 0;
|
public override int InitMaxHits => 30;
|
||||||
public override int BaseColdResistance => 1;
|
|
||||||
public override int BasePoisonResistance => 0;
|
|
||||||
public override int BaseEnergyResistance => 0;
|
|
||||||
|
|
||||||
public override int InitMinHits => 25;
|
public override int AosStrReq => 35;
|
||||||
public override int InitMaxHits => 30;
|
|
||||||
|
|
||||||
public override int AosStrReq => 35;
|
public override int ArmorBase => 10;
|
||||||
|
|
||||||
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
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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 InitMinHits => 40;
|
||||||
public override int BaseFireResistance => 0;
|
public override int InitMaxHits => 50;
|
||||||
public override int BaseColdResistance => 0;
|
|
||||||
public override int BasePoisonResistance => 1;
|
|
||||||
public override int BaseEnergyResistance => 0;
|
|
||||||
|
|
||||||
public override int InitMinHits => 40;
|
public override int AosStrReq => 20;
|
||||||
public override int InitMaxHits => 50;
|
|
||||||
|
|
||||||
public override int AosStrReq => 20;
|
public override int ArmorBase => 7;
|
||||||
|
|
||||||
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
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,77 +1,60 @@
|
||||||
|
using ModernUO.Serialization;
|
||||||
using Server.Guilds;
|
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]
|
if (!Core.AOS)
|
||||||
public ChaosShield() : base(0x1BC3)
|
|
||||||
{
|
{
|
||||||
if (!Core.AOS)
|
LootType = LootType.Newbied;
|
||||||
{
|
|
||||||
LootType = LootType.Newbied;
|
|
||||||
}
|
|
||||||
|
|
||||||
Weight = 5.0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
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))
|
||||||
{
|
{
|
||||||
}
|
base.OnSingleClick(from);
|
||||||
|
|
||||||
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;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
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;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,23 +1,22 @@
|
||||||
using ModernUO.Serialization;
|
using ModernUO.Serialization;
|
||||||
|
|
||||||
namespace Server.Items
|
namespace Server.Items;
|
||||||
|
|
||||||
|
[Flippable(0x4200, 0x4207)]
|
||||||
|
[SerializationGenerator(0)]
|
||||||
|
public partial class GargishWoodenShield : BaseShield
|
||||||
{
|
{
|
||||||
[Flippable(0x4200, 0x4207)]
|
[Constructible]
|
||||||
[SerializationGenerator(0)]
|
public GargishWoodenShield() : base(0x4200) => Weight = 5.0;
|
||||||
public partial class GargishWoodenShield : BaseShield
|
|
||||||
{
|
|
||||||
[Constructible]
|
|
||||||
public GargishWoodenShield() : base(0x4200) => Weight = 5.0;
|
|
||||||
|
|
||||||
public override int BasePhysicalResistance => 0;
|
public override int BasePhysicalResistance => 0;
|
||||||
public override int BaseFireResistance => 0;
|
public override int BaseFireResistance => 0;
|
||||||
public override int BaseColdResistance => 0;
|
public override int BaseColdResistance => 0;
|
||||||
public override int BasePoisonResistance => 0;
|
public override int BasePoisonResistance => 0;
|
||||||
public override int BaseEnergyResistance => 1;
|
public override int BaseEnergyResistance => 1;
|
||||||
public override int InitMinHits => 20;
|
public override int InitMinHits => 20;
|
||||||
public override int InitMaxHits => 25;
|
public override int InitMaxHits => 25;
|
||||||
public override int AosStrReq => 20;
|
public override int AosStrReq => 20;
|
||||||
|
|
||||||
public override int RequiredRaces => Race.AllowGargoylesOnly;
|
public override int RequiredRaces => Race.AllowGargoylesOnly;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
@ -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 InitMinHits => 50;
|
||||||
public override int BaseFireResistance => 1;
|
public override int InitMaxHits => 65;
|
||||||
public override int BaseColdResistance => 0;
|
|
||||||
public override int BasePoisonResistance => 0;
|
|
||||||
public override int BaseEnergyResistance => 0;
|
|
||||||
|
|
||||||
public override int InitMinHits => 50;
|
public override int AosStrReq => 90;
|
||||||
public override int InitMaxHits => 65;
|
|
||||||
|
|
||||||
public override int AosStrReq => 90;
|
public override int ArmorBase => 23;
|
||||||
|
|
||||||
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
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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]
|
if (Deleted)
|
||||||
public MetalKiteShield() : base(0x1B74) => Weight = 7.0;
|
|
||||||
|
|
||||||
public MetalKiteShield(Serial serial) : base(serial)
|
|
||||||
{
|
{
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
public override int BasePhysicalResistance => 0;
|
Hue = sender.DyedHue;
|
||||||
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;
|
return true;
|
||||||
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
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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 InitMinHits => 50;
|
||||||
public override int BaseFireResistance => 1;
|
public override int InitMaxHits => 65;
|
||||||
public override int BaseColdResistance => 0;
|
|
||||||
public override int BasePoisonResistance => 0;
|
|
||||||
public override int BaseEnergyResistance => 0;
|
|
||||||
|
|
||||||
public override int InitMinHits => 50;
|
public override int AosStrReq => 45;
|
||||||
public override int InitMaxHits => 65;
|
|
||||||
|
|
||||||
public override int AosStrReq => 45;
|
public override int ArmorBase => 11;
|
||||||
|
|
||||||
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
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,82 +1,60 @@
|
||||||
|
using ModernUO.Serialization;
|
||||||
using Server.Guilds;
|
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]
|
if (!Core.AOS)
|
||||||
public OrderShield() : base(0x1BC4)
|
|
||||||
{
|
{
|
||||||
if (!Core.AOS)
|
LootType = LootType.Newbied;
|
||||||
{
|
|
||||||
LootType = LootType.Newbied;
|
|
||||||
}
|
|
||||||
|
|
||||||
Weight = 7.0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
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))
|
||||||
{
|
{
|
||||||
}
|
base.OnSingleClick(from);
|
||||||
|
|
||||||
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;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
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;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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 InitMinHits => 50;
|
||||||
public override int BaseFireResistance => 0;
|
public override int InitMaxHits => 65;
|
||||||
public override int BaseColdResistance => 0;
|
|
||||||
public override int BasePoisonResistance => 0;
|
|
||||||
public override int BaseEnergyResistance => 1;
|
|
||||||
|
|
||||||
public override int InitMinHits => 50;
|
public override int AosStrReq => 20;
|
||||||
public override int InitMaxHits => 65;
|
|
||||||
|
|
||||||
public override int AosStrReq => 20;
|
public override int ArmorBase => 12;
|
||||||
|
|
||||||
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
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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 InitMinHits => 20;
|
||||||
public override int BaseFireResistance => 0;
|
public override int InitMaxHits => 25;
|
||||||
public override int BaseColdResistance => 0;
|
|
||||||
public override int BasePoisonResistance => 0;
|
|
||||||
public override int BaseEnergyResistance => 1;
|
|
||||||
|
|
||||||
public override int InitMinHits => 20;
|
public override int AosStrReq => 20;
|
||||||
public override int InitMaxHits => 25;
|
|
||||||
|
|
||||||
public override int AosStrReq => 20;
|
public override int ArmorBase => 8;
|
||||||
|
|
||||||
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
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
4
Projects/UOContent/Migrations/Server.Items.Aegis.v0.json
Normal file
4
Projects/UOContent/Migrations/Server.Items.Aegis.v0.json
Normal file
|
|
@ -0,0 +1,4 @@
|
||||||
|
{
|
||||||
|
"version": 0,
|
||||||
|
"type": "Server.Items.Aegis"
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,4 @@
|
||||||
|
{
|
||||||
|
"version": 0,
|
||||||
|
"type": "Server.Items.ArcaneShield"
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,4 @@
|
||||||
|
{
|
||||||
|
"version": 0,
|
||||||
|
"type": "Server.Items.BaseShield"
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,4 @@
|
||||||
|
{
|
||||||
|
"version": 0,
|
||||||
|
"type": "Server.Items.BronzeShield"
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,4 @@
|
||||||
|
{
|
||||||
|
"version": 0,
|
||||||
|
"type": "Server.Items.Buckler"
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,4 @@
|
||||||
|
{
|
||||||
|
"version": 0,
|
||||||
|
"type": "Server.Items.ChaosShield"
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,4 @@
|
||||||
|
{
|
||||||
|
"version": 0,
|
||||||
|
"type": "Server.Items.HeaterShield"
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,4 @@
|
||||||
|
{
|
||||||
|
"version": 0,
|
||||||
|
"type": "Server.Items.MetalKiteShield"
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,4 @@
|
||||||
|
{
|
||||||
|
"version": 0,
|
||||||
|
"type": "Server.Items.MetalShield"
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,4 @@
|
||||||
|
{
|
||||||
|
"version": 0,
|
||||||
|
"type": "Server.Items.OrderShield"
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,4 @@
|
||||||
|
{
|
||||||
|
"version": 0,
|
||||||
|
"type": "Server.Items.WoodenKiteShield"
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,4 @@
|
||||||
|
{
|
||||||
|
"version": 0,
|
||||||
|
"type": "Server.Items.WoodenShield"
|
||||||
|
}
|
||||||
Loading…
Add table
Add a link
Reference in a new issue