Add sixth sequential asset expansion batch
@@ -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`
|
||||
|
||||
@@ -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] ||
|
||||
|
||||
BIN
src/assets/images/portraits/fa-zheng-campaign.png
Normal file
|
After Width: | Height: | Size: 2.4 MiB |
BIN
src/assets/images/portraits/jian-yong-campaign.png
Normal file
|
After Width: | Height: | Size: 2.2 MiB |
BIN
src/assets/images/portraits/meng-huo-campaign.png
Normal file
|
After Width: | Height: | Size: 2.3 MiB |
BIN
src/assets/images/portraits/mi-zhu-campaign.png
Normal file
|
After Width: | Height: | Size: 2.2 MiB |
BIN
src/assets/images/portraits/pang-tong-campaign.png
Normal file
|
After Width: | Height: | Size: 2.3 MiB |
BIN
src/assets/images/portraits/sun-qian-campaign.png
Normal file
|
After Width: | Height: | Size: 2.2 MiB |
BIN
src/assets/images/story/77-xuzhou-gate-council.png
Normal file
|
After Width: | Height: | Size: 2.5 MiB |
BIN
src/assets/images/story/78-xuzhou-night-evacuation.png
Normal file
|
After Width: | Height: | Size: 2.3 MiB |
BIN
src/assets/images/story/79-anti-dong-coalition-council.png
Normal file
|
After Width: | Height: | Size: 2.6 MiB |
BIN
src/assets/images/story/80-anti-dong-night-assault.png
Normal file
|
After Width: | Height: | Size: 2.4 MiB |
BIN
src/assets/images/story/81-chengdu-surrender-court.png
Normal file
|
After Width: | Height: | Size: 2.5 MiB |
BIN
src/assets/images/story/82-chengdu-outer-gate-surrender.png
Normal file
|
After Width: | Height: | Size: 2.7 MiB |
BIN
src/assets/images/story/83-wudu-yinping-cloud-road.png
Normal file
|
After Width: | Height: | Size: 2.7 MiB |
BIN
src/assets/images/story/84-chencang-siege-fortress-standoff.png
Normal file
|
After Width: | Height: | Size: 2.8 MiB |
BIN
src/assets/images/story/85-chencang-siege-engineering-camp.png
Normal file
|
After Width: | Height: | Size: 2.5 MiB |
BIN
src/assets/images/story/86-weishui-camps-logistics.png
Normal file
|
After Width: | Height: | Size: 2.5 MiB |
BIN
src/assets/images/story/87-weishui-camps-night-alarm.png
Normal file
|
After Width: | Height: | Size: 2.4 MiB |
BIN
src/assets/images/story/88-lucheng-pursuit-valley-road.png
Normal file
|
After Width: | Height: | Size: 2.6 MiB |
BIN
src/assets/images/units/unit-nanman-infantry-jungle-actions.png
Normal file
|
After Width: | Height: | Size: 1013 KiB |
BIN
src/assets/images/units/unit-nanman-infantry-jungle.png
Normal file
|
After Width: | Height: | Size: 966 KiB |
BIN
src/assets/images/units/unit-rebel-cavalry-veteran-actions.png
Normal file
|
After Width: | Height: | Size: 1.2 MiB |
BIN
src/assets/images/units/unit-rebel-cavalry-veteran.png
Normal file
|
After Width: | Height: | Size: 1.2 MiB |
BIN
src/assets/images/units/unit-rebel-leader-warlord-actions.png
Normal file
|
After Width: | Height: | Size: 1.2 MiB |
BIN
src/assets/images/units/unit-rebel-leader-warlord.png
Normal file
|
After Width: | Height: | Size: 1.2 MiB |
BIN
src/assets/images/units/unit-shu-officer-council-actions.png
Normal file
|
After Width: | Height: | Size: 1.1 MiB |
BIN
src/assets/images/units/unit-shu-officer-council.png
Normal file
|
After Width: | Height: | Size: 1.1 MiB |
BIN
src/assets/images/units/unit-wu-strategist-river-actions.png
Normal file
|
After Width: | Height: | Size: 1.3 MiB |
BIN
src/assets/images/units/unit-wu-strategist-river.png
Normal file
|
After Width: | Height: | Size: 1.1 MiB |