fix(codegen): Codegens wands (#716)

This commit is contained in:
Michael Dijkstra 2021-08-22 18:30:27 +10:00 committed by GitHub
parent 957e5fd4e1
commit 8b0eb1aa79
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
24 changed files with 110 additions and 281 deletions

View file

@ -21,11 +21,18 @@ namespace Server.Items
ManaDraining
}
public abstract class BaseWand : BaseBashing
[Serializable(0, false)]
public abstract partial class BaseWand : BaseBashing
{
private int m_Charges;
[InvalidateProperties]
[SerializableFieldAttr("[CommandProperty(AccessLevel.GameMaster)]")]
[SerializableField(0)]
private WandEffect _wandEffect;
private WandEffect m_WandEffect;
[InvalidateProperties]
[SerializableFieldAttr("[CommandProperty(AccessLevel.GameMaster)]")]
[SerializableField(1)]
private int _charges;
public BaseWand(WandEffect effect, int minCharges, int maxCharges) : base(
Utility.RandomList(
@ -37,17 +44,13 @@ namespace Server.Items
)
{
Weight = 1.0;
Effect = effect;
WandEffect = effect;
Charges = Utility.RandomMinMax(minCharges, maxCharges);
Attributes.SpellChanneling = 1;
Attributes.CastSpeed = -1;
WeaponAttributes.MageWeapon = Utility.RandomMinMax(1, 10);
}
public BaseWand(Serial serial) : base(serial)
{
}
public override WeaponAbility PrimaryAbility => WeaponAbility.Dismount;
public override WeaponAbility SecondaryAbility => WeaponAbility.Disarm;
@ -67,28 +70,6 @@ namespace Server.Items
public virtual TimeSpan GetUseDelay => TimeSpan.FromSeconds(4.0);
[CommandProperty(AccessLevel.GameMaster)]
public WandEffect Effect
{
get => m_WandEffect;
set
{
m_WandEffect = value;
InvalidateProperties();
}
}
[CommandProperty(AccessLevel.GameMaster)]
public int Charges
{
get => m_Charges;
set
{
m_Charges = value;
InvalidateProperties();
}
}
public void ConsumeCharge(Mobile from)
{
--Charges;
@ -142,72 +123,44 @@ namespace Server.Items
}
}
public override void Serialize(IGenericWriter writer)
{
base.Serialize(writer);
writer.Write(0); // version
writer.Write((int)m_WandEffect);
writer.Write(m_Charges);
}
public override void Deserialize(IGenericReader reader)
{
base.Deserialize(reader);
var version = reader.ReadInt();
switch (version)
{
case 0:
{
m_WandEffect = (WandEffect)reader.ReadInt();
m_Charges = reader.ReadInt();
break;
}
}
}
public override void GetProperties(ObjectPropertyList list)
{
base.GetProperties(list);
switch (m_WandEffect)
switch (_wandEffect)
{
case WandEffect.Clumsiness:
list.Add(1017326, m_Charges.ToString());
list.Add(1017326, _charges.ToString());
break; // clumsiness charges: ~1_val~
case WandEffect.Identification:
list.Add(1017350, m_Charges.ToString());
list.Add(1017350, _charges.ToString());
break; // identification charges: ~1_val~
case WandEffect.Healing:
list.Add(1017329, m_Charges.ToString());
list.Add(1017329, _charges.ToString());
break; // healing charges: ~1_val~
case WandEffect.Feeblemindedness:
list.Add(1017327, m_Charges.ToString());
list.Add(1017327, _charges.ToString());
break; // feeblemind charges: ~1_val~
case WandEffect.Weakness:
list.Add(1017328, m_Charges.ToString());
list.Add(1017328, _charges.ToString());
break; // weakness charges: ~1_val~
case WandEffect.MagicArrow:
list.Add(1060492, m_Charges.ToString());
list.Add(1060492, _charges.ToString());
break; // magic arrow charges: ~1_val~
case WandEffect.Harming:
list.Add(1017334, m_Charges.ToString());
list.Add(1017334, _charges.ToString());
break; // harm charges: ~1_val~
case WandEffect.Fireball:
list.Add(1060487, m_Charges.ToString());
list.Add(1060487, _charges.ToString());
break; // fireball charges: ~1_val~
case WandEffect.GreaterHealing:
list.Add(1017330, m_Charges.ToString());
list.Add(1017330, _charges.ToString());
break; // greater healing charges: ~1_val~
case WandEffect.Lightning:
list.Add(1060491, m_Charges.ToString());
list.Add(1060491, _charges.ToString());
break; // lightning charges: ~1_val~
case WandEffect.ManaDraining:
list.Add(1017339, m_Charges.ToString());
list.Add(1017339, _charges.ToString());
break; // mana drain charges: ~1_val~
}
}
@ -234,7 +187,7 @@ namespace Server.Items
}
else
{
var num = m_WandEffect switch
var num = _wandEffect switch
{
WandEffect.Clumsiness => 3002011,
WandEffect.Identification => 1044063,
@ -252,7 +205,7 @@ namespace Server.Items
if (num > 0)
{
attrs.Add(new EquipInfoAttribute(num, m_Charges));
attrs.Add(new EquipInfoAttribute(num, _charges));
}
}

View file

@ -2,31 +2,14 @@ using Server.Spells.First;
namespace Server.Items
{
public class ClumsyWand : BaseWand
[Serializable(0, false)]
public partial class ClumsyWand : BaseWand
{
[Constructible]
public ClumsyWand() : base(WandEffect.Clumsiness, 5, 30)
{
}
public ClumsyWand(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 override void OnWandUse(Mobile from)
{
Cast(new ClumsySpell(from, this));

View file

@ -2,31 +2,14 @@ using Server.Spells.First;
namespace Server.Items
{
public class FeebleWand : BaseWand
[Serializable(0, false)]
public partial class FeebleWand : BaseWand
{
[Constructible]
public FeebleWand() : base(WandEffect.Feeblemindedness, 5, 30)
{
}
public FeebleWand(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 override void OnWandUse(Mobile from)
{
Cast(new FeeblemindSpell(from, this));

View file

@ -2,31 +2,14 @@ using Server.Spells.Third;
namespace Server.Items
{
public class FireballWand : BaseWand
[Serializable(0, false)]
public partial class FireballWand : BaseWand
{
[Constructible]
public FireballWand() : base(WandEffect.Fireball, 5, Core.ML ? 109 : 15)
{
}
public FireballWand(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 override void OnWandUse(Mobile from)
{
Cast(new FireballSpell(from, this));

View file

@ -2,31 +2,14 @@ using Server.Spells.Fourth;
namespace Server.Items
{
public class GreaterHealWand : BaseWand
[Serializable(0, false)]
public partial class GreaterHealWand : BaseWand
{
[Constructible]
public GreaterHealWand() : base(WandEffect.GreaterHealing, 1, Core.ML ? 109 : 5)
{
}
public GreaterHealWand(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 override void OnWandUse(Mobile from)
{
Cast(new GreaterHealSpell(from, this));

View file

@ -2,31 +2,14 @@ using Server.Spells.Second;
namespace Server.Items
{
public class HarmWand : BaseWand
[Serializable(0, false)]
public partial class HarmWand : BaseWand
{
[Constructible]
public HarmWand() : base(WandEffect.Harming, 5, Core.ML ? 109 : 30)
{
}
public HarmWand(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 override void OnWandUse(Mobile from)
{
Cast(new HarmSpell(from, this));

View file

@ -2,31 +2,14 @@ using Server.Spells.First;
namespace Server.Items
{
public class HealWand : BaseWand
[Serializable(0, false)]
public partial class HealWand : BaseWand
{
[Constructible]
public HealWand() : base(WandEffect.Healing, 10, Core.ML ? 109 : 25)
{
}
public HealWand(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 override void OnWandUse(Mobile from)
{
Cast(new HealSpell(from, this));

View file

@ -2,33 +2,16 @@ using System;
namespace Server.Items
{
public class IDWand : BaseWand
[Serializable(0, false)]
public partial class IDWand : BaseWand
{
[Constructible]
public IDWand() : base(WandEffect.Identification, 25, 175)
{
}
public IDWand(Serial serial) : base(serial)
{
}
public override TimeSpan GetUseDelay => TimeSpan.Zero;
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 override bool OnWandTarget(Mobile from, object o)
{
if (o is Item item)

View file

@ -2,31 +2,14 @@ using Server.Spells.Fourth;
namespace Server.Items
{
public class LightningWand : BaseWand
[Serializable(0, false)]
public partial class LightningWand : BaseWand
{
[Constructible]
public LightningWand() : base(WandEffect.Lightning, 5, Core.ML ? 109 : 20)
{
}
public LightningWand(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 override void OnWandUse(Mobile from)
{
Cast(new LightningSpell(from, this));

View file

@ -2,31 +2,14 @@ using Server.Spells.First;
namespace Server.Items
{
public class MagicArrowWand : BaseWand
[Serializable(0, false)]
public partial class MagicArrowWand : BaseWand
{
[Constructible]
public MagicArrowWand() : base(WandEffect.MagicArrow, 5, Core.ML ? 109 : 30)
{
}
public MagicArrowWand(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 override void OnWandUse(Mobile from)
{
Cast(new MagicArrowSpell(from, this));

View file

@ -2,31 +2,14 @@ using Server.Spells.Fourth;
namespace Server.Items
{
public class ManaDrainWand : BaseWand
[Serializable(0, false)]
public partial class ManaDrainWand : BaseWand
{
[Constructible]
public ManaDrainWand() : base(WandEffect.ManaDraining, 5, 30)
{
}
public ManaDrainWand(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 override void OnWandUse(Mobile from)
{
Cast(new ManaDrainSpell(from, this));

View file

@ -2,31 +2,14 @@ using Server.Spells.First;
namespace Server.Items
{
public class WeaknessWand : BaseWand
[Serializable(0, false)]
public partial class WeaknessWand : BaseWand
{
[Constructible]
public WeaknessWand() : base(WandEffect.Weakness, 5, 30)
{
}
public WeaknessWand(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 override void OnWandUse(Mobile from)
{
Cast(new WeakenSpell(from, this));

View file

@ -0,0 +1,19 @@
{
"version": 0,
"type": "Server.Items.BaseWand",
"properties": [
{
"name": "WandEffect",
"type": "Server.Items.WandEffect",
"rule": "EnumMigrationRule"
},
{
"name": "Charges",
"type": "int",
"rule": "PrimitiveTypeMigrationRule",
"ruleArguments": [
""
]
}
]
}

View file

@ -0,0 +1,4 @@
{
"version": 0,
"type": "Server.Items.ClumsyWand"
}

View file

@ -0,0 +1,4 @@
{
"version": 0,
"type": "Server.Items.FeebleWand"
}

View file

@ -0,0 +1,4 @@
{
"version": 0,
"type": "Server.Items.FireballWand"
}

View file

@ -0,0 +1,4 @@
{
"version": 0,
"type": "Server.Items.GreaterHealWand"
}

View file

@ -0,0 +1,4 @@
{
"version": 0,
"type": "Server.Items.HarmWand"
}

View file

@ -0,0 +1,4 @@
{
"version": 0,
"type": "Server.Items.HealWand"
}

View file

@ -0,0 +1,4 @@
{
"version": 0,
"type": "Server.Items.IDWand"
}

View file

@ -0,0 +1,4 @@
{
"version": 0,
"type": "Server.Items.LightningWand"
}

View file

@ -0,0 +1,4 @@
{
"version": 0,
"type": "Server.Items.MagicArrowWand"
}

View file

@ -0,0 +1,4 @@
{
"version": 0,
"type": "Server.Items.ManaDrainWand"
}

View file

@ -0,0 +1,4 @@
{
"version": 0,
"type": "Server.Items.WeaknessWand"
}