I have noticed that some of my assertions will override the Standard Rules and the compiler accepts that. I understood that to be because the Standard Rules are like an extension that is included with my source text very early in the compilation process. The last stated assertion is taken to be the true one, so if I type something like
A vehicle is usually portable.
then that assertion takes place in my game world, even though the standard rules say the opposite about vehicle portability.
However, if I instead assert
A vehicle is never enterable.
then the compiler complains that I have contradicted the Standard Rules, where it is asserted that a vehicle is always enterable.
Is it just the always/never assertions that cause this problem? What if I wanted to create a world in which things were always fixed in place? That assertion won’t compile, either, because the Standard Rules say that “a player’s holdall is always portable”, Inform informs me.
Why does the override not work in this case, and how do I circumvent it without editing the Standard Rules?
“Always” and “never” are absolutes, and can never be overridden except by changing the assertion (via editing it or using a section replacement).
In programming terms, “always” and “never” are like defining constants. “Usually” and “seldom” just set default values to be used later. Changing a default value isn’t a problem; even if you don’t have a “usually” or “seldom”, Inform comes up with its own defaults, and those can be overridden easily. But trying to redefine a constant is a compiler error.