fix(codegen): Codegens clothing (#714)
This commit is contained in:
parent
13931ddf1d
commit
ca3faec01d
105 changed files with 1175 additions and 2477 deletions
|
|
@ -23,7 +23,7 @@ namespace Server
|
|||
/// -or-
|
||||
/// [SerializableFieldAttr(typeof(CommandPropertyAttribute), AccessLevel.GameMaster)]
|
||||
/// </summary>
|
||||
[AttributeUsage(AttributeTargets.Field)]
|
||||
[AttributeUsage(AttributeTargets.Field, AllowMultiple = true)]
|
||||
public sealed class SerializableFieldAttrAttribute : Attribute
|
||||
{
|
||||
public string AttributeString { get; }
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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<EquipInfoAttribute> 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;
|
||||
}
|
||||
}
|
||||
|
||||
private static bool GetSaveFlag(SaveFlag flags, SaveFlag toGet) => (flags & toGet) != 0;
|
||||
|
||||
public override void Serialize(IGenericWriter writer)
|
||||
{
|
||||
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))
|
||||
{
|
||||
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();
|
||||
_resource = (CraftResource)reader.ReadEncodedInt();
|
||||
}
|
||||
else
|
||||
{
|
||||
m_Resource = DefaultResource;
|
||||
_resource = DefaultResource;
|
||||
}
|
||||
|
||||
Attributes = new AosAttributes(this);
|
||||
|
||||
if (GetSaveFlag(flags, SaveFlag.Attributes))
|
||||
if (GetSaveFlag(flags, OldSaveFlag.Attributes))
|
||||
{
|
||||
Attributes.Deserialize(reader);
|
||||
}
|
||||
|
||||
ClothingAttributes = new AosArmorAttributes(this);
|
||||
|
||||
if (GetSaveFlag(flags, SaveFlag.ClothingAttributes))
|
||||
if (GetSaveFlag(flags, OldSaveFlag.ClothingAttributes))
|
||||
{
|
||||
ClothingAttributes.Deserialize(reader);
|
||||
}
|
||||
|
||||
SkillBonuses = new AosSkillBonuses(this);
|
||||
|
||||
if (GetSaveFlag(flags, SaveFlag.SkillBonuses))
|
||||
if (GetSaveFlag(flags, OldSaveFlag.SkillBonuses))
|
||||
{
|
||||
SkillBonuses.Deserialize(reader);
|
||||
}
|
||||
|
||||
Resistances = new AosElementAttributes(this);
|
||||
|
||||
if (GetSaveFlag(flags, SaveFlag.Resistances))
|
||||
if (GetSaveFlag(flags, OldSaveFlag.Resistances))
|
||||
{
|
||||
Resistances.Deserialize(reader);
|
||||
}
|
||||
|
||||
if (GetSaveFlag(flags, SaveFlag.MaxHitPoints))
|
||||
if (GetSaveFlag(flags, OldSaveFlag.MaxHitPoints))
|
||||
{
|
||||
m_MaxHitPoints = reader.ReadEncodedInt();
|
||||
_maxHitPoints = reader.ReadEncodedInt();
|
||||
}
|
||||
|
||||
if (GetSaveFlag(flags, SaveFlag.HitPoints))
|
||||
if (GetSaveFlag(flags, OldSaveFlag.HitPoints))
|
||||
{
|
||||
m_HitPoints = reader.ReadEncodedInt();
|
||||
_hitPoints = reader.ReadEncodedInt();
|
||||
}
|
||||
|
||||
if (GetSaveFlag(flags, SaveFlag.Crafter))
|
||||
if (GetSaveFlag(flags, OldSaveFlag.Crafter))
|
||||
{
|
||||
m_Crafter = reader.ReadEntity<Mobile>();
|
||||
_crafter = reader.ReadEntity<Mobile>();
|
||||
}
|
||||
|
||||
if (GetSaveFlag(flags, SaveFlag.Quality))
|
||||
if (GetSaveFlag(flags, OldSaveFlag.Quality))
|
||||
{
|
||||
m_Quality = (ClothingQuality)reader.ReadEncodedInt();
|
||||
_quality = (ClothingQuality)reader.ReadEncodedInt();
|
||||
}
|
||||
else
|
||||
{
|
||||
m_Quality = ClothingQuality.Regular;
|
||||
_quality = ClothingQuality.Regular;
|
||||
}
|
||||
|
||||
if (GetSaveFlag(flags, SaveFlag.StrReq))
|
||||
if (GetSaveFlag(flags, OldSaveFlag.StrReq))
|
||||
{
|
||||
m_StrReq = reader.ReadEncodedInt();
|
||||
_strReq = reader.ReadEncodedInt();
|
||||
}
|
||||
else
|
||||
{
|
||||
m_StrReq = -1;
|
||||
_strReq = -1;
|
||||
}
|
||||
|
||||
if (GetSaveFlag(flags, SaveFlag.PlayerConstructed))
|
||||
PlayerConstructed = GetSaveFlag(flags, OldSaveFlag.PlayerConstructed);
|
||||
}
|
||||
|
||||
[AfterDeserialization]
|
||||
private void AfterDeserialization()
|
||||
{
|
||||
PlayerConstructed = true;
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
case 4:
|
||||
if (_maxHitPoints == 0 && _hitPoints == 0)
|
||||
{
|
||||
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<Mobile>();
|
||||
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,
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
|
||||
writer.Write(1); // version
|
||||
|
||||
if (IsArcane)
|
||||
{
|
||||
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:
|
||||
private void Deserialize(IGenericReader reader, int version)
|
||||
{
|
||||
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();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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<EquipInfoAttribute> 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();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
|
||||
writer.Write(2); // version
|
||||
|
||||
writer.Write(m_DecayTimer != null);
|
||||
|
||||
if (m_DecayTimer != null)
|
||||
{
|
||||
writer.WriteDeltaTime(m_DecayTime);
|
||||
}
|
||||
}
|
||||
|
||||
public override void Deserialize(IGenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
|
||||
var version = reader.ReadInt();
|
||||
|
||||
switch (version)
|
||||
{
|
||||
case 2:
|
||||
private void Deserialize(IGenericReader reader, int version)
|
||||
{
|
||||
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)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
|
||||
writer.Write(1); // version
|
||||
|
||||
if (IsArcane)
|
||||
{
|
||||
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:
|
||||
private void Deserialize(IGenericReader reader, int version)
|
||||
{
|
||||
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();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
|
||||
writer.Write(1); // version
|
||||
|
||||
if (IsArcane)
|
||||
{
|
||||
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:
|
||||
private void Deserialize(IGenericReader reader, int version)
|
||||
{
|
||||
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();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -974,7 +974,6 @@ namespace Server.Items
|
|||
if (map != null && map != Map.Internal)
|
||||
{
|
||||
robe.MoveToWorld(from.Location, map);
|
||||
robe.BeginDecay();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -0,0 +1,4 @@
|
|||
{
|
||||
"version": 0,
|
||||
"type": "Server.Items.Bandana"
|
||||
}
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
{
|
||||
"version": 0,
|
||||
"type": "Server.Items.BaseCloak"
|
||||
}
|
||||
|
|
@ -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": [
|
||||
""
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
14
Projects/UOContent/Migrations/Server.Items.BaseHat.v0.json
Normal file
14
Projects/UOContent/Migrations/Server.Items.BaseHat.v0.json
Normal file
|
|
@ -0,0 +1,14 @@
|
|||
{
|
||||
"version": 0,
|
||||
"type": "Server.Items.BaseHat",
|
||||
"properties": [
|
||||
{
|
||||
"name": "IsShipwreckedItem",
|
||||
"type": "bool",
|
||||
"rule": "PrimitiveTypeMigrationRule",
|
||||
"ruleArguments": [
|
||||
""
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
{
|
||||
"version": 0,
|
||||
"type": "Server.Items.BaseMiddleTorso"
|
||||
}
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
{
|
||||
"version": 0,
|
||||
"type": "Server.Items.BaseOuterLegs"
|
||||
}
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
{
|
||||
"version": 0,
|
||||
"type": "Server.Items.BaseOuterTorso"
|
||||
}
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
{
|
||||
"version": 0,
|
||||
"type": "Server.Items.BasePants"
|
||||
}
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
{
|
||||
"version": 0,
|
||||
"type": "Server.Items.BaseShirt"
|
||||
}
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
{
|
||||
"version": 0,
|
||||
"type": "Server.Items.BaseShoes"
|
||||
}
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
{
|
||||
"version": 0,
|
||||
"type": "Server.Items.BaseWaist"
|
||||
}
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
{
|
||||
"version": 0,
|
||||
"type": "Server.Items.BearMask"
|
||||
}
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
{
|
||||
"version": 0,
|
||||
"type": "Server.Items.BodySash"
|
||||
}
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
{
|
||||
"version": 0,
|
||||
"type": "Server.Items.Bonnet"
|
||||
}
|
||||
4
Projects/UOContent/Migrations/Server.Items.Boots.v0.json
Normal file
4
Projects/UOContent/Migrations/Server.Items.Boots.v0.json
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
{
|
||||
"version": 0,
|
||||
"type": "Server.Items.Boots"
|
||||
}
|
||||
4
Projects/UOContent/Migrations/Server.Items.Cap.v0.json
Normal file
4
Projects/UOContent/Migrations/Server.Items.Cap.v0.json
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
{
|
||||
"version": 0,
|
||||
"type": "Server.Items.Cap"
|
||||
}
|
||||
22
Projects/UOContent/Migrations/Server.Items.Cloak.v2.json
Normal file
22
Projects/UOContent/Migrations/Server.Items.Cloak.v2.json
Normal file
|
|
@ -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"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
{
|
||||
"version": 0,
|
||||
"type": "Server.Items.ClothNinjaHood"
|
||||
}
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
{
|
||||
"version": 0,
|
||||
"type": "Server.Items.ClothNinjaJacket"
|
||||
}
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
{
|
||||
"version": 0,
|
||||
"type": "Server.Items.CrimsonCincture"
|
||||
}
|
||||
14
Projects/UOContent/Migrations/Server.Items.DeathRobe.v3.json
Normal file
14
Projects/UOContent/Migrations/Server.Items.DeathRobe.v3.json
Normal file
|
|
@ -0,0 +1,14 @@
|
|||
{
|
||||
"version": 3,
|
||||
"type": "Server.Items.DeathRobe",
|
||||
"properties": [
|
||||
{
|
||||
"name": "DecayTimer",
|
||||
"type": "Server.Timer",
|
||||
"rule": "TimerMigrationRule",
|
||||
"ruleArguments": [
|
||||
"@TimerDrift"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
{
|
||||
"version": 0,
|
||||
"type": "Server.Items.DeerMask"
|
||||
}
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
{
|
||||
"version": 0,
|
||||
"type": "Server.Items.DivineCountenance"
|
||||
}
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
{
|
||||
"version": 0,
|
||||
"type": "Server.Items.Doublet"
|
||||
}
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
{
|
||||
"version": 0,
|
||||
"type": "Server.Items.ElvenBoots"
|
||||
}
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
{
|
||||
"version": 0,
|
||||
"type": "Server.Items.ElvenDarkShirt"
|
||||
}
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
{
|
||||
"version": 0,
|
||||
"type": "Server.Items.ElvenPants"
|
||||
}
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
{
|
||||
"version": 0,
|
||||
"type": "Server.Items.ElvenShirt"
|
||||
}
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
{
|
||||
"version": 0,
|
||||
"type": "Server.Items.FancyDress"
|
||||
}
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
{
|
||||
"version": 0,
|
||||
"type": "Server.Items.FancyShirt"
|
||||
}
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
{
|
||||
"version": 0,
|
||||
"type": "Server.Items.FeatheredHat"
|
||||
}
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
{
|
||||
"version": 0,
|
||||
"type": "Server.Items.FemaleElvenRobe"
|
||||
}
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
{
|
||||
"version": 0,
|
||||
"type": "Server.Items.FemaleKimono"
|
||||
}
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
{
|
||||
"version": 0,
|
||||
"type": "Server.Items.FloppyHat"
|
||||
}
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
{
|
||||
"version": 0,
|
||||
"type": "Server.Items.FlowerGarland"
|
||||
}
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
{
|
||||
"version": 0,
|
||||
"type": "Server.Items.FormalShirt"
|
||||
}
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
{
|
||||
"version": 0,
|
||||
"type": "Server.Items.FullApron"
|
||||
}
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
{
|
||||
"version": 0,
|
||||
"type": "Server.Items.FurBoots"
|
||||
}
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
{
|
||||
"version": 0,
|
||||
"type": "Server.Items.FurCape"
|
||||
}
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
{
|
||||
"version": 0,
|
||||
"type": "Server.Items.FurSarong"
|
||||
}
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
{
|
||||
"version": 0,
|
||||
"type": "Server.Items.GildedDress"
|
||||
}
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
{
|
||||
"version": 0,
|
||||
"type": "Server.Items.Hakama"
|
||||
}
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
{
|
||||
"version": 0,
|
||||
"type": "Server.Items.HakamaShita"
|
||||
}
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
{
|
||||
"version": 0,
|
||||
"type": "Server.Items.HalfApron"
|
||||
}
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
{
|
||||
"version": 0,
|
||||
"type": "Server.Items.HatOfTheMagi"
|
||||
}
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
{
|
||||
"version": 0,
|
||||
"type": "Server.Items.HornedTribalMask"
|
||||
}
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
{
|
||||
"version": 0,
|
||||
"type": "Server.Items.HuntersHeaddress"
|
||||
}
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
{
|
||||
"version": 0,
|
||||
"type": "Server.Items.JesterHat"
|
||||
}
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
{
|
||||
"version": 0,
|
||||
"type": "Server.Items.JesterSuit"
|
||||
}
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
{
|
||||
"version": 0,
|
||||
"type": "Server.Items.JinBaori"
|
||||
}
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
{
|
||||
"version": 0,
|
||||
"type": "Server.Items.Kamishimo"
|
||||
}
|
||||
4
Projects/UOContent/Migrations/Server.Items.Kasa.v0.json
Normal file
4
Projects/UOContent/Migrations/Server.Items.Kasa.v0.json
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
{
|
||||
"version": 0,
|
||||
"type": "Server.Items.Kasa"
|
||||
}
|
||||
4
Projects/UOContent/Migrations/Server.Items.Kilt.v0.json
Normal file
4
Projects/UOContent/Migrations/Server.Items.Kilt.v0.json
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
{
|
||||
"version": 0,
|
||||
"type": "Server.Items.Kilt"
|
||||
}
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
{
|
||||
"version": 0,
|
||||
"type": "Server.Items.LongPants"
|
||||
}
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
{
|
||||
"version": 0,
|
||||
"type": "Server.Items.MagicWizardsHat"
|
||||
}
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
{
|
||||
"version": 0,
|
||||
"type": "Server.Items.MaleElvenRobe"
|
||||
}
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
{
|
||||
"version": 0,
|
||||
"type": "Server.Items.MaleKimono"
|
||||
}
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
{
|
||||
"version": 0,
|
||||
"type": "Server.Items.MonkRobe"
|
||||
}
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
{
|
||||
"version": 0,
|
||||
"type": "Server.Items.NinjaTabi"
|
||||
}
|
||||
4
Projects/UOContent/Migrations/Server.Items.Obi.v0.json
Normal file
4
Projects/UOContent/Migrations/Server.Items.Obi.v0.json
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
{
|
||||
"version": 0,
|
||||
"type": "Server.Items.Obi"
|
||||
}
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
{
|
||||
"version": 0,
|
||||
"type": "Server.Items.OrcishKinMask"
|
||||
}
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
{
|
||||
"version": 0,
|
||||
"type": "Server.Items.PlainDress"
|
||||
}
|
||||
|
|
@ -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": [
|
||||
""
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
@ -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": [
|
||||
""
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
@ -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": [
|
||||
""
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
22
Projects/UOContent/Migrations/Server.Items.Robe.v2.json
Normal file
22
Projects/UOContent/Migrations/Server.Items.Robe.v2.json
Normal file
|
|
@ -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"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
{
|
||||
"version": 0,
|
||||
"type": "Server.Items.SamuraiTabi"
|
||||
}
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
{
|
||||
"version": 0,
|
||||
"type": "Server.Items.Sandals"
|
||||
}
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
{
|
||||
"version": 0,
|
||||
"type": "Server.Items.SavageMask"
|
||||
}
|
||||
4
Projects/UOContent/Migrations/Server.Items.Shirt.v0.json
Normal file
4
Projects/UOContent/Migrations/Server.Items.Shirt.v0.json
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
{
|
||||
"version": 0,
|
||||
"type": "Server.Items.Shirt"
|
||||
}
|
||||
4
Projects/UOContent/Migrations/Server.Items.Shoes.v0.json
Normal file
4
Projects/UOContent/Migrations/Server.Items.Shoes.v0.json
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
{
|
||||
"version": 0,
|
||||
"type": "Server.Items.Shoes"
|
||||
}
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
{
|
||||
"version": 0,
|
||||
"type": "Server.Items.ShortPants"
|
||||
}
|
||||
4
Projects/UOContent/Migrations/Server.Items.Skirt.v0.json
Normal file
4
Projects/UOContent/Migrations/Server.Items.Skirt.v0.json
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
{
|
||||
"version": 0,
|
||||
"type": "Server.Items.Skirt"
|
||||
}
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
{
|
||||
"version": 0,
|
||||
"type": "Server.Items.SkullCap"
|
||||
}
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
{
|
||||
"version": 0,
|
||||
"type": "Server.Items.SpiritOfTheTotem"
|
||||
}
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
{
|
||||
"version": 0,
|
||||
"type": "Server.Items.StrawHat"
|
||||
}
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
{
|
||||
"version": 0,
|
||||
"type": "Server.Items.Surcoat"
|
||||
}
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
{
|
||||
"version": 0,
|
||||
"type": "Server.Items.TallStrawHat"
|
||||
}
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
{
|
||||
"version": 0,
|
||||
"type": "Server.Items.TattsukeHakama"
|
||||
}
|
||||
|
|
@ -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"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
{
|
||||
"version": 0,
|
||||
"type": "Server.Items.TribalMask"
|
||||
}
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
{
|
||||
"version": 0,
|
||||
"type": "Server.Items.TricorneHat"
|
||||
}
|
||||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue