fix(content): Adds addons to code gen (#624)

* Codegens more addons.
* Fixes up some source generation issues.
This commit is contained in:
Kamron Batman 2021-08-14 16:53:18 -07:00 committed by GitHub
parent 360143478a
commit 2de4717390
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
42 changed files with 345 additions and 697 deletions

View file

@ -47,7 +47,7 @@ namespace SerializableMigration
return false;
}
ruleArguments = requiresParent ? new[] { "DeserializationRequiresParent" } : Array.Empty<string>();
ruleArguments = new[] { requiresParent ? "DeserializationRequiresParent" : "" };
return true;
}

View file

@ -1,6 +1,7 @@
namespace Server.Items
{
public class AbbatoirAddon : BaseAddon
[Serializable(0, false)]
public partial class AbbatoirAddon : BaseAddon
{
[Constructible]
public AbbatoirAddon()
@ -16,53 +17,18 @@ namespace Server.Items
AddComponent(new AddonComponent(0x1212), 1, 1, 0);
}
public AbbatoirAddon(Serial serial) : base(serial)
{
}
public override BaseAddonDeed Deed => new AbbatoirDeed();
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 AbbatoirDeed : BaseAddonDeed
[Serializable(0, false)]
public partial class AbbatoirDeed : BaseAddonDeed
{
[Constructible]
public AbbatoirDeed()
{
}
public AbbatoirDeed(Serial serial) : base(serial)
{
}
public override BaseAddon Addon => new AbbatoirAddon();
public override int LabelNumber => 1044329; // abbatoir
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();
}
}
}

View file

