Disabling Undo and Oops

So, again, for the sake of argument, not that I am planning to definitely do this in a real game, but let’s say I wanted to prevent Undo and Oops, forcing the player to live with the consequences of their actions. There are some extensions to help with this, but from what I understand there are interpreters that natively allow Undo? The only, very nasty, thing I can think of in that case would be to, using one of the mentioned extensions, trigger something that will crash the program… again, pretty nasty:

Before undoing an action:
	while 1 > 0:
		say "The world collapses in on itself...";

There’s no way to intercept a command with “undo” in it and reject it out of hand instead? Maybe with a nice message…


Yes, and there’s nothing you can do about them. They bypass the game code entirely, so the game never knows anything’s happened.

The native way for undo is

Use undo prevention.

You can include Erik Temple’s Undo Output Control, along with Jesse McGrew’s Conditional Undo, available from inform7.com, to make custom versions of this. I would assume you could modify one of the functions in UOC just to reject OOPS* instead of printing a new message.

The code to change undo text would go something like

[code]“undo denied” by Andrew Schultz

include conditional undo by Jesse McGrew.

include undo output control by Erik Temple.

before undoing an action:
say “[one of]We’re sorry, sir, undo is not on the menu. Perhaps you would care to try going in a direction or manipulating an item instead?[or]Sir, we really must insist…[or]What’s that? You say you can’t go anywhere? We meant in real life, sir![stopping]”;
rule fails;

room 1 is a room.[/code]

I imagine oops is similar. Reading the extension documentation should help. (No, I haven’t. Yes, I should, myself.)

Hmm, better just leave it alone I guess, unless I were to host the game online so I can control the interpreter used.