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.