@ -3,110 +3,41 @@ using Server.Engines.Craft;
namespace Server.Items
{
[Anvil]
public class AnvilComponent : AddonComponent
[Serializable(0, false)]
public partial class AnvilComponent : AddonComponent
{
[Constructible]
public AnvilComponent(int itemID) : base(itemID)
{
}
public AnvilComponent(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();
}
}
[Forge]
public class ForgeComponent : AddonComponent
[Serializable(0, false)]
public partial class ForgeComponent : AddonComponent
{
[Constructible]
public ForgeComponent(int itemID) : base(itemID)
{
}
public ForgeComponent(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 LocalizedAddonComponent : AddonComponent
[Serializable(0, false)]
public partial class LocalizedAddonComponent : AddonComponent
{
private int m_LabelNumber;
[InvalidateProperties]
[SerializableField(0)]
[SerializableFieldAttr("[CommandProperty(AccessLevel.GameMaster)]")]
private int _number;
[Constructible]
public LocalizedAddonComponent(int itemID, int labelNumber) : base(itemID) => m_LabelNumber = labelNumber;
public LocalizedAddonComponent(int itemID, int labelNumber) : base(itemID) => _number = labelNumber;
public LocalizedAddonComponent(Serial serial) : base(serial)
{
}
[CommandProperty(AccessLevel.GameMaster)]
public int Number
{
get => m_LabelNumber;
set
{
m_LabelNumber = value;
InvalidateProperties();
}
}
public override int LabelNumber => m_LabelNumber;
public override void Serialize(IGenericWriter writer)
{
base.Serialize(writer);
writer.Write(0); // version
writer.Write(m_LabelNumber);
}
public override void Deserialize(IGenericReader reader)
{
base.Deserialize(reader);
var version = reader.ReadInt();
switch (version)
{
case 0:
{
m_LabelNumber = reader.ReadInt();
break;
}
}
}
public override int LabelNumber => _number;
}
public class AddonComponent : Item, IChoppable
[Serializable(1, false)]
public partial class AddonComponent : Item, IChoppable
{
private static readonly LightEntry[] m_Entries =
{
@ -171,15 +102,13 @@ namespace Server.Items
ApplyLightTo(this);
}
public AddonComponent(Serial serial) : base(serial)
{
}
[SerializableField(0)]
[SerializableFieldAttr("[CommandProperty(AccessLevel.GameMaster)]")]
public BaseAddon _addon;
[CommandProperty(AccessLevel.GameMaster)]
public BaseAddon Addon { get; set; }
[CommandProperty(AccessLevel.GameMaster)]
public Point3D Offset { get; set; }
[SerializableField(1)]
[SerializableFieldAttr("[CommandProperty(AccessLevel.GameMaster)]")]
public Point3D _offset;
[Hue, CommandProperty(AccessLevel.GameMaster)]
public override int Hue
@ -189,9 +118,9 @@ namespace Server.Items
{
base.Hue = value;
if (Addon?.ShareHue == true)
if (_addon?.ShareHue == true)
{
Addon.Hue = value;
_addon.Hue = value;
}
}
}
@ -201,9 +130,9 @@ namespace Server.Items
public void OnChop(Mobile from)
{
if (Addon != null && from.InRange(GetWorldLocation(), 3))
if (_addon != null && from.InRange(GetWorldLocation(), 3))
{
Addon.OnChop(from);
_addon.OnChop(from);
}
else
{
@ -213,22 +142,22 @@ namespace Server.Items
public override void OnDoubleClick(Mobile from)
{
Addon?.OnComponentUsed(this, from);
_addon?.OnComponentUsed(this, from);
}
public override void OnLocationChange(Point3D old)
{
if (Addon != null)
if (_addon != null)
{
Addon.Location = new Point3D(X - Offset.X, Y - Offset.Y, Z - Offset.Z);
_addon.Location = new Point3D(X - _offset.X, Y - _offset.Y, Z - _offset.Z);
}
}
public override void OnMapChange()
{
if (Addon != null)
if (_addon != null)
{
Addon.Map = Map;
_addon.Map = Map;
}
}
@ -236,47 +165,24 @@ namespace Server.Items
{
base.OnAfterDelete();
Addon?.Delete();
_addon?.Delete();
}
public override void Serialize(IGenericWriter writer)
private void Deserialize(IGenericReader reader, int version)
{
base.Serialize(writer);
writer.Write(1); // version
writer.Write(Addon);
writer.Write(Offset);
}
public override void Deserialize(IGenericReader reader)
{
base.Deserialize(reader);
var version = reader.ReadInt();
switch (version)
{
case 1:
case 0:
{
Addon = reader.ReadEntity<BaseAddon>();
Offset = reader.ReadPoint3D();
Addon?.OnComponentLoaded(this);
ApplyLightTo(this);
break;
}
}
if (version < 1 && Weight == 0)
{
Weight = -1;
}
}
[AfterDeserialization]
private void AfterDeserialization()
{
_addon?.OnComponentLoaded(this);
ApplyLightTo(this);
}
public static void ApplyLightTo(Item item)
{
if ((item.ItemData.Flags & TileFlag.LightSource) == 0)

View file

@ -3,7 +3,8 @@ using Server.ContextMenus;
namespace Server.Items
{
public class AddonContainerComponent : Item, IChoppable
[Serializable(0, false)]
public partial class AddonContainerComponent : Item, IChoppable
{
[Constructible]
public AddonContainerComponent(int itemID) : base(itemID)
@ -13,18 +14,16 @@ namespace Server.Items
AddonComponent.ApplyLightTo(this);
}
public AddonContainerComponent(Serial serial) : base(serial)
{
}
public virtual bool NeedsWall => false;
public virtual Point3D WallPosition => Point3D.Zero;
[CommandProperty(AccessLevel.GameMaster)]
public BaseAddonContainer Addon { get; set; }
[SerializableField(0)]
[SerializableFieldAttr("[CommandProperty(AccessLevel.GameMaster)]")]
public BaseAddonContainer _addon;
[CommandProperty(AccessLevel.GameMaster)]
public Point3D Offset { get; set; }
[SerializableField(1)]
[SerializableFieldAttr("[CommandProperty(AccessLevel.GameMaster)]")]
public Point3D _offset;
[Hue, CommandProperty(AccessLevel.GameMaster)]
public override int Hue
@ -34,18 +33,18 @@ namespace Server.Items
{
base.Hue = value;
if (Addon?.ShareHue == true)
if (_addon?.ShareHue == true)
{
Addon.Hue = value;
_addon.Hue = value;
}
}
}
public virtual void OnChop(Mobile from)
{
if (Addon != null && from.InRange(GetWorldLocation(), 3))
if (_addon != null && from.InRange(GetWorldLocation(), 3))
{
Addon.OnChop(from);
_addon.OnChop(from);
}
else
{
@ -53,39 +52,26 @@ namespace Server.Items
}
}
public override bool OnDragDrop(Mobile from, Item dropped)
{
if (Addon != null)
{
return Addon.OnDragDrop(from, dropped);
}
public override bool OnDragDrop(Mobile from, Item dropped) => _addon?.OnDragDrop(from, dropped) == true;
return false;
}
public override void OnDoubleClick(Mobile from)
{
Addon?.OnComponentUsed(this, from);
}
public override void OnDoubleClick(Mobile from) => _addon?.OnComponentUsed(this, @from);
public override void OnLocationChange(Point3D old)
{
if (Addon != null)
if (_addon != null)
{
Addon.Location = new Point3D(X - Offset.X, Y - Offset.Y, Z - Offset.Z);
_addon.Location = new Point3D(X - _offset.X, Y - _offset.Y, Z - _offset.Z);
}
}
public override void GetContextMenuEntries(Mobile from, List<ContextMenuEntry> list)
{
Addon?.GetContextMenuEntries(from, list);
}
public override void GetContextMenuEntries(Mobile from, List<ContextMenuEntry> list) =>
_addon?.GetContextMenuEntries(from, list);
public override void OnMapChange()
{
if (Addon != null)
if (_addon != null)
{
Addon.Map = Map;
_addon.Map = Map;
}
}
@ -93,73 +79,25 @@ namespace Server.Items
{
base.OnAfterDelete();
Addon?.Delete();
_addon?.Delete();
}
public override void Serialize(IGenericWriter writer)
[AfterDeserialization]
private void AfterDeserialization()
{
base.Serialize(writer);
writer.Write(0); // version
writer.Write(Addon);
writer.Write(Offset);
}
public override void Deserialize(IGenericReader reader)
{
base.Deserialize(reader);
var version = reader.ReadInt();
Addon = reader.ReadEntity<BaseAddonContainer>();
Offset = reader.ReadPoint3D();
Addon?.OnComponentLoaded(this);
_addon?.OnComponentLoaded(this);
AddonComponent.ApplyLightTo(this);
}
}
public class LocalizedContainerComponent : AddonContainerComponent
[Serializable(0, false)]
public partial class LocalizedContainerComponent : AddonContainerComponent
{
private int m_LabelNumber;
[SerializableField(0, setter: "private")]
private int _number;
public LocalizedContainerComponent(int itemID, int labelNumber) : base(itemID) => m_LabelNumber = labelNumber;
public LocalizedContainerComponent(int itemID, int labelNumber) : base(itemID) => _number = labelNumber;
public LocalizedContainerComponent(Serial serial) : base(serial)
{
}
public override int LabelNumber
{
get
{
if (m_LabelNumber > 0)
{
return m_LabelNumber;
}
return base.LabelNumber;
}
}
public override void Serialize(IGenericWriter writer)
{
base.Serialize(writer);
writer.Write(0); // version
writer.Write(m_LabelNumber);
}
public override void Deserialize(IGenericReader reader)
{
base.Deserialize(reader);
var version = reader.ReadInt();
m_LabelNumber = reader.ReadInt();
}
public override int LabelNumber => _number > 0 ? _number : base.LabelNumber;
}
}

View file

@ -1,6 +1,7 @@
namespace Server.Items
{
public class AlchemistTableEastAddon : BaseAddon
[Serializable(0)]
public partial class AlchemistTableEastAddon : BaseAddon
{
[Constructible]
public AlchemistTableEastAddon()
@ -8,53 +9,18 @@ namespace Server.Items
AddComponent(new AddonComponent(0x2DD3), 0, 0, 0);
}
public AlchemistTableEastAddon(Serial serial) : base(serial)
{
}
public override BaseAddonDeed Deed => new AlchemistTableEastDeed();
public override void Serialize(IGenericWriter writer)
{
base.Serialize(writer);
writer.WriteEncodedInt(1); // version
}
public override void Deserialize(IGenericReader reader)
{
base.Deserialize(reader);
var version = reader.ReadEncodedInt();
}
}
public class AlchemistTableEastDeed : BaseAddonDeed
[Serializable(0)]
public partial class AlchemistTableEastDeed : BaseAddonDeed
{
[Constructible]
public AlchemistTableEastDeed()
{
}
public AlchemistTableEastDeed(Serial serial) : base(serial)
{
}
public override BaseAddon Addon => new AlchemistTableEastAddon();
public override int LabelNumber => 1073397; // alchemist table (east)
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();
}
}
}

View file

@ -1,6 +1,7 @@
namespace Server.Items
{
public class AlchemistTableSouthAddon : BaseAddon
[Serializable(0)]
public partial class AlchemistTableSouthAddon : BaseAddon
{
[Constructible]
public AlchemistTableSouthAddon()
@ -8,53 +9,18 @@ namespace Server.Items
AddComponent(new AddonComponent(0x2DD4), 0, 0, 0);
}
public AlchemistTableSouthAddon(Serial serial) : base(serial)
{
}
public override BaseAddonDeed Deed => new AlchemistTableSouthDeed();
public override void Serialize(IGenericWriter writer)
{
base.Serialize(writer);
writer.WriteEncodedInt(1); // version
}
public override void Deserialize(IGenericReader reader)
{
base.Deserialize(reader);
var version = reader.ReadEncodedInt();
}
}
public class AlchemistTableSouthDeed : BaseAddonDeed
[Serializable(0)]
public partial class AlchemistTableSouthDeed : BaseAddonDeed
{
[Constructible]
public AlchemistTableSouthDeed()
{
}
public AlchemistTableSouthDeed(Serial serial) : base(serial)
{
}
public override BaseAddon Addon => new AlchemistTableSouthAddon();
public override int LabelNumber => 1073396; // alchemist table (south)
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();
}
}
}

