18 lines
881 B
TypeScript
18 lines
881 B
TypeScript
import type { Game } from './engine';
|
|
import { basicPendingMovement, type MovementPending } from './basic-pending-movement';
|
|
|
|
/**
|
|
* Revealing Richese's existing marker during a different player's ordinary
|
|
* movement cannot add an occupying faction to the declared destination. The
|
|
* caller retains its common profile and Truthtrance/commitment guards.
|
|
*/
|
|
export function richeseRevealForeignMovementPending(g: Game): MovementPending | null {
|
|
if (!Array.isArray(g.players)) return null;
|
|
const richese = g.players.find(player => player.faction === 'richese');
|
|
const deployed = richese?.noField?.deployed;
|
|
if (!richese || !deployed || deployed.controller !== richese.id ||
|
|
!deployed.location || !('territory' in deployed.location)) return null;
|
|
const movement = basicPendingMovement(g);
|
|
return movement && movement.player !== richese.id ? movement.key : null;
|
|
}
|