fix: Converts BaseArmor and BaseClothing to use string crafter fields (#928)
This commit is contained in:
parent
651cffa872
commit
77181678da
9 changed files with 610 additions and 259 deletions
165
Projects/UOContent/Items/Armor/BaseArmor.Migrations.cs
Normal file
165
Projects/UOContent/Items/Armor/BaseArmor.Migrations.cs
Normal file
|
|
@ -0,0 +1,165 @@
|
|||
using AMA = Server.Items.ArmorMeditationAllowance;
|
||||
|
||||
namespace Server.Items;
|
||||
|
||||
public partial class BaseArmor
|
||||
{
|
||||
private void MigrateFrom(V8Content content)
|
||||
{
|
||||
_attributes = content.Attributes ?? AttributesDefaultValue();
|
||||
_armorAttributes = content.ArmorAttributes ?? ArmorAttributesDefaultValue();
|
||||
_physicalBonus = content.PhysicalBonus ?? 0;
|
||||
_fireBonus = content.FireBonus ?? 0;
|
||||
_coldBonus = content.ColdBonus ?? 0;
|
||||
_poisonBonus = content.PoisonBonus ?? 0;
|
||||
_energyBonus = content.EnergyBonus ?? 0;
|
||||
_identified = content.Identified;
|
||||
_maxHitPoints = content.MaxHitPoints ?? 0;
|
||||
_hitPoints = content.HitPoints ?? 0;
|
||||
_crafter = content.Crafter?.RawName; // Convert from Mobile -> String via RawName
|
||||
_quality = content.Quality ?? ArmorQuality.Regular;
|
||||
_durability = content.Durability ?? ArmorDurabilityLevel.Regular;
|
||||
_rawResource = content.RawResource ?? DefaultResource;
|
||||
_armorBase = content.BaseArmorRating ?? -1;
|
||||
_strBonus = content.StrBonus ?? -1;
|
||||
_dexBonus = content.DexBonus ?? -1;
|
||||
_intBonus = content.IntBonus ?? -1;
|
||||
_strReq = content.StrRequirement ?? -1;
|
||||
_dexReq = content.DexRequirement ?? -1;
|
||||
_intReq = content.IntRequirement ?? -1;
|
||||
_meditate = content.MeditationAllowance ?? (AMA)(-1);
|
||||
_skillBonuses = content.SkillBonuses ?? SkillBonusesDefaultValue();
|
||||
_playerConstructed = content.PlayerConstructed;
|
||||
}
|
||||
|
||||
// Version 7 (pre-codegen)
|
||||
private void Deserialize(IGenericReader reader, int version)
|
||||
{
|
||||
var flags = (OldSaveFlag)reader.ReadEncodedInt();
|
||||
|
||||
Attributes = new AosAttributes(this);
|
||||
|
||||
if (GetSaveFlag(flags, OldSaveFlag.Attributes))
|
||||
{
|
||||
Attributes.Deserialize(reader);
|
||||
}
|
||||
|
||||
ArmorAttributes = new AosArmorAttributes(this);
|
||||
|
||||
if (GetSaveFlag(flags, OldSaveFlag.ArmorAttributes))
|
||||
{
|
||||
ArmorAttributes.Deserialize(reader);
|
||||
}
|
||||
|
||||
if (GetSaveFlag(flags, OldSaveFlag.PhysicalBonus))
|
||||
{
|
||||
_physicalBonus = reader.ReadEncodedInt();
|
||||
}
|
||||
|
||||
if (GetSaveFlag(flags, OldSaveFlag.FireBonus))
|
||||
{
|
||||
_fireBonus = reader.ReadEncodedInt();
|
||||
}
|
||||
|
||||
if (GetSaveFlag(flags, OldSaveFlag.ColdBonus))
|
||||
{
|
||||
_coldBonus = reader.ReadEncodedInt();
|
||||
}
|
||||
|
||||
if (GetSaveFlag(flags, OldSaveFlag.PoisonBonus))
|
||||
{
|
||||
_poisonBonus = reader.ReadEncodedInt();
|
||||
}
|
||||
|
||||
if (GetSaveFlag(flags, OldSaveFlag.EnergyBonus))
|
||||
{
|
||||
_energyBonus = reader.ReadEncodedInt();
|
||||
}
|
||||
|
||||
_identified = GetSaveFlag(flags, OldSaveFlag.Identified);
|
||||
|
||||
if (GetSaveFlag(flags, OldSaveFlag.MaxHitPoints))
|
||||
{
|
||||
_maxHitPoints = reader.ReadEncodedInt();
|
||||
}
|
||||
|
||||
if (GetSaveFlag(flags, OldSaveFlag.HitPoints))
|
||||
{
|
||||
_hitPoints = reader.ReadEncodedInt();
|
||||
}
|
||||
|
||||
if (GetSaveFlag(flags, OldSaveFlag.Crafter))
|
||||
{
|
||||
_crafter = reader.ReadEntity<Mobile>()?.RawName;
|
||||
}
|
||||
|
||||
if (GetSaveFlag(flags, OldSaveFlag.Quality))
|
||||
{
|
||||
_quality = (ArmorQuality)reader.ReadEncodedInt();
|
||||
}
|
||||
|
||||
if (GetSaveFlag(flags, OldSaveFlag.Durability))
|
||||
{
|
||||
_durability = (ArmorDurabilityLevel)reader.ReadEncodedInt();
|
||||
}
|
||||
|
||||
if (GetSaveFlag(flags, OldSaveFlag.Protection))
|
||||
{
|
||||
_protection = (ArmorProtectionLevel)reader.ReadEncodedInt();
|
||||
}
|
||||
|
||||
if (GetSaveFlag(flags, OldSaveFlag.Resource))
|
||||
{
|
||||
_rawResource = (CraftResource)reader.ReadEncodedInt();
|
||||
}
|
||||
|
||||
if (GetSaveFlag(flags, OldSaveFlag.BaseArmor))
|
||||
{
|
||||
_armorBase = reader.ReadEncodedInt();
|
||||
}
|
||||
|
||||
if (GetSaveFlag(flags, OldSaveFlag.StrBonus))
|
||||
{
|
||||
_strBonus = reader.ReadEncodedInt();
|
||||
}
|
||||
|
||||
if (GetSaveFlag(flags, OldSaveFlag.DexBonus))
|
||||
{
|
||||
_dexBonus = reader.ReadEncodedInt();
|
||||
}
|
||||
|
||||
if (GetSaveFlag(flags, OldSaveFlag.IntBonus))
|
||||
{
|
||||
_intBonus = reader.ReadEncodedInt();
|
||||
}
|
||||
|
||||
if (GetSaveFlag(flags, OldSaveFlag.StrReq))
|
||||
{
|
||||
_strReq = reader.ReadEncodedInt();
|
||||
}
|
||||
|
||||
if (GetSaveFlag(flags, OldSaveFlag.DexReq))
|
||||
{
|
||||
_dexReq = reader.ReadEncodedInt();
|
||||
}
|
||||
|
||||
if (GetSaveFlag(flags, OldSaveFlag.IntReq))
|
||||
{
|
||||
_intReq = reader.ReadEncodedInt();
|
||||
}
|
||||
|
||||
if (GetSaveFlag(flags, OldSaveFlag.MedAllowance))
|
||||
{
|
||||
_meditate = (AMA)reader.ReadEncodedInt();
|
||||
}
|
||||
|
||||
SkillBonuses = new AosSkillBonuses(this);
|
||||
|
||||
if (GetSaveFlag(flags, OldSaveFlag.SkillBonuses))
|
||||
{
|
||||
SkillBonuses.Deserialize(reader);
|
||||
}
|
||||
|
||||
PlayerConstructed = GetSaveFlag(flags, OldSaveFlag.PlayerConstructed);
|
||||
}
|
||||
}
|
||||
|
|
@ -10,7 +10,7 @@ using AMT = Server.Items.ArmorMaterialType;
|
|||
|
||||
namespace Server.Items
|
||||
{
|
||||
[Serializable(8, false)]
|
||||
[Serializable(9, false)]
|
||||
public abstract partial class BaseArmor : Item, IScissorable, IFactionItem, ICraftable, IWearableDurability
|
||||
{
|
||||
[SerializableField(0, setter: "private")]
|
||||
|
|
@ -99,7 +99,7 @@ namespace Server.Items
|
|||
[InvalidateProperties]
|
||||
[SerializableField(10)]
|
||||
[SerializableFieldAttr("[CommandProperty(AccessLevel.GameMaster)]")]
|
||||
private Mobile _crafter;
|
||||
private string _crafter;
|
||||
|
||||
[SerializableFieldSaveFlag(10)]
|
||||
private bool ShouldSerializeCrafter() => _crafter != null;
|
||||
|
|
@ -572,7 +572,7 @@ namespace Server.Items
|
|||
|
||||
if (makersMark)
|
||||
{
|
||||
Crafter = from;
|
||||
Crafter = from.RawName;
|
||||
}
|
||||
|
||||
var resourceType = typeRes ?? craftItem.Resources[0].ItemType;
|
||||
|
|
@ -1076,143 +1076,6 @@ namespace Server.Items
|
|||
m?.CheckStatTimers();
|
||||
}
|
||||
|
||||
private void Deserialize(IGenericReader reader, int version)
|
||||
{
|
||||
var flags = (OldSaveFlag)reader.ReadEncodedInt();
|
||||
|
||||
Attributes = new AosAttributes(this);
|
||||
|
||||
if (GetSaveFlag(flags, OldSaveFlag.Attributes))
|
||||
{
|
||||
Attributes.Deserialize(reader);
|
||||
}
|
||||
|
||||
ArmorAttributes = new AosArmorAttributes(this);
|
||||
|
||||
if (GetSaveFlag(flags, OldSaveFlag.ArmorAttributes))
|
||||
{
|
||||
ArmorAttributes.Deserialize(reader);
|
||||
}
|
||||
|
||||
if (GetSaveFlag(flags, OldSaveFlag.PhysicalBonus))
|
||||
{
|
||||
_physicalBonus = reader.ReadEncodedInt();
|
||||
}
|
||||
|
||||
if (GetSaveFlag(flags, OldSaveFlag.FireBonus))
|
||||
{
|
||||
_fireBonus = reader.ReadEncodedInt();
|
||||
}
|
||||
|
||||
if (GetSaveFlag(flags, OldSaveFlag.ColdBonus))
|
||||
{
|
||||
_coldBonus = reader.ReadEncodedInt();
|
||||
}
|
||||
|
||||
if (GetSaveFlag(flags, OldSaveFlag.PoisonBonus))
|
||||
{
|
||||
_poisonBonus = reader.ReadEncodedInt();
|
||||
}
|
||||
|
||||
if (GetSaveFlag(flags, OldSaveFlag.EnergyBonus))
|
||||
{
|
||||
_energyBonus = reader.ReadEncodedInt();
|
||||
}
|
||||
|
||||
_identified = GetSaveFlag(flags, OldSaveFlag.Identified);
|
||||
|
||||
if (GetSaveFlag(flags, OldSaveFlag.MaxHitPoints))
|
||||
{
|
||||
_maxHitPoints = reader.ReadEncodedInt();
|
||||
}
|
||||
|
||||
if (GetSaveFlag(flags, OldSaveFlag.HitPoints))
|
||||
{
|
||||
_hitPoints = reader.ReadEncodedInt();
|
||||
}
|
||||
|
||||
if (GetSaveFlag(flags, OldSaveFlag.Crafter))
|
||||
{
|
||||
_crafter = reader.ReadEntity<Mobile>();
|
||||
}
|
||||
|
||||
if (GetSaveFlag(flags, OldSaveFlag.Quality))
|
||||
{
|
||||
_quality = (ArmorQuality)reader.ReadEncodedInt();
|
||||
}
|
||||
else
|
||||
{
|
||||
_quality = ArmorQuality.Regular;
|
||||
}
|
||||
|
||||
if (GetSaveFlag(flags, OldSaveFlag.Durability))
|
||||
{
|
||||
_durability = (ArmorDurabilityLevel)reader.ReadEncodedInt();
|
||||
}
|
||||
|
||||
if (GetSaveFlag(flags, OldSaveFlag.Protection))
|
||||
{
|
||||
_protection = (ArmorProtectionLevel)reader.ReadEncodedInt();
|
||||
}
|
||||
|
||||
if (GetSaveFlag(flags, OldSaveFlag.Resource))
|
||||
{
|
||||
_rawResource = (CraftResource)reader.ReadEncodedInt();
|
||||
}
|
||||
|
||||
if (GetSaveFlag(flags, OldSaveFlag.BaseArmor))
|
||||
{
|
||||
_armorBase = reader.ReadEncodedInt();
|
||||
}
|
||||
|
||||
if (GetSaveFlag(flags, OldSaveFlag.StrBonus))
|
||||
{
|
||||
_strBonus = reader.ReadEncodedInt();
|
||||
}
|
||||
|
||||
if (GetSaveFlag(flags, OldSaveFlag.DexBonus))
|
||||
{
|
||||
_dexBonus = reader.ReadEncodedInt();
|
||||
}
|
||||
|
||||
if (GetSaveFlag(flags, OldSaveFlag.IntBonus))
|
||||
{
|
||||
_intBonus = reader.ReadEncodedInt();
|
||||
}
|
||||
|
||||
if (GetSaveFlag(flags, OldSaveFlag.StrReq))
|
||||
{
|
||||
_strReq = reader.ReadEncodedInt();
|
||||
}
|
||||
|
||||
if (GetSaveFlag(flags, OldSaveFlag.DexReq))
|
||||
{
|
||||
_dexReq = reader.ReadEncodedInt();
|
||||
}
|
||||
|
||||
if (GetSaveFlag(flags, OldSaveFlag.IntReq))
|
||||
{
|
||||
_intReq = reader.ReadEncodedInt();
|
||||
}
|
||||
|
||||
if (GetSaveFlag(flags, OldSaveFlag.MedAllowance))
|
||||
{
|
||||
_meditate = (AMA)reader.ReadEncodedInt();
|
||||
}
|
||||
|
||||
SkillBonuses = new AosSkillBonuses(this);
|
||||
|
||||
if (GetSaveFlag(flags, OldSaveFlag.SkillBonuses))
|
||||
{
|
||||
SkillBonuses.Deserialize(reader);
|
||||
}
|
||||
|
||||
if (GetSaveFlag(flags, OldSaveFlag.PlayerConstructed))
|
||||
{
|
||||
PlayerConstructed = true;
|
||||
}
|
||||
}
|
||||
|
||||
public override bool AllowSecureTrade(Mobile from, Mobile to, Mobile newOwner, bool accepted)
|
||||
{
|
||||
if (!Ethic.CheckTrade(from, to, newOwner, this))
|
||||
|
|
@ -1431,7 +1294,7 @@ namespace Server.Items
|
|||
|
||||
if (_crafter != null)
|
||||
{
|
||||
list.Add(1050043, _crafter.Name); // crafted by ~1_NAME~
|
||||
list.Add(1050043, _crafter); // crafted by ~1_NAME~
|
||||
}
|
||||
|
||||
if (m_FactionState != null)
|
||||
|
|
@ -1672,7 +1535,7 @@ namespace Server.Items
|
|||
return;
|
||||
}
|
||||
|
||||
from.NetState.SendDisplayEquipmentInfo(Serial, number, _crafter?.RawName, false, attrs);
|
||||
from.NetState.SendDisplayEquipmentInfo(Serial, number, _crafter, false, attrs);
|
||||
}
|
||||
|
||||
[Flags]
|
||||
|
|
|
|||
88
Projects/UOContent/Items/Clothing/BaseClothing.Migrations.cs
Normal file
88
Projects/UOContent/Items/Clothing/BaseClothing.Migrations.cs
Normal file
|
|
@ -0,0 +1,88 @@
|
|||
namespace Server.Items;
|
||||
|
||||
public partial class BaseClothing
|
||||
{
|
||||
private void MigrateFrom(V6Content content)
|
||||
{
|
||||
_rawResource = content.RawResource ?? DefaultResource;
|
||||
_attributes = content.Attributes ?? AttributesDefaultValue();
|
||||
_clothingAttributes = content.ClothingAttributes ?? ClothingAttributesDefaultValue();
|
||||
_skillBonuses = content.SkillBonuses ?? SkillBonusesDefaultValue();
|
||||
_resistances = content.Resistances ?? ResistancesDefaultValue();
|
||||
_maxHitPoints = content.MaxHitPoints ?? 0;
|
||||
_playerConstructed = content.PlayerConstructed;
|
||||
_crafter = content.Crafter?.RawName; // Convert from Mobile -> String via RawName
|
||||
_quality = content.Quality ?? ClothingQuality.Regular;
|
||||
_strReq = content.StrRequirement ?? -1;
|
||||
}
|
||||
|
||||
// Version 5 (pre-codegen)
|
||||
private void Deserialize(IGenericReader reader, int version)
|
||||
{
|
||||
var flags = (OldSaveFlag)reader.ReadEncodedInt();
|
||||
|
||||
if (GetSaveFlag(flags, OldSaveFlag.Resource))
|
||||
{
|
||||
_rawResource = (CraftResource)reader.ReadEncodedInt();
|
||||
}
|
||||
else
|
||||
{
|
||||
_rawResource = DefaultResource;
|
||||
}
|
||||
|
||||
Attributes = new AosAttributes(this);
|
||||
|
||||
if (GetSaveFlag(flags, OldSaveFlag.Attributes))
|
||||
{
|
||||
Attributes.Deserialize(reader);
|
||||
}
|
||||
|
||||
ClothingAttributes = new AosArmorAttributes(this);
|
||||
|
||||
if (GetSaveFlag(flags, OldSaveFlag.ClothingAttributes))
|
||||
{
|
||||
ClothingAttributes.Deserialize(reader);
|
||||
}
|
||||
|
||||
SkillBonuses = new AosSkillBonuses(this);
|
||||
|
||||
if (GetSaveFlag(flags, OldSaveFlag.SkillBonuses))
|
||||
{
|
||||
SkillBonuses.Deserialize(reader);
|
||||
}
|
||||
|
||||
Resistances = new AosElementAttributes(this);
|
||||
|
||||
if (GetSaveFlag(flags, OldSaveFlag.Resistances))
|
||||
{
|
||||
Resistances.Deserialize(reader);
|
||||
}
|
||||
|
||||
if (GetSaveFlag(flags, OldSaveFlag.MaxHitPoints))
|
||||
{
|
||||
_maxHitPoints = reader.ReadEncodedInt();
|
||||
}
|
||||
|
||||
if (GetSaveFlag(flags, OldSaveFlag.HitPoints))
|
||||
{
|
||||
_hitPoints = reader.ReadEncodedInt();
|
||||
}
|
||||
|
||||
if (GetSaveFlag(flags, OldSaveFlag.Crafter))
|
||||
{
|
||||
_crafter = reader.ReadEntity<Mobile>()?.RawName;
|
||||
}
|
||||
|
||||
if (GetSaveFlag(flags, OldSaveFlag.Quality))
|
||||
{
|
||||
_quality = (ClothingQuality)reader.ReadEncodedInt();
|
||||
}
|
||||
|
||||
if (GetSaveFlag(flags, OldSaveFlag.StrReq))
|
||||
{
|
||||
_strReq = reader.ReadEncodedInt();
|
||||
}
|
||||
|
||||
PlayerConstructed = GetSaveFlag(flags, OldSaveFlag.PlayerConstructed);
|
||||
}
|
||||
}
|
||||
|
|
@ -22,7 +22,7 @@ namespace Server.Items
|
|||
int MaxArcaneCharges { get; set; }
|
||||
}
|
||||
|
||||
[Serializable(6, false)]
|
||||
[Serializable(7, false)]
|
||||
public abstract partial class BaseClothing : Item, IDyable, IScissorable, IFactionItem, ICraftable, IWearableDurability
|
||||
{
|
||||
[SerializableField(0, "private", "private")]
|
||||
|
|
@ -93,7 +93,7 @@ namespace Server.Items
|
|||
[InvalidateProperties]
|
||||
[SerializableField(8)]
|
||||
[SerializableFieldAttr("[CommandProperty(AccessLevel.GameMaster)]")]
|
||||
private Mobile _crafter;
|
||||
private string _crafter;
|
||||
|
||||
[SerializableFieldSaveFlag(8)]
|
||||
private bool ShouldSerializeCrafter() => _crafter != null;
|
||||
|
|
@ -193,7 +193,7 @@ namespace Server.Items
|
|||
|
||||
if (makersMark)
|
||||
{
|
||||
Crafter = from;
|
||||
Crafter = from.RawName;
|
||||
}
|
||||
|
||||
if (DefaultResource != CraftResource.None)
|
||||
|
|
@ -699,7 +699,7 @@ namespace Server.Items
|
|||
|
||||
if (_crafter != null)
|
||||
{
|
||||
list.Add(1050043, _crafter.Name); // crafted by ~1_NAME~
|
||||
list.Add(1050043, _crafter); // crafted by ~1_NAME~
|
||||
}
|
||||
|
||||
if (_factionState != null)
|
||||
|
|
@ -907,7 +907,7 @@ namespace Server.Items
|
|||
return;
|
||||
}
|
||||
|
||||
from.NetState.SendDisplayEquipmentInfo(Serial, number, _crafter?.RawName, false, attrs);
|
||||
from.NetState.SendDisplayEquipmentInfo(Serial, number, _crafter, false, attrs);
|
||||
}
|
||||
|
||||
public virtual void AddEquipInfoAttributes(Mobile from, List<EquipInfoAttribute> attrs)
|
||||
|
|
@ -964,83 +964,6 @@ namespace Server.Items
|
|||
|
||||
private static bool GetSaveFlag(OldSaveFlag flags, OldSaveFlag toGet) => (flags & toGet) != 0;
|
||||
|
||||
private void Deserialize(IGenericReader reader, int version)
|
||||
{
|
||||
var flags = (OldSaveFlag)reader.ReadEncodedInt();
|
||||
|
||||
if (GetSaveFlag(flags, OldSaveFlag.Resource))
|
||||
{
|
||||
_rawResource = (CraftResource)reader.ReadEncodedInt();
|
||||
}
|
||||
else
|
||||
{
|
||||
_rawResource = DefaultResource;
|
||||
}
|
||||
|
||||
Attributes = new AosAttributes(this);
|
||||
|
||||
if (GetSaveFlag(flags, OldSaveFlag.Attributes))
|
||||
{
|
||||
Attributes.Deserialize(reader);
|
||||
}
|
||||
|
||||
ClothingAttributes = new AosArmorAttributes(this);
|
||||
|
||||
if (GetSaveFlag(flags, OldSaveFlag.ClothingAttributes))
|
||||
{
|
||||
ClothingAttributes.Deserialize(reader);
|
||||
}
|
||||
|
||||
SkillBonuses = new AosSkillBonuses(this);
|
||||
|
||||
if (GetSaveFlag(flags, OldSaveFlag.SkillBonuses))
|
||||
{
|
||||
SkillBonuses.Deserialize(reader);
|
||||
}
|
||||
|
||||
Resistances = new AosElementAttributes(this);
|
||||
|
||||
if (GetSaveFlag(flags, OldSaveFlag.Resistances))
|
||||
{
|
||||
Resistances.Deserialize(reader);
|
||||
}
|
||||
|
||||
if (GetSaveFlag(flags, OldSaveFlag.MaxHitPoints))
|
||||
{
|
||||
_maxHitPoints = reader.ReadEncodedInt();
|
||||
}
|
||||
|
||||
if (GetSaveFlag(flags, OldSaveFlag.HitPoints))
|
||||
{
|
||||
_hitPoints = reader.ReadEncodedInt();
|
||||
}
|
||||
|
||||
if (GetSaveFlag(flags, OldSaveFlag.Crafter))
|
||||
{
|
||||
_crafter = reader.ReadEntity<Mobile>();
|
||||
}
|
||||
|
||||
if (GetSaveFlag(flags, OldSaveFlag.Quality))
|
||||
{
|
||||
_quality = (ClothingQuality)reader.ReadEncodedInt();
|
||||
}
|
||||
else
|
||||
{
|
||||
_quality = ClothingQuality.Regular;
|
||||
}
|
||||
|
||||
if (GetSaveFlag(flags, OldSaveFlag.StrReq))
|
||||
{
|
||||
_strReq = reader.ReadEncodedInt();
|
||||
}
|
||||
else
|
||||
{
|
||||
_strReq = -1;
|
||||
}
|
||||
|
||||
PlayerConstructed = GetSaveFlag(flags, OldSaveFlag.PlayerConstructed);
|
||||
}
|
||||
|
||||
[AfterDeserialization]
|
||||
private void AfterDeserialization()
|
||||
{
|
||||
|
|
|
|||
|
|
@ -126,12 +126,12 @@ namespace Server.Items
|
|||
if (clothing != null)
|
||||
{
|
||||
clothing.Quality = ClothingQuality.Regular;
|
||||
clothing.Crafter = from;
|
||||
clothing.Crafter = from.RawName;
|
||||
}
|
||||
else if (armor != null)
|
||||
{
|
||||
armor.Quality = ArmorQuality.Regular;
|
||||
armor.Crafter = from;
|
||||
armor.Crafter = from.RawName;
|
||||
armor.PhysicalBonus =
|
||||
armor.FireBonus =
|
||||
armor.ColdBonus =
|
||||
|
|
|
|||
|
|
@ -3971,10 +3971,7 @@ namespace Server.Items
|
|||
parentMobile.AddSkillMod(m_MageMod);
|
||||
}
|
||||
|
||||
if (GetSaveFlag(flags, SaveFlag.PlayerConstructed))
|
||||
{
|
||||
PlayerConstructed = true;
|
||||
}
|
||||
PlayerConstructed = GetSaveFlag(flags, SaveFlag.PlayerConstructed);
|
||||
|
||||
SkillBonuses = new AosSkillBonuses(this);
|
||||
|
||||
|
|
|
|||
216
Projects/UOContent/Migrations/Server.Items.BaseArmor.v9.json
Normal file
216
Projects/UOContent/Migrations/Server.Items.BaseArmor.v9.json
Normal file
|
|
@ -0,0 +1,216 @@
|
|||
{
|
||||
"version": 9,
|
||||
"type": "Server.Items.BaseArmor",
|
||||
"properties": [
|
||||
{
|
||||
"name": "Attributes",
|
||||
"type": "Server.AosAttributes",
|
||||
"usesSaveFlag": true,
|
||||
"rule": "RawSerializableMigrationRule",
|
||||
"ruleArguments": [
|
||||
""
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "ArmorAttributes",
|
||||
"type": "Server.AosArmorAttributes",
|
||||
"usesSaveFlag": true,
|
||||
"rule": "RawSerializableMigrationRule",
|
||||
"ruleArguments": [
|
||||
""
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "PhysicalBonus",
|
||||
"type": "int",
|
||||
"usesSaveFlag": true,
|
||||
"rule": "PrimitiveTypeMigrationRule",
|
||||
"ruleArguments": [
|
||||
"EncodedInt"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "FireBonus",
|
||||
"type": "int",
|
||||
"usesSaveFlag": true,
|
||||
"rule": "PrimitiveTypeMigrationRule",
|
||||
"ruleArguments": [
|
||||
"EncodedInt"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "ColdBonus",
|
||||
"type": "int",
|
||||
"usesSaveFlag": true,
|
||||
"rule": "PrimitiveTypeMigrationRule",
|
||||
"ruleArguments": [
|
||||
"EncodedInt"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "PoisonBonus",
|
||||
"type": "int",
|
||||
"usesSaveFlag": true,
|
||||
"rule": "PrimitiveTypeMigrationRule",
|
||||
"ruleArguments": [
|
||||
"EncodedInt"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "EnergyBonus",
|
||||
"type": "int",
|
||||
"usesSaveFlag": true,
|
||||
"rule": "PrimitiveTypeMigrationRule",
|
||||
"ruleArguments": [
|
||||
"EncodedInt"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Identified",
|
||||
"type": "bool",
|
||||
"usesSaveFlag": true,
|
||||
"rule": "PrimitiveTypeMigrationRule",
|
||||
"ruleArguments": [
|
||||
""
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "MaxHitPoints",
|
||||
"type": "int",
|
||||
"usesSaveFlag": true,
|
||||
"rule": "PrimitiveTypeMigrationRule",
|
||||
"ruleArguments": [
|
||||
"EncodedInt"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "HitPoints",
|
||||
"type": "int",
|
||||
"usesSaveFlag": true,
|
||||
"rule": "PrimitiveTypeMigrationRule",
|
||||
"ruleArguments": [
|
||||
"EncodedInt"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Crafter",
|
||||
"type": "string",
|
||||
"usesSaveFlag": true,
|
||||
"rule": "PrimitiveTypeMigrationRule",
|
||||
"ruleArguments": [
|
||||
""
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Quality",
|
||||
"type": "Server.Items.ArmorQuality",
|
||||
"usesSaveFlag": true,
|
||||
"rule": "EnumMigrationRule"
|
||||
},
|
||||
{
|
||||
"name": "Durability",
|
||||
"type": "Server.Items.ArmorDurabilityLevel",
|
||||
"usesSaveFlag": true,
|
||||
"rule": "EnumMigrationRule"
|
||||
},
|
||||
{
|
||||
"name": "ProtectionLevel",
|
||||
"type": "Server.Items.ArmorProtectionLevel",
|
||||
"usesSaveFlag": true,
|
||||
"rule": "EnumMigrationRule"
|
||||
},
|
||||
{
|
||||
"name": "RawResource",
|
||||
"type": "Server.Items.CraftResource",
|
||||
"usesSaveFlag": true,
|
||||
"rule": "EnumMigrationRule"
|
||||
},
|
||||
{
|
||||
"name": "BaseArmorRating",
|
||||
"type": "int",
|
||||
"usesSaveFlag": true,
|
||||
"rule": "PrimitiveTypeMigrationRule",
|
||||
"ruleArguments": [
|
||||
"EncodedInt"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "StrBonus",
|
||||
"type": "int",
|
||||
"usesSaveFlag": true,
|
||||
"rule": "PrimitiveTypeMigrationRule",
|
||||
"ruleArguments": [
|
||||
"EncodedInt"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "DexBonus",
|
||||
"type": "int",
|
||||
"usesSaveFlag": true,
|
||||
"rule": "PrimitiveTypeMigrationRule",
|
||||
"ruleArguments": [
|
||||
"EncodedInt"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "IntBonus",
|
||||
"type": "int",
|
||||
"usesSaveFlag": true,
|
||||
"rule": "PrimitiveTypeMigrationRule",
|
||||
"ruleArguments": [
|
||||
"EncodedInt"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "StrRequirement",
|
||||
"type": "int",
|
||||
"usesSaveFlag": true,
|
||||
"rule": "PrimitiveTypeMigrationRule",
|
||||
"ruleArguments": [
|
||||
"EncodedInt"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "DexRequirement",
|
||||
"type": "int",
|
||||
"usesSaveFlag": true,
|
||||
"rule": "PrimitiveTypeMigrationRule",
|
||||
"ruleArguments": [
|
||||
"EncodedInt"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "IntRequirement",
|
||||
"type": "int",
|
||||
"usesSaveFlag": true,
|
||||
"rule": "PrimitiveTypeMigrationRule",
|
||||
"ruleArguments": [
|
||||
"EncodedInt"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "MeditationAllowance",
|
||||
"type": "Server.Items.ArmorMeditationAllowance",
|
||||
"usesSaveFlag": true,
|
||||
"rule": "EnumMigrationRule"
|
||||
},
|
||||
{
|
||||
"name": "SkillBonuses",
|
||||
"type": "Server.AosSkillBonuses",
|
||||
"usesSaveFlag": true,
|
||||
"rule": "RawSerializableMigrationRule",
|
||||
"ruleArguments": [
|
||||
""
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "PlayerConstructed",
|
||||
"type": "bool",
|
||||
"usesSaveFlag": true,
|
||||
"rule": "PrimitiveTypeMigrationRule",
|
||||
"ruleArguments": [
|
||||
""
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
@ -0,0 +1,99 @@
|
|||
{
|
||||
"version": 7,
|
||||
"type": "Server.Items.BaseClothing",
|
||||
"properties": [
|
||||
{
|
||||
"name": "RawResource",
|
||||
"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": "string",
|
||||
"usesSaveFlag": true,
|
||||
"rule": "PrimitiveTypeMigrationRule",
|
||||
"ruleArguments": [
|
||||
""
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Quality",
|
||||
"type": "Server.Items.ClothingQuality",
|
||||
"usesSaveFlag": true,
|
||||
"rule": "EnumMigrationRule"
|
||||
},
|
||||
{
|
||||
"name": "StrRequirement",
|
||||
"type": "int",
|
||||
"usesSaveFlag": true,
|
||||
"rule": "PrimitiveTypeMigrationRule",
|
||||
"ruleArguments": [
|
||||
""
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
@ -42,21 +42,21 @@ namespace Server.Mobiles
|
|||
var cht = new ChainChest();
|
||||
cht.Movable = false;
|
||||
cht.LootType = LootType.Newbied;
|
||||
cht.Crafter = this;
|
||||
cht.Crafter = RawName;
|
||||
cht.Quality = ArmorQuality.Regular;
|
||||
AddItem(cht);
|
||||
|
||||
var chl = new ChainLegs();
|
||||
chl.Movable = false;
|
||||
chl.LootType = LootType.Newbied;
|
||||
chl.Crafter = this;
|
||||
chl.Crafter = RawName;
|
||||
chl.Quality = ArmorQuality.Regular;
|
||||
AddItem(chl);
|
||||
|
||||
var pla = new PlateArms();
|
||||
pla.Movable = false;
|
||||
pla.LootType = LootType.Newbied;
|
||||
pla.Crafter = this;
|
||||
pla.Crafter = RawName;
|
||||
pla.Quality = ArmorQuality.Regular;
|
||||
AddItem(pla);
|
||||
|
||||
|
|
@ -116,21 +116,21 @@ namespace Server.Mobiles
|
|||
var cht = new ChainChest();
|
||||
cht.Movable = false;
|
||||
cht.LootType = LootType.Newbied;
|
||||
cht.Crafter = this;
|
||||
cht.Crafter = RawName;
|
||||
cht.Quality = ArmorQuality.Regular;
|
||||
AddItem(cht);
|
||||
|
||||
var chl = new ChainLegs();
|
||||
chl.Movable = false;
|
||||
chl.LootType = LootType.Newbied;
|
||||
chl.Crafter = this;
|
||||
chl.Crafter = RawName;
|
||||
chl.Quality = ArmorQuality.Regular;
|
||||
AddItem(chl);
|
||||
|
||||
var pla = new PlateArms();
|
||||
pla.Movable = false;
|
||||
pla.LootType = LootType.Newbied;
|
||||
pla.Crafter = this;
|
||||
pla.Crafter = RawName;
|
||||
pla.Quality = ArmorQuality.Regular;
|
||||
AddItem(pla);
|
||||
|
||||
|
|
@ -190,21 +190,21 @@ namespace Server.Mobiles
|
|||
var cht = new ChainChest();
|
||||
cht.Movable = false;
|
||||
cht.LootType = LootType.Newbied;
|
||||
cht.Crafter = this;
|
||||
cht.Crafter = RawName;
|
||||
cht.Quality = ArmorQuality.Regular;
|
||||
AddItem(cht);
|
||||
|
||||
var chl = new ChainLegs();
|
||||
chl.Movable = false;
|
||||
chl.LootType = LootType.Newbied;
|
||||
chl.Crafter = this;
|
||||
chl.Crafter = RawName;
|
||||
chl.Quality = ArmorQuality.Regular;
|
||||
AddItem(chl);
|
||||
|
||||
var pla = new PlateArms();
|
||||
pla.Movable = false;
|
||||
pla.LootType = LootType.Newbied;
|
||||
pla.Crafter = this;
|
||||
pla.Crafter = RawName;
|
||||
pla.Quality = ArmorQuality.Regular;
|
||||
AddItem(pla);
|
||||
|
||||
|
|
@ -328,28 +328,28 @@ namespace Server.Mobiles
|
|||
var lea = new LeatherArms();
|
||||
lea.Movable = false;
|
||||
lea.LootType = LootType.Newbied;
|
||||
lea.Crafter = this;
|
||||
lea.Crafter = RawName;
|
||||
lea.Quality = ArmorQuality.Regular;
|
||||
AddItem(lea);
|
||||
|
||||
var lec = new LeatherChest();
|
||||
lec.Movable = false;
|
||||
lec.LootType = LootType.Newbied;
|
||||
lec.Crafter = this;
|
||||
lec.Crafter = RawName;
|
||||
lec.Quality = ArmorQuality.Regular;
|
||||
AddItem(lec);
|
||||
|
||||
var leg = new LeatherGorget();
|
||||
leg.Movable = false;
|
||||
leg.LootType = LootType.Newbied;
|
||||
leg.Crafter = this;
|
||||
leg.Crafter = RawName;
|
||||
leg.Quality = ArmorQuality.Regular;
|
||||
AddItem(leg);
|
||||
|
||||
var lel = new LeatherLegs();
|
||||
lel.Movable = false;
|
||||
lel.LootType = LootType.Newbied;
|
||||
lel.Crafter = this;
|
||||
lel.Crafter = RawName;
|
||||
lel.Quality = ArmorQuality.Regular;
|
||||
AddItem(lel);
|
||||
|
||||
|
|
@ -419,28 +419,28 @@ namespace Server.Mobiles
|
|||
var lea = new LeatherArms();
|
||||
lea.Movable = false;
|
||||
lea.LootType = LootType.Newbied;
|
||||
lea.Crafter = this;
|
||||
lea.Crafter = RawName;
|
||||
lea.Quality = ArmorQuality.Regular;
|
||||
AddItem(lea);
|
||||
|
||||
var lec = new LeatherChest();
|
||||
lec.Movable = false;
|
||||
lec.LootType = LootType.Newbied;
|
||||
lec.Crafter = this;
|
||||
lec.Crafter = RawName;
|
||||
lec.Quality = ArmorQuality.Regular;
|
||||
AddItem(lec);
|
||||
|
||||
var leg = new LeatherGorget();
|
||||
leg.Movable = false;
|
||||
leg.LootType = LootType.Newbied;
|
||||
leg.Crafter = this;
|
||||
leg.Crafter = RawName;
|
||||
leg.Quality = ArmorQuality.Regular;
|
||||
AddItem(leg);
|
||||
|
||||
var lel = new LeatherLegs();
|
||||
lel.Movable = false;
|
||||
lel.LootType = LootType.Newbied;
|
||||
lel.Crafter = this;
|
||||
lel.Crafter = RawName;
|
||||
lel.Quality = ArmorQuality.Regular;
|
||||
AddItem(lel);
|
||||
|
||||
|
|
@ -514,28 +514,28 @@ namespace Server.Mobiles
|
|||
var lea = new LeatherArms();
|
||||
lea.Movable = false;
|
||||
lea.LootType = LootType.Newbied;
|
||||
lea.Crafter = this;
|
||||
lea.Crafter = RawName;
|
||||
lea.Quality = ArmorQuality.Regular;
|
||||
AddItem(lea);
|
||||
|
||||
var lec = new LeatherChest();
|
||||
lec.Movable = false;
|
||||
lec.LootType = LootType.Newbied;
|
||||
lec.Crafter = this;
|
||||
lec.Crafter = RawName;
|
||||
lec.Quality = ArmorQuality.Regular;
|
||||
AddItem(lec);
|
||||
|
||||
var leg = new LeatherGorget();
|
||||
leg.Movable = false;
|
||||
leg.LootType = LootType.Newbied;
|
||||
leg.Crafter = this;
|
||||
leg.Crafter = RawName;
|
||||
leg.Quality = ArmorQuality.Regular;
|
||||
AddItem(leg);
|
||||
|
||||
var lel = new LeatherLegs();
|
||||
lel.Movable = false;
|
||||
lel.LootType = LootType.Newbied;
|
||||
lel.Crafter = this;
|
||||
lel.Crafter = RawName;
|
||||
lel.Quality = ArmorQuality.Regular;
|
||||
AddItem(lel);
|
||||
|
||||
|
|
@ -611,28 +611,28 @@ namespace Server.Mobiles
|
|||
var lea = new LeatherArms();
|
||||
lea.Movable = false;
|
||||
lea.LootType = LootType.Newbied;
|
||||
lea.Crafter = this;
|
||||
lea.Crafter = RawName;
|
||||
lea.Quality = ArmorQuality.Regular;
|
||||
AddItem(lea);
|
||||
|
||||
var lec = new LeatherChest();
|
||||
lec.Movable = false;
|
||||
lec.LootType = LootType.Newbied;
|
||||
lec.Crafter = this;
|
||||
lec.Crafter = RawName;
|
||||
lec.Quality = ArmorQuality.Regular;
|
||||
AddItem(lec);
|
||||
|
||||
var leg = new LeatherGorget();
|
||||
leg.Movable = false;
|
||||
leg.LootType = LootType.Newbied;
|
||||
leg.Crafter = this;
|
||||
leg.Crafter = RawName;
|
||||
leg.Quality = ArmorQuality.Regular;
|
||||
AddItem(leg);
|
||||
|
||||
var lel = new LeatherLegs();
|
||||
lel.Movable = false;
|
||||
lel.LootType = LootType.Newbied;
|
||||
lel.Crafter = this;
|
||||
lel.Crafter = RawName;
|
||||
lel.Quality = ArmorQuality.Regular;
|
||||
AddItem(lel);
|
||||
|
||||
|
|
@ -719,28 +719,28 @@ namespace Server.Mobiles
|
|||
var lea = new LeatherArms();
|
||||
lea.Movable = false;
|
||||
lea.LootType = LootType.Newbied;
|
||||
lea.Crafter = this;
|
||||
lea.Crafter = RawName;
|
||||
lea.Quality = ArmorQuality.Regular;
|
||||
AddItem(lea);
|
||||
|
||||
var lec = new LeatherChest();
|
||||
lec.Movable = false;
|
||||
lec.LootType = LootType.Newbied;
|
||||
lec.Crafter = this;
|
||||
lec.Crafter = RawName;
|
||||
lec.Quality = ArmorQuality.Regular;
|
||||
AddItem(lec);
|
||||
|
||||
var leg = new LeatherGorget();
|
||||
leg.Movable = false;
|
||||
leg.LootType = LootType.Newbied;
|
||||
leg.Crafter = this;
|
||||
leg.Crafter = RawName;
|
||||
leg.Quality = ArmorQuality.Regular;
|
||||
AddItem(leg);
|
||||
|
||||
var lel = new LeatherLegs();
|
||||
lel.Movable = false;
|
||||
lel.LootType = LootType.Newbied;
|
||||
lel.Crafter = this;
|
||||
lel.Crafter = RawName;
|
||||
lel.Quality = ArmorQuality.Regular;
|
||||
AddItem(lel);
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue