diff --git a/docs/asset-backlog.md b/docs/asset-backlog.md index 70b1eb0..a12845a 100644 --- a/docs/asset-backlog.md +++ b/docs/asset-backlog.md @@ -6,9 +6,9 @@ generated, connected, validated, built, flow-tested, committed, and pushed. ## Current Baseline -- Story images: 76 files after Batch 5. -- Portraits: 38 files after Batch 5. -- Unit sheets: 132 files, 66 complete base/action design pairs after Batch 5. +- Story images: 88 files after Batch 6. +- Portraits: 44 files after Batch 6. +- Unit sheets: 142 files, 71 complete base/action design pairs after Batch 6. - Target direction: - Story: about 5 images per major campaign chapter across 65 campaign stages. - Portraits: one portrait for every important `scenario.ts` speaker. @@ -192,3 +192,46 @@ late-campaign speakers, and strengthens low-variant unit families. - `unit-wei-officer-iron.png` + `unit-wei-officer-iron-actions.png` - `unit-wu-infantry-river.png` + `unit-wu-infantry-river-actions.png` - `unit-rebel-archer-veteran.png` + `unit-rebel-archer-veteran-actions.png` + +## Batch 6 Priority + +Status: complete. Visual contact sheets, image dimensions, unit base/action pairs, +`pnpm build`, and `pnpm verify:flow` passed. `sun-qian-campaign.png` was +regenerated once for clearer character differentiation. Code connection uses the +existing story, portrait, and unit variant discovery paths. + +This batch expands mid-campaign and late northern-campaign story backgrounds, +adds campaign variants for supporting speakers, and improves the lowest-count +unit families. + +### Story + +- `77-xuzhou-gate-council.png` +- `78-xuzhou-night-evacuation.png` +- `79-anti-dong-coalition-council.png` +- `80-anti-dong-night-assault.png` +- `81-chengdu-surrender-court.png` +- `82-chengdu-outer-gate-surrender.png` +- `83-wudu-yinping-cloud-road.png` +- `84-chencang-siege-fortress-standoff.png` +- `85-chencang-siege-engineering-camp.png` +- `86-weishui-camps-logistics.png` +- `87-weishui-camps-night-alarm.png` +- `88-lucheng-pursuit-valley-road.png` + +### Portraits + +- `mi-zhu-campaign.png` +- `jian-yong-campaign.png` +- `sun-qian-campaign.png` +- `pang-tong-campaign.png` +- `fa-zheng-campaign.png` +- `meng-huo-campaign.png` + +### Units + +- `unit-wu-strategist-river.png` + `unit-wu-strategist-river-actions.png` +- `unit-nanman-infantry-jungle.png` + `unit-nanman-infantry-jungle-actions.png` +- `unit-rebel-cavalry-veteran.png` + `unit-rebel-cavalry-veteran-actions.png` +- `unit-rebel-leader-warlord.png` + `unit-rebel-leader-warlord-actions.png` +- `unit-shu-officer-council.png` + `unit-shu-officer-council-actions.png` diff --git a/scripts/verify-flow.mjs b/scripts/verify-flow.mjs index 7f74616..705a9cd 100644 --- a/scripts/verify-flow.mjs +++ b/scripts/verify-flow.mjs @@ -8955,7 +8955,10 @@ try { const storyState = await page.evaluate(() => window.__HEROS_GAME__?.scene.getScene('StoryScene')?.getDebugState?.() ); - if (storyState?.background === 'story-lucheng-pursuit') { + if ( + storyState?.requestedBackground === 'story-lucheng-pursuit' && + storyState?.background?.startsWith('story-lucheng-pursuit') + ) { break; } await page.keyboard.press('Space'); @@ -8965,7 +8968,8 @@ try { window.__HEROS_GAME__?.scene.getScene('StoryScene')?.getDebugState?.() ); if ( - luchengPursuitStoryState?.background !== 'story-lucheng-pursuit' || + luchengPursuitStoryState?.requestedBackground !== 'story-lucheng-pursuit' || + !luchengPursuitStoryState?.background?.startsWith('story-lucheng-pursuit') || luchengPursuitStoryState?.backgroundReady !== true ) { throw new Error(`Expected Lucheng pursuit story to lazy-load its new generated background: ${JSON.stringify(luchengPursuitStoryState)}`); @@ -9134,7 +9138,10 @@ try { const storyState = await page.evaluate(() => window.__HEROS_GAME__?.scene.getScene('StoryScene')?.getDebugState?.() ); - if (storyState?.background === 'story-weishui-camps') { + if ( + storyState?.requestedBackground === 'story-weishui-camps' && + storyState?.background?.startsWith('story-weishui-camps') + ) { break; } await page.keyboard.press('Space'); @@ -9144,7 +9151,8 @@ try { window.__HEROS_GAME__?.scene.getScene('StoryScene')?.getDebugState?.() ); if ( - weishuiCampsStoryState?.background !== 'story-weishui-camps' || + weishuiCampsStoryState?.requestedBackground !== 'story-weishui-camps' || + !weishuiCampsStoryState?.background?.startsWith('story-weishui-camps') || weishuiCampsStoryState?.backgroundReady !== true || weishuiCampsStoryState?.portraitKey !== 'zhugeLiang' || !weishuiCampsStoryState?.portraitTextureKey?.startsWith('portrait-zhuge-liang') @@ -9315,7 +9323,10 @@ try { const storyState = await page.evaluate(() => window.__HEROS_GAME__?.scene.getScene('StoryScene')?.getDebugState?.() ); - if (storyState?.background === 'story-weishui-northbank') { + if ( + storyState?.requestedBackground === 'story-weishui-northbank' && + storyState?.background?.startsWith('story-weishui-northbank') + ) { break; } await page.keyboard.press('Space'); @@ -9331,7 +9342,8 @@ try { }; const northbankExpectedPortrait = northbankExpectedPortraits[northbankStoryState?.currentPageId]; if ( - northbankStoryState?.background !== 'story-weishui-northbank' || + northbankStoryState?.requestedBackground !== 'story-weishui-northbank' || + !northbankStoryState?.background?.startsWith('story-weishui-northbank') || northbankStoryState?.backgroundReady !== true || !northbankExpectedPortrait || northbankStoryState?.portraitKey !== northbankExpectedPortrait[0] || diff --git a/src/assets/images/portraits/fa-zheng-campaign.png b/src/assets/images/portraits/fa-zheng-campaign.png new file mode 100644 index 0000000..200c4d5 Binary files /dev/null and b/src/assets/images/portraits/fa-zheng-campaign.png differ diff --git a/src/assets/images/portraits/jian-yong-campaign.png b/src/assets/images/portraits/jian-yong-campaign.png new file mode 100644 index 0000000..2ad9128 Binary files /dev/null and b/src/assets/images/portraits/jian-yong-campaign.png differ diff --git a/src/assets/images/portraits/meng-huo-campaign.png b/src/assets/images/portraits/meng-huo-campaign.png new file mode 100644 index 0000000..d9edf47 Binary files /dev/null and b/src/assets/images/portraits/meng-huo-campaign.png differ diff --git a/src/assets/images/portraits/mi-zhu-campaign.png b/src/assets/images/portraits/mi-zhu-campaign.png new file mode 100644 index 0000000..26f0eaf Binary files /dev/null and b/src/assets/images/portraits/mi-zhu-campaign.png differ diff --git a/src/assets/images/portraits/pang-tong-campaign.png b/src/assets/images/portraits/pang-tong-campaign.png new file mode 100644 index 0000000..a5aa35f Binary files /dev/null and b/src/assets/images/portraits/pang-tong-campaign.png differ diff --git a/src/assets/images/portraits/sun-qian-campaign.png b/src/assets/images/portraits/sun-qian-campaign.png new file mode 100644 index 0000000..e916b8e Binary files /dev/null and b/src/assets/images/portraits/sun-qian-campaign.png differ diff --git a/src/assets/images/story/77-xuzhou-gate-council.png b/src/assets/images/story/77-xuzhou-gate-council.png new file mode 100644 index 0000000..e79469f Binary files /dev/null and b/src/assets/images/story/77-xuzhou-gate-council.png differ diff --git a/src/assets/images/story/78-xuzhou-night-evacuation.png b/src/assets/images/story/78-xuzhou-night-evacuation.png new file mode 100644 index 0000000..94708d3 Binary files /dev/null and b/src/assets/images/story/78-xuzhou-night-evacuation.png differ diff --git a/src/assets/images/story/79-anti-dong-coalition-council.png b/src/assets/images/story/79-anti-dong-coalition-council.png new file mode 100644 index 0000000..e9cd27e Binary files /dev/null and b/src/assets/images/story/79-anti-dong-coalition-council.png differ diff --git a/src/assets/images/story/80-anti-dong-night-assault.png b/src/assets/images/story/80-anti-dong-night-assault.png new file mode 100644 index 0000000..5d67872 Binary files /dev/null and b/src/assets/images/story/80-anti-dong-night-assault.png differ diff --git a/src/assets/images/story/81-chengdu-surrender-court.png b/src/assets/images/story/81-chengdu-surrender-court.png new file mode 100644 index 0000000..6df609b Binary files /dev/null and b/src/assets/images/story/81-chengdu-surrender-court.png differ diff --git a/src/assets/images/story/82-chengdu-outer-gate-surrender.png b/src/assets/images/story/82-chengdu-outer-gate-surrender.png new file mode 100644 index 0000000..1dc6cd8 Binary files /dev/null and b/src/assets/images/story/82-chengdu-outer-gate-surrender.png differ diff --git a/src/assets/images/story/83-wudu-yinping-cloud-road.png b/src/assets/images/story/83-wudu-yinping-cloud-road.png new file mode 100644 index 0000000..1917086 Binary files /dev/null and b/src/assets/images/story/83-wudu-yinping-cloud-road.png differ diff --git a/src/assets/images/story/84-chencang-siege-fortress-standoff.png b/src/assets/images/story/84-chencang-siege-fortress-standoff.png new file mode 100644 index 0000000..91bc990 Binary files /dev/null and b/src/assets/images/story/84-chencang-siege-fortress-standoff.png differ diff --git a/src/assets/images/story/85-chencang-siege-engineering-camp.png b/src/assets/images/story/85-chencang-siege-engineering-camp.png new file mode 100644 index 0000000..6d44bbb Binary files /dev/null and b/src/assets/images/story/85-chencang-siege-engineering-camp.png differ diff --git a/src/assets/images/story/86-weishui-camps-logistics.png b/src/assets/images/story/86-weishui-camps-logistics.png new file mode 100644 index 0000000..aa94aee Binary files /dev/null and b/src/assets/images/story/86-weishui-camps-logistics.png differ diff --git a/src/assets/images/story/87-weishui-camps-night-alarm.png b/src/assets/images/story/87-weishui-camps-night-alarm.png new file mode 100644 index 0000000..c42da8d Binary files /dev/null and b/src/assets/images/story/87-weishui-camps-night-alarm.png differ diff --git a/src/assets/images/story/88-lucheng-pursuit-valley-road.png b/src/assets/images/story/88-lucheng-pursuit-valley-road.png new file mode 100644 index 0000000..0ab7952 Binary files /dev/null and b/src/assets/images/story/88-lucheng-pursuit-valley-road.png differ diff --git a/src/assets/images/units/unit-nanman-infantry-jungle-actions.png b/src/assets/images/units/unit-nanman-infantry-jungle-actions.png new file mode 100644 index 0000000..4ef36c6 Binary files /dev/null and b/src/assets/images/units/unit-nanman-infantry-jungle-actions.png differ diff --git a/src/assets/images/units/unit-nanman-infantry-jungle.png b/src/assets/images/units/unit-nanman-infantry-jungle.png new file mode 100644 index 0000000..78db7b8 Binary files /dev/null and b/src/assets/images/units/unit-nanman-infantry-jungle.png differ diff --git a/src/assets/images/units/unit-rebel-cavalry-veteran-actions.png b/src/assets/images/units/unit-rebel-cavalry-veteran-actions.png new file mode 100644 index 0000000..accf9d6 Binary files /dev/null and b/src/assets/images/units/unit-rebel-cavalry-veteran-actions.png differ diff --git a/src/assets/images/units/unit-rebel-cavalry-veteran.png b/src/assets/images/units/unit-rebel-cavalry-veteran.png new file mode 100644 index 0000000..65b4f04 Binary files /dev/null and b/src/assets/images/units/unit-rebel-cavalry-veteran.png differ diff --git a/src/assets/images/units/unit-rebel-leader-warlord-actions.png b/src/assets/images/units/unit-rebel-leader-warlord-actions.png new file mode 100644 index 0000000..18b221c Binary files /dev/null and b/src/assets/images/units/unit-rebel-leader-warlord-actions.png differ diff --git a/src/assets/images/units/unit-rebel-leader-warlord.png b/src/assets/images/units/unit-rebel-leader-warlord.png new file mode 100644 index 0000000..a71951e Binary files /dev/null and b/src/assets/images/units/unit-rebel-leader-warlord.png differ diff --git a/src/assets/images/units/unit-shu-officer-council-actions.png b/src/assets/images/units/unit-shu-officer-council-actions.png new file mode 100644 index 0000000..2a6e0e7 Binary files /dev/null and b/src/assets/images/units/unit-shu-officer-council-actions.png differ diff --git a/src/assets/images/units/unit-shu-officer-council.png b/src/assets/images/units/unit-shu-officer-council.png new file mode 100644 index 0000000..de6dddd Binary files /dev/null and b/src/assets/images/units/unit-shu-officer-council.png differ diff --git a/src/assets/images/units/unit-wu-strategist-river-actions.png b/src/assets/images/units/unit-wu-strategist-river-actions.png new file mode 100644 index 0000000..522d176 Binary files /dev/null and b/src/assets/images/units/unit-wu-strategist-river-actions.png differ diff --git a/src/assets/images/units/unit-wu-strategist-river.png b/src/assets/images/units/unit-wu-strategist-river.png new file mode 100644 index 0000000..06603c7 Binary files /dev/null and b/src/assets/images/units/unit-wu-strategist-river.png differ