Replace battle maps 43 and 44 with hand-painted assets

This commit is contained in:
2026-07-09 20:09:13 +09:00
parent 5e5f54c19c
commit 3d858fd93d
11 changed files with 31 additions and 204 deletions

View File

@@ -2,7 +2,7 @@
## Scope ## Scope
The first forty-two campaign battles now use the same hand-painted tactical map pipeline. The renderer still reads the original scenario tile coordinates and battle logic; only the map texture asset changes from flat/vector map art to low-contrast raster terrain. The first forty-four campaign battles now use the same hand-painted tactical map pipeline. The renderer still reads the original scenario tile coordinates and battle logic; only the map texture asset changes from flat/vector map art to low-contrast raster terrain.
## Art Direction ## Art Direction
@@ -67,6 +67,8 @@ python scripts/generate-handpaint-map-sample.py --map thirty-ninth --webp-qualit
python scripts/generate-handpaint-map-sample.py --map fortieth --webp-quality 90 python scripts/generate-handpaint-map-sample.py --map fortieth --webp-quality 90
python scripts/generate-handpaint-map-sample.py --map forty-first --webp-quality 90 python scripts/generate-handpaint-map-sample.py --map forty-first --webp-quality 90
python scripts/generate-handpaint-map-sample.py --map forty-second --webp-quality 90 python scripts/generate-handpaint-map-sample.py --map forty-second --webp-quality 90
python scripts/generate-handpaint-map-sample.py --map forty-third --webp-quality 90
python scripts/generate-handpaint-map-sample.py --map forty-fourth --webp-quality 90
``` ```
Comparison example: Comparison example:
@@ -119,6 +121,8 @@ python scripts/generate-handpaint-map-sample.py --map thirtieth --tile-size 192
- `src/assets/images/battle/fortieth-battle-map.webp` - `src/assets/images/battle/fortieth-battle-map.webp`
- `src/assets/images/battle/forty-first-battle-map.webp` - `src/assets/images/battle/forty-first-battle-map.webp`
- `src/assets/images/battle/forty-second-battle-map.webp` - `src/assets/images/battle/forty-second-battle-map.webp`
- `src/assets/images/battle/forty-third-battle-map.webp`
- `src/assets/images/battle/forty-fourth-battle-map.webp`
## QA Outputs ## QA Outputs
@@ -204,5 +208,9 @@ python scripts/generate-handpaint-map-sample.py --map thirtieth --tile-size 192
- `docs/forty-first-battle-map-handpaint-preview.png` - `docs/forty-first-battle-map-handpaint-preview.png`
- `docs/forty-second-battle-map-handpaint-before-after.png` - `docs/forty-second-battle-map-handpaint-before-after.png`
- `docs/forty-second-battle-map-handpaint-preview.png` - `docs/forty-second-battle-map-handpaint-preview.png`
- `docs/forty-third-battle-map-handpaint-before-after.png`
- `docs/forty-third-battle-map-handpaint-preview.png`
- `docs/forty-fourth-battle-map-handpaint-before-after.png`
- `docs/forty-fourth-battle-map-handpaint-preview.png`
Browser screenshots are saved per verification run after build/deploy. Browser screenshots are saved per verification run after build/deploy.

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 MiB

View File

@@ -417,6 +417,26 @@ MAP_CONFIGS = {
"seed": 241114, "seed": 241114,
"tile_size": VERY_LARGE_MAP_TILE_SIZE, "tile_size": VERY_LARGE_MAP_TILE_SIZE,
}, },
"forty-third": {
"slug": "forty-third-battle-map",
"terrain_export": "fortyThirdBattleMap",
"units_export": "fortyThirdBattleUnits",
"ally_positions_export": "fortyThirdBattleAllyPositions",
"out": BATTLE_IMAGE_DIR / "forty-third-battle-map.webp",
"before": BATTLE_IMAGE_DIR / "forty-third-battle-map.svg",
"seed": 241124,
"tile_size": VERY_LARGE_MAP_TILE_SIZE,
},
"forty-fourth": {
"slug": "forty-fourth-battle-map",
"terrain_export": "fortyFourthBattleMap",
"units_export": "fortyFourthBattleUnits",
"ally_positions_export": "fortyFourthBattleAllyPositions",
"out": BATTLE_IMAGE_DIR / "forty-fourth-battle-map.webp",
"before": BATTLE_IMAGE_DIR / "forty-fourth-battle-map.svg",
"seed": 241134,
"tile_size": VERY_LARGE_MAP_TILE_SIZE,
},
} }

