Tutorial Mode extension not working???

Whenever I try to add Tutorial Mode by Emily Short I get this error:

In Section 3 - The Instructional Rules in the extension Tutorial Mode by Emily Short:

Problem. In the line ‘let N be “[way]”’ , I was expecting that ‘way’ would be something to ‘say’, but it didn’t look like any form of ‘say’ that I know. So I tried to read ‘way’ as a value of some kind (because it’s legal to say values), but couldn’t make sense of it that way either.

Sometimes this happens because punctuation has gone wrong - for instance, if you’ve omitted a semicolon or full stop at the end of the ‘say’ phrase.

I’m not sure how to fix it. Is there something wrong with this, or is it still supported by Inform 7? Thanks for any help.

It’s not your fault – it looks like there’s a bug in Tutorial Mode.

It seems to be solvable by replacing the “teach compass directions” rule in the Tutorial Mode text with this:

An instructional rule (this is the teach compass directions rule): if the teach compass directions rule is listed in the completed instruction list, make no decision; if a room (called goal) is adjacent: let way be the best route from the location to the goal; let N be indexed text; let N be "[way]"; now the expected command is "[N]"; otherwise if the player can see an open door (called portal): let far side be the other side of the portal; let way be the best route from the location to the far side; let N be indexed text; let N be "[way]"; now the expected command is "[N]"; otherwise: make no decision; say "[italic type]To move from place to place, you can use the compass directions (NORTH, SOUTH, EAST, WEST, as well as NORTHEAST, NORTHWEST, etc.) [paragraph break]From here, try [expected command in upper case].[roman type]"; now the held rule is the teach compass directions rule; rule succeeds.

I think the problem is that the old code set the temporary value way inside an if block and tried to use it outside the if block, which Inform now disallows. (It doesn’t know that that “otherwise: make no decision” is going to keep the code that uses “[way]” from firing unless way has just been set.) In this new code, I somewhat inelegantly copied some code so that, inside the if blocks, way gets turned into N which gets turned into the expected command, which is a global variable that we can use outside the if blocks.

(I haven’t tested this rigorously, just that it compiles and works properly with the “Silence in the Library” example.)

Yeah, I get the same result. And I have the most current version. Looks like the extension is buggy, and that’s a bit surprising, from Emily.

Thanks guys for the help I’ll try amending it and see how it works.

My guess is that it must have been broken by an I7 update – I can’t imagine Emily submitting an extension that didn’t compile when she submitted it.

I’ll PM her to let her know about this.