Capture current mission, AI, map and administration development

Include the current addon, terrain integrations, tools, regression tests and recorded development evidence.
This commit is contained in:
2026-10-13 22:52:53 +02:00
parent a951a96edc
commit 6a667d8deb
8104 changed files with 2124945 additions and 2061 deletions
+28
View File
@@ -0,0 +1,28 @@
# Mission map icons
Open `preview.png` for the complete labelled sheet, including 36-pixel samples
on light and dark backgrounds. Individual PNGs have transparent backgrounds;
the corresponding SVG files are editable originals.
Style: violet `#B277F0` discs with black symbols, no lettering inside the icon.
The live objective markers use the unknown, radio, extraction, camp, supplies
and hospital icons, plus the mortar icon where that location is disclosed.
The prison symbol is provided, but the prison remains hidden by the existing
discovery rules. Roadblock, factory, minefield and aircraft-wreck symbols are
included for future marker use; this artwork does not reveal additional sites.
Rough clues and recovered approximate mine warnings retain the question mark.
`tools/generate_map_icons.py` rebuilds these SVGs/PNGs, the review sheet and the
single 512×512 game atlas in `addons/core/UI/Textures/ERR`. It requires Pillow
and `rsvg-convert`. After changing the artwork, reimport `SiteMarkers.png` in
Workbench to rebuild `SiteMarkers.edds`, preserving the existing resource GUIDs.
The current EDDS was imported successfully with the installed Workbench.
The authored map layout and the compatibility marker path both load
`SiteMarkers.imageset` with white tint to preserve the violet and black pixels.
Positions, discovery, labels, visibility and map interaction remain unchanged.
Validation: reviewed the PNG sheet at full and map sizes; native texture import
succeeded; focused map-element/map-presentation checks and 15 source-bundle
checks passed. In-game visual appearance still needs a playtest after publishing.
Binary file not shown.

After

Width:  |  Height:  |  Size: 8.6 KiB

+1
View File
@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="256" height="256" viewBox="0 0 64 64"><circle cx="32" cy="32" r="30" fill="#B277F0"/><g fill="none" stroke="#000000" stroke-width="3.2" stroke-linecap="round" stroke-linejoin="round"><path d="M12 48l20-32 20 32ZM29 20l-4-6M35 20l4-6"/><path d="M24 48l8-20 8 20Z" fill="black" stroke="none"/></g></svg>

After

Width:  |  Height:  |  Size: 349 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

+1
View File
@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="256" height="256" viewBox="0 0 64 64"><circle cx="32" cy="32" r="30" fill="#B277F0"/><g fill="none" stroke="#000000" stroke-width="3.2" stroke-linecap="round" stroke-linejoin="round"><path d="M34 15l-3 15-16 6v5l16-3 1 10-5 4M38 19l-1 11 12 11M37 41l2 9M19 17l7 6M46 15l-3 7M48 49l5 3"/></g></svg>

After

Width:  |  Height:  |  Size: 345 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.2 KiB

+1
View File
@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="256" height="256" viewBox="0 0 64 64"><circle cx="32" cy="32" r="30" fill="#B277F0"/><g fill="none" stroke="#000000" stroke-width="3.2" stroke-linecap="round" stroke-linejoin="round"><path d="M13 19h34M31 19v8M18 45h30M25 38v7M41 38v7M20 33l-9-3v-7M10 25h6"/><path d="M21 29h19q9 0 11 9H25q-6 0-4-9Z" fill="black" stroke="none"/><path d="M39 30v5h7" stroke="#B277F0" stroke-width="2.5"/></g></svg>

After

Width:  |  Height:  |  Size: 445 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.2 KiB

+1
View File
@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="256" height="256" viewBox="0 0 64 64"><circle cx="32" cy="32" r="30" fill="#B277F0"/><g fill="none" stroke="#000000" stroke-width="3.2" stroke-linecap="round" stroke-linejoin="round"><path d="M15 48V31l11-8v8l11-8v25ZM38 48V16h9l2 32ZM15 48h34"/><path d="M20 39h2M29 39h2"/></g></svg>

After

Width:  |  Height:  |  Size: 332 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.9 KiB