View File

@@ -1,95 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 8800 7000">
<defs>
<linearGradient id="plain" x1="0" y1="0" x2="1" y2="1">
<stop offset="0" stop-color="#6f7039"/>
<stop offset="0.5" stop-color="#8a7d43"/>
<stop offset="1" stop-color="#4d6130"/>
</linearGradient>
<linearGradient id="river" x1="0" y1="0" x2="1" y2="1">
<stop offset="0" stop-color="#1a4a5f"/>
<stop offset="0.45" stop-color="#32747a"/>
<stop offset="1" stop-color="#163948"/>
</linearGradient>
<pattern id="grain" width="96" height="96" patternUnits="userSpaceOnUse">
<path d="M0 18h96M0 52h96M18 0v96M61 0v96" stroke="#2b351f" stroke-width="8" opacity=".18"/>
<circle cx="20" cy="23" r="7" fill="#b4a35f" opacity=".28"/>
<circle cx="67" cy="71" r="5" fill="#31431f" opacity=".25"/>
<circle cx="84" cy="35" r="4" fill="#d0be70" opacity=".24"/>
</pattern>
<filter id="soft" x="-10%" y="-10%" width="120%" height="120%">
<feGaussianBlur stdDeviation="16"/>
</filter>
</defs>
<rect width="8800" height="7000" fill="url(#plain)"/>
<rect width="8800" height="7000" fill="url(#grain)" opacity=".72"/>
<path d="M0 3080 C820 2880 1160 3500 1620 4080 C2240 4860 3080 4870 3760 5160 C4380 5420 4660 6260 5520 7000 L0 7000 Z" fill="url(#river)" opacity=".96"/>
<path d="M3870 4860 C4310 5400 4630 6130 5350 7000" fill="none" stroke="#78b4a3" stroke-width="120" opacity=".18"/>
<path d="M170 4480 C850 4460 1430 4570 2100 4810" fill="none" stroke="#93c8a8" stroke-width="86" opacity=".22"/>
<path d="M3600 5680 C4050 5870 4430 6350 4820 6880" fill="none" stroke="#0b2630" stroke-width="190" opacity=".3"/>
<g opacity=".78">
<path d="M350 580 C970 110 1890 180 2510 610 C2020 990 1650 1360 1510 1920 C970 1690 520 1360 350 580Z" fill="#3c4e2b"/>
<path d="M3380 130 C4520 -160 5730 260 6660 1060 C6020 1270 5240 1510 4620 1980 C3950 1580 3560 920 3380 130Z" fill="#37472a"/>
<path d="M6640 770 C7600 760 8500 1330 8800 2220 L8800 3410 C8120 3160 7460 2920 6810 2920 C7070 2210 7040 1440 6640 770Z" fill="#3b4a2b"/>
<path d="M5760 5960 C6900 5630 8050 5820 8800 6430 L8800 7000 L5440 7000 C5550 6660 5650 6280 5760 5960Z" fill="#38482b"/>
</g>
<g fill="#526135" opacity=".85">
<circle cx="1040" cy="2360" r="420"/>
<circle cx="1650" cy="2680" r="510"/>
<circle cx="2490" cy="2210" r="430"/>
<circle cx="5110" cy="1680" r="520"/>
<circle cx="6010" cy="2140" r="430"/>
<circle cx="7070" cy="3920" r="540"/>
<circle cx="7920" cy="4720" r="620"/>
<circle cx="6520" cy="5270" r="470"/>
</g>
<g fill="none" stroke-linecap="round" stroke-linejoin="round">
<path d="M240 4180 C1350 4100 2440 3980 3370 3890 C4420 3790 5400 3470 6500 3150 C7200 2950 7890 2920 8420 3110" stroke="#c7a45a" stroke-width="210"/>
<path d="M2220 6020 C2360 5150 2530 4630 3050 4230 C3550 3840 4270 3820 5130 3910" stroke="#c7a45a" stroke-width="170"/>
<path d="M4430 5150 C5350 5080 6640 5090 7940 5150" stroke="#c7a45a" stroke-width="160"/>
<path d="M5720 1850 C5550 2500 5450 3140 5380 3830" stroke="#c7a45a" stroke-width="145"/>
<path d="M240 4180 C1350 4100 2440 3980 3370 3890 C4420 3790 5400 3470 6500 3150 C7200 2950 7890 2920 8420 3110" stroke="#46361f" stroke-width="38" opacity=".32"/>
</g>
<g>
<path d="M2700 3300 L3950 3040 L4140 4580 L2840 4710 Z" fill="#52534a" stroke="#171a16" stroke-width="42"/>
<path d="M2840 3460 L3790 3280 L3920 4420 L2950 4500 Z" fill="#817657" stroke="#25241a" stroke-width="30"/>
<path d="M2920 3570 L3700 3420 L3800 4310 L3040 4360 Z" fill="#9a8f61" opacity=".72"/>
<path d="M3290 3030 L3570 2970 L3600 3260 L3330 3310 Z" fill="#2b2d26" stroke="#d6b567" stroke-width="28"/>
<path d="M3840 3820 L4220 3760 L4280 4210 L3890 4250 Z" fill="#272d28" stroke="#d6b567" stroke-width="26"/>
<path d="M2510 4010 L2920 3940 L2960 4340 L2540 4380 Z" fill="#282e2a" stroke="#d6b567" stroke-width="26"/>
<path d="M2960 4710 L3860 4620 L3970 4900 L3050 5030 Z" fill="#3d392d" opacity=".85"/>
<circle cx="3320" cy="3910" r="250" fill="#3f442d" opacity=".5"/>
</g>
<g opacity=".82">
<path d="M1160 4550 L1530 4440 L1710 4740 L1340 4890 Z" fill="#9b6e31" stroke="#2d2115" stroke-width="28"/>
<path d="M4490 5200 L4960 5100 L5140 5450 L4630 5580 Z" fill="#9b6e31" stroke="#2d2115" stroke-width="28"/>
<path d="M6090 2290 L6610 2180 L6740 2580 L6210 2700 Z" fill="#9b6e31" stroke="#2d2115" stroke-width="28"/>
<path d="M3230 3810 L3570 3750 L3660 4070 L3300 4140 Z" fill="#916a34" stroke="#241b12" stroke-width="22"/>
</g>
<g opacity=".72">
<path d="M760 6090 C1280 5900 1710 5880 2110 6000" fill="none" stroke="#bda14d" stroke-width="72"/>
<path d="M3320 5850 C3820 5710 4250 5790 4630 6040" fill="none" stroke="#bda14d" stroke-width="76"/>
<path d="M4180 6370 C4700 6260 5140 6350 5490 6620" fill="none" stroke="#bda14d" stroke-width="70"/>
</g>
<g opacity=".8" stroke="#26331f" stroke-width="20">
<path d="M4550 2770 C4780 2620 5060 2580 5300 2680" fill="none"/>
<path d="M4680 2910 C4920 2790 5190 2810 5400 2950" fill="none"/>
<path d="M6510 3560 C6830 3420 7190 3420 7520 3600" fill="none"/>
<path d="M6690 3760 C7050 3640 7420 3720 7700 3940" fill="none"/>
<path d="M1940 3330 C2250 3190 2550 3200 2820 3360" fill="none"/>
</g>
<g fill="#1b221a" opacity=".22" filter="url(#soft)">
<ellipse cx="3440" cy="3910" rx="1100" ry="760"/>
<ellipse cx="7440" cy="4180" rx="1320" ry="920"/>
<ellipse cx="1660" cy="4700" rx="980" ry="760"/>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 5.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 MiB

