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:
parent
990d151ef3
commit
8eaa859332
28 changed files with 122 additions and 111 deletions
|
|
@ -190,7 +190,7 @@ namespace SerializationGenerator
|
|||
) != null
|
||||
) : null;
|
||||
|
||||
var serializablePropertySet = new SortedSet<SerializableProperty>(new SerializablePropertyComparer());
|
||||
var serializablePropertySet = new SortedDictionary<SerializableProperty, ISymbol>(new SerializablePropertyComparer());
|
||||
|
||||
foreach (var fieldOrPropertySymbol in fieldsAndProperties)
|
||||
{
|
||||
|
|
@ -267,10 +267,16 @@ namespace SerializationGenerator
|
|||
serializableFieldSaveFlagMethods
|
||||
);
|
||||
|
||||
serializablePropertySet.Add(serializableProperty);
|
||||
serializablePropertySet.Add(serializableProperty, fieldOrPropertySymbol);
|
||||
}
|
||||
|
||||
var serializableProperties = serializablePropertySet.ToImmutableArray();
|
||||
var serializableFields = serializablePropertySet.Keys.ToImmutableArray();
|
||||
var serializableProperties = serializablePropertySet.Select(
|
||||
kvp => kvp.Key with
|
||||
{
|
||||
Name = (kvp.Value as IFieldSymbol)?.GetPropertyName() ?? ((IPropertySymbol)kvp.Value).Name
|
||||
}
|
||||
).ToImmutableArray();
|
||||
|
||||
// If we are not inheriting ISerializable, then we need to define some stuff
|
||||
if (!(isOverride || embedded))
|
||||
|
|
@ -323,6 +329,7 @@ namespace SerializationGenerator
|
|||
indent,
|
||||
isOverride,
|
||||
encodedVersion,
|
||||
serializableFields,
|
||||
serializableProperties,
|
||||
serializableFieldSaveFlags
|
||||
);
|
||||
|
|
@ -337,6 +344,7 @@ namespace SerializationGenerator
|
|||
version,
|
||||
encodedVersion,
|
||||
migrations,
|
||||
serializableFields,
|
||||
serializableProperties,
|
||||
parentFieldOrProperty,
|
||||
serializableFieldSaveFlags
|
||||
|
|
|
|||
|
|
@ -33,6 +33,7 @@ namespace SerializationGenerator
|
|||
int version,
|
||||
bool encodedVersion,
|
||||
ImmutableArray<SerializableMetadata> migrations,
|
||||
ImmutableArray<SerializableProperty> fields,
|
||||
ImmutableArray<SerializableProperty> properties,
|
||||
ISymbol parentFieldOrProperty,
|
||||
SortedDictionary<int, SerializableFieldSaveFlagMethods> serializableFieldSaveFlagMethodsDictionary
|
||||
|
|
@ -124,11 +125,12 @@ namespace SerializationGenerator
|
|||
source.AppendLine($"{bodyIndent}var saveFlags = reader.ReadEnum<SaveFlag>();");
|
||||
}
|
||||
|
||||
foreach (var property in properties)
|
||||
for (var i = 0; i < properties.Length; i++)
|
||||
{
|
||||
var field = fields[i];
|
||||
var property = properties[i];
|
||||
var rule = SerializableMigrationRulesEngine.Rules[property.Rule];
|
||||
|
||||
|
||||
if (serializableFieldSaveFlagMethodsDictionary.TryGetValue(
|
||||
property.Order,
|
||||
out var serializableFieldSaveFlagMethods
|
||||
|
|
@ -138,7 +140,7 @@ namespace SerializationGenerator
|
|||
// Special case
|
||||
if (property.Type == "bool")
|
||||
{
|
||||
source.AppendLine($"{bodyIndent}{property.Name} = (saveFlags & SaveFlag.{property.Name}) != 0;");
|
||||
source.AppendLine($"{bodyIndent}{field.Name} = (saveFlags & SaveFlag.{property.Name}) != 0;");
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
@ -146,16 +148,22 @@ namespace SerializationGenerator
|
|||
rule.GenerateDeserializationMethod(
|
||||
source,
|
||||
innerIndent,
|
||||
property,
|
||||
field,
|
||||
parentFieldOrProperty?.Name ?? "this"
|
||||
);
|
||||
(rule as IPostDeserializeMethod)?.PostDeserializeMethod(source, innerIndent, property, compilation, classSymbol);
|
||||
(rule as IPostDeserializeMethod)?.PostDeserializeMethod(
|
||||
source,
|
||||
innerIndent,
|
||||
field,
|
||||
compilation,
|
||||
classSymbol
|
||||
);
|
||||
|
||||
if (serializableFieldSaveFlagMethods.GetFieldDefaultValue != null)
|
||||
{
|
||||
source.AppendLine($"{bodyIndent}}}\n{bodyIndent}else\n{bodyIndent}{{");
|
||||
source.AppendLine(
|
||||
$"{bodyIndent} {property.Name} = {serializableFieldSaveFlagMethods.GetFieldDefaultValue.Name}();"
|
||||
$"{bodyIndent} {field.Name} = {serializableFieldSaveFlagMethods.GetFieldDefaultValue.Name}();"
|
||||
);
|
||||
}
|
||||
|
||||
|
|
@ -168,10 +176,16 @@ namespace SerializationGenerator
|
|||
rule.GenerateDeserializationMethod(
|
||||
source,
|
||||
bodyIndent,
|
||||
property,
|
||||
field,
|
||||
parentFieldOrProperty?.Name ?? "this"
|
||||
);
|
||||
(rule as IPostDeserializeMethod)?.PostDeserializeMethod(source, bodyIndent, property, compilation, classSymbol);
|
||||
(rule as IPostDeserializeMethod)?.PostDeserializeMethod(
|
||||
source,
|
||||
bodyIndent,
|
||||
field,
|
||||
compilation,
|
||||
classSymbol
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -29,6 +29,7 @@ namespace SerializationGenerator
|
|||
string indent,
|
||||
bool isOverride,
|
||||
bool encodedVersion,
|
||||
ImmutableArray<SerializableProperty> fields,
|
||||
ImmutableArray<SerializableProperty> properties,
|
||||
SortedDictionary<int, SerializableFieldSaveFlagMethods> serializableFieldSaveFlagMethodsDictionary
|
||||
)
|
||||
|
|
@ -74,30 +75,34 @@ namespace SerializationGenerator
|
|||
source.AppendLine($"{bodyIndent}writer.WriteEnum(saveFlags);");
|
||||
}
|
||||
|
||||
foreach (var property in properties)
|
||||
for (var i = 0; i < properties.Length; i++)
|
||||
{
|
||||
var field = fields[i];
|
||||
var property = properties[i];
|
||||
if (serializableFieldSaveFlagMethodsDictionary.ContainsKey(property.Order))
|
||||
{
|
||||
// Special case
|
||||
if (property.Type != "bool")
|
||||
{
|
||||
source.AppendLine($"\n{bodyIndent}if ((saveFlags & SaveFlag.{property.Name}) != 0)\n{bodyIndent}{{");
|
||||
SerializableMigrationRulesEngine.Rules[property.Rule].GenerateSerializationMethod(
|
||||
source,
|
||||
innerIndent,
|
||||
property
|
||||
);
|
||||
SerializableMigrationRulesEngine.Rules[property.Rule]
|
||||
.GenerateSerializationMethod(
|
||||
source,
|
||||
innerIndent,
|
||||
field
|
||||
);
|
||||
source.AppendLine($"{bodyIndent}}}");
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
source.AppendLine();
|
||||
SerializableMigrationRulesEngine.Rules[property.Rule].GenerateSerializationMethod(
|
||||
source,
|
||||
bodyIndent,
|
||||
property
|
||||
);
|
||||
SerializableMigrationRulesEngine.Rules[property.Rule]
|
||||
.GenerateSerializationMethod(
|
||||
source,
|
||||
bodyIndent,
|
||||
field
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -64,7 +64,7 @@ namespace SerializableMigration
|
|||
|
||||
if (fieldOrPropertySymbol is IFieldSymbol fieldSymbol)
|
||||
{
|
||||
propertyName = fieldSymbol.GetPropertyName();
|
||||
propertyName = fieldSymbol.Name;
|
||||
propertyType = fieldSymbol.Type;
|
||||
}
|
||||
else if (fieldOrPropertySymbol is IPropertySymbol propertySymbol)
|
||||
|
|
|
|||
|
|
@ -125,7 +125,6 @@ namespace Server.Network
|
|||
return outputIdx;
|
||||
}
|
||||
|
||||
|
||||
public static int Compress(CircularBuffer<byte> input, CircularBuffer<byte> output)
|
||||
{
|
||||
if (input.Length > DefiniteOverflow)
|
||||
|
|
|
|||
|
|
@ -110,7 +110,6 @@ namespace Server.Network
|
|||
parentSerial = Serial.Zero;
|
||||
}
|
||||
|
||||
|
||||
var writer = new SpanWriter(stackalloc byte[15]);
|
||||
writer.Write((byte)0x2E); // Packet ID
|
||||
writer.Write(item.Serial);
|
||||
|
|
|
|||
|
|
@ -484,7 +484,6 @@ namespace Server
|
|||
break;
|
||||
}
|
||||
|
||||
|
||||
num = BinaryPrimitives.ReadUInt16BigEndian(ip.Slice(byteIndex, 2));
|
||||
byteIndex += 2;
|
||||
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -410,7 +410,6 @@ namespace Server.Engines.CannedEvil
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
// Justice reward
|
||||
var pm = (PlayerMobile)killer;
|
||||
for (var j = 0; j < pm.JusticeProtectors.Count; ++j)
|
||||
|
|
|
|||
|
|
@ -117,7 +117,6 @@ namespace Server.Gumps
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
public override void OnResponse(NetState sender, RelayInfo info)
|
||||
{
|
||||
object toSet = null;
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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]
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -975,7 +975,6 @@ namespace Server.Items
|
|||
|
||||
m_Blessed = GetSaveFlag(flags, SaveFlag.Blessed);
|
||||
|
||||
|
||||
if (Parent is Mobile m)
|
||||
{
|
||||
Attributes.AddStatBonuses(m);
|
||||
|
|
|
|||
|
|
@ -17,6 +17,11 @@
|
|||
"ruleArguments": [
|
||||
""
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Material",
|
||||
"type": "Server.Engines.BulkOrders.BulkMaterialType",
|
||||
"rule": "EnumMigrationRule"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
@ -13,7 +13,7 @@
|
|||
]
|
||||
},
|
||||
{
|
||||
"name": "Resource",
|
||||
"name": "RawResource",
|
||||
"type": "Server.Items.CraftResource",
|
||||
"rule": "EnumMigrationRule"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -13,7 +13,7 @@
|
|||
]
|
||||
},
|
||||
{
|
||||
"name": "Resource",
|
||||
"name": "RawResource",
|
||||
"type": "Server.Items.CraftResource",
|
||||
"rule": "EnumMigrationRule"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -117,7 +117,7 @@
|
|||
"rule": "EnumMigrationRule"
|
||||
},
|
||||
{
|
||||
"name": "Resource",
|
||||
"name": "RawResource",
|
||||
"type": "Server.Items.CraftResource",
|
||||
"usesSaveFlag": true,
|
||||
"rule": "EnumMigrationRule"
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@
|
|||
"type": "Server.Items.BaseClothing",
|
||||
"properties": [
|
||||
{
|
||||
"name": "Resource",
|
||||
"name": "RawResource",
|
||||
"type": "Server.Items.CraftResource",
|
||||
"usesSaveFlag": true,
|
||||
"rule": "EnumMigrationRule"
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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.");
|
||||
|
|
|
|||
|
|
@ -767,7 +767,6 @@ namespace Server.Mobiles
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
public void ClearQuestArrow() => m_QuestArrow = null;
|
||||
|
||||
public override void ToggleFlying()
|
||||
|
|
|
|||
|
|
@ -37,7 +37,6 @@ namespace Server.Network
|
|||
writer.Write((byte)0xBA); // Packet ID
|
||||
writer.Write(command);
|
||||
|
||||
|
||||
if (ns.HighSeas)
|
||||
{
|
||||
writer.Write((short)x);
|
||||
|
|
|
|||
|
|
@ -257,7 +257,6 @@ namespace Server.Spells
|
|||
return false;
|
||||
}
|
||||
|
||||
|
||||
public static bool GetEastToWest(IPoint3D from,IPoint3D target)
|
||||
{
|
||||
var dx = from.X - target.X;
|
||||
|
|
|
|||
|
|
@ -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");
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue