Failure states are communicated through unique descriptive text specific to the cause of death rather than a generic game-over screen.
Failure is described by its cause, not a generic game-over: the pit and the orc each give their own bespoke epitaph.
Failure isn't a generic game-over — each cause of death has its own descriptive line. The system maps a cause to bespoke text before ending the run.
Map each cause to a unique death message. The specificity (“The poison needle finds your vein…”) is the whole point — generic text kills the mood.
const DEATHS := {
"poison": "The venom stops your heart.",
"drown": "The dark water fills your lungs." }Display the matched message before the game-over screen, giving the death a beat of authored consequence.
func die(cause):
$Desc.text = DEATHS.get(cause, "You have died.")
await get_tree().create_timer(2.0).timeout
show_game_over()For room-specific deaths, store the message on the interaction or RoomData that caused it, so the text lives next to the hazard.
# Interaction.result_text doubles as the death line
# when the interaction is fatal.In short: Death flag or cause string → lookup unique death message in RoomData or interaction result; display before game-over
5 catalogued game(s) use this mechanic, spanning 1989–1992.
▶ Explore Death Consequence Text interactively — see every game + the Godot system