feat: add spoiler-safe campaign objective journal
This commit is contained in:
@@ -1348,7 +1348,7 @@ async function setupBattle(page, battle) {
|
||||
return (
|
||||
state?.scene === 'BattleScene' &&
|
||||
state?.battleId === battleId &&
|
||||
(state?.phase === 'deployment' || state?.phase === 'idle') &&
|
||||
state?.phase === 'deployment' &&
|
||||
state?.mapBackgroundReady === true
|
||||
);
|
||||
},
|
||||
@@ -1536,7 +1536,7 @@ async function setupCumulativeBattle(page, battle, firstBattle, route) {
|
||||
return (
|
||||
state?.scene === 'BattleScene' &&
|
||||
state?.battleId === battleId &&
|
||||
(state?.phase === 'deployment' || state?.phase === 'idle') &&
|
||||
state?.phase === 'deployment' &&
|
||||
state?.mapBackgroundReady === true
|
||||
);
|
||||
},
|
||||
@@ -1649,7 +1649,9 @@ async function startDeploymentIfNeeded(page, battleId) {
|
||||
}, battleId);
|
||||
|
||||
if (state?.phase !== 'deployment') {
|
||||
return;
|
||||
throw new Error(
|
||||
`Expected ${battleId} to expose deployment before battle start: ${JSON.stringify(state)}`
|
||||
);
|
||||
}
|
||||
|
||||
await clickBattleDeploymentStart(page);
|
||||
@@ -1844,6 +1846,20 @@ async function enterCampaignCampFromBattleResult(page, battle, route) {
|
||||
settlement = await page.evaluate(() => window.__HEROS_DEBUG__?.battle()?.resultSettlement);
|
||||
}
|
||||
|
||||
await page.waitForFunction(
|
||||
() => {
|
||||
const resultSettlement = window.__HEROS_DEBUG__?.battle()?.resultSettlement;
|
||||
return (
|
||||
resultSettlement?.status === 'complete' &&
|
||||
resultSettlement?.cta?.interactive === true &&
|
||||
resultSettlement?.cta?.bounds
|
||||
);
|
||||
},
|
||||
undefined,
|
||||
{ timeout: 30000 }
|
||||
);
|
||||
settlement = await page.evaluate(() => window.__HEROS_DEBUG__?.battle()?.resultSettlement);
|
||||
|
||||
const expectedDestination = 'victory-story';
|
||||
if (settlement?.cta?.destination !== expectedDestination) {
|
||||
throw new Error(
|
||||
@@ -1915,6 +1931,21 @@ async function enterFinalCampFromBattleResult(page) {
|
||||
);
|
||||
settlement = await page.evaluate(() => window.__HEROS_DEBUG__?.battle()?.resultSettlement);
|
||||
}
|
||||
|
||||
await page.waitForFunction(
|
||||
() => {
|
||||
const resultSettlement = window.__HEROS_DEBUG__?.battle()?.resultSettlement;
|
||||
return (
|
||||
resultSettlement?.status === 'complete' &&
|
||||
resultSettlement?.cta?.interactive === true &&
|
||||
resultSettlement?.cta?.bounds
|
||||
);
|
||||
},
|
||||
undefined,
|
||||
{ timeout: 30000 }
|
||||
);
|
||||
settlement = await page.evaluate(() => window.__HEROS_DEBUG__?.battle()?.resultSettlement);
|
||||
|
||||
if (settlement?.cta?.destination !== 'victory-story') {
|
||||
throw new Error(`Final victory must continue through its aftermath before the final camp: ${JSON.stringify(settlement)}`);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user