Stronghold Map Unlocker – v1.0.0
Highlights
- 🗺️ Workshop scan: finds
.mapfiles in numbered Steam subfolders and in flat folders (no subfolders) - 🔓 Unlock logic: copies the map and sets
BASE+0x08 = 0x00→Name [unlocked].map - 🌐 Multi-language: English/German included; add more via
lang/*.json(withlanguage_name) - 🛡️ Permissions handling: shows hint and can restart elevated (Run as Admin)
- 🧠 Remembers settings:
config.jsonstores language and last-used paths - 🖼️ Clean GUI with logo/icon; EXE build via PyInstaller (supports
sys._MEIPASS)
What’s new
Added
- Workshop scan with fallbacks
C:\Program Files (x86)\Steam\steamapps\workshop\content\3024040\C:\Program Files\Steam\steamapps\workshop\content\3024040\- any user-chosen folder (also works when
.mapfiles lie directly in the root)
- Default user-relative destination (LocalLow – SC:DE), editable
- Actions: Unlock selected, Unlock all, Refresh list (F5)
- i18n: dynamically loads all
lang/*.jsonwith Language menu (radio items) - Configuration: language & paths saved to
%LOCALAPPDATA%\bonsaibauer\stronghold_map_unlocker\config.json - Admin elevation: restart with admin rights if needed
- Header disclaimer and About dialog (version, repo, copyright)
- List shows file names only (hides Workshop subfolder names for clarity)
- Filename scheme:
… [unlocked].map(adds counter if name exists)
Changed
- Resource resolution for both script run and PyInstaller EXE (searches
_MEIPASS, next to EXE, next to script)
Known / Notes
- Proven: Stronghold Crusader – Definitive Edition (Steam AppID 3024040)
- Unverified: other Stronghold titles (may require different paths / map formats)
- Pillow optional (better logo scaling); without Pillow the app falls back to Tkinter scaling
- Some AV products may flag fresh EXEs as false positives
Quick Start
- Run the EXE
- Check/select the Workshop folder
- Check Destination (Maps) (default: LocalLow → SC:DE)
- Select maps → Unlock
Only the copy is patched; your original Workshop file remains untouched.
Paths & AppID
- Workshop:
…\Steam\steamapps\workshop\content\<AppID>\- SC:DE AppID:
3024040 - Using a different install path or another Stronghold title (different AppID)? Pick the correct folder manually.
- SC:DE AppID:
- Destination (SC:DE):
C:\Users\<Name>\AppData\LocalLow\Firefly Studios\Stronghold Crusader Definitive Edition\Maps
Languages (i18n) – contributions welcome
- Add a new language:
lang/<code>.json(e.g.,lang/es.json) - Required field:
"language_name"(shown in the menu) - Copy structure from
lang/en.json, translate, done
Build (optional)
PowerShell (Windows):
python -m pip install --upgrade pip
python -m pip install pyinstaller pillow
python -m PyInstaller --windowed --onefile `
--name stronghold_map_unlocker `
--icon "images/app.ico" `
--add-data "lang;lang" `
--add-data "images;images" `
stronghold_unlocker_gui.pyThe EXE will be at
dist\stronghold_map_unlocker.exe.
Disclaimer
This project (“Stronghold Map Unlocker”) is not affiliated with Firefly Studios or official games like Stronghold, Stronghold Crusader, etc.
It is a private, non-commercial fan project developed independently.
Changelog
- v1.0.0 – Initial release (GUI, unlock logic, workshop scan, i18n, config, admin, EXE build)