Burglin' Gnomes: finalize fix, docs, and BepInEx install support
Final tuned values baked in as defaults: HudScale=0.8, WorldLabelScale=0.8. - install.sh gains METHOD=bepinex: installs BepInEx from vendor + the prebuilt plugin, with a matching uninstall that leaves BepInEx/ alone (other mods may depend on it). Success banner is now method-aware. - Ship the prebuilt plugin DLL so users don't need a .NET SDK. - Per-game README documenting why the camera is deliberately untouched (orthographic, constant orthographicSize = already Hor+), the two-canvas UI problem, tuning, and where the plugin log actually lives. - Root README lists both games and both fix methods. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
+45
-13
@@ -105,32 +105,58 @@ remove_ini() {
|
||||
fi
|
||||
}
|
||||
|
||||
METHOD="${METHOD:-suwsf}"
|
||||
|
||||
if [ "$ACTION" = "uninstall" ]; then
|
||||
echo "[+] Uninstalling..."
|
||||
for f in SUWSF.asi SUWSF.ini dsound.dll dinput8.dll version.dll winmm.dll; do
|
||||
[ -f "$GAMEDIR/$f" ] && rm -v "$GAMEDIR/$f"
|
||||
done
|
||||
if [ "$METHOD" = "bepinex" ]; then
|
||||
rm -vf "$GAMEDIR/winhttp.dll" "$GAMEDIR/doorstop_config.ini" "$GAMEDIR/.doorstop_version" \
|
||||
"$GAMEDIR/changelog.txt" "$GAMEDIR/BepInEx/plugins/$PLUGIN_DLL"
|
||||
# leave BepInEx/ itself: the user may have other mods installed
|
||||
echo "[i] Left BepInEx/ in place (other mods may rely on it). Delete it manually if unused."
|
||||
else
|
||||
for f in SUWSF.asi SUWSF.ini dsound.dll dinput8.dll version.dll winmm.dll; do
|
||||
[ -f "$GAMEDIR/$f" ] && rm -v "$GAMEDIR/$f"
|
||||
done
|
||||
fi
|
||||
remove_ini
|
||||
echo "[+] Done. No game file was ever modified."
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# --- install ------------------------------------------------------------------
|
||||
ASI="$HERE/vendor/SUWSF-x64/SUWSF.asi"
|
||||
LOADER_SRC="$HERE/vendor/SUWSF-x64/dsound.dll" # Ultimate ASI Loader (adapts by filename)
|
||||
INI="$GAMES_DIR/$GAME/SUWSF.ini"
|
||||
for f in "$ASI" "$LOADER_SRC" "$INI"; do
|
||||
[ -f "$f" ] || { echo "[!] missing $f"; exit 1; }
|
||||
done
|
||||
if [ "$METHOD" = "bepinex" ]; then
|
||||
BEPZIP=$(ls "$HERE"/vendor/BepInEx_win_x64_*.zip 2>/dev/null | head -1)
|
||||
PLUGIN="$GAMES_DIR/$GAME/$PLUGIN_DLL"
|
||||
[ -f "$BEPZIP" ] || { echo "[!] missing BepInEx zip in vendor/"; exit 1; }
|
||||
[ -f "$PLUGIN" ] || { echo "[!] missing prebuilt plugin: $PLUGIN"; exit 1; }
|
||||
|
||||
cp -v "$ASI" "$GAMEDIR/SUWSF.asi"
|
||||
cp -v "$INI" "$GAMEDIR/SUWSF.ini"
|
||||
cp -v "$LOADER_SRC" "$GAMEDIR/$LOADER"
|
||||
if [ -f "$GAMEDIR/winhttp.dll" ]; then
|
||||
echo "[i] BepInEx already present; updating plugin only."
|
||||
else
|
||||
command -v unzip >/dev/null || { echo "[!] unzip required"; exit 1; }
|
||||
unzip -o -q "$BEPZIP" -d "$GAMEDIR"
|
||||
echo "[+] Installed BepInEx ($(basename "$BEPZIP"))"
|
||||
fi
|
||||
mkdir -p "$GAMEDIR/BepInEx/plugins"
|
||||
cp -v "$PLUGIN" "$GAMEDIR/BepInEx/plugins/"
|
||||
else
|
||||
ASI="$HERE/vendor/SUWSF-x64/SUWSF.asi"
|
||||
LOADER_SRC="$HERE/vendor/SUWSF-x64/dsound.dll" # Ultimate ASI Loader (adapts by filename)
|
||||
INI="$GAMES_DIR/$GAME/SUWSF.ini"
|
||||
for f in "$ASI" "$LOADER_SRC" "$INI"; do
|
||||
[ -f "$f" ] || { echo "[!] missing $f"; exit 1; }
|
||||
done
|
||||
|
||||
cp -v "$ASI" "$GAMEDIR/SUWSF.asi"
|
||||
cp -v "$INI" "$GAMEDIR/SUWSF.ini"
|
||||
cp -v "$LOADER_SRC" "$GAMEDIR/$LOADER"
|
||||
fi
|
||||
apply_ini
|
||||
|
||||
cat <<EOF
|
||||
|
||||
[+] Installed: SUWSF.asi, SUWSF.ini, $LOADER
|
||||
[+] Installed ($METHOD): $([ "$METHOD" = "bepinex" ] && echo "BepInEx + $PLUGIN_DLL + $LOADER" || echo "SUWSF.asi, SUWSF.ini, $LOADER")
|
||||
|
||||
NEXT (Proton) — REQUIRED, or the loader is ignored and the fix won't apply in gameplay.
|
||||
Steam > right-click ${TITLE:-$GAME} > Properties > Launch Options:
|
||||
@@ -138,6 +164,12 @@ NEXT (Proton) — REQUIRED, or the loader is ignored and the fix won't apply in
|
||||
|
||||
Then set the in-game resolution to your native ultrawide res, fullscreen.
|
||||
|
||||
Tuning (METHOD=bepinex games):
|
||||
Config is generated on first launch at
|
||||
<game>/BepInEx/config/*.cfg (edits apply live, ~2s, no restart)
|
||||
Plugin log (proves whether it applied):
|
||||
<game>/BepInEx/LogOutput.log
|
||||
|
||||
Troubleshooting:
|
||||
Different loader name: LOADER_NAME=version.dll ./install.sh $GAME
|
||||
Diagnose injection: add PROTON_LOG=1 to launch options, then
|
||||
|
||||
Reference in New Issue
Block a user