Coordinate Fremen grants in ordered revival
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
64706cc7e0
commit
220d78c779
11 files changed
+429
-12
No files matched your search
+10
-5
@@ -4665,14 +4665,19 @@ export function botActions(g: GameView): Action[] {
|
||||
: [{ type: 'endMovement' }];
|
||||
}
|
||||
|
||||
/** In concurrent Basic Revival, let a human Fremen decide its existing grant
|
||||
* before its automated ally spends or finishes. Ready is the normal way to
|
||||
* finish that decision; responses and unrelated actions remain available. */
|
||||
/** Let a human Fremen decide a useful grant before an automated ally spends or
|
||||
* finishes. Ordered Advanced uses a per-recipient release; concurrent Basic
|
||||
* retains its normal Ready release. Responses and unrelated actions continue. */
|
||||
function waitsForHumanFremenGrant(g: Game, player: Game['players'][number]): boolean {
|
||||
if (g.status !== 'playing' || g.advanced || g.phase !== 4 || g.revivalOrder ||
|
||||
const ordered = g.advanced && !!g.revivalOrder;
|
||||
if (g.status !== 'playing' || g.phase !== 4 || (g.advanced && !ordered) ||
|
||||
(!g.advanced && !!g.revivalOrder) ||
|
||||
(ordered && g.revivalOrder!.remaining[0] !== player.id) ||
|
||||
player.tanks <= 0 || revivalPrevented(g, player.id)) return false;
|
||||
const fremen = g.players.find(seat => seat.faction === 'fremen');
|
||||
if (!fremen || fremen.bot || fremen.autopilot || g.ready.includes(fremen.id) ||
|
||||
if (!fremen || fremen.bot || fremen.autopilot || (!ordered && g.ready.includes(fremen.id)) ||
|
||||
(ordered && g.fremenRevivalWaitRelease?.turn === g.turn &&
|
||||
g.fremenRevivalWaitRelease.recipients.includes(player.id)) ||
|
||||
fremenRevivalGrantBlock(g, fremen.id, player.id) !== null) return false;
|
||||
const current = freeRevivalRemaining(g, player);
|
||||
const granted = freeRevivalRemaining({ ...g, freeRevival: [...g.freeRevival, player.id] }, player);
|
||||
|
||||
Reference in new issue
Block a user