Reporting and changing state

The issue is with the way that the subsystem for handling past tenses works.

Specifically, the problem message is objecting to the use of the noun in the noun was not blessed.

To expand on Zed’s answer: Every time the update chronological records rule is run (at the end of the turn sequence rulebook by default), the truth states for the was condition are updated. The was condition in the report rule would basically just pull this truth state from storage; it would not look at the world state. (You can consider the storage of chronological records as being logged by condition ID. It would take a lot more storage to reflect the entire world state of the previous turn.) Were the compiler to accept the noun was blessed, there is the strong possibility of a mismatch between the value of the noun at two different times: when the chronological records are being updated and when the report rule is being evaluated for applicability.

The value of the noun may not be what you expect at the end of the turn sequence (i.e. when chronological records are updated). For example, if a missing noun was supplied, it will be dropped and returned to nothing after the action is processed. In that case the condition would evaluate true when the report rule is being processed, but it would not reflect the intended meaning, because the value stored would be based on whether or not nothing is not blessed was true when the record was last updated. Likewise, if the action applies to multiple objects, only the last object will be the noun at the end of the turn sequence. In that case, it would be a matter of happenstance whether the value of the noun were the same at both the point when the chronological record was updated and the point when the was condition was being evaluated.

Action variables (like temporary variables) are also prohibited from use in was conditions; they won’t be treated as in scope at the end of the turn sequence because action processing is already over.

1 Like