Outcome
Provide a complete but deliberately narrow combat path that proves the common action, actor, item, scene, encounter, and protocol foundations.
Scope and invariants
- Implement basic melee, ranged projectile, and spell actions with target validation, range/line rules, protections, blocking, damage/healing, ownership attribution, and death processing.
- Represent projectile and delayed effects as deterministic simulation entities/events with captured identities and cancellation rules.
- Create bounded monster perception, target selection, path/action decision, leash/reset, and common action submission; AI cannot bypass player action rules.
- Define friendly-fire/PvP/owner/pet attribution and disclosure policy explicitly.
- Emit semantic telegraph/action/effect events for Rust presentation without server-owned animation or prose.
Acceptance criteria
- Scenarios cover hit/miss/block/protection, projectile travel, interrupted/dead targets, reflected/owned sources as required, monster reset, simultaneous actions, reward attribution, and reconnect.
- Player and monster AI use the same action service; architecture tests reject privileged damage mutation.
- Replay and seeded RNG reproduce outcomes exactly.
- One melee monster, projectile, and spell flow work in the M3 slice; advanced discipline issues layer on them.
- Load/tick benchmarks cover dense combat and bounded AI work.
Dependencies and parallelization
Depends on #17, #23, #25, #37, #41, #48, and #49. Navigation may begin with a bounded simple policy; advanced techniques remain M5.
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 a complete but deliberately narrow combat path that proves the common action, actor, item, scene, encounter, and protocol foundations.
Scope and invariants
Acceptance criteria
Dependencies and parallelization
Depends on #17, #23, #25, #37, #41, #48, and #49. Navigation may begin with a bounded simple policy; advanced techniques remain M5.
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.