Skip to content

Add skeleton archer #115

@AtlantisPleb

Description

@AtlantisPleb

Summary

  • Add a ranged unit: a Skeleton Archer that shoots physical projectiles (arrows) from a bow.
  • Use the SRD Skeleton stat block as the basis for attributes and defenses; attacks are ranged bow shots per SRD (no burning or magic effects).

Goals

  • Server-authoritative behavior only; client is presentation.
  • Ranged engagement: prefers to attack at distance, minimal melee logic.
  • Deterministic projectiles and damage; respect existing perf/determinism rules.

Acceptance Criteria

  • A new Undead archetype “Skeleton Archer” spawns and uses a bow-like ranged attack that fires a projectile toward targets within range.
  • Projectile behaves like a physical shot (no DoT, no burn); applies damage on hit and despawns.
  • AI engages at range: will stand and fire when in range and line of fire; no kiting required in v1.
  • Uses SRD Skeleton stats (HP/AC/speeds/traits/resistances) and ranged attack profile. Ensure NOTICE and SRD docs are updated when stats are committed.
  • Unit tests cover: projectile spawn, hit/damage application at range, snapshot correctness.

Tasks

  • Data/schema
    • Add an archetype entry for SkeletonArcher under data_runtime (stats sourced from SRD Skeleton).
    • Add a projectile spec for Arrow (speed/ttl/damage) if we model arrows as projectiles distinct from spells.
  • Server_core
    • Add ProjKind::Arrow (or reuse Firebolt path with no burn) and specs in projectile_spec().
    • Hook Arrow into projectile integration/collision (no special AoE; single-hit segment/cylinder like Bolt).
    • Add a simple ranged AI path that, when hostile and in range, enqueues an Arrow shot at its target.
    • Ensure ActorSnapshot v2 continues to exclude projectiles from actors and carries Arrow in projectiles.
  • Renderer/HUD (minimal)
    • No new VFX required for v1; re-use existing hit FX or add a tiny impact spark if desired.
    • Ensure HUD damage/HP bars reflect server replication only.
  • Tests
    • Arrow hits hostile at range: spawns, steps, damages target, projectile despawns.
    • Snapshot contains no lingering Arrow projectiles after hit.

Notes

  • Do not copy SRD text directly into code; implement values per SRD and ensure proper attribution (NOTICE and docs/gdd/03-srd/*) when stats are added.
  • If we later add a specific skeleton archer model/animation, track that in a separate asset issue and keep this issue focused on server behavior + minimal presentation.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions