Expand Basic Richese movement and worm interactions
Verify and publish checkpoint container / container (push) Canceled after 0s
Verify and publish checkpoint container / container (push) Canceled after 0s
This commit is contained in:
1 parent
3dbd326891
commit
605cb2a32f
12 files changed
+637
-8
No files matched your search
@@ -1,5 +1,6 @@
|
||||
import type { Game } from './engine';
|
||||
import { validateFremenRevivalGrant } from './fremen-revival-grant';
|
||||
import { richeseRevealForeignMovementPending } from './richese-reveal-foreign-movement';
|
||||
|
||||
const factions = new Set([
|
||||
'atreides', 'beneGesserit', 'emperor', 'fremen', 'guild', 'harkonnen',
|
||||
@@ -51,8 +52,9 @@ export function richeseRevealInterruptSupported(g: Game): boolean {
|
||||
|
||||
// Each other pending field is an active child/continuation, not a completed
|
||||
// receipt. Empty pending arrays do not represent a live child.
|
||||
const foreignMovement = richeseRevealForeignMovementPending(g);
|
||||
if (Object.entries(g).some(([key, value]) => key.startsWith('pending') &&
|
||||
!(key === 'pendingShipment' && guildRate) &&
|
||||
!(key === 'pendingShipment' && guildRate) && key !== foreignMovement &&
|
||||
(Array.isArray(value) ? value.length > 0 : value !== null && value !== undefined && value !== false))) return false;
|
||||
|
||||
const live = (rows: readonly {turn: number; fulfilled?: boolean; released?: boolean}[] | undefined) =>
|
||||
@@ -72,6 +74,7 @@ export function richeseRevealInterruptSupported(g: Game): boolean {
|
||||
g.mixedAllianceQuestions, g.mixedMovementQuestions, g.mixedTraitorQuestions, g.mixedBattleQuestions];
|
||||
if (mixed.some(rows => rows?.some(row => row.turn === g.turn && row.binding))) return false;
|
||||
|
||||
if (foreignMovement) return true;
|
||||
if (g.response) {
|
||||
// Only independent, un-nested native responses with a stable original
|
||||
// source are admitted. In particular, shipment and revival transactions
|
||||
|
||||
Reference in new issue
Block a user