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

@ -404,7 +404,6 @@ namespace Server.Commands
TryParse(p.PropertyType, value, out var toSet) ??
SetDirect(from, logobj, o, p, pname, toSet, shouldLog);
private class PropsTarget : Target
{
public PropsTarget() : base(-1, true, TargetFlags.None)

View file

@ -69,7 +69,7 @@ namespace Server.Compression
{
StartInfo = new ProcessStartInfo
{
FileName = $"{_pathToZstd}\\zstd.exe",
FileName = Path.Combine(_pathToZstd, "zstd.exe"),
Arguments = $"--no-progress -10 \"{tempTarArchive}\" -o \"{destinationArchiveFileName}\""
}
};
@ -89,7 +89,7 @@ namespace Server.Compression
}
}
return TarArchive.CreateFromPaths(paths, destinationArchiveFileName, $"zstd -10", _pathToZstd);
return TarArchive.CreateFromPaths(paths, destinationArchiveFileName, "zstd -10", _pathToZstd);
}
}
}

View file

@ -31,7 +31,7 @@ namespace Server.Engines.BulkOrders
[SerializableFieldAttr("[CommandProperty(AccessLevel.GameMaster)]")]
private bool _requireExceptional;
[SerializableField(1)]
[SerializableField(2)]
[InvalidateProperties]
[SerializableFieldAttr("[CommandProperty(AccessLevel.GameMaster)]")]
private BulkMaterialType _material;

View file

@ -410,7 +410,6 @@ namespace Server.Engines.CannedEvil
}
}
// Justice reward
var pm = (PlayerMobile)killer;
for (var j = 0; j < pm.JusticeProtectors.Count; ++j)

View file

@ -117,7 +117,6 @@ namespace Server.Gumps
}
}
public override void OnResponse(NetState sender, RelayInfo info)
{
object toSet = null;

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);

View file

@ -17,6 +17,11 @@
"ruleArguments": [
""
]
},
{
"name": "Material",
"type": "Server.Engines.BulkOrders.BulkMaterialType",
"rule": "EnumMigrationRule"
}
]
}

View file

@ -13,7 +13,7 @@
]
},
{
"name": "Resource",
"name": "RawResource",
"type": "Server.Items.CraftResource",
"rule": "EnumMigrationRule"
}

View file

@ -13,7 +13,7 @@
]
},
{
"name": "Resource",
"name": "RawResource",
"type": "Server.Items.CraftResource",
"rule": "EnumMigrationRule"
}

View file

@ -117,7 +117,7 @@
"rule": "EnumMigrationRule"
},
{
"name": "Resource",
"name": "RawResource",
"type": "Server.Items.CraftResource",
"usesSaveFlag": true,
"rule": "EnumMigrationRule"

View file

@ -3,7 +3,7 @@
"type": "Server.Items.BaseClothing",
"properties": [
{
"name": "Resource",
"name": "RawResource",
"type": "Server.Items.CraftResource",
"usesSaveFlag": true,
"rule": "EnumMigrationRule"

View file

@ -719,7 +719,6 @@ namespace Server.Misc
public static bool VerifyProfession(int profession) =>
profession >= 0 && (profession < 4 || Core.AOS && profession < 6 || Core.SE && profession < 8);
private static CityInfo GetStartLocation(CharacterCreatedEventArgs args, bool isYoung)
{
if (Core.ML)
@ -1012,7 +1011,7 @@ namespace Server.Misc
//EquipItem(new DreadSword()); //NOT IMPLEMENTED
EquipItem(new GargishLeatherChestType1());
EquipItem(new GargishLeatherArmsType1());
EquipItem(new GargishLeatherKiltType1());
EquipItem(new GargishLeatherKiltType1());
EquipItem(new GargishLeatherLegsType1());
}
else
@ -1060,7 +1059,7 @@ namespace Server.Misc
//EquipItem(new GlassSword()); //NOT IMPLEMENTED
EquipItem(new GargishLeatherChestType1());
EquipItem(new GargishLeatherArmsType1());
EquipItem(new GargishLeatherKiltType1());
EquipItem(new GargishLeatherKiltType1());
EquipItem(new GargishLeatherLegsType1());
}
else
@ -1106,7 +1105,7 @@ namespace Server.Misc
//EquipItem(new GlassSword()); // IMPLEMENTION NEEDED
//EquipItem(new GargishStoneChestType1());
//EquipItem(new GargishStoneArmsType1());
//EquipItem(new GargishStoneKiltType1());
//EquipItem(new GargishStoneKiltType1());
//EquipItem(new GargishStoneLegsType1());
}
else
@ -1152,7 +1151,7 @@ namespace Server.Misc
//EquipItem(new GargishTalwar()); // IMPLEMENTION NEEDED
EquipItem(new GargishLeatherChestType1());
EquipItem(new GargishLeatherArmsType1());
EquipItem(new GargishLeatherKiltType1());
EquipItem(new GargishLeatherKiltType1());
EquipItem(new GargishLeatherLegsType1());
}
else
@ -1176,7 +1175,7 @@ namespace Server.Misc
case 7: // Ninja
{
addSkillItems = false;
int[] hues = { 0x1A8, 0xEC, 0x99, 0x90, 0xB5, 0x336, 0x89 };
// TODO: Verify that's ALL the hues for that above.
@ -1194,7 +1193,7 @@ namespace Server.Misc
//EquipItem(new DualPointedSpear()); //IMPLEMENTION NEEDED
EquipItem(new GargishLeatherChestType1());
EquipItem(new GargishLeatherArmsType1());
EquipItem(new GargishLeatherKiltType1());
EquipItem(new GargishLeatherKiltType1());
EquipItem(new GargishLeatherLegsType1());
}
else

View file

@ -72,7 +72,6 @@ namespace Server.Network
return;
}
e.Mobile.SendMessage("Packet 0x{0:X} throttle is currently {1}ms.", packetID, Delays[packetID]);
}
@ -95,7 +94,6 @@ namespace Server.Network
return;
}
if (delay > 5000)
{
e.Mobile.SendMessage("Invalid Command Format. Delay cannot exceed 5000 milliseconds.");

View file

@ -767,7 +767,6 @@ namespace Server.Mobiles
}
}
public void ClearQuestArrow() => m_QuestArrow = null;
public override void ToggleFlying()

View file

@ -37,7 +37,6 @@ namespace Server.Network
writer.Write((byte)0xBA); // Packet ID
writer.Write(command);
if (ns.HighSeas)
{
writer.Write((short)x);

View file

@ -257,7 +257,6 @@ namespace Server.Spells
return false;
}
public static bool GetEastToWest(IPoint3D from,IPoint3D target)
{
var dx = from.X - target.X;

View file

@ -290,10 +290,10 @@ namespace Server.Saves
return;
}
var extension = _compressionFormat.GetFileExtension();
var archivePath = Path.Combine(ArchivePath, archivePeriodStr);
AssemblyHandler.EnsureDirectory(archivePath);
var extension = _compressionFormat.GetFileExtension();
var archiveFilePath = Path.Combine(archivePath, $"{archiveNameNoExtension}{extension}");
logger.Information($"Creating {archivePeriodStrLower} archive");