Conversation Package triggering things... I think?

I apologize, I can’t come up with a better subject…

So I got all up in Matt Wigdahl’s “Keywords for Conversation” extension, which includes (individually, it seems) all of Dr. Eve’s conversation extensions. I like the idea of guided conversation, since conversation is pretty much the most ambiguous crime you can inflict on a game without some direction. (Obvious exceptions notwithstanding.)

I’m thinking that there are several aspects of this system that I don’t care for and some things that need some additional capability.

First of all, I’m not a fan of the player being told that there’s nothing s/he needs to discuss with an NPC if I don’t specify topic suggestions. There are, of course, things that need to be discussed, but I’d like to handle that prompting differently. I haven’t attempted to alter this behavior because I’m not familiar enough with the language to try to delve into the extension and modify it manually. Is there a setting somewhere that just… disables this?

Second, I’d like to be able to end a conversation. Once it gets to a certain point (or a certain topic has been discussed), I’d really like to disallow further interrogation. I dunno, maybe set a flag or something and use an “Instead” rule to prevent the player from pestering the NPC further.

Is this possible? I tried just setting a variable for it, but Inform apparently doesn’t care for it. Maybe it’s a syntax thing. Here’s a mock-up, since I don’t know the underlying rule for “talking”.

Done_With_You is a truth state variable.

Instead of talking to NPC: [Throws an error]
     If Done_With_You is true:
          say "He doesn't have anything else to say."

Response of NPC when asked about blinker fluid:
     say "It's on aisle five. I'm busy, so get lost.";
     Now Done_With_You is true.

I’m sure that there’s a way to do exactly what I’m wanting to do. Is it built into the Conversation Package? Do I need to look elsewhere? Or am I just doing the “Instead of talking” thing wrong, since that was the only thing giving me an error message on the last build?

My memory is hazy, but I think Eric’s conversation extensions define a bunch of new activities, none of which is “talking to”. Try compiling without that Instead rule and look in the actions index to see what actions have been defined by the extension(s).

And by typing the “rules” debug command, you can see what rule triggers the line about you not having anything to discuss with an NPC.

As it happens, though, the action name is “quizzing it about” (“asking it about” was already in the Standard Rules); and that default reponse is defined by a say phrase (“To say nothing specific”). You can override it by defining a phrase with the same name directly in your source text. To get rid of it:

To say nothing specific: say "[run paragraph on]".

A couple ideas:

In another thread you said you were considering using a table as an alternative to truth states. In this particular case, it looks like what you really want is a property:

A person can be done talking.

Aside from the action descriptions already mentioned, you have to be careful with Instead rules because they stop the action by default, preventing any other rules from firing. If you have an Instead rule that isn’t specific, but then do a test within the rule, you might end up getting no output at all.

Sorry if that came out kind of garbled. Here’s a rule of thumb:

If an Instead rule doesn’t handle the action, it must continue the action.

In this case, I think a response rule would work:

First response of a done talking person (called responder): say "[That-those of responder] do[es]n't have anything else to say.";