You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Combat disciplines: complete Archery and Throwing trees #15
This issue is implemented in the fresh MIT-licensed Go server under the replacement program. Its gameplay and content-design decisions remain authoritative. C, CPython, classic packet, file-path, and enum details in the preserved specification are historical evidence only; do not copy, translate, or structurally port GPL implementation code.
Replacement implementation contract
Preserve every Archery and Throwing choice. Implement against the common Go action-source, projectile, ammunition, ownership, and transaction contracts.
The server remains authoritative, consumes versioned compiled content, and exposes bounded generated Game Protocol 1 messages. Pure rules may use a specifically approved typed CEL environment. Starlark is not part of this issue unless the separate residual-scripting decision explicitly approves it.
Required verification
Preserve every observable rule, balance decision, disclosure boundary, and anti-exploit invariant from the specification below.
Add deterministic Go unit/property tests and wrapper-managed scenario coverage at the appropriate integration boundary.
Add bounded malformed-input and persistence-failure cases where this feature accepts content, network, or stored data.
Add Go/Rust protocol conformance fixtures for every new cross-process field; the client must not reconstruct authoritative rules from prose.
Demonstrate that implementation and tests contain no copied GPL source/test material and execute no runtime Python.
Preserved product/design specification and historical implementation notes
Classic follow-up: atrinik/classic#117 now tracks the current playable implementation's rear/unaware archery design.
Please preserve the product decision in this replacement Archery/Throwing work, particularly the shared-marksman/action-source contract:
evaluate rear position from the projectile's impact direction and the target's then-current facing;
evaluate awareness at impact, with an already engaged or pending-attacker target treated as alert;
let stealth help through normal perception rather than requiring a stealth flag;
define an anti-repeat rule for true invisibility;
keep the values bounded and data-tunable. The conservative Classic starting point is +25% rear and +25% unaware, additive and capped at 1.50x.
This is a gameplay/balance requirement only. The replacement implementation must remain clean-room and must not copy or structurally port Classic code or tests.
Important
This issue is implemented in the fresh MIT-licensed Go server under the replacement program. Its gameplay and content-design decisions remain authoritative. C, CPython, classic packet, file-path, and enum details in the preserved specification are historical evidence only; do not copy, translate, or structurally port GPL implementation code.
Replacement implementation contract
Preserve every Archery and Throwing choice. Implement against the common Go action-source, projectile, ammunition, ownership, and transaction contracts.
The server remains authoritative, consumes versioned compiled content, and exposes bounded generated Game Protocol 1 messages. Pure rules may use a specifically approved typed CEL environment. Starlark is not part of this issue unless the separate residual-scripting decision explicitly approves it.
Required verification
Preserved product/design specification and historical implementation notes
Parent and roadmap
Outcome
Complete bow, crossbow, sling, shared marksman, and Throwing branches with one projectile action-source and ammunition policy.
Scope
Superseded path / cleanup target
Delete launcher-family XP aliases and any family-specific duplicate projectile ownership/target-selection path.
Acceptance criteria
Validation baseline
Before: families share partial projectile machinery but lack one explicit multi-projectile/action-source contract.
After: ranged and thrown disciplines offer distinct branches on shared safe projectile semantics.
Run projectile ownership, target ordering, ammunition boundary, cooldown, UI/profile, target-dummy, content, and native build tests.
This issue is a bounded child of #27. The parent remains open until every sibling child is complete.