View file

@ -1,6 +1,7 @@
namespace Server.Items
{
public class AnvilEastAddon : BaseAddon
[Serializable(0, false)]
public partial class AnvilEastAddon : BaseAddon
{
[Constructible]
public AnvilEastAddon()
@ -8,53 +9,18 @@ namespace Server.Items
AddComponent(new AnvilComponent(0xFAF), 0, 0, 0);
}
public AnvilEastAddon(Serial serial) : base(serial)
{
}
public override BaseAddonDeed Deed => new AnvilEastDeed();
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 AnvilEastDeed : BaseAddonDeed
[Serializable(0, false)]
public partial class AnvilEastDeed : BaseAddonDeed
{
[Constructible]
public AnvilEastDeed()
{
}
public AnvilEastDeed(Serial serial) : base(serial)
{
}
public override BaseAddon Addon => new AnvilEastAddon();
public override int LabelNumber => 1044333; // anvil (east)
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();
}
}
}

View file

@ -1,6 +1,7 @@
namespace Server.Items
{
public class AnvilSouthAddon : BaseAddon
[Serializable(0, false)]
public partial class AnvilSouthAddon : BaseAddon
{
[Constructible]
public AnvilSouthAddon()
@ -8,53 +9,18 @@ namespace Server.Items
AddComponent(new AnvilComponent(0xFB0), 0, 0, 0);
}
public AnvilSouthAddon(Serial serial) : base(serial)
{
}
public override BaseAddonDeed Deed => new AnvilSouthDeed();
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 AnvilSouthDeed : BaseAddonDeed
[Serializable(0, false)]
public partial class AnvilSouthDeed : BaseAddonDeed
{
[Constructible]
public AnvilSouthDeed()
{
}
public AnvilSouthDeed(Serial serial) : base(serial)
{
}
public override BaseAddon Addon => new AnvilSouthAddon();
public override int LabelNumber => 1044334; // anvil (south)
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();
}
}
}

