Permadeath
A rule that a character or run lost in play stays lost.
On this page
Permadeath makes a loss in play stick. In Fire Emblem: The Sacred Stones, a player unit whose HP reaches 0 in combat is flagged dead and hidden rather than erased, and the cleanup between chapters keeps the flag; a phantom unit is erased instead1.
In the roguelikes Rogue 5.4 and NetHack 3.6.7, a death ends the whole game. Rogue exits the program at a death and deletes a save as it restores it, except for a wizard in a debug build2,3. NetHack does the same unless an amulet of life saving saves the hero, and its wizard and explore modes keep the save and ask “Die?” first4,5,6.
- Per unitFire Emblem: The Sacred Stones (2004). A player unit that falls in combat is flagged dead, and chapter changes keep the flag; a phantom is erased.1
- Whole runRogue (1980). A death exits the game, and restoring deletes the save and refuses a linked copy or a dead hero.3,2NetHack (1987). Restoring deletes the save, except in wizard and explore modes, which also offer to refuse a death.5,6,4
Games
| Game | Year | How | Note |
|---|---|---|---|
| Dwarf Fortress | 2006 | a fortress lost to calamity stays lost, but its world persists into later games | |
| Fire Emblem: The Sacred Stones | 2004 | Per unit | a player unit that falls in combat is flagged dead, and chapter changes keep the flag; a phantom is erased |
| Rogue | 1980 | Whole run | a death exits the game, and restoring deletes the save and refuses a linked copy or a dead hero |
| NetHack | 1987 | Whole run | restoring deletes the save, except in wizard and explore modes, which also offer to refuse a death |
Every claim about this mechanic, by game (6)
References
- ^ abIn the North American build, a player unit whose HP reaches 0 in combat is flagged dead and hidden rather than erased, unless it is a phantom, which is erased; the cleanup between chapters keeps the flag, clearing it only for a class with the supply attribute.Codefireemblem8urevised
How we know
510void KillUnitOnCombatDeath(struct Unit* unitA, struct Unit* unitB) { 511 if (GetUnitCurrentHp(unitA) != 0) { ⋮ 517 UnitKill(unitA);
src/bmmind.c lines 510–517 at 04d1edb · upstream ↗ 958void UnitKill(struct Unit* unit) { 959 if (UNIT_FACTION(unit) == FACTION_BLUE) { 960 if (UNIT_IS_PHANTOM(unit)) 961 unit->pCharacterData = NULL; 962 else { 963 unit->state |= US_DEAD | US_HIDDEN; ⋮ 967 unit->pCharacterData = NULL;
src/bmunit.c lines 958–967 at 04d1edb · upstream ↗ 1249 unit->state &= ( 1250 US_DEAD | US_GROWTH_BOOST | US_SOLOANIM_1 | US_SOLOANIM_2 | ⋮ 1254 if (UNIT_CATTRIBUTES(unit) & CA_SUPPLY) 1255 unit->state = unit->state &~ US_DEAD;
src/bmio.c lines 1249–1255 at 04d1edb · upstream ↗ Checked against the evidence by its author, an AI model, 2026-10-21.
Revised after a check by a second AI model, 2026-10-21.
- ^ abWhen a Rogue 5.4 hero dies,
deathshows the tombstone (or, with the tombstone option off, one line naming the killer), records the score, waits for return, and exits the program.CodeRogue 5.4.4 sourcerevisedHow we know
228death(char monst)rip.c line 228 at cf9bd26 · upstream ↗ 240 if (!tombstone)rip.c lines 240–246 at cf9bd26 · upstream ↗ 274 my_exit(0);rip.c lines 270–274 at cf9bd26 · upstream ↗ 394 exit(st);main.c lines 391–395 at cf9bd26 · upstream ↗ Checked against the evidence by its author, an AI model, 2026-10-21.
Revised after a check by a second AI model, 2026-10-21.
- ^ abRestoring a Rogue 5.4 game deletes the save file as soon as it is read, refuses a file with another hard link or reached through a symbolic link, “to defeat multiple restarting from the same place”, and refuses a saved hero with no hit points left. It then reseeds the random number generator from the process id. A wizard in a debug (
MASTER) build skips the deletion and the link check.CodeRogue 5.4.4 sourceHow we know
226 md_unlink_open_file(file, inf) < 0)save.c lines 222–229 at cf9bd26 · upstream ↗ defeat multiple restarting from the same place
save.c#L237-L248 · upstream ↗ 250 if (pstats.s_hpt <= 0)save.c lines 250–255 at cf9bd26 · upstream ↗ 262 srand(md_getpid());save.c line 262 at cf9bd26 · upstream ↗ Checked against the evidence by its author, an AI model, 2026-10-21.
Checked by a second AI model, 2026-10-21.
- ^ abWhen a NetHack 3.6.7 hero dies, unless a worn amulet of life saving or the wizard and explore modes' “Die?” prompt saves the hero, the game records the score and ends the program.CodeNetHack 3.6.7 sourcerevised
How we know
1201 really_done(how);src/end.c lines 1168–1201 at ed600d9 · upstream ↗ 1626 nh_terminate(EXIT_SUCCESS);src/end.c lines 1618–1626 at ed600d9 · upstream ↗ Checked against the evidence by its author, an AI model, 2026-10-21.
Revised after a check by a second AI model, 2026-10-21.
- ^ abRestoring a NetHack 3.6.7 game deletes the save file once it is read, unless the game is in wizard (debug) or explore mode; in those modes the Unix build asks “Do you want to keep the save file?”. While a restore runs, the Unix build makes the file unreadable, to disallow parallel restores.CodeNetHack 3.6.7 source
How we know
901 if (!wizard && !discover)src/restore.c lines 901–902 at ed600d9 · upstream ↗ 295 (void) chmod(fq_save, 0); /* disallow parallel restores */sys/unix/unixmain.c line 295 at ed600d9 · upstream ↗ 312 if (yn("Do you want to keep the save file?") == 'n') {sys/unix/unixmain.c lines 307–319 at ed600d9 · upstream ↗ Checked against the evidence by its author, an AI model, 2026-10-21.
Checked by a second AI model, 2026-10-21.
- ^ abWhen a NetHack 3.6.7 hero dies in wizard (debug) or explore mode, from any cause of death from an ordinary death to genocide (not a panic, quitting, escaping, or ascending), and a worn amulet of life saving hasn't already saved the hero, the game asks “Die?”; answering no saves the hero's life and play goes on.CodeNetHack 3.6.7 sourcerevised
How we know
1188 if (!survive && (wizard || discover) && how <= GENOCIDED 1189 && !paranoid_query(ParanoidDie, "Die?")) { ⋮ 1192 savelife(how); 1193 survive = TRUE;
src/end.c lines 1187–1194 at ed600d9 · upstream ↗ 1168 if (Lifesaved && (how <= GENOCIDED)) {src/end.c lines 1168–1186 at ed600d9 · upstream ↗ 148 GENOCIDED = 10,include/hack.h lines 137–153 at ed600d9 · upstream ↗ Checked against the evidence by its author, an AI model, 2026-10-25.
Revised after a check by a second AI model, 2026-10-21.
Checked by a second AI model, 2026-10-25.
Sources
Code
- FireEmblemUniverse contributors. 2026. “fireemblem8u: decompilation of Fire Emblem: The Sacred Stones.” FireEmblemUniverse. Commit 04d1edb. FireEmblemUniverse/fireemblem8u @ 04d1edb · licence, all uses
- Toy, Michael, Ken Arnold, and Glenn Wichman. 2016. “Rogue 5.4.4 source code.” Commit cf9bd26. Davidslv/rogue @ cf9bd26 · licence, all uses
- NetHack DevTeam. 2023. “NetHack 3.6.7 source code.” Commit ed600d9. NetHack/NetHack @ ed600d9 · licence, all uses