Support native early Basic movement promises
Price native Once Around and Silent funding in early movement forecasts, retaining full sealed donor locks and exact paid-sale boundaries. Add current zero/pass guidance, fixed non-CHOAM preopening Charity entitlement and shared owned normal-revival projection while actual counters remain pending. Preserve the mandatory Ix phase-opening continuation. Validation: affected rules/control tests, types/lint, production build and six gameplay/control/table-rendering programmes with eight existing-profile native runs. Wider preparations, CHOAM own unresolved opening, modules/Advanced, full rules and deployed acceptance remain open. No saved-room, database, restart or deployment operation.
This commit is contained in:
1 parent
f995b6f4cd
commit
c311ed4251
16 files changed
+787
-54
No files matched your search
@@ -12,7 +12,7 @@ export function MovementPromises({ game, act, busy }: { game: GameView; act: (ac
|
||||
const next = game.phase >= 5 || paidDecision ||
|
||||
(game.phase === 2 && ['charity', 'ready'].includes(proposed?.type ?? '')) ||
|
||||
(game.phase === 4 && ['revive', 'ready'].includes(proposed?.type ?? '')) ||
|
||||
(game.phase === 3 && proposed?.type === 'passBid') ? proposed : undefined;
|
||||
(game.phase === 3 && ['passBid', 'richeseBid'].includes(proposed?.type ?? '')) ? proposed : undefined;
|
||||
const amount = next?.forces && typeof next.forces === 'object'
|
||||
? Object.values(next.forces as Record<string, number>).reduce((sum, count) => sum + count, 0) : typeof next?.amount === 'number' ? next.amount : 0;
|
||||
const destination = next && game.combatLocations.find(location => location.id === next.territory)?.name;
|
||||
@@ -27,6 +27,7 @@ export function MovementPromises({ game, act, busy }: { game: GameView; act: (ac
|
||||
: next?.type === 'revive' ? `Revive ${amount} forces for your later movement`
|
||||
: next?.type === 'ready' ? 'Finish this preparation phase while preserving your promises'
|
||||
: next?.type === 'passBid' ? 'Pass this bid and preserve later movement'
|
||||
: next?.type === 'richeseBid' ? next.amount === 0 ? 'Submit zero in this Silent auction and preserve later movement' : 'Pass this Richese bid and preserve later movement'
|
||||
: next?.type === 'card' && next.mode === 'shipment' ? `Use ${card?.name ?? 'your card'} for Guild shipment rates`
|
||||
: next?.type === 'card' && card?.effect === 'nullentropyBox' ? 'Pay 2 spice and search with Nullentropy Box'
|
||||
: next?.type === 'card' && next.mode === 'choam' ? 'Play Kulon to extend the required movement'
|
||||
|
||||
@@ -349,8 +349,8 @@ export function Truthtrance({
|
||||
<>
|
||||
<MovementClaimFields id={`${factId}-movement`} value={movement} onChange={setMovement} />
|
||||
<p className="fine">One ground movement of the chosen physical minimum, from now until the respondent’s Movement turn ends. Shipment, HMS relocation and Ambassador relocation do not count. Owned Hajr, Ornithopter, native Kulon and paid Box recovery of a known discard can prepare a later move. No stays binding after earlier nonmatching moves.</p>
|
||||
{g.phase < 5 && <p className="notice">Movement comes later this round. Keep the forces, spice and cards needed by your answer; available Charity or Revival may prepare the route. Current preparation appears when it is available. Earlier-phase questions currently support classic factions.</p>}
|
||||
{!g.truthMovementTargets.includes(target) && <p className="notice">Choose a supported Basic respondent this round and finish pending decisions. Earlier phases use classic factions; native questions currently begin during Movement. Optional-module and Advanced movement promises remain unfinished.</p>}
|
||||
{g.phase < 5 && <p className="notice">Movement comes later this round. Keep the forces, spice and cards needed by your answer; available Charity or Revival may prepare the route. Current auction commitments reserve their actual funding. Current preparation appears when it is available.</p>}
|
||||
{!g.truthMovementTargets.includes(target) && <p className="notice">Choose a supported Basic respondent this round and finish pending decisions. Optional-module and Advanced movement promises remain unfinished.</p>}
|
||||
<p className="notice" aria-label="Public movement question preview">{truthQuestionText(question, leaderName, locationName)}</p>
|
||||
</>
|
||||
) : kind === 'shipment' || kind === 'mixedShipment' ? (
|
||||
|
||||
Reference in new issue
Block a user