Hades II God Mode Toggle

While poking around in the game files, I realized something hilarious: Supergiant Games literally left god mode in the shipping build of Hades II.
It doesn’t even require process or memory manipulation; it’s a fully functional SafeModeOn() function sitting right there in Debug.lua, just waiting to be called.
What It Does#
When enabled, the function flips four flags:
function SafeModeOn()
SessionState.SafeMode = true
SessionState.BlockHeroDeath = true
SessionState.BlockHeroDamage = true
SessionState.UnlimitedMana = true
DebugPrint({ Text = "Unlimited health and mana ON" })
end
So you get:
- Invulnerability - no damage taken
- Immortality - can’t die
- Infinite mana - spam abilities forever
The Script#
The script basically shoves the SaveModeOn() function into the load function, and that’s it!
#!/usr/bin/env bash
# Hades II God Mode Toggle
# Enables invulnerability + unlimited mana by injecting SafeModeOn() into Debug.lua
# Requires game restart to apply changes
# Optional: Set your game directory here to skip auto-detection
GAME_DIR=""
# Auto-detect if not manually set
if [[ -z "$GAME_DIR" ]]; then
GAME_DIR=$(find ~/.steam ~/.local/share/Steam -name "Hades II" -type d 2>/dev/null | grep "steamapps/common" | head -1)
fi
# Prompt if still empty
if [[ -z "$GAME_DIR" ]]; then
echo "Hades II not found. Enter absolute installation path (e.g. /home/user/.steam/steam/steamapps/common/Hades II):"
read -e -p "> " GAME_DIR
GAME_DIR="${GAME_DIR%[\"\']}" # Strip trailing quote
GAME_DIR="${GAME_DIR#[\"\']}" # Strip leading quote
fi
DEBUG_FILE="$GAME_DIR/Content/Scripts/Debug.lua"
BACKUP_FILE="$DEBUG_FILE.backup"
[[ ! -f "$DEBUG_FILE" ]] && { echo "Error: Debug.lua not found at $DEBUG_FILE"; exit 1; }
case "$1" in
on)
[[ ! -f "$BACKUP_FILE" ]] && cp "$DEBUG_FILE" "$BACKUP_FILE"
sed -i '5 a\ SafeModeOn() -- AUTO GOD MODE' "$DEBUG_FILE"
echo "✓ God mode ON. Restart Hades II to apply."
;;
off)
[[ -f "$BACKUP_FILE" ]] && cp "$BACKUP_FILE" "$DEBUG_FILE" || echo "⚠ No backup found"
echo "✓ God mode OFF. Restart Hades II to apply."
;;
status)
grep -q "AUTO GOD MODE" "$DEBUG_FILE" && echo "God mode: ON" || echo "God mode: OFF"
;;
*)
echo "Usage: $0 {on|off|status}"
exit 1
;;
esac
How It Works#
- Finds your game install - Auto-detects Steam installation or prompts for path
- Backs up the original - Creates
Debug.lua.backupbefore making changes - Injects the call - Uses
sedto insertSafeModeOn()into the file’s init function (line 5) - Restores on disable - Copies the backup back when toggling off
Usage#
Make it executable:
chmod +x godmode.sh
Enable god mode:
./godmode.sh on
Disable god mode:
./godmode.sh off
Check current status:
./godmode.sh status
Important: You need to restart Hades II after toggling for changes to take effect.
Why This Works#
The game loads Debug.lua on startup, and the script simply injects one line into the initialization sequence. Since the SafeModeOn() function is already defined in the game’s code, we’re just calling existing functionality—not injecting new code or modifying game logic.
It’s basically flipping a developer switch that was left accessible. Whether that’s intentional or an oversight, I have no idea, but it works perfectly on Linux.
Perfect for testing builds, learning boss patterns, or just enjoying the story without the difficulty curve.