Is something like this supposed to be checked at all times, or does it need to be invoked somehow?
Rule for deciding the concealed possessions of a person (this is the test concealing and revealing rule):
if the particular possession is test-property, yes;
The item starts out concealed if it has the test-property when play begins… but it doesn’t seem to become unconcealed when it no longer does at a later time. I just wonder if there is something wrong with something else in my code, or does a rule like the above not run continuously… is there something I need to do to “reinvoke” it?
Is there a better way to go about this than using “concealed” and “unconcealed” entirely? I don’t think I want to remove the items from play and return them to play, I’d rather have something less drastic than that.
You should not need to do anything to invoke the rule - but perhaps there’s another rule that overrides this one and is preventing you from seeing the item…
Argh, yeah, nm I was just dumb. I didn’t have a call to another function in place, this rule was working all along, but the toaster wasn’t plugged in, so to speak.
A “Rule For …” rule (or, equivalently, a “For …” rule) is a rule that controls the behavior of some Activity. So they run whenever the Activity in question runs.
Most built-in I7 rules are collected into Rulebooks that are called at specific stages of the processing of a player’s command. There is a helpful pdf Rules Chart that specifies what standard rules and rulebooks are called when and in what order: http://inform7.com/learn/documents/Rules%20Chart.pdf
Also most custom rules you write (such as new Rules For a given activity, new Instead Rules, etc.) are placed in the appropriate rulebook and so will be processed along with it.
It’s only if you want a standard rule or rulebook to be followed at some other point, or if you have written your own rulebook, or if you have written a new rule that is not placed in any of the standard rulebooks, that you need to invoke it manually.