Instead of talking to [someone]?

Hello! I’m relatively new with Inform, and I’ve run into a problem that I can’t figure out.
When the player says “talk to the ferryman,” I would like the conversation with the ferryman to start rather than the game saying “You say hello to Ferryman.”
I figured I should use the “Instead” feature to achieve this, but it doesn’t seem to be working.

[code]The River West is a room. The River is east of the Forest Entrance.
Ferryman is a man in the River West. Understand “the ferryman” as Ferryman. The ferry is a rideable vehicle in the River West.

Instead of going to River East when the player is not on the ferry:
say “The river is wide and deep. There is no way you can cross it alone.”.

Instead of talking to Ferryman:
say "‘Are you looking to cross the river?’ the ferryman asks you. ‘The price for a ride is 300 gold.’ [paragraph break]
‘I don’t have 300 gold,’ you tell the ferryman. [paragraph break] ‘Alas, that is my price. Unless you can give me something more valuable than gold.’
[paragraph break] ‘What would that be?’ [paragraph break] ‘I have been cursed to this river for centuries now.
My soul forced to ferry others back and forth for eternity. If someone were to offer me the solution to my predicament,
I would give them any ride they pleased before I parted. Can you help me?’.[/code]

This code compiles just fine with no errors, but when I enter “talk to the ferryman” or “talk to Ferryman” it simply says
“You say hello to Ferryman” without displaying my written paragraph. What am I doing wrong?

EDIT: Formatting.

When I copy and paste your code above into Inform7 (6.33/6M62 - Linux), it totally fails to compile with a host of errors…

Stripping quite a bit to ignore the errors for now, it seems you have to define “talking to” as an action:

Talking to is an action applying to one visible thing.
Understand "talk to [someone]" as talking to.

The River West is a room.
Ferryman is a man in the River West. Understand "the ferryman" as Ferryman.

Instead of talking to Ferryman:
	say "'Are you looking to cross the river?' the ferryman asks you. 'The price for a ride is 300 gold.' [paragraph break]'I don't have 300 gold,' you tell the ferryman. [paragraph break] 'Alas, that is my price. Unless you can give me something more valuable than gold.' [paragraph break] 'What would that be?' [paragraph break] 'I have been cursed to this river for centuries now. My soul forced to ferry others back and forth for eternity. If someone were to offer me the solution to my predicament, I would give them any ride they pleased before I parted. Can you help me?'."

Results in this output:

River West
You can see Ferryman here.

>talk to ferryman
"Are you looking to cross the river?" the ferryman asks you. "The price for a ride is 300 gold." 

"I don't have 300 gold," you tell the ferryman. 

 "Alas, that is my price. Unless you can give me something more valuable than gold." 

 "What would that be?" 

 "I have been cursed to this river for centuries now. My soul forced to ferry others back and forth for eternity. If someone were to offer me the solution to my predicament, I would give them any ride they pleased before I parted. Can you help me?".

>

Thank you so much! You helped me figure it out.

The reason I didn’t have to declare it is because I was including Conversation Responses by Eric Eve. This was making “talk to” behave differently than it should have. In order to achieve this effect, I needed to use “Greeting Response of Ferryman:” rather than the Instead of functionality.

Thanks so much for the help!

No problem :slight_smile:

The problem with this is that it requires the player to guess that “talk to ferryman” is the correct command. Experienced players of IF might not think of that; the usual syntax for gereral conversation in IF games is “FERRYMAN, [topic]”. More specifc, but also common, are “TELL FERRYMAN ABOUT [topic]”, “ASK FERRYMAN ABOUT [topic]” and “ASK FERRYMAN FOR [something]”. These all map to different Inform actions (the first maps to the “answering it that” action").

Potentially the player could try any of these to get the ferryman’s attention. They also might try giving him something, or just entering the ferry. You should try to cater for all these.

Answering the ferryman that is ferry-requesting. 
Telling the ferryman about is ferry-requesting. 
Asking the ferryman about is ferry-requesting. 
Asking the ferryman for is ferry-requesting. 
Giving something to the ferryman is ferry-requesting. 
Entering the ferry is ferry-requesting.

Instead of ferry-requesting:
      say "[your dialogue here]".

None of this will allow “TALK TO FERRYMAN”, so we add:

Understand "talk to/with [someone]" as asking it about.

By the way, you probably want this instead rule to be “Instead of ferry-requesting for the first time:”. Then you can add another rule (or rules) that gives a shorter dialogue on subsequent attempts.

Instead of ferry-requesting for the first time:
   say "'Are you looking to cross the river?' the ferryman asks you. 'The price for a ride is 300 gold.' [paragraph break] 
'I don't have 300 gold,' you tell the ferryman. [paragraph break] 'Alas, that is my price. Unless you can give me something 
more valuable than gold.' [paragraph break]'What would that be?' [paragraph break] 'I have been cursed to this river for 
centuries now. My soul forced to ferry others back and forth for eternity. If someone were to offer me the solution to my 
predicament, I would give them any ride they pleased before I parted. Can you help me?'".

Instead of ferry-requesting:
   say "The ferryman looks stern. 'No ride unless you either bring me 300 gold, or help me break the curse.'".

(Of course, you will need further rules to deal with the situation after the player has succeeded in breaking the curse.)

This is the kind of situation where I would resort to conversation extensions that facilitate ask/tell. I have found Conversational Defaults and Conversation Responses the simplest if you just have a bunch of topics you want the player to ask about.