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#

  1. Finds your game install - Auto-detects Steam installation or prompts for path
  2. Backs up the original - Creates Debug.lua.backup before making changes
  3. Injects the call - Uses sed to insert SafeModeOn() into the file’s init function (line 5)
  4. 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.