feat(throwing): add remaining SA throwing artifacts (add-only)

Add the four remaining named Stygian Abyss throwing artifacts — Abyss Reaver,
Storm Caller, Banshee's Call, and Wind of Corruption — as item definitions,
stat-for-stat from ServUO. They are [add-only for now: their in-world sources
(the Into the Void quest for Abyss Reaver; the renowned/boss creatures for the
others) are deferred to future efforts, but the items themselves are useful to
have defined.

Storm Caller's ServUO BattleLust attribute is left as a TODO — BattleLust is
not yet implemented in ModernUO's AosWeaponAttribute set. (The human Bow
variant WindOfCorruptionHuman is out of throwing scope and not included.)

Co-Authored-By: Joe Valentine <jwvalentine@outlook.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
Kamron Batman 2026-07-03 00:07:58 -07:00
parent 8c6eab5fca
commit 6e486fa4e2
8 changed files with 112 additions and 0 deletions

View file

@ -0,0 +1,17 @@
using ModernUO.Serialization;
namespace Server.Items;
[SerializationGenerator(0)]
public partial class AbyssReaver : Cyclone
{
[Constructible]
public AbyssReaver()
{
SkillBonuses.SetValues(0, SkillName.Throwing, Utility.RandomMinMax(5, 10));
Attributes.WeaponDamage = Utility.RandomMinMax(25, 35);
Slayer = SlayerName.Exorcism;
}
public override int LabelNumber => 1112694; // Abyss Reaver
}

View file

@ -0,0 +1,25 @@
using ModernUO.Serialization;
namespace Server.Items;
[SerializationGenerator(0)]
public partial class BansheesCall : Cyclone
{
[Constructible]
public BansheesCall()
{
Hue = 1266;
WeaponAttributes.HitHarm = 40;
WeaponAttributes.HitLeechHits = 45;
Attributes.BonusStr = 5;
Attributes.WeaponSpeed = 30;
Attributes.WeaponDamage = 50;
Velocity = 35;
AosElementDamages.Cold = 100;
}
public override int LabelNumber => 1113529; // Banshee's Call
public override int InitMinHits => 255;
public override int InitMaxHits => 255;
}

View file

@ -0,0 +1,30 @@
using ModernUO.Serialization;
namespace Server.Items;
[SerializationGenerator(0)]
public partial class StormCaller : Boomerang
{
[Constructible]
public StormCaller()
{
Hue = 456;
//TODO Implement BattleLust
//WeaponAttributes.BattleLust = 1;
WeaponAttributes.HitLightning = 40;
WeaponAttributes.HitLowerDefend = 30;
Attributes.BonusStr = 5;
Attributes.WeaponSpeed = 30;
Attributes.WeaponDamage = 40;
AosElementDamages.Physical = 20;
AosElementDamages.Fire = 20;
AosElementDamages.Cold = 20;
AosElementDamages.Poison = 20;
AosElementDamages.Energy = 20;
}
public override int LabelNumber => 1113530; // Storm Caller
public override int InitMinHits => 255;
public override int InitMaxHits => 255;
}

View file

@ -0,0 +1,24 @@
using ModernUO.Serialization;
namespace Server.Items;
[SerializationGenerator(0)]
public partial class WindOfCorruption : Cyclone
{
[Constructible]
public WindOfCorruption()
{
Hue = 1171;
WeaponAttributes.HitLeechStam = 40;
WeaponAttributes.HitLowerDefend = 40;
Attributes.WeaponSpeed = 30;
Attributes.WeaponDamage = 50;
Slayer = SlayerName.Fey;
AosElementDamages.Chaos = 100;
}
public override int LabelNumber => 1150358; // Wind of Corruption
public override int InitMinHits => 255;
public override int InitMaxHits => 255;
}

View file

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

View file

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

View file

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

View file

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