Conversation Framework for Sand-dancer
version 2 by Aaron Reed
Chapter 2 - Saying Goodbye
Farewell type is a protocol type that varies. Farewell type is explicit.
[ This is the only way I could figure to effectively change the current interlocutor to no one. --Eric]
To reset the interlocutor:
now the current interlocutor is nothing. [a random person who is not a person]
Leavetaking is an action applying to nothing.
Understand "bye" or "goodbye" or "cheerio" or "farewell" as leavetaking.
Saying goodbye to is an action applying to one visible thing.
Understand "say bye/goodbye/farewell/cheerio to [someone]" as saying goodbye to.
Check saying goodbye to something when the noun is not the current interlocutor (this is the can't say goodbye to someone you're not talking to rule):
say "You're not talking to [the noun]." instead.
Carry out saying goodbye to something (this is the reset interlocutor on saying goodbye rule):
reset the interlocutor.
Check leavetaking when the current interlocutor is not a visible person (this is the don't allow saying goodbye to no-one rule):
say "You're not talking to anyone." instead.
Carry out leavetaking (this is the standard leavetaking rule):
try saying goodbye to the current interlocutor.
Persuasion rule for asking people to try leavetaking (this is the alllow leavetaking rule): persuasion succeeds.
Carry out someone trying leavetaking (this is the convert npc leavetaking to player leavetaking rule):
try saying goodbye to the person asked.
Report saying goodbye to someone when the farewell type is explicit (this is the default saying goodbye rule):
say "You say goodbye to [the noun]."
This is the say goodbye when moving rule:
if the current interlocutor is a person in the location begin;
now the farewell type is implicit;
try saying goodbye to the current interlocutor;
The say goodbye when moving rule is listed first in the carry out going rules.