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.
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();
}