Connect provisional Basic current-sole Homeworld benefits and repair stale rule guards

This commit is contained in:
Quintine committed 2026-10-09 01:26:20 +11:00
1 parent 66e061ccca
commit b892967eb3
23 files changed
+657 -344

No files matched your search

+14 -1
View File
@@ -3101,13 +3101,26 @@ function policyActions(g: GameView): Action[] {
actions.push({ type: 'tleilaxuRevivalLimit', target: player.id });
} else if (tleilaxu && !me.leaderRevived) {
const request = g.revivalRequests[me.id];
// The server re-validates that the requested leader is still a dead,
// uncaptured native disc (or a dead Kwisatz Haderach) at acceptance, so
// never keep proposing an acceptance the authoritative guard rejects.
const requestedLeader = request?.leader === undefined
? undefined
: me.leaders.find((l) => l.id === request.leader);
const stillRevivable = !!request && (request.leader === 'kwisatz'
? me.kwisatz?.dead === true
: !!requestedLeader?.dead && !requestedLeader.capturedBy);
if (
request &&
!request.declined &&
request.price !== null &&
request.price <= (me.spice ?? 0)
request.price <= (me.spice ?? 0) &&
stillRevivable
)
actions.push({ type: 'acceptLeaderRevival' });
else if (request && !stillRevivable)
// Clear an unhonourable request so the phase can request again.
actions.push({ type: 'cancelLeaderRequest' });
if (
!request &&
me.leaders.filter((l) => l.faction === me.faction && nativeAvailable(l))