Skip to content

v1.0.0

Latest

Choose a tag to compare

@bonsaibauer bonsaibauer released this 05 Sep 17:20
· 6 commits to main since this release

Stronghold Map Unlocker – v1.0.0

Highlights

  • 🗺️ Workshop scan: finds .map files in numbered Steam subfolders and in flat folders (no subfolders)
  • 🔓 Unlock logic: copies the map and sets BASE+0x08 = 0x00Name [unlocked].map
  • 🌐 Multi-language: English/German included; add more via lang/*.json (with language_name)
  • 🛡️ Permissions handling: shows hint and can restart elevated (Run as Admin)
  • 🧠 Remembers settings: config.json stores 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 .map files 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/*.json with 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

  1. Run the EXE
  2. Check/select the Workshop folder
  3. Check Destination (Maps) (default: LocalLow → SC:DE)
  4. Select mapsUnlock

    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.
  • 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.py

The 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)