6E59: Deprecating Procedural Rules

One of the changes to 6E59 is the deprecation of procedural rules. They still function for the time being, but we’re hoping to remove those rules in the future because they are a heavy drain on performance.

What that means in the meantime is that we encourage extension maintainers, if they have the time and inclination, to try to remove procedural rules from their extensions; and that we’d like to hear about cases where a previously-existing procedural rule can’t easily be worked around.

One of the cases that may be challenging is a procedural rule used conditionally, as in

Procedural rule when putting something on a keychain (this is the allow putting things on the keychain rule):
ignore the can’t put onto something being carried rule.

This is a rule from the Locksmith extension that turns off a specific rule only in a specific case — we don’t want to delist the “can’t put onto something carried rule” at all times. The workaround we came up with was as follows:

The keychain-aware carrying requirements rule is listed instead
of the carrying requirements rule in the action-processing rules.

This is the keychain-aware carrying requirements rule:
if locking or unlocking something with something which is on a keychain which is carried by the actor:
continue the action;
abide by the carrying requirements rule.

This substitutes a new rule into the rulebook — but in all cases but one, it calls on (and follows the directions of) the old rule. Using this technique, the author doesn’t have to copy over anything from the Standard Rules to reproduce the original functionality.

This may still not be quite ideal, or there may be situations that it doesn’t cover, however. This topic is already receiving some discussion over at the uservoice forum. Please do share your experiences if you run into any trouble with removing your procedural rules, so that we can factor those in as we revise the language.