I’m having trouble getting the look command to work.
Here’s the code I wrote:
Instead of looking: say “[if player is on top of Desk and stepladder is on top of Desk]You and the ladder are on top of the desk.”
And the parser just seems to ignore it.
How come, I wanna know, and what can I do to get the parser to cooperate? (I know something about the parser’s sister, but I don’t believe in blackmail.)
Not sure what you mean by “the parser just seems to ignore it.” Your instead rule will always intercept the action of looking. If the conditions are not met (if the player or the stepladder is not on the desk) there will be no output at all from the look action. If this is not the desired result of the action (and it’s hard to see why it would be), you need to put the if-clause outside of the quote. Something like this:
Instead of looking:
if the player carries the banana:
say "Blind as a banana.";
otherwise:
continue the action.
If the parser doesn’t understand the word ‘look’, the game should respond, “That’s not a verb I recognize.” Is that what’s happening? Or are you getting a blank line of output followed by a new input cursor?
In either case, something else in your code (or possibly in an extension, though that’s fairly unlikely) is stepping on the parser’s ability to understand the ‘look’ command. Try searching your source text for ‘look’ and see what turns up.
Just did what Jim Aikin suggested. Here’s the only code I wrote dealing with looking:
Instead of looking: say “[if player is on Desk and stepladder is on Desk]You and the ladder are on top of the desk.”
Instead of looking:
if player is on stepladder:
say “Your torso is halfway above the top step of the stepladder, and you sense that to limb any higher would be extremely dangerous.”;
otherwise:
continue the action.
In another section of code, I wrote:
The weird-looking electrical equipment is a thing. It is in Westside.
You have two instead-of-looking rules, both of which are active in your code? That may be a recipe for trouble, right there. But as I said, the first of those rules will always produce a blank line of output unless the condition is fulfilled. I don’t know what the compiler will do if it sees two instead-of-looking rules, but if I were you I would certainly try reorganizing this code so that it’s all a single rule. (The electrical equipment isn’t an issue.)
If you see a blank line even when both the player and the stepladder are on the desk, then there’s something funny about the syntax of your if-clause. My Inform is extremely rusty, but I would suggest trying [if player is on Desk and if stepladder is on Desk]. That might not compile – or it might solve the problem.
There’s something very important you have to understand:
By writing “Instead of looking”, you have completely captured and redirected the looking action. Every time that you “look”, Inform finds your “Instead of looking” rule and prints that instead of the usual rulebook.
And with your first rule it’s doing exactly what you told it to: if the player and the stepladder are on the desk, it will display that message upon typing “look”, instead of the usual room description. If those conditions aren’t met, however - then it knows it has to say something, because you told it to, but not what.
The second rule, at a glance, seems more reasonable, what with “continue the action” and all.
I’m not sure I’d do it this way, but since it’s how you chose to do it, try something more like:
Instead of looking:
if player is on Desk and stepladder is on Desk:
say "You and the ladder are on top of the desk.";
otherwise if player is on stepladder:
say "Your torso is halfway above the top step of the stepladder, and you sense that to limb any higher would be extremely dangerous.";
otherwise continue the action.
Untested, and my practical I7 is rusty, but this should give you the gist of why it’s not working.
Probably the most elegant way to do this is to put the condition in the rule preamble.
Instead of looking when the player is in the stepladder: say "You are on a stepladder."
(Depending on how you have implemented the stepladder, you might need “on”, “in”, or “enclosed by”; “in” seems the most likely but without seeing your code I don’t know.)
Bottom line: Something in your code has been written wrongly. Without seeing all of the actual code, it’s very difficult for us to provide a solution. It’s not at all clear (to me, anyhow) that you’re applying the suggested solutions in a systematic and orderly manner. If you’re still getting the original problem, that strongly suggests that you’re trying to apply our suggestions piecemeal rather than stepping back and taking a close look at what’s going on.
I’m pretty sure there are some good explanations in the documentation about how to write instead rules, and what an instead rule does. You may want to try re-reading that material. After which, put all of your code relating to the looking action in one place so you can inspect it line by line, looking for logical inconsistencies. Then, if that doesn’t suggest the solution, post the entire block of code (using the [Code] button in the web interface) so we can look at it.