A command-line character editor for Diablo II: Resurrected .d2s save files.
Pure C11, no external dependencies. Features a flicker-free TUI (text user interface) with a TurboVision-inspired look — cell-buffered rendering, drop shadows, and a classic blue desktop.
Supports save file versions from v1.09 (71) through D2R Reign of the Warlock (105).
- Edit character name, class, level, and flags (hardcore, expansion, ladder)
- Modify attributes: strength, dexterity, vitality, energy, HP, mana, stamina
- Set experience, gold, stash gold, stat/skill points
- Edit all 30 skill point allocations per class
- Toggle individual quests and waypoints for each difficulty
- Set active difficulty and current act
- Saves with correct checksum so the game accepts the file
D2R Hero Editor
Diablo II: Resurrected - Save File Editor
┌ TestHero.d2s ──────────────────────────────────────────┐
│ Name: MyPaladin Class: Paladin Level: 85 │
│ STR: 200 DEX: 150 VIT: 300 ENE: 100 │
│ HP: 1200 Mana: 500 Exp: 800000000 │
│ Gold: 2500000 Stash: 2500000 │
│ Flags: [EXP] [LAD] Version: 99 │
└────────────────────────────────────────────────────────-┘
> Character & Attributes
Skills
Quests (Normal)
...
Requires GCC (MinGW-w64 on Windows, gcc on Linux/macOS).
make # Dev build -> d2hero.exe
make debug # Debug build -> d2hero_debug.exe
make prod # Production build -> d2hero_prod.exe (optimized, stripped, static)
make clean # Remove all build artifacts# Open save file in interactive editor
./d2hero.exe path/to/character.d2s
# Print character summary and exit
./d2hero.exe --info path/to/character.d2sSave files are typically located at:
%USERPROFILE%\Saved Games\Diablo II Resurrected\<character>.d2s
| Key | Action |
|---|---|
| Up/Down | Navigate menu / fields |
| Enter | Select / edit field |
| Space | Toggle checkbox or bool field |
| Left/Right | Increment/decrement value |
| PgUp/PgDn | Scroll through long lists |
| F5 | Quick save |
| Esc / F10 | Back / exit |
| A | Toggle all (in checklists) |
# Generate a synthetic test save file
gcc -Wall -std=c11 -O2 -o test/gen_test test/gen_test_d2s.c && ./test/gen_test
# Roundtrip test: load -> modify -> save -> reload -> verify checksum
gcc -Wall -std=c11 -O2 -o test/test_roundtrip test/test_roundtrip.c src/d2s.c && ./test/test_roundtripMIT License. See LICENSE for details.
Copyright (c) 2026 Marek Draskaba info@brokenbone.eu