A warning for folks who are trying to get their older I7 stuff to compile with the “Use no deprecated features” option:
One of the deprecated features is the “change X to Y” syntax; all “change” phrases must be changed to “now X is Y”.
Unfortunately, Inform’s ability to interpret object properties in the “now” format is not equal to its ability to interpret them using “change”. Specifically, when using “now”, Inform’s ability to infer the object to which a property pertains disappears, making for more verbose code. For example, in the following code, Inform can infer which object is being referred to in the context of the “testing rules” object-based rulebook:
[code]A testing-entity is a kind of thing. A testing-entity has a number called X1.
The test-object is a testing-entity. The X1 is 12.
When play begins:
follow the testing rules for the test-object.
The testing rules are an object-based rulebook.
A testing rule for a testing-entity (called the subject):
let dx be the X1 - 6;
change the X1 to the X1 - dx;
say “X1: [X1 of the subject].”;
Test is a room.[/code]
But change the “change” in the testing rule to read
now the X1 is the X1 - dx;
and you get a compiler error, because Inform can’t do this equally well with conditions (which is how “now” parses things).
I’ve filed a bug report and hopefully we’ll see better parsing for “now” with the next release, but for the time being you may want to think twice unless you’re certain you haven’t used this kind of shortcut.