Less misleading message when impossible() is called

Telling people to #quit due to something going wrong internally is
probably a bad idea; the game might or might not be corrupted, but
even if it is, most players will want to play on rather than lose
their game entirely.

Instead, advise saving and reloading; this will fix the underlying
cause of many impossible()s (which are normally related to
inconsistent internal structures; the save file format has much
less redundancy, therefore less chance of inconsistency, than the
in-memory format).

Thanks to AmyBSOD for reminding me to do this.
This commit is contained in:
Alex Smith
2017-11-16 16:42:16 +00:00
parent 761180ce36
commit 8e1b28a453

View File

@@ -436,7 +436,8 @@ VA_DECL(const char *, s)
pbuf[BUFSZ - 1] = '\0'; /* sanity */
paniclog("impossible", pbuf);
pline("%s", VA_PASS1(pbuf));
pline("%s", VA_PASS1("Program in disorder - perhaps you'd better #quit."));
pline(
"Program in disorder! (Saving and reloading may fix this problem.)");
program_state.in_impossible = 0;
VA_END();
}