View file

@ -1,6 +1,7 @@
namespace Server.Items
{
public class ArcaneBookshelfEastAddon : BaseAddon
[Serializable(0)]
public partial class ArcaneBookshelfEastAddon : BaseAddon
{
[Constructible]
public ArcaneBookshelfEastAddon()
@ -9,53 +10,18 @@ namespace Server.Items
AddComponent(new AddonComponent(0x3085), -1, 0, 0);
}
public ArcaneBookshelfEastAddon(Serial serial) : base(serial)
{
}
public override BaseAddonDeed Deed => new ArcaneBookshelfEastDeed();
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 ArcaneBookshelfEastDeed : BaseAddonDeed
[Serializable(0)]
public partial class ArcaneBookshelfEastDeed : BaseAddonDeed
{
[Constructible]
public ArcaneBookshelfEastDeed()
{
}
public ArcaneBookshelfEastDeed(Serial serial) : base(serial)
{
}
public override BaseAddon Addon => new ArcaneBookshelfEastAddon();
public override int LabelNumber => 1073371; // arcane bookshelf (east)
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();
}
}
}

View file

@ -1,6 +1,7 @@
namespace Server.Items
{
public class ArcaneBookshelfSouthAddon : BaseAddon
[Serializable(0)]
public partial class ArcaneBookshelfSouthAddon : BaseAddon
{
[Constructible]
public ArcaneBookshelfSouthAddon()
@ -9,53 +10,18 @@ namespace Server.Items
AddComponent(new AddonComponent(0x3086), 0, 1, 0);
}
public ArcaneBookshelfSouthAddon(Serial serial) : base(serial)
{
}
public override BaseAddonDeed Deed => new ArcaneBookshelfSouthDeed();
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 ArcaneBookshelfSouthDeed : BaseAddonDeed
[Serializable(0)]
public partial class ArcaneBookshelfSouthDeed : BaseAddonDeed
{
[Constructible]
public ArcaneBookshelfSouthDeed()
{
}
public ArcaneBookshelfSouthDeed(Serial serial) : base(serial)
{
}
public override BaseAddon Addon => new ArcaneBookshelfSouthAddon();
public override int LabelNumber => 1072871; // arcane bookshelf (south)
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();
}
}
}

