Skip to content

Implement actors, stats, effects, death, and respawn #48

Description

@zoeyrose

Outcome

Provide the minimum living-entity model for players and monsters while keeping derived values, timers, and lifecycle transitions deterministic and server-authoritative.

Scope and invariants

  • Define base/derived stats, protections, resource pools, regeneration, movement capability, status effects, immunities, and stable effect-source attribution.
  • Use typed modifier aggregation with explicit stacking/priority rules; never infer mechanics from client-visible text.
  • Schedule durations and periodic effects on simulation time through the common action/event foundation.
  • Implement damage/healing application, zero-health transition, death, corpse/loot handoff, respawn, disconnect, and persistence boundaries atomically.
  • Project only authorized semantic state and timing to Game Protocol 1.

Acceptance criteria

  • Tests cover modifier ordering, caps/overflow, regeneration, stacked effects, expiration, simultaneous lethal/healing events, repeated death, disconnect, respawn, and save/reload.
  • Replay produces identical effects/death events and state digest.
  • No domain owns a private timer loop or mutable stat cache outside the actor owner.
  • A player and monster can participate in the M3 combat slice with bounded scene/protocol projection.
  • Advanced disciplines and weather can extend typed modifiers without changing the core lifecycle.

Dependencies and parallelization

Depends on #32, #37, #39, and #41. Inventory equipment modifiers #49 and baseline combat #50 integrate through published interfaces.

Independent implementation

Implement from the preserved issue-level/product behavior and independently authored fixtures. Do not copy or mechanically translate GPL server/Python code or tests. Replacement code is MIT; consumed content and assets keep their own licenses.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    Fields

    Priority

    None yet

    Effort

    None yet

    Projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions