Restore safe Duke grants in early legacy games
Verify and publish checkpoint container / container (push) Successful in 10m31s
Verify and publish checkpoint container / container (push) Successful in 10m31s
This commit is contained in:
1 parent
59cb336c80
commit
22b463a395
10 files changed
+263
-11
No files matched your search
+4
-1
@@ -147,7 +147,7 @@ import { battleCardSlotEligible, battleCategoryInspectionValue, fixedBattleInspe
|
||||
import { HARASS_WITHDRAW_CARD, HarassWithdrawError, isHarassWithdraw, quoteHarassWithdraw, defaultHarassWithdrawAllocation, harassWithdrawNeedsAllocation, type HarassWithdrawSelection, type HarassWithdrawContext, type HarassWithdrawPreview } from './harass-withdraw';
|
||||
import { originalAuctionInspectionLot } from './auction-inspection-source';
|
||||
import { nextDukeCaptureUncertainty } from './duke-capture-uncertainty';
|
||||
import { dukeCaptureUncertaintyBlock, plainAdvancedEcazDukeProfile } from './ecaz-duke-capture-policy';
|
||||
import { dukeCaptureUncertaintyBlock, legacyDukeCaptureHistoryClear, plainAdvancedEcazDukeProfile } from './ecaz-duke-capture-policy';
|
||||
import { discoveryChoices, discoveryStashSignature, type DiscoveryStash } from './discovery-actions';
|
||||
import { createStormSource, validateStormSource, discoveryStormOffer, createDiscoveryStorm, chooseDiscoveryStorm, validateDiscoveryStorm, finishDiscoveryStorm, discoveryStormDistance, discoveryStormSaphoModes, reorderDiscoveryStorm, type StormMovementSource, type DiscoveryStorm } from './discovery-storm';
|
||||
import { completeDiscoveryFlight, discoveryFlightOffer, quoteDiscoveryFlight, validateDiscoveryFlight, type DiscoveryFlightReceipt } from './discovery-flight';
|
||||
@@ -31327,6 +31327,7 @@ function reconcileHomeworldEcazDuke(g: Game) {
|
||||
!duke.leader.dead && !duke.leader.capturedBy && !duke.leader.gholaBy && !duke.leader.concealed) {
|
||||
g.dukeVidal = consumeDuke(duke);
|
||||
log(g, 'Occupied Ecaz displaced Duke Vidal’s ordinary faction grant; the occupier chooses its eligible recipient.');
|
||||
g.dukeCaptureUncertain = false;
|
||||
}
|
||||
const available = homeworldRule(() => quoteHomeworldEcazDuke(g));
|
||||
if (!available.blocked && available.event && available.owner && available.recipients.length === 1)
|
||||
@@ -44038,6 +44039,7 @@ export function normalizeAutomaticGame(state: Game): Game {
|
||||
ecazCollectionIntegrity(state);
|
||||
ecazAllianceIntegrity(state);
|
||||
const g = structuredClone(state);
|
||||
if (legacyDukeCaptureHistoryClear(g)) g.dukeCaptureUncertain = false;
|
||||
reconcileHomeworldEcazDuke(g);
|
||||
syncTupileSlots(g);
|
||||
prepareTupileCleanup(g);
|
||||
@@ -44155,6 +44157,7 @@ function applyActionInner(
|
||||
'Finish the original occupied Tupile hand cleanup before another action.');
|
||||
ecazTreacheryIntegrity(state);
|
||||
const g = structuredClone(state);
|
||||
if (execution === 'live' && legacyDukeCaptureHistoryClear(g)) g.dukeCaptureUncertain = false;
|
||||
if ((g.pendingNexusEmperorPayment || g.pendingNexusEmperorSellerPurchase || g.pendingAmbassador?.nexusPurchase) &&
|
||||
!g.truthtrance && !pendingNexusTraitors(g)) {
|
||||
const p = getPlayer(g, id);
|
||||
|
||||
Reference in new issue
Block a user