View file

@ -1,6 +1,7 @@
namespace Server.Items
{
public class ArcaneCircleAddon : BaseAddon
[Serializable(1)]
public partial class ArcaneCircleAddon : BaseAddon
{
[Constructible]
public ArcaneCircleAddon()
@ -16,25 +17,10 @@ namespace Server.Items
AddComponent(new AddonComponent(0x307B), 1, 1, 0);
}
public ArcaneCircleAddon(Serial serial) : base(serial)
{
}
public override BaseAddonDeed Deed => new ArcaneCircleDeed();
public override void Serialize(IGenericWriter writer)
private void Deserialize(IGenericReader reader, int version)
{
base.Serialize(writer);
writer.WriteEncodedInt(1); // version
}
public override void Deserialize(IGenericReader reader)
{
base.Deserialize(reader);
var version = reader.ReadEncodedInt();
if (version == 0)
{
ValidationQueue<ArcaneCircleAddon>.Add(this);
@ -54,32 +40,15 @@ namespace Server.Items
}
}
public class ArcaneCircleDeed : BaseAddonDeed
[Serializable(0)]
public partial class ArcaneCircleDeed : BaseAddonDeed
{
[Constructible]
public ArcaneCircleDeed()
{
}
public ArcaneCircleDeed(Serial serial) : base(serial)
{
}
public override BaseAddon Addon => new ArcaneCircleAddon();
public override int LabelNumber => 1072703; // arcane circle
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();
}
}
}

View file

@ -1,6 +1,7 @@
namespace Server.Items
{
public class ArcanistStatueEastAddon : BaseAddon
[Serializable(0)]
public partial class ArcanistStatueEastAddon : BaseAddon
{
[Constructible]
public ArcanistStatueEastAddon()
@ -8,53 +9,18 @@ namespace Server.Items
AddComponent(new AddonComponent(0x2D0E), 0, 0, 0);
}
public ArcanistStatueEastAddon(Serial serial) : base(serial)
{
}
public override BaseAddonDeed Deed => new ArcanistStatueEastDeed();
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 ArcanistStatueEastDeed : BaseAddonDeed
[Serializable(0)]
public partial class ArcanistStatueEastDeed : BaseAddonDeed
{
[Constructible]
public ArcanistStatueEastDeed()
{
}
public ArcanistStatueEastDeed(Serial serial) : base(serial)
{
}
public override BaseAddon Addon => new ArcanistStatueEastAddon();
public override int LabelNumber => 1072886; // arcanist statue (east)
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();
}
}
}

