[ANN] Threaded Conversation v0.2

This release fleshes out queuing of quips for NPCs, does a better job of suggesting in-thread quips and dealing with changes of subject, and fixes a few latent bugs.

Feedback is urgently desired!


Thanks for writing this library. After testing it a bit I thought it missed some features but after rereading the documentation (and not only concentrating on the examples) I found all stuff I was looking for in this library.
The only complaints I still have is that some names weren’t that obvious for me to understand right away. like

(off limits $)

Since it seems to be just the negated version of

(available $)

I would mention that predicate too in the readme. Or is there a reason to not use it directly?

I’d be happy to explore better names; originally I was trying to keep names close to the Inform7 version, but things have strayed. Yes, you have the option to make a quip conditionally available or conditionally off-limits.

I’m very happy to hear that you are finding TC useful!

I haven’t come up with better names, but after looking a bit into the Inform7 version the current names make more sense.

I’m still playing around with this library without really knowing if something playable will ever come out of it, and I found some small things that could be improved:

The “(nag $Quip)” being displayed before the reaction of what the player does seems odd to me.

> dance
“Can you please answer my question,” shouts the old man angrily.

You practise your moves.

You could ignore the old man or request him to repeat his question

Imo the reaction to the input should come first and then the npc should remind the player that there’s still a quip open. I turned the “(instead of [$verb | $])”-predicate into an after-predicate to get the output I wanted. Not sure if that’s the best way to solve this.

Another problem with “(nag $Quip)” that I had was that the quip was displayed even after I “(reset conversation partner)” during a conversation. The suggestions stopped showing up after the reset. Maybe this isn’t a library problem and I just did something wrong.

Currently, it would take a change to the standard library to fix the order correctly. This has been discussed, adding (on every tick early) and (on every tick late) so that the nag could go there.

Though, as I’m thinking about this, it might be possible to move the nag to the next tick rather than the current tick. I’ll look into it.