diff --git a/scripts/verify-xuzhou-equipment-link-browser.mjs b/scripts/verify-xuzhou-equipment-link-browser.mjs index 19c772c..92ca6e7 100644 --- a/scripts/verify-xuzhou-equipment-link-browser.mjs +++ b/scripts/verify-xuzhou-equipment-link-browser.mjs @@ -168,7 +168,13 @@ async function verifyRenderer(browserInstance, baseUrl, rendererFixture) { ); await reloadAndContinueCity(page); - await openMarketWithRealInteraction(page); + await page.waitForFunction(() => { + const state = window.__HEROS_DEBUG__?.cityStay?.(); + return ( + state?.shop?.open === true && + state?.explorationCheckpoint?.overlay?.type === 'shop' + ); + }); city = await readCity(page); assertMarketReceipt(city, `${rendererFixture.renderer} reload`); const restoredOffer = findOffer(city, offerId); @@ -217,12 +223,28 @@ async function verifyRenderer(browserInstance, baseUrl, rendererFixture) { const diagnostic = await page.evaluate(() => ({ activeScenes: window.__HEROS_DEBUG__?.activeScenes?.() ?? [], + scenes: + window.__HEROS_GAME__?.scene + .getScenes(false) + .map((scene) => ({ + key: scene.scene.key, + active: + window.__HEROS_GAME__?.scene.isActive( + scene.scene.key + ) ?? false, + status: scene.sys.settings.status + })) ?? [], city: window.__HEROS_DEBUG__?.cityStay?.(), camp: window.__HEROS_DEBUG__?.camp?.() })); throw new Error( `${error.message}\nEquipment routing diagnostic: ${JSON.stringify( - diagnostic + { + ...diagnostic, + ctaClickProbe, + pageErrors, + consoleErrors + } )}`, { cause: error } ); diff --git a/src/game/scenes/CityStayScene.ts b/src/game/scenes/CityStayScene.ts index 2af1fef..aabf183 100644 --- a/src/game/scenes/CityStayScene.ts +++ b/src/game/scenes/CityStayScene.ts @@ -327,8 +327,8 @@ export class CityStayScene extends Phaser.Scene { this.dialogueState = undefined; this.campaignObjectiveJournal?.destroy(); this.campaignObjectiveJournal = undefined; - this.closeChoicePanel(false); - this.closeShop(false); + this.closeChoicePanel(false, false); + this.closeShop(false, false); releaseExplorationCharacterTextureKeys( this, this.characterTextureKeys() @@ -2593,8 +2593,13 @@ export class CityStayScene extends Phaser.Scene { this.time.now + inputCarryoverGuardMs; } - private closeChoicePanel(persistCheckpoint = true) { - this.restoreActorDirection(this.choiceSourceNpcId); + private closeChoicePanel( + persistCheckpoint = true, + updateInteractionPresentation = true + ) { + if (updateInteractionPresentation) { + this.restoreActorDirection(this.choiceSourceNpcId); + } this.choicePanel?.destroy(); this.choicePanel = undefined; this.choiceViews = []; @@ -2602,7 +2607,9 @@ export class CityStayScene extends Phaser.Scene { if (persistCheckpoint) { this.persistExplorationCheckpoint(true); } - this.refreshInteractionPrompt(); + if (updateInteractionPresentation) { + this.refreshInteractionPrompt(); + } } private openShop( @@ -2955,8 +2962,13 @@ export class CityStayScene extends Phaser.Scene { return [graphics]; } - private closeShop(persistCheckpoint = true) { - this.restoreActorDirection(this.shopSourceNpcId); + private closeShop( + persistCheckpoint = true, + updateInteractionPresentation = true + ) { + if (updateInteractionPresentation) { + this.restoreActorDirection(this.shopSourceNpcId); + } this.shopPanel?.destroy(); this.shopPanel = undefined; this.shopOfferViews = []; @@ -2965,7 +2977,9 @@ export class CityStayScene extends Phaser.Scene { if (persistCheckpoint) { this.persistExplorationCheckpoint(true); } - this.refreshInteractionPrompt(); + if (updateInteractionPresentation) { + this.refreshInteractionPrompt(); + } } private itemBonusText(item: ReturnType) {