View file

@ -1,6 +1,7 @@
namespace Server.Items
{
public class ArcanistStatueSouthAddon : BaseAddon
[Serializable(0)]
public partial class ArcanistStatueSouthAddon : BaseAddon
{
[Constructible]
public ArcanistStatueSouthAddon()
@ -8,53 +9,18 @@ namespace Server.Items
AddComponent(new AddonComponent(0x2D0F), 0, 0, 0);
}
public ArcanistStatueSouthAddon(Serial serial) : base(serial)
{
}
public override BaseAddonDeed Deed => new ArcanistStatueSouthDeed();
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 ArcanistStatueSouthDeed : BaseAddonDeed
[Serializable(0)]
public partial class ArcanistStatueSouthDeed : BaseAddonDeed
{
[Constructible]
public ArcanistStatueSouthDeed()
{
}
public ArcanistStatueSouthDeed(Serial serial) : base(serial)
{
}
public override BaseAddon Addon => new ArcanistStatueSouthAddon();
public override int LabelNumber => 1072885; // arcanist statue (south)
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();
}
}
}

View file

@ -4,8 +4,9 @@ using Server.Network;
namespace Server.Items
{
[Serializable(0, false)]
[FlippableAttribute(0x100A /*East*/, 0x100B /*South*/)]
public class ArcheryButte : AddonComponent
public partial class ArcheryButte : AddonComponent
{
private static readonly TimeSpan UseDelay = TimeSpan.FromSeconds(2.0);
@ -14,19 +15,17 @@ namespace Server.Items
[Constructible]
public ArcheryButte(int itemID = 0x100A) : base(itemID)
{
MinSkill = -25.0;
MaxSkill = +25.0;
_minSkill = -25.0;
_maxSkill = +25.0;
}
public ArcheryButte(Serial serial) : base(serial)
{
}
[SerializableField(0)]
[SerializableFieldAttr("[CommandProperty(AccessLevel.GameMaster)]")]
private double _minSkill;
[CommandProperty(AccessLevel.GameMaster)]
public double MinSkill { get; set; }
[CommandProperty(AccessLevel.GameMaster)]
public double MaxSkill { get; set; }
[SerializableField(1)]
[SerializableFieldAttr("[CommandProperty(AccessLevel.GameMaster)]")]
private double _maxSkill;
[CommandProperty(AccessLevel.GameMaster)]
public DateTime LastUse { get; set; }
@ -38,15 +37,17 @@ namespace Server.Items
set => ItemID = value ? 0x100A : 0x100B;
}
[CommandProperty(AccessLevel.GameMaster)]
public int Arrows { get; set; }
[SerializableField(2)]
[SerializableFieldAttr("[CommandProperty(AccessLevel.GameMaster)]")]
private int _arrows;
[CommandProperty(AccessLevel.GameMaster)]
public int Bolts { get; set; }
[SerializableField(3)]
[SerializableFieldAttr("[CommandProperty(AccessLevel.GameMaster)]")]
private int _bolts;
public override void OnDoubleClick(Mobile from)
{
if ((Arrows > 0 || Bolts > 0) && from.InRange(GetWorldLocation(), 1))
if ((_arrows > 0 || _bolts > 0) && from.InRange(GetWorldLocation(), 1))
{
Gather(from);
}
@ -60,14 +61,14 @@ namespace Server.Items
{
from.LocalOverheadMessage(MessageType.Regular, 0x3B2, 500592); // You gather the arrows and bolts.
if (Arrows > 0)
if (_arrows > 0)
{
from.AddToBackpack(new Arrow(Arrows));
from.AddToBackpack(new Arrow(_arrows));
}
if (Bolts > 0)
if (_bolts > 0)
{
from.AddToBackpack(new Bolt(Bolts));
from.AddToBackpack(new Bolt(_bolts));
}
Arrows = 0;
@ -90,7 +91,7 @@ namespace Server.Items
public void Fire(Mobile from)
{
if (!(from.Weapon is BaseRanged bow))
if (@from.Weapon is not BaseRanged bow)
{
SendLocalizedMessageTo(from, 500593); // You must practice with ranged weapons on this.
return;
@ -180,7 +181,7 @@ namespace Server.Items
var se = GetEntryFor(from);
if (!from.CheckSkill(bow.Skill, MinSkill, MaxSkill))
if (!from.CheckSkill(bow.Skill, _minSkill, _maxSkill))
{
from.PlaySound(bow.MissSound);
@ -231,7 +232,7 @@ namespace Server.Items
splitScore = 5;
}
var split = isKnown && (Arrows + Bolts) * 0.02 > Utility.RandomDouble();
var split = isKnown && (_arrows + _bolts) * 0.02 > Utility.RandomDouble();
if (split)
{
@ -268,41 +269,13 @@ namespace Server.Items
}
}
public override void Serialize(IGenericWriter writer)
[AfterDeserialization]
private void AfterDeserialization()
{
base.Serialize(writer);
writer.Write(0);
writer.Write(MinSkill);
writer.Write(MaxSkill);
writer.Write(Arrows);
writer.Write(Bolts);
}
public override void Deserialize(IGenericReader reader)
{
base.Deserialize(reader);
var version = reader.ReadInt();
switch (version)
if (_minSkill == 0.0 && _maxSkill == 30.0)
{
case 0:
{
MinSkill = reader.ReadDouble();
MaxSkill = reader.ReadDouble();
Arrows = reader.ReadInt();
Bolts = reader.ReadInt();
if (MinSkill == 0.0 && MaxSkill == 30.0)
{
MinSkill = -25.0;
MaxSkill = +25.0;
}
break;
}
_minSkill = -25.0;
_maxSkill = +25.0;
}
}
@ -320,7 +293,8 @@ namespace Server.Items
}
}
public class ArcheryButteAddon : BaseAddon
[Serializable(0, false)]
public partial class ArcheryButteAddon : BaseAddon
{
[Constructible]
public ArcheryButteAddon()
@ -328,53 +302,18 @@ namespace Server.Items
AddComponent(new ArcheryButte(), 0, 0, 0);
}
public ArcheryButteAddon(Serial serial) : base(serial)
{
}
public override BaseAddonDeed Deed => new ArcheryButteDeed();
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 ArcheryButteDeed : BaseAddonDeed
[Serializable(0, false)]
public partial class ArcheryButteDeed : BaseAddonDeed
{
[Constructible]
public ArcheryButteDeed()
{
}
public ArcheryButteDeed(Serial serial) : base(serial)
{
}
public override BaseAddon Addon => new ArcheryButteAddon();
public override int LabelNumber => 1024106; // archery butte
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();
}
}
}

