Approaches and Distant Scenery

Here’s a nice little conundrum. I’m using Approaches by Emily Short, which is a neat extension that lets the player ‘go to village’ (for instance) if the player has previously visited the village. But my setting is outdoors, so certain landmarks (such as the village, which is both distant scenery and the name of the room you can visit) can be seen at a distance. The idea of distantness is from Jon Ingold’s Far Away extension.

If the player can see the distant village, but hasn’t yet been there, I get this output:

go to village
That noun did not make sense in this context.

Ah, but it did make sense. What doesn’t make sense in this context is the parser’s reply!

I don’t particularly want the player to be able to bypass normal navigational commands and ‘go to village’ automatically when she hasn’t been there yet. What I want is a better response – perhaps something like this:

go to village
What a good idea!

The trouble is, in order to implement this output as an instead rule on the distant scenery object, I have to define an action (perhaps called destinationing) that can handle “go to [something distant]”. But if I do that, the functionality of Approaches is derailed, because my new destinationing action runs instead of Emily’s approaching action.

I don’t know if I’m explaining this well. Has anybody else used both Approaches and Far Away? If so, how did you handle approaching distant things that haven’t yet been visited? I guess it would work if the distant thing weren’t a room – if it were an obelisk, say – but in the case of a distant village, that idea isn’t going to help.

Thanks for any tips or ideas.

–JA

Is there a funny bug in the latest Inform? I get this when including Far Away,

Anyway, what about this:

"Far Away Approaches"

Include Far Away by Jon Ingold. 
Include Approaches by Emily Short.

Field is north of the Bridge. 
Bridge is north of the Village. 

village-set is a privately-named distant backdrop with description "A village. " and printed name "the village". It is everywhere. Understand "village" as village-set.

Instead of examining village-set when the location is Village, say "You're here.".

Understand "go to [any distant object]" as approaching. 

Instead of approaching when the noun is unvisited, say "What a good idea! ". 

test me with "go to village / s / s / n / n / go to village".

Thanks! That seems to work perfectly.

And yeah, I had forgotten about the problem with Far Away, because I fixed it in my copy. Hyphens have to be added in a few places, because “object” is now a reserved word, or something like that.

–JA

I’ve seen that “noun didn’t make sense in that context” error a lot. It’s never what you want, is it? - it’s almost always a sign of a bug, or at least a breakdown of communication between the parser rules and the action rules. You might as well print out a run-time problem every time it happens. Argh!

I find it a lot when I’m missing catches for unexpected grammar. I try to fix it internally when possible, and then catch as much as possible with individual rules for printing errors. But it’s not an error you ever want the player to see.