feat: enrich campaign reward and roster visuals

This commit is contained in:
2026-07-19 12:16:30 +09:00
parent 7c6a8174d1
commit f83296db7b
11 changed files with 1164 additions and 205 deletions

View File

@@ -11,7 +11,7 @@ Generated by `scripts/audit-visual-asset-quality.mjs`.
- Battle map source pixel density range: 60.0-96.0 px/tile
- Story source backgrounds: 136
- Story page background references: 466
- Flagged story background review rows: 120
- Flagged story background review rows: 17
## Main Findings
@@ -25,7 +25,7 @@ Generated by `scripts/audit-visual-asset-quality.mjs`.
- Battle map candidate: `sixty-first-battle-hanzhong-rain-defense` / `battle-map-sixty-first`
- Battle reason: watch tile pixel density
- Story background candidate: `src/assets/images/story/25-yizhou-luo-road.png`
- Story background candidate: `src/assets/images/story/38-yizhou-luo-road-supply-train.png`
- Story reason: high-repeat story background
- Suggested workflow: capture the top battle candidate in a 1920x1080 battle scene, inspect terrain readability under units/grid, then regenerate or repaint only that asset if the screenshot confirms the issue.
@@ -45,18 +45,18 @@ Generated by `scripts/audit-visual-asset-quality.mjs`.
| score | source | page refs | image | bytes/px | concerns | examples |
| ---: | --- | ---: | ---: | ---: | --- | --- |
| 4 | `src/assets/images/story/25-yizhou-luo-road.png` | 49 | 1672x941 | 2.4004 | high-repeat story background | `twentySeventhBattleIntroPages/twenty-seventh-yizhou-request`<br>`twentySeventhBattleIntroPages/twenty-seventh-pang-tong-rumor`<br>`twentySeventhBattleIntroPages/twenty-seventh-gate-warning` |
| 4 | `src/assets/images/story/28-nanzhong-seven-captures.png` | 42 | 1672x941 | 2.4106 | high-repeat story background | `fortyEighthBattleIntroPages/forty-eighth-meng-huo-gathers`<br>`fortyEighthBattleIntroPages/forty-eighth-zhuge-amnesty`<br>`fortyEighthBattleIntroPages/forty-eighth-sortie` |
| 4 | `src/assets/images/story/09-wandering-road.png` | 39 | 1672x941 | 1.3390 | high-repeat story background | `tenthBattleIntroPages/tenth-zhang-fei-fault`<br>`tenthBattleIntroPages/tenth-lu-bu-takes-xuzhou`<br>`tenthBattleIntroPages/tenth-brothers-regroup` |
| 4 | `src/assets/images/story/13-northern-expedition.png` | 36 | 1672x941 | 1.5690 | high-repeat story background | `thirtyFifthBattleIntroPages/thirty-fifth-hanzhong-front`<br>`thirtyFifthBattleIntroPages/thirty-fifth-ma-chao-first-sortie`<br>`thirtyFifthBattleIntroPages/thirty-fifth-huang-quan-map` |
| 4 | `src/assets/images/story/12-yizhou-mountain-pass.png` | 29 | 1672x941 | 1.6969 | high-repeat story background | `twentyThirdBattleIntroPages/twenty-third-jingzhou-cause`<br>`twentyThirdBattleIntroPages/twenty-third-zhuge-plan`<br>`twentyThirdBattleIntroPages/twenty-third-ma-liang-rumor` |
| 4 | `src/assets/images/story/11-red-cliffs-fire.png` | 28 | 1672x941 | 1.5183 | high-repeat story background | `nineteenthBattleIntroPages/nineteenth-cao-army-south`<br>`nineteenthBattleIntroPages/nineteenth-zhao-yun-rescue`<br>`nineteenthBattleIntroPages/nineteenth-zhang-fei-bridge` |
| 4 | `src/assets/images/story/06-yellow-turban-pursuit.png` | 26 | 1672x941 | 1.5888 | high-repeat story background | `firstBattleVictoryPages/first-victory-village`<br>`firstBattleVictoryPages/first-victory-liu-bei`<br>`firstBattleVictoryPages/first-victory-guan-yu` |
| 4 | `src/assets/images/story/29-fan-castle-flood.png` | 21 | 1672x941 | 1.5085 | high-repeat story background | `thirtyNinthBattleIntroPages/thirty-ninth-fan-castle-shadow`<br>`thirtyNinthBattleIntroPages/thirty-ninth-guan-yu-north`<br>`thirtyNinthBattleIntroPages/thirty-ninth-flooded-fields` |
| 4 | `src/assets/images/story/10-wolong-cottage.png` | 21 | 1672x941 | 1.6899 | high-repeat story background | `sixteenthBattleIntroPages/sixteenth-yuan-camp-shifts`<br>`sixteenthBattleIntroPages/sixteenth-zhao-yun-returns`<br>`sixteenthBattleIntroPages/sixteenth-liu-biao-road` |
| 4 | `src/assets/images/story/27-jingzhou-crisis.png` | 21 | 1672x941 | 2.1512 | high-repeat story background | `thirtyEighthBattleIntroPages/thirty-eighth-jing-warning`<br>`thirtyEighthBattleIntroPages/thirty-eighth-guan-yu-front`<br>`thirtyEighthBattleIntroPages/thirty-eighth-two-fronts` |
| 4 | `src/assets/images/story/08-xuzhou-handover.png` | 18 | 1672x941 | 1.3700 | high-repeat story background | `seventhBattleIntroPages/seventh-xuzhou-envoy-arrives`<br>`seventhBattleIntroPages/seventh-liu-bei-xuzhou`<br>`seventhBattleIntroPages/seventh-guan-yu-field` |
| 4 | `src/assets/images/story/18-jieting-crisis.png` | 13 | 1672x941 | 1.5299 | high-repeat story background | `fiftySixthBattleVictoryPages/fifty-sixth-next-jieting`<br>`fiftySeventhBattleIntroPages/fifty-seventh-jieting-order`<br>`fiftySeventhBattleIntroPages/fifty-seventh-ma-su-insists` |
| 4 | `src/assets/images/story/38-yizhou-luo-road-supply-train.png` | 14 | 1672x941 | 1.9711 | high-repeat story background | `twentyFifthBattleIntroPages/twenty-fifth-wuling-sortie`<br>`twentySixthBattleVictoryPages/twenty-sixth-victory-changsha-open`<br>`twentySixthBattleVictoryPages/twenty-sixth-next-yi-province` |
| 4 | `src/assets/images/story/89-yizhou-luo-road-hidden-bridge.png` | 13 | 1672x941 | 1.6125 | high-repeat story background | `twentyFifthBattleIntroPages/twenty-fifth-wuling-road`<br>`twentyFifthBattleIntroPages/twenty-fifth-zhuge-formation`<br>`twentySeventhBattleIntroPages/twenty-seventh-pang-tong-rumor` |
| 2 | `src/assets/images/story/13-northern-expedition.png` | 11 | 1672x941 | 1.5690 | repeat story background | `thirtyFifthBattleIntroPages/thirty-fifth-sortie`<br>`thirtyFifthBattleVictoryPages/thirty-fifth-victory-pass-opened`<br>`thirtySixthBattleIntroPages/thirty-sixth-huang-zhong-plan` |
| 2 | `src/assets/images/story/66-yizhou-luo-road-mountain-scouts.png` | 11 | 1672x941 | 1.7281 | repeat story background | `twentyThirdBattleVictoryPages/twenty-third-ma-liang-joins`<br>`twentyFourthBattleIntroPages/twenty-fourth-guiyang-cause`<br>`twentyFifthBattleIntroPages/twenty-fifth-yi-ji-letter` |
| 2 | `src/assets/images/story/09-wandering-road.png` | 10 | 1672x941 | 1.3390 | repeat story background | `tenthBattleIntroPages/tenth-brothers-regroup`<br>`tenthBattleVictoryPages/tenth-cao-cao-shadow`<br>`eleventhBattleIntroPages/eleventh-cao-cao-test` |
| 2 | `src/assets/images/story/40-nanzhong-captures-river-ford.png` | 10 | 1672x941 | 1.8187 | repeat story background | `fortySeventhBattleIntroPages/forty-seventh-zhao-yun-vanguard`<br>`fortyEighthBattleIntroPages/forty-eighth-zhuge-amnesty`<br>`fortyNinthBattleVictoryPages/forty-ninth-victory-second-capture` |
| 2 | `src/assets/images/story/25-yizhou-luo-road.png` | 10 | 1672x941 | 2.4004 | repeat story background | `twentySeventhBattleIntroPages/twenty-seventh-yizhou-request`<br>`twentySeventhBattleIntroPages/twenty-seventh-gate-warning`<br>`twentySeventhBattleVictoryPages/twenty-seventh-victory-road-open` |
| 2 | `src/assets/images/story/37-yizhou-luo-road-ambush.png` | 9 | 1672x941 | 1.7313 | repeat story background | `twentyThirdBattleIntroPages/twenty-third-zhuge-plan`<br>`twentyFourthBattleIntroPages/twenty-fourth-yi-ji-rumor`<br>`twentySeventhBattleVictoryPages/twenty-seventh-next-fu-pass` |
| 2 | `src/assets/images/story/72-northern-mountain-war-council.png` | 8 | 1672x941 | 1.3639 | repeat story background | `thirtyFifthBattleIntroPages/thirty-fifth-hanzhong-front`<br>`thirtySixthBattleIntroPages/thirty-sixth-dingjun-mountain`<br>`thirtySixthBattleIntroPages/thirty-sixth-western-cavalry` |
| 2 | `src/assets/images/story/12-yizhou-mountain-pass.png` | 8 | 1672x941 | 1.6969 | repeat story background | `twentyThirdBattleIntroPages/twenty-third-ma-liang-rumor`<br>`twentyThirdBattleVictoryPages/twenty-third-victory-southern-road`<br>`twentyThirdBattleVictoryPages/twenty-third-next-commandery` |
| 2 | `src/assets/images/story/28-nanzhong-seven-captures.png` | 8 | 1672x941 | 2.4106 | repeat story background | `fortySeventhBattleIntroPages/forty-seventh-zhuge-policy`<br>`fortySeventhBattleVictoryPages/forty-seventh-next-nanman`<br>`fortyEighthBattleVictoryPages/forty-eighth-next-capture` |
| 2 | `src/assets/images/story/30-maicheng-isolation.png` | 2 | 1672x941 | 1.1976 | low PNG byte density | `fortyFourthBattleIntroPages/forty-fourth-lu-meng-seals-roads`<br>`fortyFourthBattleVictoryPages/forty-fourth-lu-meng-tightens` |
## Battle Map Inventory
@@ -133,139 +133,139 @@ Generated by `scripts/audit-visual-asset-quality.mjs`.
| source | page refs | image | MiB | concerns |
| --- | ---: | ---: | ---: | --- |
| `src/assets/images/story/01-yellow-turban-chaos.png` | 1 | 1672x941 | 2.17 | none |
| `src/assets/images/story/02-liu-bei-resolve.png` | 1 | 1672x941 | 2.05 | none |
| `src/assets/images/story/03-three-heroes-meet.png` | 2 | 1672x941 | 2.21 | none |
| `src/assets/images/story/04-volunteer-militia.png` | 1 | 1672x941 | 2.26 | none |
| `src/assets/images/story/05-first-sortie.png` | 4 | 1672x941 | 2.39 | none |
| `src/assets/images/story/06-yellow-turban-pursuit.png` | 26 | 1672x941 | 2.38 | high-repeat story background |
| `src/assets/images/story/07-anti-dong-pass.png` | 12 | 1672x941 | 2.61 | high-repeat story background |
| `src/assets/images/story/08-xuzhou-handover.png` | 18 | 1672x941 | 2.06 | high-repeat story background |
| `src/assets/images/story/09-wandering-road.png` | 39 | 1672x941 | 2.01 | high-repeat story background |
| `src/assets/images/story/10-wolong-cottage.png` | 21 | 1672x941 | 2.54 | high-repeat story background |
| `src/assets/images/story/100-jieting-crisis-wooden-palisade.png` | 0 | 1672x941 | 2.81 | unused source background |
| `src/assets/images/story/101-chengdu-surrender-river-gate.png` | 0 | 1672x941 | 2.67 | unused source background |
| `src/assets/images/story/102-yiling-baidi-lantern-vigil.png` | 0 | 1672x941 | 2.26 | unused source background |
| `src/assets/images/story/103-weishui-northbank-frozen-ferry.png` | 0 | 1672x941 | 2.75 | unused source background |
| `src/assets/images/story/104-lucheng-pursuit-dust-road.png` | 0 | 1672x941 | 3.01 | unused source background |
| `src/assets/images/story/105-qishan-renewed-snow-relay.png` | 0 | 1672x941 | 2.81 | unused source background |
| `src/assets/images/story/106-hanzhong-rain-supply-trench.png` | 0 | 1672x941 | 2.49 | unused source background |
| `src/assets/images/story/107-maicheng-isolation-abandoned-gate.png` | 0 | 1672x941 | 2.45 | unused source background |
| `src/assets/images/story/108-yiling-fire-forest-corridor.png` | 0 | 1672x941 | 2.44 | unused source background |
| `src/assets/images/story/109-wudu-yinping-cliff-granary.png` | 0 | 1672x941 | 2.87 | unused source background |
| `src/assets/images/story/11-red-cliffs-fire.png` | 28 | 1672x941 | 2.28 | high-repeat story background |
| `src/assets/images/story/110-baidi-entrustment-medicine-chamber.png` | 0 | 1672x941 | 2.40 | unused source background |
| `src/assets/images/story/111-tianshui-front-market-command.png` | 0 | 1672x941 | 2.46 | unused source background |
| `src/assets/images/story/112-chencang-siege-ladder-yard.png` | 0 | 1672x941 | 2.65 | unused source background |
| `src/assets/images/story/113-anti-dong-coalition-oath-camp.png` | 0 | 1672x941 | 2.57 | unused source background |
| `src/assets/images/story/114-red-cliffs-wind-altar.png` | 0 | 1672x941 | 2.33 | unused source background |
| `src/assets/images/story/115-qishan-renewed-frozen-scout-line.png` | 0 | 1672x941 | 2.50 | unused source background |
| `src/assets/images/story/116-yiling-fire-attack-river-ashes.png` | 0 | 1672x941 | 2.26 | unused source background |
| `src/assets/images/story/117-baidi-entrustment-river-watch.png` | 0 | 1672x941 | 2.10 | unused source background |
| `src/assets/images/story/118-tianshui-front-hidden-letter.png` | 0 | 1672x941 | 2.35 | unused source background |
| `src/assets/images/story/119-hanzhong-rain-mountain-shrine.png` | 0 | 1672x941 | 2.67 | unused source background |
| `src/assets/images/story/12-yizhou-mountain-pass.png` | 29 | 1672x941 | 2.55 | high-repeat story background |
| `src/assets/images/story/120-maicheng-isolation-snow-bridge.png` | 0 | 1672x941 | 2.29 | unused source background |
| `src/assets/images/story/121-wudu-yinping-cloud-signal.png` | 0 | 1672x941 | 2.68 | unused source background |
| `src/assets/images/story/122-chencang-siege-broken-ram.png` | 0 | 1672x941 | 2.46 | unused source background |
| `src/assets/images/story/123-yellow-pursuit-grain-relief.png` | 0 | 1672x941 | 2.51 | unused source background |
| `src/assets/images/story/124-nanzhong-captures-mist-stockade.png` | 0 | 1672x941 | 2.48 | unused source background |
| `src/assets/images/story/125-chaos-market-panic.png` | 0 | 1672x941 | 2.57 | unused source background |
| `src/assets/images/story/126-militia-training-yard.png` | 0 | 1672x941 | 2.52 | unused source background |
| `src/assets/images/story/127-sortie-dawn-muster.png` | 0 | 1672x941 | 2.45 | unused source background |
| `src/assets/images/story/128-liu-bei-village-resolve.png` | 0 | 1672x941 | 2.27 | unused source background |
| `src/assets/images/story/129-three-heroes-rain-shelter.png` | 0 | 1672x941 | 2.31 | unused source background |
| `src/assets/images/story/13-northern-expedition.png` | 36 | 1672x941 | 2.35 | high-repeat story background |
| `src/assets/images/story/130-lucheng-pursuit-ravine-signal.png` | 0 | 1672x941 | 2.72 | unused source background |
| `src/assets/images/story/131-weishui-camps-frozen-watch.png` | 0 | 1672x941 | 2.22 | unused source background |
| `src/assets/images/story/132-weishui-northbank-siege-line.png` | 0 | 1672x941 | 2.55 | unused source background |
| `src/assets/images/story/133-yiling-fire-attack-smoke-crossing.png` | 0 | 1672x941 | 2.37 | unused source background |
| `src/assets/images/story/134-chengdu-surrender-sealed-gate.png` | 0 | 1672x941 | 2.50 | unused source background |
| `src/assets/images/story/01-yellow-turban-chaos.png` | 0 | 1672x941 | 2.17 | unused source background |
| `src/assets/images/story/02-liu-bei-resolve.png` | 0 | 1672x941 | 2.05 | unused source background |
| `src/assets/images/story/03-three-heroes-meet.png` | 1 | 1672x941 | 2.21 | none |
| `src/assets/images/story/04-volunteer-militia.png` | 0 | 1672x941 | 2.26 | unused source background |
| `src/assets/images/story/05-first-sortie.png` | 2 | 1672x941 | 2.39 | none |
| `src/assets/images/story/06-yellow-turban-pursuit.png` | 7 | 1672x941 | 2.38 | none |
| `src/assets/images/story/07-anti-dong-pass.png` | 3 | 1672x941 | 2.61 | none |
| `src/assets/images/story/08-xuzhou-handover.png` | 3 | 1672x941 | 2.06 | none |
| `src/assets/images/story/09-wandering-road.png` | 10 | 1672x941 | 2.01 | repeat story background |
| `src/assets/images/story/10-wolong-cottage.png` | 6 | 1672x941 | 2.54 | none |
| `src/assets/images/story/100-jieting-crisis-wooden-palisade.png` | 3 | 1672x941 | 2.81 | none |
| `src/assets/images/story/101-chengdu-surrender-river-gate.png` | 1 | 1672x941 | 2.67 | none |
| `src/assets/images/story/102-yiling-baidi-lantern-vigil.png` | 2 | 1672x941 | 2.26 | none |
| `src/assets/images/story/103-weishui-northbank-frozen-ferry.png` | 3 | 1672x941 | 2.75 | none |
| `src/assets/images/story/104-lucheng-pursuit-dust-road.png` | 1 | 1672x941 | 3.01 | none |
| `src/assets/images/story/105-qishan-renewed-snow-relay.png` | 2 | 1672x941 | 2.81 | none |
| `src/assets/images/story/106-hanzhong-rain-supply-trench.png` | 3 | 1672x941 | 2.49 | none |
| `src/assets/images/story/107-maicheng-isolation-abandoned-gate.png` | 1 | 1672x941 | 2.45 | none |
| `src/assets/images/story/108-yiling-fire-forest-corridor.png` | 2 | 1672x941 | 2.44 | none |
| `src/assets/images/story/109-wudu-yinping-cliff-granary.png` | 1 | 1672x941 | 2.87 | none |
| `src/assets/images/story/11-red-cliffs-fire.png` | 7 | 1672x941 | 2.28 | none |
| `src/assets/images/story/110-baidi-entrustment-medicine-chamber.png` | 2 | 1672x941 | 2.40 | none |
| `src/assets/images/story/111-tianshui-front-market-command.png` | 1 | 1672x941 | 2.46 | none |
| `src/assets/images/story/112-chencang-siege-ladder-yard.png` | 2 | 1672x941 | 2.65 | none |
| `src/assets/images/story/113-anti-dong-coalition-oath-camp.png` | 2 | 1672x941 | 2.57 | none |
| `src/assets/images/story/114-red-cliffs-wind-altar.png` | 4 | 1672x941 | 2.33 | none |
| `src/assets/images/story/115-qishan-renewed-frozen-scout-line.png` | 2 | 1672x941 | 2.50 | none |
| `src/assets/images/story/116-yiling-fire-attack-river-ashes.png` | 2 | 1672x941 | 2.26 | none |
| `src/assets/images/story/117-baidi-entrustment-river-watch.png` | 1 | 1672x941 | 2.10 | none |
| `src/assets/images/story/118-tianshui-front-hidden-letter.png` | 2 | 1672x941 | 2.35 | none |
| `src/assets/images/story/119-hanzhong-rain-mountain-shrine.png` | 1 | 1672x941 | 2.67 | none |
| `src/assets/images/story/12-yizhou-mountain-pass.png` | 8 | 1672x941 | 2.55 | repeat story background |
| `src/assets/images/story/120-maicheng-isolation-snow-bridge.png` | 3 | 1672x941 | 2.29 | none |
| `src/assets/images/story/121-wudu-yinping-cloud-signal.png` | 3 | 1672x941 | 2.68 | none |
| `src/assets/images/story/122-chencang-siege-broken-ram.png` | 1 | 1672x941 | 2.46 | none |
| `src/assets/images/story/123-yellow-pursuit-grain-relief.png` | 4 | 1672x941 | 2.51 | none |
| `src/assets/images/story/124-nanzhong-captures-mist-stockade.png` | 7 | 1672x941 | 2.48 | none |
| `src/assets/images/story/125-chaos-market-panic.png` | 1 | 1672x941 | 2.57 | none |
| `src/assets/images/story/126-militia-training-yard.png` | 1 | 1672x941 | 2.52 | none |
| `src/assets/images/story/127-sortie-dawn-muster.png` | 2 | 1672x941 | 2.45 | none |
| `src/assets/images/story/128-liu-bei-village-resolve.png` | 1 | 1672x941 | 2.27 | none |
| `src/assets/images/story/129-three-heroes-rain-shelter.png` | 1 | 1672x941 | 2.31 | none |
| `src/assets/images/story/13-northern-expedition.png` | 11 | 1672x941 | 2.35 | repeat story background |
| `src/assets/images/story/130-lucheng-pursuit-ravine-signal.png` | 1 | 1672x941 | 2.72 | none |
| `src/assets/images/story/131-weishui-camps-frozen-watch.png` | 2 | 1672x941 | 2.22 | none |
| `src/assets/images/story/132-weishui-northbank-siege-line.png` | 1 | 1672x941 | 2.55 | none |
| `src/assets/images/story/133-yiling-fire-attack-smoke-crossing.png` | 2 | 1672x941 | 2.37 | none |
| `src/assets/images/story/134-chengdu-surrender-sealed-gate.png` | 1 | 1672x941 | 2.50 | none |
| `src/assets/images/story/135-wuzhang-jiangwei-inheritance.png` | 2 | 1672x941 | 2.09 | none |
| `src/assets/images/story/14-nanzhong-pacification.png` | 7 | 1672x941 | 2.41 | none |
| `src/assets/images/story/15-yiling-baidi-aftermath.png` | 8 | 1672x941 | 2.20 | repeat story background |
| `src/assets/images/story/16-qishan-renewed-offensive.png` | 6 | 1672x941 | 2.26 | none |
| `src/assets/images/story/17-tianshui-front.png` | 5 | 1672x941 | 2.12 | none |
| `src/assets/images/story/18-jieting-crisis.png` | 13 | 1672x941 | 2.30 | high-repeat story background |
| `src/assets/images/story/19-chencang-siege.png` | 6 | 1672x941 | 2.38 | none |
| `src/assets/images/story/20-wudu-yinping.png` | 6 | 1672x941 | 2.55 | none |
| `src/assets/images/story/21-hanzhong-rain-defense.png` | 9 | 1672x941 | 2.25 | repeat story background |
| `src/assets/images/story/22-lucheng-pursuit.png` | 6 | 1672x941 | 2.03 | none |
| `src/assets/images/story/23-weishui-camps.png` | 6 | 1672x941 | 2.31 | none |
| `src/assets/images/story/24-weishui-northbank.png` | 8 | 1672x941 | 2.22 | repeat story background |
| `src/assets/images/story/25-yizhou-luo-road.png` | 49 | 1672x941 | 3.60 | high-repeat story background |
| `src/assets/images/story/26-chengdu-surrender.png` | 11 | 1672x941 | 3.64 | repeat story background |
| `src/assets/images/story/27-jingzhou-crisis.png` | 21 | 1672x941 | 3.23 | high-repeat story background |
| `src/assets/images/story/28-nanzhong-seven-captures.png` | 42 | 1672x941 | 3.62 | high-repeat story background |
| `src/assets/images/story/29-fan-castle-flood.png` | 21 | 1672x941 | 2.26 | high-repeat story background |
| `src/assets/images/story/30-maicheng-isolation.png` | 7 | 1672x941 | 1.80 | low PNG byte density |
| `src/assets/images/story/31-yiling-fire-attack.png` | 7 | 1672x941 | 2.10 | none |
| `src/assets/images/story/32-baidi-entrustment.png` | 5 | 1672x941 | 1.96 | none |
| `src/assets/images/story/33-yellow-pursuit-refugees.png` | 0 | 1672x941 | 2.41 | unused source background |
| `src/assets/images/story/34-xuzhou-gates-handover.png` | 0 | 1672x941 | 2.24 | unused source background |
| `src/assets/images/story/35-wolong-night-strategy.png` | 0 | 1672x941 | 2.12 | unused source background |
| `src/assets/images/story/36-red-cliffs-chain-fleet.png` | 0 | 1672x941 | 2.13 | unused source background |
| `src/assets/images/story/37-yizhou-luo-road-ambush.png` | 0 | 1672x941 | 2.60 | unused source background |
| `src/assets/images/story/38-yizhou-luo-road-supply-train.png` | 0 | 1672x941 | 2.96 | unused source background |
| `src/assets/images/story/39-nanzhong-captures-jungle-net.png` | 0 | 1672x941 | 3.12 | unused source background |
| `src/assets/images/story/40-nanzhong-captures-river-ford.png` | 0 | 1672x941 | 2.73 | unused source background |
| `src/assets/images/story/41-wandering-night-camp.png` | 0 | 1672x941 | 2.55 | unused source background |
| `src/assets/images/story/42-wandering-river-crossing.png` | 0 | 1672x941 | 2.60 | unused source background |
| `src/assets/images/story/43-northern-qishan-snow-march.png` | 0 | 1672x941 | 3.03 | unused source background |
| `src/assets/images/story/44-northern-wei-fortress.png` | 0 | 1672x941 | 2.93 | unused source background |
| `src/assets/images/story/45-yizhou-council-at-river.png` | 0 | 1672x941 | 2.89 | unused source background |
| `src/assets/images/story/46-yizhou-mountain-gate.png` | 0 | 1672x941 | 3.01 | unused source background |
| `src/assets/images/story/47-jingzhou-crisis-watchtower-alarm.png` | 0 | 1672x941 | 2.81 | unused source background |
| `src/assets/images/story/48-jingzhou-crisis-refugee-court.png` | 0 | 1672x941 | 2.78 | unused source background |
| `src/assets/images/story/49-fan-castle-flood-rising-water.png` | 0 | 1672x941 | 2.62 | unused source background |
| `src/assets/images/story/50-fan-castle-flood-siege-engines.png` | 0 | 1672x941 | 2.71 | unused source background |
| `src/assets/images/story/51-jieting-crisis-supply-line.png` | 0 | 1672x941 | 3.08 | unused source background |
| `src/assets/images/story/52-jieting-crisis-mountain-camp.png` | 0 | 1672x941 | 2.64 | unused source background |
| `src/assets/images/story/53-chengdu-surrender-hall.png` | 0 | 1672x941 | 2.96 | unused source background |
| `src/assets/images/story/54-anti-dong-hulao-pass.png` | 0 | 1672x941 | 2.85 | unused source background |
| `src/assets/images/story/55-yellow-pursuit-ambush.png` | 0 | 1672x941 | 2.65 | unused source background |
| `src/assets/images/story/56-yellow-pursuit-village-relief.png` | 0 | 1672x941 | 3.07 | unused source background |
| `src/assets/images/story/57-wolong-straw-boats.png` | 0 | 1672x941 | 2.40 | unused source background |
| `src/assets/images/story/58-red-cliffs-wind-prayer.png` | 0 | 1672x941 | 2.78 | unused source background |
| `src/assets/images/story/59-yiling-baidi-mountain-retreat.png` | 0 | 1672x941 | 2.84 | unused source background |
| `src/assets/images/story/60-maicheng-isolation-snow-road.png` | 0 | 1672x941 | 2.74 | unused source background |
| `src/assets/images/story/61-yiling-fire-attack-riverbank.png` | 0 | 1672x941 | 2.60 | unused source background |
| `src/assets/images/story/62-hanzhong-rain-night-watch.png` | 0 | 1672x941 | 2.55 | unused source background |
| `src/assets/images/story/63-weishui-northbank-cavalry-screen.png` | 0 | 1672x941 | 2.74 | unused source background |
| `src/assets/images/story/64-nanzhong-forest-council.png` | 0 | 1672x941 | 2.73 | unused source background |
| `src/assets/images/story/65-yizhou-luo-road-cliff-fortress.png` | 0 | 1672x941 | 2.36 | unused source background |
| `src/assets/images/story/66-yizhou-luo-road-mountain-scouts.png` | 0 | 1672x941 | 2.59 | unused source background |
| `src/assets/images/story/67-nanzhong-captures-bamboo-gorge.png` | 0 | 1672x941 | 2.46 | unused source background |
| `src/assets/images/story/68-nanzhong-captures-river-night-camp.png` | 0 | 1672x941 | 2.29 | unused source background |
| `src/assets/images/story/69-wandering-market-shelter.png` | 0 | 1672x941 | 2.31 | unused source background |
| `src/assets/images/story/70-wandering-cold-mountain-pass.png` | 0 | 1672x941 | 2.10 | unused source background |
| `src/assets/images/story/71-northern-supply-valley.png` | 0 | 1672x941 | 2.65 | unused source background |
| `src/assets/images/story/72-northern-mountain-war-council.png` | 0 | 1672x941 | 2.05 | unused source background |
| `src/assets/images/story/73-red-cliffs-chain-smoke.png` | 0 | 1672x941 | 2.20 | unused source background |
| `src/assets/images/story/74-wolong-river-strategy.png` | 0 | 1672x941 | 2.29 | unused source background |
| `src/assets/images/story/75-jingzhou-crisis-river-watchtowers.png` | 0 | 1672x941 | 2.38 | unused source background |
| `src/assets/images/story/76-fan-castle-flood-river-breach.png` | 0 | 1672x941 | 2.45 | unused source background |
| `src/assets/images/story/77-xuzhou-gate-council.png` | 0 | 1672x941 | 2.49 | unused source background |
| `src/assets/images/story/78-xuzhou-night-evacuation.png` | 0 | 1672x941 | 2.33 | unused source background |
| `src/assets/images/story/79-anti-dong-coalition-council.png` | 0 | 1672x941 | 2.62 | unused source background |
| `src/assets/images/story/80-anti-dong-night-assault.png` | 0 | 1672x941 | 2.37 | unused source background |
| `src/assets/images/story/81-chengdu-surrender-court.png` | 0 | 1672x941 | 2.50 | unused source background |
| `src/assets/images/story/82-chengdu-outer-gate-surrender.png` | 0 | 1672x941 | 2.73 | unused source background |
| `src/assets/images/story/83-wudu-yinping-cloud-road.png` | 0 | 1672x941 | 2.66 | unused source background |
| `src/assets/images/story/84-chencang-siege-fortress-standoff.png` | 0 | 1672x941 | 2.84 | unused source background |
| `src/assets/images/story/85-chencang-siege-engineering-camp.png` | 0 | 1672x941 | 2.49 | unused source background |
| `src/assets/images/story/86-weishui-camps-logistics.png` | 0 | 1672x941 | 2.53 | unused source background |
| `src/assets/images/story/87-weishui-camps-night-alarm.png` | 0 | 1672x941 | 2.40 | unused source background |
| `src/assets/images/story/88-lucheng-pursuit-valley-road.png` | 0 | 1672x941 | 2.59 | unused source background |
| `src/assets/images/story/89-yizhou-luo-road-hidden-bridge.png` | 0 | 1672x941 | 2.42 | unused source background |
| `src/assets/images/story/90-nanzhong-captures-monsoon-ravine.png` | 0 | 1672x941 | 2.80 | unused source background |
| `src/assets/images/story/91-wandering-snow-shrine.png` | 0 | 1672x941 | 2.59 | unused source background |
| `src/assets/images/story/92-northern-supply-depot.png` | 0 | 1672x941 | 2.73 | unused source background |
| `src/assets/images/story/93-yizhou-mountain-pass-command-post.png` | 0 | 1672x941 | 2.70 | unused source background |
| `src/assets/images/story/94-red-cliffs-dawn-aftermath.png` | 0 | 1672x941 | 2.43 | unused source background |
| `src/assets/images/story/95-yellow-pursuit-rural-crossroads.png` | 0 | 1672x941 | 2.95 | unused source background |
| `src/assets/images/story/96-wolong-autumn-study.png` | 0 | 1672x941 | 2.56 | unused source background |
| `src/assets/images/story/97-fan-castle-flood-prison-camp.png` | 0 | 1672x941 | 2.15 | unused source background |
| `src/assets/images/story/98-jingzhou-crisis-secret-letter.png` | 0 | 1672x941 | 2.22 | unused source background |
| `src/assets/images/story/99-xuzhou-flooded-courtyard.png` | 0 | 1672x941 | 2.69 | unused source background |
| `src/assets/images/story/14-nanzhong-pacification.png` | 1 | 1672x941 | 2.41 | none |
| `src/assets/images/story/15-yiling-baidi-aftermath.png` | 3 | 1672x941 | 2.20 | none |
| `src/assets/images/story/16-qishan-renewed-offensive.png` | 2 | 1672x941 | 2.26 | none |
| `src/assets/images/story/17-tianshui-front.png` | 2 | 1672x941 | 2.12 | none |
| `src/assets/images/story/18-jieting-crisis.png` | 3 | 1672x941 | 2.30 | none |
| `src/assets/images/story/19-chencang-siege.png` | 0 | 1672x941 | 2.38 | unused source background |
| `src/assets/images/story/20-wudu-yinping.png` | 1 | 1672x941 | 2.55 | none |
| `src/assets/images/story/21-hanzhong-rain-defense.png` | 2 | 1672x941 | 2.25 | none |
| `src/assets/images/story/22-lucheng-pursuit.png` | 2 | 1672x941 | 2.03 | none |
| `src/assets/images/story/23-weishui-camps.png` | 1 | 1672x941 | 2.31 | none |
| `src/assets/images/story/24-weishui-northbank.png` | 2 | 1672x941 | 2.22 | none |
| `src/assets/images/story/25-yizhou-luo-road.png` | 10 | 1672x941 | 3.60 | repeat story background |
| `src/assets/images/story/26-chengdu-surrender.png` | 2 | 1672x941 | 3.64 | none |
| `src/assets/images/story/27-jingzhou-crisis.png` | 5 | 1672x941 | 3.23 | none |
| `src/assets/images/story/28-nanzhong-seven-captures.png` | 8 | 1672x941 | 3.62 | repeat story background |
| `src/assets/images/story/29-fan-castle-flood.png` | 7 | 1672x941 | 2.26 | none |
| `src/assets/images/story/30-maicheng-isolation.png` | 2 | 1672x941 | 1.80 | low PNG byte density |
| `src/assets/images/story/31-yiling-fire-attack.png` | 0 | 1672x941 | 2.10 | unused source background |
| `src/assets/images/story/32-baidi-entrustment.png` | 2 | 1672x941 | 1.96 | none |
| `src/assets/images/story/33-yellow-pursuit-refugees.png` | 6 | 1672x941 | 2.41 | none |
| `src/assets/images/story/34-xuzhou-gates-handover.png` | 1 | 1672x941 | 2.24 | none |
| `src/assets/images/story/35-wolong-night-strategy.png` | 5 | 1672x941 | 2.12 | none |
| `src/assets/images/story/36-red-cliffs-chain-fleet.png` | 5 | 1672x941 | 2.13 | none |
| `src/assets/images/story/37-yizhou-luo-road-ambush.png` | 9 | 1672x941 | 2.60 | repeat story background |
| `src/assets/images/story/38-yizhou-luo-road-supply-train.png` | 14 | 1672x941 | 2.96 | high-repeat story background |
| `src/assets/images/story/39-nanzhong-captures-jungle-net.png` | 5 | 1672x941 | 3.12 | none |
| `src/assets/images/story/40-nanzhong-captures-river-ford.png` | 10 | 1672x941 | 2.73 | repeat story background |
| `src/assets/images/story/41-wandering-night-camp.png` | 5 | 1672x941 | 2.55 | none |
| `src/assets/images/story/42-wandering-river-crossing.png` | 6 | 1672x941 | 2.60 | none |
| `src/assets/images/story/43-northern-qishan-snow-march.png` | 5 | 1672x941 | 3.03 | none |
| `src/assets/images/story/44-northern-wei-fortress.png` | 5 | 1672x941 | 2.93 | none |
| `src/assets/images/story/45-yizhou-council-at-river.png` | 2 | 1672x941 | 2.89 | none |
| `src/assets/images/story/46-yizhou-mountain-gate.png` | 2 | 1672x941 | 3.01 | none |
| `src/assets/images/story/47-jingzhou-crisis-watchtower-alarm.png` | 7 | 1672x941 | 2.81 | none |
| `src/assets/images/story/48-jingzhou-crisis-refugee-court.png` | 3 | 1672x941 | 2.78 | none |
| `src/assets/images/story/49-fan-castle-flood-rising-water.png` | 4 | 1672x941 | 2.62 | none |
| `src/assets/images/story/50-fan-castle-flood-siege-engines.png` | 3 | 1672x941 | 2.71 | none |
| `src/assets/images/story/51-jieting-crisis-supply-line.png` | 3 | 1672x941 | 3.08 | none |
| `src/assets/images/story/52-jieting-crisis-mountain-camp.png` | 4 | 1672x941 | 2.64 | none |
| `src/assets/images/story/53-chengdu-surrender-hall.png` | 1 | 1672x941 | 2.96 | none |
| `src/assets/images/story/54-anti-dong-hulao-pass.png` | 1 | 1672x941 | 2.85 | none |
| `src/assets/images/story/55-yellow-pursuit-ambush.png` | 5 | 1672x941 | 2.65 | none |
| `src/assets/images/story/56-yellow-pursuit-village-relief.png` | 2 | 1672x941 | 3.07 | none |
| `src/assets/images/story/57-wolong-straw-boats.png` | 2 | 1672x941 | 2.40 | none |
| `src/assets/images/story/58-red-cliffs-wind-prayer.png` | 6 | 1672x941 | 2.78 | none |
| `src/assets/images/story/59-yiling-baidi-mountain-retreat.png` | 3 | 1672x941 | 2.84 | none |
| `src/assets/images/story/60-maicheng-isolation-snow-road.png` | 1 | 1672x941 | 2.74 | none |
| `src/assets/images/story/61-yiling-fire-attack-riverbank.png` | 1 | 1672x941 | 2.60 | none |
| `src/assets/images/story/62-hanzhong-rain-night-watch.png` | 3 | 1672x941 | 2.55 | none |
| `src/assets/images/story/63-weishui-northbank-cavalry-screen.png` | 2 | 1672x941 | 2.74 | none |
| `src/assets/images/story/64-nanzhong-forest-council.png` | 1 | 1672x941 | 2.73 | none |
| `src/assets/images/story/65-yizhou-luo-road-cliff-fortress.png` | 5 | 1672x941 | 2.36 | none |
| `src/assets/images/story/66-yizhou-luo-road-mountain-scouts.png` | 11 | 1672x941 | 2.59 | repeat story background |
| `src/assets/images/story/67-nanzhong-captures-bamboo-gorge.png` | 6 | 1672x941 | 2.46 | none |
| `src/assets/images/story/68-nanzhong-captures-river-night-camp.png` | 5 | 1672x941 | 2.29 | none |
| `src/assets/images/story/69-wandering-market-shelter.png` | 6 | 1672x941 | 2.31 | none |
| `src/assets/images/story/70-wandering-cold-mountain-pass.png` | 7 | 1672x941 | 2.10 | none |
| `src/assets/images/story/71-northern-supply-valley.png` | 3 | 1672x941 | 2.65 | none |
| `src/assets/images/story/72-northern-mountain-war-council.png` | 8 | 1672x941 | 2.05 | repeat story background |
| `src/assets/images/story/73-red-cliffs-chain-smoke.png` | 3 | 1672x941 | 2.20 | none |
| `src/assets/images/story/74-wolong-river-strategy.png` | 2 | 1672x941 | 2.29 | none |
| `src/assets/images/story/75-jingzhou-crisis-river-watchtowers.png` | 2 | 1672x941 | 2.38 | none |
| `src/assets/images/story/76-fan-castle-flood-river-breach.png` | 3 | 1672x941 | 2.45 | none |
| `src/assets/images/story/77-xuzhou-gate-council.png` | 6 | 1672x941 | 2.49 | none |
| `src/assets/images/story/78-xuzhou-night-evacuation.png` | 4 | 1672x941 | 2.33 | none |
| `src/assets/images/story/79-anti-dong-coalition-council.png` | 3 | 1672x941 | 2.62 | none |
| `src/assets/images/story/80-anti-dong-night-assault.png` | 3 | 1672x941 | 2.37 | none |
| `src/assets/images/story/81-chengdu-surrender-court.png` | 3 | 1672x941 | 2.50 | none |
| `src/assets/images/story/82-chengdu-outer-gate-surrender.png` | 3 | 1672x941 | 2.73 | none |
| `src/assets/images/story/83-wudu-yinping-cloud-road.png` | 1 | 1672x941 | 2.66 | none |
| `src/assets/images/story/84-chencang-siege-fortress-standoff.png` | 2 | 1672x941 | 2.84 | none |
| `src/assets/images/story/85-chencang-siege-engineering-camp.png` | 1 | 1672x941 | 2.49 | none |
| `src/assets/images/story/86-weishui-camps-logistics.png` | 2 | 1672x941 | 2.53 | none |
| `src/assets/images/story/87-weishui-camps-night-alarm.png` | 1 | 1672x941 | 2.40 | none |
| `src/assets/images/story/88-lucheng-pursuit-valley-road.png` | 2 | 1672x941 | 2.59 | none |
| `src/assets/images/story/89-yizhou-luo-road-hidden-bridge.png` | 13 | 1672x941 | 2.42 | high-repeat story background |
| `src/assets/images/story/90-nanzhong-captures-monsoon-ravine.png` | 6 | 1672x941 | 2.80 | none |
| `src/assets/images/story/91-wandering-snow-shrine.png` | 5 | 1672x941 | 2.59 | none |
| `src/assets/images/story/92-northern-supply-depot.png` | 4 | 1672x941 | 2.73 | none |
| `src/assets/images/story/93-yizhou-mountain-pass-command-post.png` | 4 | 1672x941 | 2.70 | none |
| `src/assets/images/story/94-red-cliffs-dawn-aftermath.png` | 3 | 1672x941 | 2.43 | none |
| `src/assets/images/story/95-yellow-pursuit-rural-crossroads.png` | 2 | 1672x941 | 2.95 | none |
| `src/assets/images/story/96-wolong-autumn-study.png` | 6 | 1672x941 | 2.56 | none |
| `src/assets/images/story/97-fan-castle-flood-prison-camp.png` | 4 | 1672x941 | 2.15 | none |
| `src/assets/images/story/98-jingzhou-crisis-secret-letter.png` | 4 | 1672x941 | 2.22 | none |
| `src/assets/images/story/99-xuzhou-flooded-courtyard.png` | 4 | 1672x941 | 2.69 | none |
| `src/assets/images/taoyuan-oath-title.png` | 3 | 1672x941 | 2.24 | none |