Prototype modifier-aware Smuggler battle collection

This commit is contained in:
Quintine committed 2026-10-17 11:33:07 +11:00
1 parent d6d71c7c02
commit 63298be1e1
22 files changed
+836 -84

No files matched your search

+66 -23
View File
@@ -1,8 +1,8 @@
# Smuggler battle collection
20 September 2026. **Prototyped, with Partial rules coverage.** New battles in
the base-faction Leader Skills preview connect the lower Smuggler effect in Basic
and Advanced games. Public module, mode and publication gates remain closed.
Updated 17 October 2026. **Prototyped, with Partial rules coverage.** Supported
Basic/Advanced Leader Skills tables include the provisional modifier policy below.
Public module, mode and publication gates remain closed.
## Native Discovery legal participation — 6 October 2026
@@ -26,13 +26,31 @@ forces. A captured skilled leader grants its lower effect to its controller.
At public plan reveal the server records the battle, controller, selected leader,
plans, skill posture and territory's existing positive spice piles. The amount
is the smaller of their aggregate total and the unmodified disc strength. This
pending amount is not personal spice and cannot fund a sealed plan or another
is the smaller of their aggregate total and the reveal-time leader-strength cap.
This pending amount is not personal spice and cannot fund a sealed plan or another
payment. After survival is known, the server transfers it once, including for a
surviving loser, before Sandmaster adds any after-victory spice. A pile drained
to zero cannot receive Sandmaster's addition. This deferred settlement and
ordering remain explicit timing inferences, not a newly discovered publisher ruling.
### Provisional modifier policy — 17 October 2026
Under the standing choose-recommended instruction, include the copied/printed
disc value, existing declared Leader Skill bonuses and declared Kwisatz +2 in
the cap. This is an explicit first-version interpretation, not a publisher FAQ
or an answer to the older numerical question. The authorized Advanced source's
physical p21 supplies general skill survival/card-role rules, not this cap ruling.
Printed disc value and bounty do not change. Later actions cannot enlarge the
recorded piles or spend the pending collection.
An actual resolved zero-strength weapon effect voids collection even when the
leader survives; it opens no sector-allocation choice and transfers no spice.
The existing resolver assigns that effect to **Artillery Strike**, not the base
projectile **Stunner**. A sole own Traitor bypasses weapon effects and therefore
does not zero collection; opposing/mutual Traitors retain their survival rules.
The receipt retains its original reveal-time cap and records `void` when zeroed.
A weapon death, opposing or mutual Traitor, or Lasgun–Shield explosion voids the
collection. A successful sole own Traitor call can leave the Smuggler alive and
eligible. A void receipt changes no pile; it cannot restore spice destroyed by an
@@ -49,10 +67,11 @@ payment, so it does not invoke Banker or Bureaucrat payment handling.
Single-pile collection remains automatic with no acknowledgement. Partial
multi-pile collection asks only the surviving controller to choose concrete
sectors; collecting all or none remains automatic. The choice has no decline.
- AI candidates omit optional Kwisatz when selecting Smuggler and reject other
unsupported modified plans. Native face-up skilled discs remain unavailable
to battle selection; captives and existing mandatory concealment retain their
legal paths. UI availability and the submitted Kwisatz value share one check.
- AI candidates and player controls admit legal declared Kwisatz and trainer
bonuses through the shared plan guard. The table and bots use the server's
projected module admission rather than reconstructing private configuration.
Native face-up skilled discs still cannot be selected without concealment;
captives and mandatory preparation retain their original paths.
- Existing single-pile signed receipts have JSON/SQLite continuation evidence.
Multi-pile choices retain the same battle binding and have changed-path JSON
and real-engine control smoke; comprehensive persistence assurance remains
@@ -66,8 +85,8 @@ payment, so it does not invoke Banker or Bureaucrat payment handling.
## Multi-pile allocation policy and pure API — 9 October 2026
The printed collection amount applies to the territory's aggregate existing
spice, capped by the unmodified leader strength. The available source does not
The collection amount applies to aggregate existing spice, capped by the
recorded strength policy above. The available source does not
specify which sectors supply a partial multi-pile collection. **Owner-selectable
sectors are a provisional prototype allocation policy, not a publisher ruling.**
The owner controls only distribution, never the mandatory amount. Controls appear
@@ -83,18 +102,18 @@ fill and require the exact total within each revealed pile's capacity.
aggregate total. Signed owner choices add
`allocations?: Record<string, number>`. Single-pile and empty receipts retain
their original shape.
- `smugglerBattleAllocationRequired(receipt, survives): boolean` reports a
missing choice only for a surviving pending receipt with at least two positive
piles and `0 < amount < before`. All/none collection and death need no choice.
- `smugglerBattleAllocationRequired(receipt, eligible): boolean` reports a
missing choice only for an eligible pending receipt with at least two positive
piles and `0 < amount < before`. All/none, death and actual zeroing need no choice.
- `chooseSmugglerBattleAllocation(receipt, allocations): SmugglerBattleReceipt`
verifies the pending signature, accepts only reveal-time positive keys and
nonnegative safe integers within their recorded capacities, requires a total
exactly equal to `amount`, omits zero entries, and returns a new signed receipt
without mutating its input.
- `settleSmugglerBattle(receipt, survives, spice)` verifies the signed receipt
and unchanged reveal-time positive piles, requires the surviving ambiguous
- `settleSmugglerBattle(receipt, eligible, spice)` verifies the signed receipt
and unchanged reveal-time positive piles, requires any eligible ambiguous
choice, debits those concrete sectors, and returns `{ receipt, amount, spice }`.
Death returns a signed `void` receipt with zero transfer; forced all/none
Death or actual zeroing returns a signed `void` with zero transfer; forced all/none
collection is automatic. A settled receipt cannot be settled twice.
- `SmugglerBattleCollectionOffer` is the owner-only public shape
`{ event: string, player: string, territory: string, amount: number,
@@ -111,12 +130,12 @@ printed rulings.
## Boundaries and evidence
Kwisatz, separate trainer bonuses and Stunner still await the existing modifier
question; no user answer is assumed. Expansion rosters/cards, the independent
Ecaz card variant and other optional modules remain guarded before the Smuggler
plan seals. These development restrictions are not rules that forbid those
combinations in the physical game. Stone Burner and other expansion combinations
therefore have no connected acceptance claim here.
The old modifier question received no numerical answer; the visibly provisional
17 October policy above supplies usable behavior under the standing instruction.
It does not settle every exceptional skill interaction. The independent Ecaz
card variant and unrelated optional-module envelopes retain their admission
guards. These restrictions are not printed prohibitions. Existing revealed
weapon/Stone/Mirror profiles and original settlement order remain separate.
Focused engine tests cover winners/losers in both modes, empty/short piles,
zero surviving forces, death and Traitor outcomes, explosion, capture custody,
@@ -126,3 +145,27 @@ concurrent final votes and replay rejection. Browser and full-game sample scope,
required check/build/HTTP results, preservation and verified Git delivery are
recorded in the private source-bound checkpoint and commit message. This does
not certify every Leader Skill or combined-module interaction.
## Modified-strength runtime proof — 17 October 2026
Actual old raw KH/trainer plans reject unchanged before the cutover. The new
focused23 cases and related9-file union86/86 pass, as do types/lint and build
with existing warnings. New source-bound cases:
`tests/smuggler-kwisatz-journey.test.ts`,
`tests/fixture-smuggler-kwisatz-journey.ts`,
`tests/smuggler-artillery-journey.test.ts` and
`tests/fixture-smuggler-artillery-journey.ts`.
Seven actual supported casualties unlock KH; real next-turn6/8-spice blows
yield cap7 collections6/7, with no reveal-time credit. Actual paid shipments
and movement precede shielded Artillery0, sole own-Traitor bypass6 and ordinary
shielded Stunner6. Original winner cleanup exposes payout before separate
Collection. Unopened deck/card/identity staging is explicit; no live force,
wallet, phase, order, loss count, KH or receipt is assigned.
Four390px control journeys/32 actions and eight four-policy programmes/64
actions reach original Collection. The table and bots use the original server
admission projection. Other exceptional skill/mode compositions, full strategy,
comprehensive assurance and deployed acceptance remain open. No real room,
database, human server or deployment was changed.