+1
View File
@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="256" height="256" viewBox="0 0 64 64"><circle cx="32" cy="32" r="30" fill="#B277F0"/><g fill="none" stroke="#000000" stroke-width="3.2" stroke-linecap="round" stroke-linejoin="round"><path d="M26 15h12v11h11v12H38v11H26V38H15V26h11Z" fill="black" stroke="none"/></g></svg>

After

Width:  |  Height:  |  Size: 320 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.1 KiB

+1
View File
@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="256" height="256" viewBox="0 0 64 64"><circle cx="32" cy="32" r="30" fill="#B277F0"/><g fill="none" stroke="#000000" stroke-width="3.2" stroke-linecap="round" stroke-linejoin="round"><path d="M31 14L11 49h42L33 14Z"/><path d="M32 26v11"/><circle cx="32" cy="43" r="2" fill="black" stroke="none"/></g></svg>

After

Width:  |  Height:  |  Size: 354 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.4 KiB

+1
View File
@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="256" height="256" viewBox="0 0 64 64"><circle cx="32" cy="32" r="30" fill="#B277F0"/><g fill="none" stroke="#000000" stroke-width="3.2" stroke-linecap="round" stroke-linejoin="round"><path d="M19 16l6-4 19 30-6 4Z" fill="black" stroke="none"/><path d="M30 29L19 48M31 32l6 16M14 49h31M39 47h11"/></g></svg>

After

Width:  |  Height:  |  Size: 354 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 136 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.9 KiB

+1
View File
@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="256" height="256" viewBox="0 0 64 64"><circle cx="32" cy="32" r="30" fill="#B277F0"/><g fill="none" stroke="#000000" stroke-width="3.2" stroke-linecap="round" stroke-linejoin="round"><rect x="17" y="16" width="30" height="33" rx="2"/><path d="M24 17v31M32 17v31M40 17v31M18 27h28M18 39h28"/></g></svg>

After

Width:  |  Height:  |  Size: 349 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

+1
View File
@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="256" height="256" viewBox="0 0 64 64"><circle cx="32" cy="32" r="30" fill="#B277F0"/><g fill="none" stroke="#000000" stroke-width="3.2" stroke-linecap="round" stroke-linejoin="round"><path d="M25 49l7-25 7 25M23 49h18M28 40h8M26 46h12M23 20q-6 7 0 14M41 20q6 7 0 14M17 15q-11 12 0 24M47 15q11 12 0 24"/><circle cx="32" cy="22" r="3" fill="black" stroke="none"/></g></svg>

After

Width:  |  Height:  |  Size: 419 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.2 KiB

+1
View File
@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="256" height="256" viewBox="0 0 64 64"><circle cx="32" cy="32" r="30" fill="#B277F0"/><g fill="none" stroke="#000000" stroke-width="3.2" stroke-linecap="round" stroke-linejoin="round"><path d="M16 36v14M48 36v14"/><rect x="12" y="23" width="40" height="13" rx="1"/><path d="M15 34l10-10M29 34l10-10M43 34l7-7"/></g></svg>

After

Width:  |  Height:  |  Size: 368 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.3 KiB

+1
View File
@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="256" height="256" viewBox="0 0 64 64"><circle cx="32" cy="32" r="30" fill="#B277F0"/><g fill="none" stroke="#000000" stroke-width="3.2" stroke-linecap="round" stroke-linejoin="round"><rect x="16" y="24" width="32" height="25" rx="2"/><path d="M23 24v25M41 24v25M15 29h34M26 24v-7h12v7"/><path d="M29 35h6v7h-6Z" fill="black" stroke="none"/></g></svg>

After

Width:  |  Height:  |  Size: 398 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.3 KiB

+1
View File
@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="256" height="256" viewBox="0 0 64 64"><circle cx="32" cy="32" r="30" fill="#B277F0"/><g fill="none" stroke="#000000" stroke-width="3.2" stroke-linecap="round" stroke-linejoin="round"><path d="M24 25c0-11 19-11 19 0 0 7-11 7-11 14"/><circle cx="32" cy="47" r="2.6" fill="black" stroke="none"/></g></svg>

After

Width:  |  Height:  |  Size: 350 B