Restore Soul Arrow weapon scope and validate generated shot outcomes
Soul Arrow currently accepts casts with the wrong weapon and grants free claw/gun shots after a valid bow/crossbow cast and equipment swap. Restore the two Explorer variants' authored cast weapon requirements before payment/effects, and scope Soul Arrow ammunition conservation to bows/crossbows. Preserve classless learned skills and the active buff across swaps. This restores original weapon rules; universal weapon behavior remains parked.
The baseline and observation fixture were committed before production changes: all 24 weapon-scope expectations failed. They now pass with observation disabled. The paired client correction restores blocked Soul Arrow activation and ordinary empty-quiver shots, full weapon damage and original projectile/display presentation.
Retain 40 actual native casts and 120 generated ordinary shots, covering every rank of both IDs and zero/one/ten positive-PAD arrows, with SHA256 checks and exact client/source/binary provenance. The complete disposable non-GM running-server suite passed 11,065 assertions: target HP, MP, conservation/restored payment, failed/unlearned casts, repeated zero-MP shots, local/foreign packet fields, cancellation/expiry and scope after actual swaps. The matching native client passed 2,526 component checks. The validation-only CI job checks the corpus and real parser offline.
Native input/timing, full foreign rendering, per-skill attack routes, reconnect/persistence and other conservation families remain open; this does not certify whole skills. Related #42 and client #1, neither closed. Depends on !87. No merge or deployment; isolated Docker/tmpfs fixtures never connect to campaign state.