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.
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
Acceptance criteria
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.