View file

@ -0,0 +1,5 @@
{
"version": 0,
"type": "Server.Items.AbbatoirAddon",
"properties": []
}

View file

@ -0,0 +1,5 @@
{
"version": 0,
"type": "Server.Items.AbbatoirDeed",
"properties": []
}

View file

@ -0,0 +1,20 @@
{
"version": 1,
"type": "Server.Items.AddonComponent",
"properties": [
{
"name": "Addon",
"type": "Server.Items.BaseAddon",
"rule": "SerializableInterfaceMigrationRule",
"ruleArguments": []
},
{
"name": "Offset",
"type": "Server.Point3D",
"rule": "PrimitiveUOTypeMigrationRule",
"ruleArguments": [
"Point3D"
]
}
]
}

View file

@ -0,0 +1,20 @@
{
"version": 0,
"type": "Server.Items.AddonContainerComponent",
"properties": [
{
"name": "Addon",
"type": "Server.Items.BaseAddonContainer",
"rule": "SerializableInterfaceMigrationRule",
"ruleArguments": []
},
{
"name": "Offset",
"type": "Server.Point3D",
"rule": "PrimitiveUOTypeMigrationRule",
"ruleArguments": [
"Point3D"
]
}
]
}

View file

@ -0,0 +1,5 @@
{
"version": 0,
"type": "Server.Items.AlchemistTableEastAddon",
"properties": []
}

