Threaded Conversation by Chris Conley

This topic is for discussions related to Threaded Conversation by Chris Conley.

I am having difficulties in finding a feasible way of preventing the player to enagage in a conversation with an NPC based on some condition when using Threaded Conversation extension.
What i have tried so far is using Instead rules on the actions provided by the extension (there are several) like:

Instead of discussing a quip, quip-supplying Dave when <condition>:

which will still result in implicit greeting related output from the underlying conversational framework extension before the rule applies.
How would i catch those as well?

If you type “rules” and “actions” before the command that gives you the unwanted implicit greeting, what’s the output?

Thanks for leading me in the right direction. I think i have managed to solve this.
Depending on how the conversation is started the are several actions involved that call further actions. It seems though that all path go through the ‘Saying hello to’ action from the conversational framework extension. An instead rule on this action seems to block all use cases.

Glad you could work it out!

I have a problem with this extension.

I can’t find a way to activate the menu-based ui. There’s none of that apparently in the documentation. Take a look:

[code]Section: Switching to other forms of ask/tell or menu-based interface

This behavior can be adjusted. If we want to achieve something more like an old-style ASK/TELL interface – that is to say, one in which there are no cues, and the player is left to pick conversation clues out of the character’s speech – we can simply turn off the rule that supplies the cues. To do this, we would write

The offer hint quips rule is not listed in any rulebook.
We could also substitute in its place a rule that offers hints only under specific conditions, or only suggests certain types of hints.

More ambitiously, we could allow the player to determine for himself which play style he prefers, as a setting of the game. If we choose to do this, we must be sure to play-test all the options carefully. Performative quip commands, in particular, are not at all likely to be obvious to players unless we offer some other way of hinting at the special phrasing required.

So, how I activate the menu-based user interface?


Ruber Eaglenest.

Sorry, that’s not describing a menu-based UI, and no such system is included in this extension. That line only disables the suggestion of conversation quips at the end of every turn, making conversations using TC into something of a guess-the-conversation-topic puzzle.

Are you still welcoming bug reports for this extension? The inform IDE suggested this as the place to talk about it.

Yes, please do!

If the parser ever has to disambiguate between rooms, even outside conversation, the extension will interrupt the disambiguation question to say that “You’re not talking to anyone right now.” The same happens with directions though that’s a more obscure situation. If a “Does the player mean” rule resolves the disambiguation, then the correct action goes through but if it has to ask the player then “Rule for asking which do you mean when everything parse-matched is a quip” interrupts for reasons I can’t trace. Here’s a minimal reproduction:

“Error Test” by Gillian Crowley

Include Threaded Conversation by Chris Conley.

land alpha is a room. land beta is east of land alpha.

warping to is an action applying to one thing. Understand “warp to [any room]” as warping. Carry out warping to: now the player is in the noun.

Test me with “warp to land”.


As the Rules trace suggests, the problem lies in the “Rule for asking which do you mean when everything parse-matched is a quip”. I’ve added a hotfix to the extension which at least runs your minimal source properly:

If you don’t mind, could you try this test extension in your larger project and let me know if you’re still getting any strange behavior? You’ll need to change the inclusion at the top of your source to “Include Threaded Conversation v7 by Chris Conley”.
Threaded Conversation v7.i7x (138 KB)

Seems to work so far. I’ll let you know if that changes; the project is still pretty new. Thanks for the fast response!

That version is now official, as well as fixing another parser-error-related bug identified on the Github repo.

Hi, is the public library update working for anyone else?
For me it offers an update to version 7, but then the popup says version 5 was installed successfully, and it still offers to update. If I go look at the extension installed it’s still version 5. I tried deleting it and installing from the library again, but it still gave me version 5.
I’ve never had to update extensions through the library before (I guess I’m new here) so is this just a normal approval process thing?

No, that’s not normal. I just tried it myself (Inform Version 1.65 on MacOS Sierra) but it installed the latest version correctly. Could you provide details of your setup?

I just tried it and had the same result as Mark on Windows 10.

Oh, I’ve solved it! I have Windows 7 & 8.1 on two computers, and the problem is IE caching Inform’s downloads.

[spoiler]I was very thoroughly making sure there were no copies of “Threaded Conversation.i7x” hiding out somewhere on the computer, and there weren’t. Then I extended my search to all extensions, so searching my entire computer for “.i7x”, and found that extensions get cached when Inform downloads them, and apparently mine never get cleared out.
Deleting “Threaded%20Conversation[1].i7x” out of C:\Users\Lucy\AppData\Local\Microsoft\Windows\Temporary Internet Files\Content.IE5\21C8Z3Y0" allowed Inform 7 to download the new version, instead of forever using the cached one.

