Blue Lacuna — 94 of 467

Aaron A. Reed

Release 4

Chapter - Topics Line

Before reading a command when Finishing-The-Prologue is complete (this is the show topics rule):

if a conversing other person is enclosed by the location or the number of available on-topic beats > 0:

if conversation is being debugged, say "// Conversation: show topics window because a conversing other person is enclosed by the location ([if a conversing other person is enclosed by the location][a random conversing other person enclosed by the location][else]no[end if]) or the number of available on-topic beats > 0 ([if the number of available on-topic beats > 0][the list of available on-topic beats][else]no[end if]).";

if out-of-line keywords is 3:

if player is awake, show topics;

otherwise if player is awake:

if out-of-line keywords is 2, now the measurement of the topics-window is 5;

otherwise now the measurement of the topics-window is 3;

if topics-window is g-unpresent, open up topics-window;

move focus to topics-window, clearing the window;

show topics;

return to main screen;

otherwise:

if topics-window is g-present:

shut down topics-window;

try looking.

The drawing rule of topics-window is the draw topics window rule.

[ This ensures that we see the topics even after an undo.]

This is the draw topics window rule:

if player is awake:

if topics-window is g-unpresent, open up topics-window;

move focus to topics-window, clearing the window;

show topics;

return to main screen.

showing-offtopics is a truth state that varies.

Understand "topics" or "topic" as topic-showing. Topic-showing is an action out of world applying to nothing. [ Provided as a complement to THINGS and EXITS.]

Carry out topic-showing:

if an attentive other person is enclosed by the location:

show topics;

say paragraph break;

else:

say "[as the parser]You're not talking to anyone right now.[as normal]".

To show topics:

now nicename topics is true;

truncate toplist to 0 entries;

if showing-offtopics is false begin;

add list of available on-topic printable-keyworded beats to toplist;

sort toplist in reverse tempfuse order;

otherwise;

add list of convo stuff to toplist;

end if;

let orig be the number of entries in toplist;

truncate toplist to 6 entries;

if number of entries in toplist > 0 or a conversing person is enclosed by the location or we are setting the keyword style, say "[if we are setting the keyword style and out-of-line keywords is 3][line break][end if][if out-of-line keywords is 3][end if]Topics: [if we are setting the keyword style]topic, this[otherwise if the number of entries in toplist is 0]listen[otherwise][toplist][end if][if orig > 6] (...)[run paragraph on][end if]";

if we-are-keyword-setting is true begin;

say "[line break]More information is often displayed here.";

stop;

else if out-of-line keywords < 3; say "[line break][if showing-offtopics is true]Or say [t]cancel[x] if you don't want to change the subject[otherwise]You can also say [nothingbit][t]goodbye[x][subjectbit][end if].[run paragraph on]";

otherwise; say "[one of][line break]You can also say nothing, goodbye, or subject.[or][line break]You can also say nothing, goodbye, or subject.[or][line break][stopping]";

end if;

if screen reader mode is true, say line break;

now nicename topics is false.

To say nothingbit: if the number of entries in toplist > 0, say "[t]nothing[x][if Progue is not attentive] or[else],[end if] ".

To say subjectbit: if Progue is attentive and current episode is not Word Day and current episode is not Final Confrontation, say ", or change the [t]subject[x]".

Definition: a beat is on-topic if its tempfuse > 0 and its tempfuse < 100. [ Beats which reference objects or concepts are given a fuse of 9999, meaning they stay relevant until recalled but will not show up in the standard list.]

toplist is a list of objects that varies.