View File

@@ -1,106 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 8600 6800" width="8600" height="6800">
<defs>
<linearGradient id="plain" x1="0" y1="0" x2="1" y2="1">
<stop offset="0" stop-color="#5f6943"/>
<stop offset="0.48" stop-color="#b49c61"/>
<stop offset="1" stop-color="#464d32"/>
</linearGradient>
<linearGradient id="water" x1="0" y1="0" x2="1" y2="0">
<stop offset="0" stop-color="#0b233b"/>
<stop offset="0.48" stop-color="#5f9eb8"/>
<stop offset="1" stop-color="#0a1b2e"/>
</linearGradient>
<linearGradient id="road" x1="0" y1="0" x2="1" y2="1">
<stop offset="0" stop-color="#4e3824"/>
<stop offset="0.55" stop-color="#c4a66a"/>
<stop offset="1" stop-color="#6b4c31"/>
</linearGradient>
<linearGradient id="stone" x1="0" y1="0" x2="0" y2="1">
<stop offset="0" stop-color="#807a67"/>
<stop offset="1" stop-color="#4c4a3f"/>
</linearGradient>
<pattern id="grain" width="120" height="120" patternUnits="userSpaceOnUse">
<path d="M16 30h32M58 20h24M96 42h18M24 78h38M82 90h28M18 112h26M68 108h24" stroke="#2c291d" stroke-width="8" stroke-linecap="round" opacity="0.16"/>
<circle cx="102" cy="92" r="8" fill="#d9bc70" opacity="0.16"/>
<circle cx="34" cy="42" r="6" fill="#4e5633" opacity="0.2"/>
</pattern>
<pattern id="forest" width="180" height="160" patternUnits="userSpaceOnUse">
<circle cx="34" cy="54" r="35" fill="#223717"/>
<circle cx="78" cy="38" r="33" fill="#526b30"/>
<circle cx="120" cy="74" r="40" fill="#1b2e15"/>
<circle cx="148" cy="48" r="27" fill="#718546"/>
<path d="M34 90c38 18 82 15 116-6" stroke="#111a0f" stroke-width="10" opacity="0.36"/>
</pattern>
<pattern id="wall" width="150" height="120" patternUnits="userSpaceOnUse">
<rect width="150" height="120" fill="url(#stone)"/>
<path d="M0 40h150M0 82h150M34 0v40M100 40v42M52 82v38M122 82v38" stroke="#27251f" stroke-width="8" opacity="0.5"/>
<path d="M16 18h32M78 62h38M26 102h28" stroke="#c0ad82" stroke-width="8" opacity="0.28"/>
</pattern>
<filter id="shadow" x="-10%" y="-10%" width="120%" height="120%">
<feDropShadow dx="0" dy="14" stdDeviation="18" flood-color="#151209" flood-opacity="0.45"/>
</filter>
</defs>
<rect width="8600" height="6800" fill="url(#plain)"/>
<rect width="8600" height="6800" fill="url(#grain)" opacity="0.84"/>
<path d="M1840 -160 C1480 760 2140 1810 1840 2880 C1600 3740 2140 4720 1900 6100" fill="none" stroke="#0a223b" stroke-width="560" stroke-linecap="round"/>
<path d="M1840 -160 C1480 760 2140 1810 1840 2880 C1600 3740 2140 4720 1900 6100" fill="none" stroke="url(#water)" stroke-width="430" stroke-linecap="round"/>
<path d="M3920 720 C3640 1940 4160 3200 3860 4400 C3680 5200 4020 6020 3900 6940" fill="none" stroke="#0a223b" stroke-width="440" stroke-linecap="round"/>
<path d="M3920 720 C3640 1940 4160 3200 3860 4400 C3680 5200 4020 6020 3900 6940" fill="none" stroke="url(#water)" stroke-width="318" stroke-linecap="round"/>
<path d="M5720 240 C5500 1160 5900 2340 5700 3660 C5520 4620 5920 5220 5740 5680" fill="none" stroke="#0a223b" stroke-width="380" stroke-linecap="round"/>
<path d="M5720 240 C5500 1160 5900 2340 5700 3660 C5520 4620 5920 5220 5740 5680" fill="none" stroke="url(#water)" stroke-width="278" stroke-linecap="round"/>
<path d="M2260 3740 C3920 3500 5200 3660 7460 3840" fill="none" stroke="#0a223b" stroke-width="350" stroke-linecap="round"/>
<path d="M2260 3740 C3920 3500 5200 3660 7460 3840" fill="none" stroke="url(#water)" stroke-width="250" stroke-linecap="round"/>
<path d="M7380 1780 C7140 2660 7560 3700 7380 4960" fill="none" stroke="#0a223b" stroke-width="315" stroke-linecap="round"/>
<path d="M7380 1780 C7140 2660 7560 3700 7380 4960" fill="none" stroke="url(#water)" stroke-width="216" stroke-linecap="round"/>
<path d="M-180 0 L1700 0 L1600 3180 L620 2920 L80 1840 Z" fill="#77744a" filter="url(#shadow)" opacity="0.84"/>
<path d="M2840 40 L7180 0 L6900 2380 L4860 2140 L3780 1420 L2740 1780 Z" fill="#76734a" filter="url(#shadow)" opacity="0.76"/>
<path d="M7420 -80 L8660 -80 L8620 1580 L7420 1460 Z" fill="#817a51" filter="url(#shadow)" opacity="0.88"/>
<path d="M3360 6100 L5740 5900 L5820 6860 L3180 6860 Z" fill="#797149" filter="url(#shadow)" opacity="0.78"/>
<path d="M300 1360 C1120 980 2200 1180 3300 1400 L3220 5040 C1980 5040 880 4620 220 5020 Z" fill="url(#forest)" opacity="0.84"/>
<path d="M3040 2260 C3740 1900 4580 2160 5100 2900 L5000 5520 C4020 5540 3200 5000 2920 4300 Z" fill="url(#forest)" opacity="0.82"/>
<path d="M5480 5200 C6340 4860 7300 5020 8600 4680 L8600 6600 C7140 6660 6040 6740 5360 6460 Z" fill="url(#forest)" opacity="0.88"/>
<path d="M760 6360 C1840 6040 3200 6000 4680 5480 C5900 5080 6880 4520 7820 3860 C8160 3580 8340 3160 8700 2600" fill="none" stroke="#4d3622" stroke-width="350" stroke-linecap="round" stroke-linejoin="round" opacity="0.95"/>
<path d="M760 6360 C1840 6040 3200 6000 4680 5480 C5900 5080 6880 4520 7820 3860 C8160 3580 8340 3160 8700 2600" fill="none" stroke="url(#road)" stroke-width="210" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M2280 3080 C3920 2900 5500 3060 7840 3240" fill="none" stroke="#4d3622" stroke-width="260" stroke-linecap="round" opacity="0.9"/>
<path d="M2280 3080 C3920 2900 5500 3060 7840 3240" fill="none" stroke="url(#road)" stroke-width="150" stroke-linecap="round"/>
<path d="M5060 4300 C5900 4240 6700 4340 7600 4540" fill="none" stroke="#4d3622" stroke-width="220" stroke-linecap="round" opacity="0.9"/>
<path d="M5060 4300 C5900 4240 6700 4340 7600 4540" fill="none" stroke="url(#road)" stroke-width="128" stroke-linecap="round"/>
<rect x="5860" y="4220" width="1320" height="1120" rx="32" fill="url(#wall)" filter="url(#shadow)"/>
<rect x="6680" y="3000" width="1380" height="1160" rx="30" fill="url(#wall)" filter="url(#shadow)" opacity="0.9"/>
<rect x="7500" y="1580" width="980" height="1540" rx="28" fill="url(#wall)" filter="url(#shadow)" opacity="0.92"/>
<rect x="7060" y="4600" width="720" height="780" rx="24" fill="url(#wall)" filter="url(#shadow)" opacity="0.9"/>
<path d="M5860 5360 h1050 v300 h-1050zM6200 4220 v1440M6680 3000 v1180M7500 1580 v1560M7060 4600 v860" stroke="#27241e" stroke-width="36" fill="none" opacity="0.48"/>
<g filter="url(#shadow)">
<rect x="2200" y="5860" width="540" height="420" fill="#91703e" stroke="#2c2219" stroke-width="28"/>
<path d="M2160 5860 L2470 5500 L2780 5860 Z" fill="#c08a35" stroke="#2c2219" stroke-width="28"/>
<rect x="4500" y="5220" width="650" height="460" fill="#8f6f45" stroke="#2c2219" stroke-width="26"/>
<path d="M4460 5220 L4825 4860 L5190 5220 Z" fill="#b98434" stroke="#2c2219" stroke-width="26"/>
<rect x="6020" y="4540" width="600" height="440" fill="#84653e" stroke="#2c2219" stroke-width="24"/>
<path d="M5980 4540 L6320 4220 L6660 4540 Z" fill="#bf8b36" stroke="#2c2219" stroke-width="24"/>
<rect x="7640" y="3820" width="520" height="410" fill="#88673c" stroke="#2c2219" stroke-width="24"/>
<path d="M7600 3820 L7900 3500 L8200 3820 Z" fill="#b98332" stroke="#2c2219" stroke-width="24"/>
</g>
<g opacity="0.9" filter="url(#shadow)">
<path d="M3000 5740 h560 l190 180 -190 180 h-560 l-190-180z" fill="#5a696c" stroke="#1f2528" stroke-width="26"/>
<path d="M3580 5760 l380-170 84 64 -315 250z" fill="#c5d1d4" stroke="#1f2528" stroke-width="18"/>
<path d="M5200 4980 h480 l170 160 -170 160 h-480 l-170-160z" fill="#536468" stroke="#1f2528" stroke-width="24"/>
<path d="M5680 5010 l330-150 76 58 -275 220z" fill="#c5d1d4" stroke="#1f2528" stroke-width="16"/>
<path d="M7080 3380 h450 l160 150 -160 150 h-450 l-160-150z" fill="#56686b" stroke="#1f2528" stroke-width="24"/>
</g>
<g opacity="0.34" stroke="#172d40" stroke-width="18" stroke-linecap="round">
<path d="M2360 3940 c1020 150 2240 110 3840 300"/>
<path d="M2060 1520 c560 220 1100 180 1660 30"/>
<path d="M5720 1380 c360 220 740 220 1160 80"/>
<path d="M6260 5880 c620-170 1280-110 1880 140"/>
<path d="M7240 2580 c300 120 640 120 980 20"/>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 8.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 MiB

