fix: Fixes code genning armor, clothing, and BODs (#810)

* Fixes code genning clothing
* Fixes code genning armor
* Fixes code genning BODs
This commit is contained in:
Kamron Batman 2021-09-28 22:09:34 -07:00 • committed by GitHub
parent 990d151ef3
commit 8eaa859332
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
28 changed files with 122 additions and 111 deletions

View file

@ -23,7 +23,8 @@ namespace Server.Items
[Serializable(3, false)]
public abstract partial class BaseAddon : Item, IChoppable, IAddon
{
private CraftResource _resource;
[SerializableField(1, "private", "private")]
private CraftResource _rawResource;
public BaseAddon() : base(1)
{
@ -65,16 +66,15 @@ namespace Server.Items
}
[CommandProperty(AccessLevel.GameMaster)]
[SerializableField(1)]
public CraftResource Resource
{
get => _resource;
get => _rawResource;
set
{
if (_resource != value)
if (_rawResource != value)
{
_resource = value;
Hue = CraftResources.GetHue(_resource);
RawResource = value;
Hue = CraftResources.GetHue(_rawResource);
InvalidateProperties();
this.MarkDirty();
@ -284,7 +284,7 @@ namespace Server.Items
if (version == 2)
{
_resource = (CraftResource)reader.ReadEncodedInt();
_rawResource = (CraftResource)reader.ReadEncodedInt();
}
}
}

View file

@ -9,7 +9,8 @@ namespace Server.Items
[SerializableField(0, setter: "private")]
private List<AddonContainerComponent> _components;
private CraftResource _resource;
[SerializableField(1, "private", "private")]
private CraftResource _rawResource;
public BaseAddonContainer(int itemID) : base(itemID)
{
@ -42,17 +43,16 @@ namespace Server.Items
}
}
[SerializableField(1)]
[CommandProperty(AccessLevel.GameMaster)]
public CraftResource Resource
{
get => _resource;
get => _rawResource;
set
{
if (_resource != value)
if (_rawResource != value)
{
_resource = value;
Hue = CraftResources.GetHue(_resource);
RawResource = value;
Hue = CraftResources.GetHue(_rawResource);
InvalidateProperties();
this.MarkDirty();
@ -171,9 +171,9 @@ namespace Server.Items
{
base.GetProperties(list);
if (!CraftResources.IsStandard(_resource))
if (!CraftResources.IsStandard(_rawResource))
{
list.Add(CraftResources.GetLocalizationNumber(_resource));
list.Add(CraftResources.GetLocalizationNumber(_rawResource));
}
}
@ -204,7 +204,7 @@ namespace Server.Items
private void Deserialize(IGenericReader reader, int version)
{
_components = reader.ReadEntityList<AddonContainerComponent>();
_resource = version == 1 ? reader.ReadEnum<CraftResource>() : (CraftResource)reader.ReadInt();
_rawResource = version == 1 ? reader.ReadEnum<CraftResource>() : (CraftResource)reader.ReadInt();
}
[AfterDeserialization]

View file

@ -114,7 +114,11 @@ namespace Server.Items
private ArmorProtectionLevel _protection = ArmorProtectionLevel.Regular;
// Field 14
private CraftResource _resource;
[SerializableField(14, "private", "private")]
private CraftResource _rawResource;
[SerializableFieldSaveFlag(14)]
private bool ShouldSerializeResource() => _rawResource != DefaultResource;
// Field 15
private int _armorBase = -1;
@ -163,8 +167,8 @@ namespace Server.Items
{
_crafter = null;
_resource = DefaultResource;
Hue = CraftResources.GetHue(_resource);
_rawResource = DefaultResource;
Hue = CraftResources.GetHue(_rawResource);
_hitPoints = _maxHitPoints = Utility.RandomMinMax(InitMinHits, InitMaxHits);
@ -268,41 +272,31 @@ namespace Server.Items
[SerializableFieldSaveFlag(13)]
private bool ShouldSerializeProtectionLevel() => _protection != ArmorProtectionLevel.Regular;
[SerializableField(14)]
[CommandProperty(AccessLevel.GameMaster)]
public CraftResource Resource
{
get => _resource;
get => _rawResource;
set
{
if (_resource != value)
if (_rawResource != value)
{
if (!World.Loading)
{
UnscaleDurability();
}
UnscaleDurability();
_resource = value;
RawResource = value;
if (CraftItem.RetainsColor(GetType()))
{
Hue = CraftResources.GetHue(_resource);
Hue = CraftResources.GetHue(_rawResource);
}
Invalidate();
(Parent as Mobile)?.UpdateResistances();
if (!World.Loading)
{
ScaleDurability();
}
ScaleDurability();
}
}
}
[SerializableFieldSaveFlag(14)]
private bool ShouldSerializeResource() => _resource != DefaultResource;
[SerializableFieldDefault(14)]
private CraftResource ResourceDefaultValue() => DefaultResource;
@ -339,7 +333,7 @@ namespace Server.Items
ar += 10 + 5 * (int)_protection;
}
ar += _resource switch
ar += _rawResource switch
{
CraftResource.DullCopper => 2,
CraftResource.ShadowIron => 4,
@ -557,7 +551,6 @@ namespace Server.Items
public virtual CraftResource DefaultResource => CraftResource.Iron;
[Hue]
[CommandProperty(AccessLevel.GameMaster)]
public override int Hue
@ -681,7 +674,7 @@ namespace Server.Items
{
try
{
var res = CraftResources.GetInfo(_resource).ResourceTypes[0].CreateInstance<Item>();
var res = CraftResources.GetInfo(_rawResource).ResourceTypes[0].CreateInstance<Item>();
ScissorHelper(from, res, PlayerConstructed ? item.Resources[0].Amount / 2 : 1);
return true;
@ -887,7 +880,7 @@ namespace Server.Items
}
public CraftAttributeInfo GetResourceAttrs() =>
CraftResources.GetInfo(_resource)?.AttributeInfo ?? CraftAttributeInfo.Blank;
CraftResources.GetInfo(_rawResource)?.AttributeInfo ?? CraftAttributeInfo.Blank;
public int GetProtOffset()
{
@ -919,7 +912,7 @@ namespace Server.Items
{
bonus += ArmorAttributes.DurabilityBonus;
var resInfo = CraftResources.GetInfo(_resource);
var resInfo = CraftResources.GetInfo(_rawResource);
CraftAttributeInfo attrInfo = null;
if (resInfo != null)
@ -992,7 +985,7 @@ namespace Server.Items
var v = ArmorAttributes.LowerStatReq;
var info = CraftResources.GetInfo(_resource);
var info = CraftResources.GetInfo(_rawResource);
var attrInfo = info?.AttributeInfo;
@ -1051,9 +1044,9 @@ namespace Server.Items
SkillBonuses.AddTo(m);
}
if (_resource == CraftResource.None)
if (_rawResource == CraftResource.None)
{
_resource = DefaultResource;
_rawResource = DefaultResource;
}
var strBonus = ComputeStatBonus(StatType.Str);
@ -1164,7 +1157,7 @@ namespace Server.Items
if (GetSaveFlag(flags, OldSaveFlag.Resource))
{
_resource = (CraftResource)reader.ReadEncodedInt();
_rawResource = (CraftResource)reader.ReadEncodedInt();
}
if (GetSaveFlag(flags, OldSaveFlag.BaseArmor))
@ -1370,7 +1363,7 @@ namespace Server.Items
public override void AddNameProperty(ObjectPropertyList list)
{
var oreType = _resource switch
var oreType = _rawResource switch
{
CraftResource.DullCopper => 1053108,
CraftResource.ShadowIron => 1053107,
@ -1430,7 +1423,7 @@ namespace Server.Items
return Attributes.SpellChanneling != 0;
}
public virtual int GetLuckBonus() => CraftResources.GetInfo(_resource)?.AttributeInfo?.ArmorLuck ?? 0;
public virtual int GetLuckBonus() => CraftResources.GetInfo(_rawResource)?.AttributeInfo?.ArmorLuck ?? 0;
public override void GetProperties(ObjectPropertyList list)
{

View file

@ -25,8 +25,11 @@ namespace Server.Items
[Serializable(6, false)]
public abstract partial class BaseClothing : Item, IDyable, IScissorable, IFactionItem, ICraftable, IWearableDurability
{
// Field 0
private CraftResource _resource;
[SerializableField(0, "private", "private")]
private CraftResource _rawResource;
[SerializableFieldSaveFlag(0)]
private bool ShouldSerializeResource() => _rawResource != DefaultResource;
[SerializableField(1, setter: "private")]
[SerializableFieldAttr("[CommandProperty(AccessLevel.GameMaster, canModify: true)]")]
@ -113,7 +116,7 @@ namespace Server.Items
Layer = layer;
Hue = hue;
_resource = DefaultResource;
_rawResource = DefaultResource;
_hitPoints = _maxHitPoints = Utility.RandomMinMax(InitMinHits, InitMaxHits);
@ -123,23 +126,19 @@ namespace Server.Items
Resistances = new AosElementAttributes(this);
}
[SerializableField(0)]
[CommandProperty(AccessLevel.GameMaster)]
public CraftResource Resource
{
get => _resource;
get => _rawResource;
set
{
_resource = value;
Hue = CraftResources.GetHue(_resource);
RawResource = value;
Hue = CraftResources.GetHue(_rawResource);
InvalidateProperties();
this.MarkDirty();
}
}
[SerializableFieldSaveFlag(0)]
private bool ShouldSerializeResource() => _resource != DefaultResource;
[SerializableField(10)]
[CommandProperty(AccessLevel.GameMaster)]
public int StrRequirement
@ -275,7 +274,7 @@ namespace Server.Items
{
try
{
var info = CraftResources.GetInfo(_resource);
var info = CraftResources.GetInfo(_rawResource);
var resourceType = info.ResourceTypes?[0] ?? item.Resources[0].ItemType;
@ -658,7 +657,7 @@ namespace Server.Items
public override void AddNameProperty(ObjectPropertyList list)
{
var oreType = _resource switch
var oreType = _rawResource switch
{
CraftResource.DullCopper => 1053108,
CraftResource.ShadowIron => 1053107,
@ -971,11 +970,11 @@ namespace Server.Items
if (GetSaveFlag(flags, OldSaveFlag.Resource))
{
_resource = (CraftResource)reader.ReadEncodedInt();
_rawResource = (CraftResource)reader.ReadEncodedInt();
}
else
{
_resource = DefaultResource;
_rawResource = DefaultResource;
}
Attributes = new AosAttributes(this);

View file

@ -975,7 +975,6 @@ namespace Server.Items
m_Blessed = GetSaveFlag(flags, SaveFlag.Blessed);
if (Parent is Mobile m)
{
Attributes.AddStatBonuses(m);