Offer Semuta on printed native battle cancellation costs

This commit is contained in:
Quintine committed 2026-10-12 06:57:15 +11:00
1 parent 74768647f4
commit bab8f3403d
14 files changed
+818 -14

No files matched your search

+8
View File
@@ -269,6 +269,14 @@ For each batch retain actual former owner per entry, exact physical ID, a face s
| Generic Hajr/Ghola/Harvester/Weather/Atomics (~13103) | One public played card from actor, one batch each. | Effects have already happened before the shared discard. `afterOrdinaryCard {owner,cardId,cardName,effect}` → log and normal finalization; do not reapply movement allowance, Ghola revival/tech/income, spice multiplier, weather setting or Wall casualties. A Ghola-created revival-income response must survive the pause. |
| `resolveTruthAction` callback in `game/truthtrance.ts` (~460) | One public Truthtrance belonging to queued asker, **not the answering actor**. Multiple queued questions are successive events, not one batch. Unknown/save does not discard. | Definite answer, promise binding, public history and answer log already committed. `afterTruthtranceDiscard {queueHeadPlayer,queueHeadCard,questionBinding,remainingWindow}` activates the next queued question exactly once; do not answer/bind/history again. Detach the consumed head into this frame before exposing the pause: the saved-shipment-question validator requires a live queued Truthtrance still be held. Preserve the remaining queue privately in the continuation until Semuta ends. A generic top-level `truthtrance` early return must not prevent this nested claim. |
Printed Karama cancellation of native capture, Auditor, quoted battle income,
Ixian substitution or Basic Moritani retention now uses `karamaBattleDiscard`.
The original accepted response is detached, not canceled early. Only the
public activating cost is fresh; claim/pass restores that response and calls
the original cancellation once before its later native cleanup. A claimed
cost cannot undo cancellation or enter the original losing-ally played pool.
Worthless conversion and other cancellation families retain their boundaries.
## Special Karama stage inventory
`executeSpecialKaramaIntent` (~9579) already has a typed, validated declaration for each power. It is useful input to an **after-activation** executor, but cannot simply be called again after discarding: preparation assumes the activating physical card is still held. Every activating Karama face is public and belongs to its player. These are separate from any later discard caused by the power.