View File

@@ -25,12 +25,12 @@ import fortiethBattleMapUrl from '../../assets/images/battle/fortieth-battle-map
import fortyEighthBattleMapUrl from '../../assets/images/battle/forty-eighth-battle-map.svg'; import fortyEighthBattleMapUrl from '../../assets/images/battle/forty-eighth-battle-map.svg';
import fortyFifthBattleMapUrl from '../../assets/images/battle/forty-fifth-battle-map.svg'; import fortyFifthBattleMapUrl from '../../assets/images/battle/forty-fifth-battle-map.svg';
import fortyFirstBattleMapUrl from '../../assets/images/battle/forty-first-battle-map.webp'; import fortyFirstBattleMapUrl from '../../assets/images/battle/forty-first-battle-map.webp';
import fortyFourthBattleMapUrl from '../../assets/images/battle/forty-fourth-battle-map.svg'; import fortyFourthBattleMapUrl from '../../assets/images/battle/forty-fourth-battle-map.webp';
import fortyNinthBattleMapUrl from '../../assets/images/battle/forty-ninth-battle-map.svg'; import fortyNinthBattleMapUrl from '../../assets/images/battle/forty-ninth-battle-map.svg';
import fortySecondBattleMapUrl from '../../assets/images/battle/forty-second-battle-map.webp'; import fortySecondBattleMapUrl from '../../assets/images/battle/forty-second-battle-map.webp';
import fortySeventhBattleMapUrl from '../../assets/images/battle/forty-seventh-battle-map.svg'; import fortySeventhBattleMapUrl from '../../assets/images/battle/forty-seventh-battle-map.svg';
import fortySixthBattleMapUrl from '../../assets/images/battle/forty-sixth-battle-map.svg'; import fortySixthBattleMapUrl from '../../assets/images/battle/forty-sixth-battle-map.svg';
import fortyThirdBattleMapUrl from '../../assets/images/battle/forty-third-battle-map.svg'; import fortyThirdBattleMapUrl from '../../assets/images/battle/forty-third-battle-map.webp';
import fourteenthBattleMapUrl from '../../assets/images/battle/fourteenth-battle-map.webp'; import fourteenthBattleMapUrl from '../../assets/images/battle/fourteenth-battle-map.webp';
import fourthBattleMapUrl from '../../assets/images/battle/fourth-battle-map.webp'; import fourthBattleMapUrl from '../../assets/images/battle/fourth-battle-map.webp';
import nineteenthBattleMapUrl from '../../assets/images/battle/nineteenth-battle-map.webp'; import nineteenthBattleMapUrl from '../../assets/images/battle/nineteenth-battle-map.webp';