- Replace hard offsets (0x74B0B0) with il2cpp resolver + string-xref sigscan - winhttp.dll proxy (zero BepInEx, forwards WinHttp* exports) for Windows + Proton (WINEDLLOVERRIDES=winhttp=n,b) - Selective ImGui GUI (F6) per-robe/character overrides, persisted to DevourUnlocker.json - CMake cross-platform build, Linux .so verified - Standalone Python CLI+Tkinter (CachyOS/Proton paths, compatdata/1274570) - Install scripts pulling from git releases (install.sh/ps1), BepInEx Harmony fallback, CI build.yml - Legacy DirectX11 Edition kept as reference, x64/Release artifacts removed
10 lines
677 B
Python
Executable file
10 lines
677 B
Python
Executable file
#!/usr/bin/env python3
|
|
"""Dump robe/character strings from global-metadata.dat for DevourUnlocker.json generation"""
|
|
import re, pathlib, json, sys
|
|
p = pathlib.Path(sys.argv[1]) if len(sys.argv)>1 else pathlib.Path.home()/".local/share/Steam/steamapps/common/Devour/DEVOUR_Data/il2cpp_data/Metadata/global-metadata.dat"
|
|
data = p.read_bytes()
|
|
strs = [m.group().decode() for m in re.finditer(b'[ -~]{3,}', data)]
|
|
robes = sorted({s for s in strs if "RobeUnlocked" in s})
|
|
chars = [s for s in strs if "IsCharacterUnlocked" in s]
|
|
print(json.dumps({"robes": robes, "hasIsRobe": "IsRobeUnlocked" in strs, "hasIsChar": "IsCharacterUnlocked" in strs}, indent=2))
|
|
for r in robes: print(r)
|