View file

@ -0,0 +1,5 @@
{
"version": 0,
"type": "Server.Items.AlchemistTableEastDeed",
"properties": []
}

View file

@ -0,0 +1,5 @@
{
"version": 0,
"type": "Server.Items.AlchemistTableSouthAddon",
"properties": []
}

View file

@ -0,0 +1,5 @@
{
"version": 0,
"type": "Server.Items.AlchemistTableSouthDeed",
"properties": []
}

View file

@ -0,0 +1,5 @@
{
"version": 0,
"type": "Server.Items.AnvilComponent",
"properties": []
}

View file

@ -0,0 +1,5 @@
{
"version": 0,
"type": "Server.Items.AnvilEastAddon",
"properties": []
}

View file

@ -0,0 +1,5 @@
{
"version": 0,
"type": "Server.Items.AnvilEastDeed",
"properties": []
}

View file

@ -0,0 +1,5 @@
{
"version": 0,
"type": "Server.Items.AnvilSouthAddon",
"properties": []
}

View file

@ -0,0 +1,5 @@
{
"version": 0,
"type": "Server.Items.AnvilSouthDeed",
"properties": []
}

View file

@ -0,0 +1,5 @@
{
"version": 0,
"type": "Server.Items.ArcaneBookshelfEastAddon",
"properties": []
}

View file

@ -0,0 +1,5 @@
{
"version": 0,
"type": "Server.Items.ArcaneBookshelfEastDeed",
"properties": []
}

View file

@ -0,0 +1,5 @@
{
"version": 0,
"type": "Server.Items.ArcaneBookshelfSouthAddon",
"properties": []
}

View file

@ -0,0 +1,5 @@
{
"version": 0,
"type": "Server.Items.ArcaneBookshelfSouthDeed",
"properties": []
}

View file

@ -0,0 +1,5 @@
{
"version": 1,
"type": "Server.Items.ArcaneCircleAddon",
"properties": []
}

View file

@ -0,0 +1,5 @@
{
"version": 0,
"type": "Server.Items.ArcaneCircleDeed",
"properties": []
}

View file

@ -0,0 +1,5 @@
{
"version": 0,
"type": "Server.Items.ArcanistStatueEastAddon",
"properties": []
}

View file

@ -0,0 +1,5 @@
{
"version": 0,
"type": "Server.Items.ArcanistStatueEastDeed",
"properties": []
}

View file

@ -0,0 +1,5 @@
{
"version": 0,
"type": "Server.Items.ArcanistStatueSouthAddon",
"properties": []
}

View file

@ -0,0 +1,5 @@
{
"version": 0,
"type": "Server.Items.ArcanistStatueSouthDeed",
"properties": []
}

View file

@ -0,0 +1,30 @@
{
"version": 0,
"type": "Server.Items.ArcheryButte",
"properties": [
{
"name": "MinSkill",
"type": "double",
"rule": "PrimitiveTypeMigrationRule",
"ruleArguments": []
},
{
"name": "MaxSkill",
"type": "double",
"rule": "PrimitiveTypeMigrationRule",
"ruleArguments": []
},
{
"name": "Arrows",
"type": "int",
"rule": "PrimitiveTypeMigrationRule",
"ruleArguments": []
},
{
"name": "Bolts",
"type": "int",
"rule": "PrimitiveTypeMigrationRule",
"ruleArguments": []
}
]
}

View file

@ -0,0 +1,5 @@
{
"version": 0,
"type": "Server.Items.ArcheryButteAddon",
"properties": []
}

View file

@ -0,0 +1,5 @@
{
"version": 0,
"type": "Server.Items.ArcheryButteDeed",
"properties": []
}

View file

@ -0,0 +1,5 @@
{
"version": 0,
"type": "Server.Items.ForgeComponent",
"properties": []
}

View file

@ -0,0 +1,12 @@
{
"version": 0,
"type": "Server.Items.LocalizedAddonComponent",
"properties": [
{
"name": "Number",
"type": "int",
"rule": "PrimitiveTypeMigrationRule",
"ruleArguments": []
}
]
}