Blue Lacuna — 103 of 467

Aaron A. Reed

Release 4

Section - Meddling

[By default, we can't do things that would derail the conversation during an episode. By defining the various default beats associated to an episode to silence, we can allow them to take place.]

episode_subchange is a dogged repeatable beat with reaction "'Not now,' he says, 'we're in the middle of this.'".

Check vague discussing when an episode is playing and Progue is attentive and the subchange beat of current episode is not silence (this is the episodes overrule changing subject rule):

[If there is nothing to discuss, we've broken the conversation; get out.]

if the number of available unrepeatable beats is 0:

let esc be the the escape clause of a random thing that encloses last beat;

if esc is a beat and esc is not default_escape_clause:

force discuss esc;

stop the action;

else:

force discuss bye_beat of Progue;

stop the action;

otherwise:

let line be the subchange beat of current episode;

if line is spoken and line is unrepeatable and nothing replaces line:

now subchange beat of current episode is silence;

otherwise:

increase derail_tracker by 1;

extend beats;

force discuss line;

stop the action.

episode_boredom is an ephemeral repeatable beat with reaction "'Well?' he says, 'I'm waiting.'".

First before getting bored when an episode is playing and Progue is attentive and the boredom beat of current episode is not silence (this is the episodes overrule getting bored rule):

[If there is nothing to discuss, we've broken the conversation; get out.]

if the number of available unrepeatable beats is 0:

let esc be the the escape clause of a random thing that encloses last beat;

if esc is a beat and esc is not default_escape_clause:

force discuss esc;

stop the action;

else:

force discuss bye_beat of Progue;

stop the action;

otherwise:

let line be the boredom beat of current episode;

if line is spoken and line is unrepeatable and nothing replaces line:

now boredom beat of current episode is silence;

otherwise:

increase derail_tracker by 1;

extend beats;

force discuss line;

stop the action.

episode_bye is an ephemeral repeatable beat with reaction "'We're not through with this conversation yet,' he says.".

First before saying farewell to Progue when an episode is playing and Progue is attentive and the bye beat of current episode is not silence (this is the episodes overrule goodbye rule):

[If there is nothing to discuss, we've broken the conversation; get out.]

if the number of available unrepeatable beats is 0:

let esc be the the escape clause of a random thing that encloses last beat;

if esc is a beat and esc is not default_escape_clause:

force discuss esc;

stop the action;

else:

force discuss bye_beat of Progue;

stop the action;

[otherwise, explain why we can't stop talking.]

let nextbit be the bye beat of current episode;[aar]

if nextbit is a beat:

if nextbit is spoken and nextbit is unrepeatable and nothing replaces nextbit:

now bye beat of current episode is silence;

otherwise:

extend beats;

increase derail_tracker by 1;

force discuss nextbit;

stop the action.

episode_abruptbye is an ephemeral repeatable beat with reaction "He grabs your arm. 'Don't go yet,' he says, 'we aren't finished here.'".

First before going or exiting or landmark-going when an episode is playing and Progue is attentive and the abruptbye beat of current episode is not silence (this is the episodes overrule movement rule):

if we-are-landmark-going is true:

tidy landmark-go;

clean up landmark-go;

now overrule further dialog is true;

stop the action;

otherwise:

let line be the abruptbye beat of current episode;

if line is spoken and line is unrepeatable and nothing replaces line:

now abruptbye beat of current episode is silence;

otherwise:

increase derail_tracker by 1;

extend beats;

force discuss line;

stop the action.

[If something in the conversation breaks, it can become impossible to end the convo, effectively derailing the entire game. This is always a bug; but to prevent it being a game-breaking bug, we allow the player to get out of the current situation if this occurs.]

derail_tracker is a number that varies. Every turn when Progue is idle and Progue is not enclosed by location: now derail_tracker is 0.

Every turn when derail_tracker > 6:

now the bye beat of current episode is silence;

now the abruptbye beat of current episode is silence;

now the subchange beat of current episode is silence;

now the boredom beat of current episode is silence;

let pthread be a random thing that encloses last beat;

now derail_tracker is 0;

if escape clause of pthread is not default_escape_clause and escape clause of pthread is unspoken:

force discuss escape clause of pthread;

post-conversation processing;

else:

force discuss bye_beat of Progue;

post-conversation processing.