Greetings once again, fellow Informians.
There is something else that I have been trying to figure out, but I have been stymied at every turn. So, let’s say I have the following line:
After doing something other than kissing Marie or giving the rose to Marie when Marie is visible:
For some reason, when I try to compile, I get this problem message:
There are a number of things that puzzle me here. Firstly, why is this referencing the Standard Rules? I suspect this means that I am doing something horribly wrong, thus threatening to tear apart the fabric of the universe, but for the life of me I cannot figure out what it is. “doing something other than kissing Marie when Marie is visible” or “doing something other than giving the rose to Marie when Marie is visible” are both fine, but putting them together somehow borks things. And I am confused by the text of the problem message itself. Why is it interpreting “doing something other than kissing Marie” as a separate action, apart from “giving the rose to Marie”? It should be "doing something other than (kissing Marie || giving the rose to Marie). I’m guessing that’s what the problem is here, but I have no idea how to fix it.
To make matters worse, I’ve seen syntax like this before. In Example 47 in the Inform manual (coincidentally, found in Section 4.7), there is this line:
Instead of doing something other than looking or sleeping when the player is awake:
I’m trying to figure out how this is any different from what I’m trying to do. The only difference I can see is that my actions require an object (Marie). But I can’t see why that would matter, since both actions work here singly. This must be something else I do not yet understand about I7.
For reference, the entirety of the code that I pulled the above line from is as follows:
[code]An attitude is a kind of value. The attitudes are expectant, bored, and impatient.
The Garden is a room. In the Garden is a supporter called the table. On the table is a rose.
Marie is a woman. The description of Marie is “Stunning as ever.” Marie has an attitude. Marie is expectant.
When play begins:
Marie enters in one turn from now.
At the time when Marie enters:
now Marie is in the Garden;
say “Your girlfriend Marie walks out of the house and into the garden. She looks at you expectantly.”
Instead of kissing Marie:
say “You kiss Marie lightly on the cheek. She smiles, and her eyes glow in that way that has always made you weak in the knees.”;
end the story saying “You have made Marie happy.”
Instead of giving the rose to Marie:
say “You hand the rose to Marie, suddenly feeling bashful for some reason. She takes it with a smile and then draws closer to kiss you.”;
end the story saying “You have made Marie happy.”
After doing something other than kissing Marie or giving the rose to Marie when Marie is visible:
if Marie is expectant:
now Marie is bored;
say “Marie frowns ever so slightly and casts you a sidelong glance before turning away.”;
stop the action;
if Marie is bored:
now Marie is impatient;
say “Marie looks over her shoulder at you and sighs loudly.”;
stop the action;
if Marie is impatient:
say “Marie gives you one last look before shaking her head and walking back into the house.”;
end the story saying “You have disappointed Marie.”
[/code]
This is just a little test case I put together to test the syntax (and to clear my head a bit), and to see if maybe I couldn’t isolate the problem. I am aware that, in this example, I could simply replace the problematic line with “After doing something when Marie is visible:” and this would act as a catchall to catch the two actions I have not specified, but the point of this was to figure out why syntax that seems like it should work is not working.
Anyway, this is the other thing that has been bugging me lately, in addition to the door problem. If anyone could shed some light on the matter, I would be grateful.