I do use IE occasionally, but apparently not enough that it can be trusted to clear it’s cache.
I don’t see this issue on the bug tracker, so I’ll report it when my signup goes through unless someone else wants to first.
I did update to the latest Inform front end dated 23rd February 2018 during troubleshooting, so it’s still a current issue (previously I had July 2017).[/spoiler]

Thanks for the update!

In example “Not So Simple” if you type:

ask barmaid about rumors
ask wanderer about rumors

after second command
“the current interlocutor” is changed to wanderer, which is reflected in the status bar. - that’s ok
Action [the wanderer discussing whether she’s heard the stories] is executed - this is strange because quip “whether she’s heard the stories” quip-supplies the barmaid.

Is this a bug or am I missing something obvious?

full transcript below:

[spoiler]Not So Simple
An Interactive Fiction
Release 1 / Serial number 180912 / Inform 7 build 6M62 (I6/v6.33 lib 6/12N) SD
Identification number: //16C3AD9B-8859-4C21-A8CE-314BFDB1DB74//
Interpreter version 0.5.2 / VM 3.1.2 / Library serial number 080126
Standard Rules version 3/120430 by Graham Nelson
Threaded Conversation version 7/180807 by Chris Conley (modified from Threaded Conversation by Emily Short and based on Alabaster by Emily Short, et. al.)
Conversation Framework version 12 by Eric Eve
Epistemology version 9 by Eric Eve

ask barmaid about rumors
“Where I come from, over the black hills there, they say that men this side of the mountain live as old as Methuselah,” you remark. “They say the secret of eternal life is here.”

“Oh, do they?” she says, sweeping crumbs of cheese and crusty bread into her hand. “The oldest codger around these parts is old Garrick, and I wouldn’t put him beyond his four-score and ten.”

You could ask where Garrick lives, ask where the barmaid comes from or ask whether she’s heard the stories.

Actions listing on.

ask wanderer about rumors
[starting a conversation with the wanderer about “about rumors”]
[(1) saying hello to the wanderer]
[(1) saying hello to the wanderer - succeeded]

[starting a conversation with the wanderer about “about rumors” - succeeded]

[discussing whether she’s heard the stories]
“Have you heard any stories of long-living men?” you press her.

[discussing whether she’s heard the stories - succeeded]

[the wanderer discussing whether she’s heard the stories]
She pinches her lips and scrubs at a circle-shaped stain on the table before her. “If you’re a fool come looking for a spring of life or a vein of immortal gold buried in the black hills, you’d do better to go back home where you come from.”

[the wanderer discussing whether she’s heard the stories - succeeded]

You could ask whether the rumors tell truly.[/spoiler]

Huh. That’s interesting. That does look like a bug.

At first glance, I suspect it’s because whether she’s heard the stories indirectly-follows whether the rumors tell truly, and I bet the mechanism that parses the conversation action while the current interlocutor is not the person quip-supplied by the quip in question doesn’t test quite as many conditions as the full-fledged system does. Note that the wanderer responds correctly if you ask him about the rumors after you’re already talking to him. Let me investigate further.

I’ve been experimenting with weakly-phrased quips, and I’ve noticed that the paragraph always runs on after the reply is printed. This results in the suggestions or even the prompt ending up in the same paragraph as the reply.

I had a look at the rule that prints the reply, and I’m confused by that as well.

Report someone discussing something (this is the interlocutor's reply rule):
[	This is a report, rather than a carry out rule, so that in theory characters can discuss things in another room, exchanging information behind the player's back.	]
[	It also means that we can override the report rule without messing up any of the other quip-machinery accounting that needs to happen during the action.	]
	if the noun provides the property reply:
		say "[reply of the noun]" (A);
		if break after reply is true and the noun is strongly-phrased, say paragraph break;
		if the noun is weakly-phrased, say " [run paragraph on]" (B);
		now break after reply is false. [Even if one reply recursively induces this character to perform another immediately after, we still only want to print one paragraph break at the end.]

The comments suggest that it is trying to print a paragraph break only after the last reply, but the code would seem to put the paragraph break after the first reply. Also, since break after reply is a global variable that is set to true when setting action variables, it isn’t clear to me when it would ever be false.