Alabaster — 4 of 123

John Cater, Rob Dubbin, Eric Eve, Elizabeth Heller, Jayzee, Kazuki Mishima, Sarah Morayati, Mark Musante, Emily Short, Adam Thornton, and Ziv Wities

Release 1

Part 2 - Conversation System Preliminaries

[The conversation builder system takes care of many of these tasks, but I've rewritten a few of the rules to make them more clear to people who aren't familiar with or using the full extension, so that means redoing things that most authors would be able to leave well enough alone in the extension.]

Include Threaded Conversation by Emily Short.

Understand "topics" as changing the subject.

The standard report other subjects rule is not listed in any rulebook. [By default, this rule lists available quips; but we can have so many available at once that it may be better just to list subjects that are related to available quips. That also reduces the risk of giving away cool stuff before its time.]

A thing can be flagged-topical or flagged-untopical. A thing is usually flagged-untopical.

Check changing the subject when the current quip is restrictive:

if every flagged-ready quip in the quip-repository is binary-answering:

say "[The current interlocutor] seem[s] to be expecting either yes or no. " instead;

otherwise:

say "The only reasonable responses you can think of are these: [list of flagged-ready quips that directly-follow the current quip]. " instead.

Definition: a quip is binary-answering if it is a negative quip or it is an affirmative quip.

Definition: a thing is subject-relevant if it is mentioned by the current quip.

Definition: a thing is referable:

if it is flagged-topical and it is subject-relevant:

yes;

if allowing irrelevance is true and it is flagged-topical:

yes;

no.

Total referables is a number that varies.

Allowing irrelevance is a truth state that varies. Allowing irrelevance is false.

Check changing the subject:

repeat with item running through listed flagged-ready quips in the quip-repository:

now every thing which is mentioned by the item is flagged-topical;

if nothing is flagged-topical:

say "You are out of ideas." instead.

Carry out changing the subject:

if a flagged-topical thing is subject-relevant:

change allowing irrelevance to false; [now we divide "referables" into two groups, the relevant and the irrelevant; the meaning of "referable" changes depending on whether we are allowing irrelevant items to be included.]

change total referables to the number of referable things;

say "You could discuss ";

pick referable patterns;

if something is referable:

say "[the list of referable things]";

now every referable thing is flagged-untopical;

if something is flagged-topical:

change allowing irrelevance to true;

change total referables to the number of referable things;

if total referables is greater than 2:

say ".[paragraph break]Alternatively, you could change the subject to ";

otherwise:

say ", or change the subject to ";

pick referable patterns;

if something is referable:

say "[the list of referable things]";

say ".";

otherwise:

change allowing irrelevance to true;

change total referables to the number of referable things;

say "You could discuss ";

pick referable patterns;

if something is referable:

say "[the list of referable things].";

now every thing is flagged-untopical. [1]

[This is so that we can arrange the topic list into more attractive full paragraphs with related ideas clustered together. This affects not only the order of the topic list with related ideas grouped, but also the language rhythms.]

To pick referable patterns:

let phrase length be 1;

if the player knows possible-blood-drinking and Snow White is referable and vampirism is referable:

say "[Snow White] or (daringly) [vampirism]";

now phrase length is 2;

now Snow White is not flagged-topical;

now vampirism is not flagged-topical;

if blood is referable:

say " or (coyly) [blood]";

now blood is not flagged-topical;

now phrase length is 3;

punctuate;

if Snow White is referable:

say "[Snow White] herself";

now phrase length is 1;

now Snow White is not flagged-topical;

punctuate;

if the heart-sized box is referable and the symbols are referable:

if the corpse is referable and the hart's heart is referable:

say "[the heart-sized box], [the hart's heart] meant to go in it, the corpse that heart belonged to, the symbols on the box surface";

now the corpse is flagged-untopical;

now the hart's heart is flagged-untopical;

now phrase length is 1;

otherwise if phrase length is 2:

say "the symbols on the box you're carrying for the Queen, the box itself";

now phrase length is 1;

otherwise:

say "[the heart-sized box] or the symbols on it";

now phrase length is 2;

now the heart-sized box is not flagged-topical;

now the symbols are not flagged-topical;

punctuate;

if the corpse is referable and the hart's heart is referable:

say "[the corpse] and its heart";

now the corpse is flagged-untopical;

now the hart's heart is flagged-untopical;

now phrase length is 2;

if the magic mirror is referable and the queen is referable:

say "[the magic mirror] or [the queen] herself";

now phrase length is 2;

now the magic mirror is not flagged-topical;

now the queen is not flagged-topical;

punctuate;

if the king is referable and the queen is referable:

say "[the King] or [the queen]";

now phrase length is 2;

now the queen is not flagged-topical;

now the king is not flagged-topical;

punctuate;

if vampirism is referable and witchcraft is referable:

say "[vampirism] and [witchcraft]";

now phrase length is 2;

now vampirism is not flagged-topical;

now witchcraft is not flagged-topical;

punctuate;

if vampirism is referable:

say "[vampirism]";

now phrase length is 1;

if blood is referable:

say " (or just blood)";

now phrase length is 1;

now blood is not flagged-topical;

now vampirism is not flagged-topical;

punctuate;

if safe haven is referable:

say "[a safe haven]";

now phrase length is 1;

if deal is referable:

say " and [the deal]";

now phrase length is 2;

now deal is not flagged-topical;

now safe haven is not flagged-topical;

punctuate;

if death is referable:

if murder is referable:

say "death (abstract) or murder (specific)";

now phrase length is 2;

now deal is not flagged-topical;

otherwise:

say "death";

now phrase length is 1;

now death is not flagged-topical;

punctuate;

if the number of referable things is 2:

let A be a random referable thing;

let B be a random referable thing which is not A;

say "[the A], or [the B]";

now A is not flagged-topical;

now B is not flagged-topical.

To punctuate:

if the number of referable things is greater than 1:

say ", ";

if the number of referable things is 1:

if total referables is 2:

say " or ";

otherwise:

say ", or ";

Note

[1]. This could be done in fewer lines but would take longer to run.