Support Truthtrance shipment promises with Advanced Guild
Admit base Advanced Guild through the existing active unused-shipment predicate. Preserve native interception, typed transport permission, rate cancellation and actual payment/arrival. Opposing stops evaluate the complete promise against absent shipment; self-interception cannot voluntarily evade a required shipment. Share the authoritative self-stop reason with controls, and hide executable completion guidance during pending native windows. No other profile opens or strategic AI tuning is added. Validation and exact frozen-source evidence are in the canonical Truthtrance shipment contract. Public classic Advanced starts earn real physical Truthtrance/Karamas via the unopened original starting deal, native Guild TAKE/WAIT, typed Emperor delivery or opposing stop, and Guild half/full-price routes. Four minimal profiles use legal native continuations. Separate controlled probes cover No/mixed claims, self-stop, unaffordable repricing/owned alternatives and Fremen route denial. Update existing scope expectations; no new recovery campaign. Broader timings/routes/modules, complete modes, final assurance and browser/deployed acceptance remain open. No saved-room/database/reset/restart/deployment operation.
This commit is contained in:
1 parent
377e9c5160
commit
2939ffa900
16 files changed
+678
-53
No files matched your search
@@ -3318,8 +3318,10 @@ export function GameTable({
|
||||
<HelpTip topic="guildShipment" />
|
||||
{actionButton('Allow Homeworld shipment', { type: 'decision', event: g.decision.event, allow: true })}
|
||||
{me.hand?.filter(canActivateKarama).map((c) => (
|
||||
<div key={c.id}>{actionButton('Spend Karama · stop shipment', { type: 'card', mode: 'special', card: c.id })}</div>
|
||||
<div key={c.id}>{actionButton('Spend Karama · stop shipment', { type: 'card', mode: 'special', card: c.id },
|
||||
!!g.guildShipmentStopPromiseBlock, g.guildShipmentStopPromiseBlock ? 'guild-stop-promise-guidance' : undefined)}</div>
|
||||
))}
|
||||
{g.guildShipmentStopPromiseBlock && <p id="guild-stop-promise-guidance" role="status">{g.guildShipmentStopPromiseBlock}</p>}
|
||||
</>
|
||||
) : g.decision.kind === 'guildShipment' ? (
|
||||
<>
|
||||
@@ -3351,9 +3353,11 @@ export function GameTable({
|
||||
type: 'card',
|
||||
mode: 'special',
|
||||
card: c.id,
|
||||
})}
|
||||
}, !!g.guildShipmentStopPromiseBlock,
|
||||
g.guildShipmentStopPromiseBlock ? 'guild-stop-promise-guidance' : undefined)}
|
||||
</div>
|
||||
))}
|
||||
{g.guildShipmentStopPromiseBlock && <p id="guild-stop-promise-guidance" role="status">{g.guildShipmentStopPromiseBlock}</p>}
|
||||
</>
|
||||
) : g.decision.kind === 'handExchange' ? (
|
||||
<>
|
||||
|
||||
@@ -354,11 +354,15 @@ export function Truthtrance({
|
||||
Includes Fremen reinforcements and Guild transport from
|
||||
southern reserves. Ground movement and transport of forces
|
||||
already on the board do not count.
|
||||
{' '}Guild interception and Karama rate responses resolve
|
||||
before delivery. A stopped shipment can release an
|
||||
impossible answer; an unfinished response does not fulfill it.
|
||||
</p>
|
||||
{!shipmentAvailable && (
|
||||
<p className="notice">
|
||||
Automatic enforcement currently supports the active
|
||||
player’s unused ordinary shipment in base rules or a
|
||||
player’s unused ordinary shipment in Basic or Advanced
|
||||
base rules, including the Guild, or a
|
||||
classic payer in the Richese Semuta profile. Select
|
||||
that player and finish pending decisions first.
|
||||
Native No-Field shipments and other rules configurations
|
||||
|
||||
Reference in new issue
Block a user