Follow-up to the gargoyle Throwing work (#2510/#2512/#2514). Ports two Stygian Abyss creatures from ServUO so two of the throwing artifacts finally have a real OSI drop source instead of being `[add`-only. ## Changes - **`Raptor`** and **`StoneSlith`** — ported stat-for-stat from ServUO. They **spawn automatically**: `Distribution/Data/Spawns/post-uoml/termur/TerMur.json` already contained Raptor/StoneSlith spawner entries referencing these class names, so no spawn-file edits were needed. - **`RaptorClaw`** (Boomerang-based) and **`StoneSlithClaw`** (Cyclone-based) artifacts, dropped from each creature's `OnDeath` at ServUO's 0.5% rate (uncontrolled only). - StoneSlith retains its `GraspingClaw` monster ability; both use `BleedAttack`. ## ModernUO idioms Default range perception (16) / fight range, derived `GetSpeeds` (no `SetSpeed`), `[SerializationGenerator(0)]` codegen, collection-expression arrays. ## Documented omissions vs ServUO Flagged as TODO in-code — all are content missing from ModernUO, not silent drops: Raptor's friend-spawn timer + its 25% `AncientPotteryFragments` drop; StoneSlith's `TailSwipe`, `DragonBlood`, and `SlithEye`/`TatteredAncientScroll`/`AncientPotteryFragments` drops; plus `HideType.Horned/Spined` and `PackInstinct.Ostard` (no ModernUO equivalents yet). ## Not included The other three throwing artifacts (Storm Caller, Banshee's Call, Wind of Corruption) drop from renowned/boss creatures via a `BaseRenowned` artifact-list system that doesn't exist in ModernUO yet — a separate, larger effort. AbyssReaver stays with the (deferred) Into-the-Void quest. Verified: server builds clean; throwing suite 14/14.
53 lines
1.7 KiB
C#
53 lines
1.7 KiB
C#
using System;
|
|
|
|
namespace Server.Mobiles;
|
|
|
|
public static class MonsterAbilities
|
|
{
|
|
public static MonsterAbility[] Empty => Array.Empty<MonsterAbility>();
|
|
|
|
// Fire Breath
|
|
public static FireBreath FireBreath => new();
|
|
public static ChaosBreath ChaosBreath => new();
|
|
public static ColdBreath ColdBreath => new();
|
|
|
|
// Resistance Debuffs
|
|
public static GraspingClaw GraspingClaw => new();
|
|
public static TailSwipe TailSwipe => new();
|
|
public static RuneCorruption RuneCorruption => new();
|
|
public static FanningFire FanningFire => new(0.05, -10, 35, 45);
|
|
|
|
// Summon Undead
|
|
public static SummonSkeletonsCounter SummonSkeletonsCounter => new();
|
|
public static SummonLesserUndeadCounter SummonLesserUndeadCounter => new();
|
|
|
|
// Summon Pixies
|
|
public static SummonPixiesCounter SummonPixiesCounter => new();
|
|
|
|
// Stun
|
|
public static ColossalBlow ColossalBlow => new();
|
|
|
|
// Poison
|
|
public static PoisonGasCounter PoisonGasCounter => new();
|
|
public static PoisonGasAreaAttack PoisonGasAreaAttack => new();
|
|
|
|
// Explosions
|
|
public static DeathExplosion DeathExplosion => new();
|
|
|
|
// Direct attack counters
|
|
public static ThrowHatchetCounter ThrowHatchetCounter => new();
|
|
public static EnergyBoltCounter EnergyBoltCounter => new();
|
|
public static FanThrowCounter FanThrowCounter => new();
|
|
|
|
public static DestroyEquipment DestroyEquipment => new();
|
|
|
|
// Life Drain
|
|
public static DrainLifeAreaAttack DrainLifeAreaAttack => new();
|
|
public static DrainLifeAttack DrainLifeAttack => new();
|
|
|
|
public static MagicalBarrier MagicalBarrier => new();
|
|
|
|
public static ReflectPhysicalDamage ReflectPhysicalDamage => new();
|
|
|
|
public static BloodBathAttack BloodBathAttack => new();
|
|
}
|