From 3e52231387548d6c8dc7f8c04dc6163b3b1d6f1c Mon Sep 17 00:00:00 2001 From: Graham Nelson Date: Mon, 1 Jan 2024 11:47:08 +0000 Subject: [PATCH] Voluntary/involuntary beats --- README.md | 2 +- build.txt | 4 +- docs/DialogueKit/S-drc.html | 11 ++- docs/lexicon-module/P-wtmd.html | 2 +- docs/standard_rules/S-act.html | 91 +++++++++---------- docs/standard_rules/S-act2.html | 1 - docs/standard_rules/S-cg.html | 1 - docs/standard_rules/S-pd.html | 1 - docs/standard_rules/S-prm.html | 3 +- docs/standard_rules/S-pwm.html | 1 - docs/standard_rules/S-var.html | 4 +- docs/standard_rules/index.html | 1 - inform7/Downloads/excerpts-diagnostics.txt | 2 +- inform7/Downloads/preform-diagnostics.txt | 36 ++++---- inform7/Figures/memory-diagnostics.txt | 6 +- inform7/Figures/timings-diagnostics.txt | 24 ++--- .../Inter/Architecture16Kit/kit_metadata.json | 2 +- .../Inter/Architecture32Kit/kit_metadata.json | 2 +- .../Inter/BasicInformKit/kit_metadata.json | 2 +- .../Inter/CommandParserKit/kit_metadata.json | 2 +- .../Inter/DialogueKit/Sections/Director.i6t | 11 ++- .../EnglishLanguageKit/kit_metadata.json | 2 +- .../Inter/WorldModelKit/kit_metadata.json | 2 +- .../Sections/Variables and Rulebooks.w | 3 + .../Figures/excerpts-diagnostics.txt | 2 +- 25 files changed, 111 insertions(+), 107 deletions(-) diff --git a/README.md b/README.md index 56ccc9bd2..b92af0309 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # Inform 7 -[Version](notes/versioning.md): 10.2.0-beta+6X27 'Krypton' (31 December 2023) +[Version](notes/versioning.md): 10.2.0-beta+6X28 'Krypton' (1 January 2024) ## About Inform diff --git a/build.txt b/build.txt index 491658fbc..a2c0b07a5 100644 --- a/build.txt +++ b/build.txt @@ -1,3 +1,3 @@ Prerelease: beta -Build Date: 31 December 2023 -Build Number: 6X27 +Build Date: 1 January 2024 +Build Number: 6X28 diff --git a/docs/DialogueKit/S-drc.html b/docs/DialogueKit/S-drc.html index 0aff43f20..de8170b83 100644 --- a/docs/DialogueKit/S-drc.html +++ b/docs/DialogueKit/S-drc.html @@ -168,7 +168,7 @@ first to speak. (Note that sp

§5. Active dialogue. In active mode only, the Director sometimes initiates conversation itself, and this is the rule doing that. In passive mode the rule does nothing. -In stories with a lot of dialogue, this will be run quite slowly: on the +In stories with a lot of dialogue, this will run quite slowly: on the other hand, it only has to run once in every turn, so that may not matter.

@@ -181,9 +181,12 @@ other hand, it only has to run once in every turn, so that may not matter. if ((DirectorBeatAccessible(db, player)) && (DirectorBeatAvailable(db)) && (DirectorBeatRelevant(db))) { - DirectorPerformBeat(db); - line_performance_count = 0; - rfalse; + if ((GProperty(DIALOGUE_BEAT_TY, db, voluntary) == false) || + (DirectorBeatFirstSpeaker(db) ~= player)) { + DirectorPerformBeat(db); + line_performance_count = 0; + rfalse; + } } for (db=1: db<=NO_DIALOGUE_BEATS: db++) if ((GProperty(DIALOGUE_BEAT_TY, db, spontaneous)) && diff --git a/docs/lexicon-module/P-wtmd.html b/docs/lexicon-module/P-wtmd.html index b4070dc62..f60d21c67 100644 --- a/docs/lexicon-module/P-wtmd.html +++ b/docs/lexicon-module/P-wtmd.html @@ -181,7 +181,7 @@ number of successes.
 Size of lexicon: 3165 excerpt meanings
-  Stored among 855 words out of total vocabulary of 10635
+  Stored among 855 words out of total vocabulary of 10638
   719 words have a start list: longest belongs to report (with 293 meanings)
   21 words have an end list: longest belongs to digits (with 7 meanings)
   29 words have a middle list: longest belongs to to (with 4 meanings)
diff --git a/docs/standard_rules/S-act.html b/docs/standard_rules/S-act.html
index 2e78b5b2c..edb42c305 100644
--- a/docs/standard_rules/S-act.html
+++ b/docs/standard_rules/S-act.html
@@ -33,7 +33,6 @@
 
  • indoc
  • inform6
  • inpolicy
  • -
  • inrtps
  • Resources

    • extensions
    • kits
    • @@ -122,55 +121,55 @@ supplemented by details: For printing room description details of a container (called the box) when the box is falsely-unoccupied (this is the falsely-unoccupied container room description details rule): say text of list writer internal rule response (A); " (" if the box is lit and the location is unlit begin; - if the box is closed, say text of list writer internal rule response (J); [ "closed, empty[if serial comma option is active],[end if] and providing light" ] - else say text of list writer internal rule response (I); "empty and providing light" - else; - if the box is closed, say text of list writer internal rule response (E); "closed" - else say text of list writer internal rule response (F); "empty" - end if; - say text of list writer internal rule response (B); ")" + if the box is closed, say text of list writer internal rule response (J); [ "closed, empty[if serial comma option is active],[end if] and providing light" ] + else say text of list writer internal rule response (I); "empty and providing light" + else; + if the box is closed, say text of list writer internal rule response (E); "closed" + else say text of list writer internal rule response (F); "empty" + end if; + say text of list writer internal rule response (B); ")" -Printing inventory details of something (hidden in RULES command) (documented at act_idetails) is an activity. -The printing inventory details activity is accessible to Inter as "PRINTING_INVENTORY_DETAILS_ACT". +Printing inventory details of something (hidden in RULES command) (documented at act_idetails) is an activity. +The printing inventory details activity is accessible to Inter as "PRINTING_INVENTORY_DETAILS_ACT". -To say the deceitfully empty inventory details of (box - a container): - let inventory text printed be false; - if the box is lit begin; - if the box is worn, say text of list writer internal rule response (K); "providing light and being worn" - else say text of list writer internal rule response (D); "providing light" - now inventory text printed is true; - else if the box is worn; - say text of list writer internal rule response (L); "being worn" - now inventory text printed is true; - end if; - if the box is openable begin; - if inventory text printed is true begin; - if the serial comma option is active, say ","; - say text of list writer internal rule response (C); "and" - end if; - if the box is open begin; - say text of list writer internal rule response (N); "open but empty" - else; it's closed - if the box is locked, say text of list writer internal rule response (P); "closed and locked" - else say text of list writer internal rule response (O); "closed" - now inventory text printed is true; - end if; - else; it's not openable - if the box is transparent begin; - if inventory text printed is true, say text of list writer internal rule response (C); "and" - say text of list writer internal rule response (F); "empty" - now inventory text printed is true; not relevant unless code is added - end if; - end if; +To say the deceitfully empty inventory details of (box - a container): + let inventory text printed be false; + if the box is lit begin; + if the box is worn, say text of list writer internal rule response (K); "providing light and being worn" + else say text of list writer internal rule response (D); "providing light" + now inventory text printed is true; + else if the box is worn; + say text of list writer internal rule response (L); "being worn" + now inventory text printed is true; + end if; + if the box is openable begin; + if inventory text printed is true begin; + if the serial comma option is active, say ","; + say text of list writer internal rule response (C); "and" + end if; + if the box is open begin; + say text of list writer internal rule response (N); "open but empty" + else; it's closed + if the box is locked, say text of list writer internal rule response (P); "closed and locked" + else say text of list writer internal rule response (O); "closed" + now inventory text printed is true; + end if; + else; it's not openable + if the box is transparent begin; + if inventory text printed is true, say text of list writer internal rule response (C); "and" + say text of list writer internal rule response (F); "empty" + now inventory text printed is true; not relevant unless code is added + end if; + end if; -For printing inventory details of a container (called the box) when the box is falsely-unoccupied (this is the falsely-unoccupied container inventory details rule): - let the tag be "[the deceitfully empty inventory details of box]"; - if tag is not empty begin; - say text of list writer internal rule response (A); "(" - say tag; - say text of list writer internal rule response (B); ")" - end if; +For printing inventory details of a container (called the box) when the box is falsely-unoccupied (this is the falsely-unoccupied container inventory details rule): + let the tag be "[the deceitfully empty inventory details of box]"; + if tag is not empty begin; + say text of list writer internal rule response (A); "(" + say tag; + say text of list writer internal rule response (B); ")" + end if;

    §5. Names of things are often formed up into lists, in which they are sometimes grouped together: diff --git a/docs/standard_rules/S-act2.html b/docs/standard_rules/S-act2.html index c0b2e622d..e65c526f6 100644 --- a/docs/standard_rules/S-act2.html +++ b/docs/standard_rules/S-act2.html @@ -33,7 +33,6 @@

  • indoc
  • inform6
  • inpolicy
  • -
  • inrtps
  • Resources

    • extensions
    • kits
    • diff --git a/docs/standard_rules/S-cg.html b/docs/standard_rules/S-cg.html index a7e6b2aab..fc09bbc07 100644 --- a/docs/standard_rules/S-cg.html +++ b/docs/standard_rules/S-cg.html @@ -33,7 +33,6 @@
    • indoc
    • inform6
    • inpolicy
    • -
    • inrtps

    Resources

    • extensions
    • kits
    • diff --git a/docs/standard_rules/S-pd.html b/docs/standard_rules/S-pd.html index 0a0d10c41..455bf68e4 100644 --- a/docs/standard_rules/S-pd.html +++ b/docs/standard_rules/S-pd.html @@ -47,7 +47,6 @@ MathJax = {
    • indoc
    • inform6
    • inpolicy
    • -
    • inrtps

    Resources

    • extensions
    • kits
    • diff --git a/docs/standard_rules/S-prm.html b/docs/standard_rules/S-prm.html index fbd08e878..fe535f7db 100644 --- a/docs/standard_rules/S-prm.html +++ b/docs/standard_rules/S-prm.html @@ -33,7 +33,6 @@
    • indoc
    • inform6
    • inpolicy
    • -
    • inrtps

    Resources

    • extensions
    • kits
    • @@ -58,7 +57,7 @@ rubric text, and the Standard Rules are no exception:

      -Version [[Version Number]] of the Standard Rules by Graham Nelson begins here.
      +Version [[Version Number]] of the Standard Rules by Graham Nelson begins here.
       
       "The Standard Rules, included in every interactive fiction project, creates
       a model world populated by actors who perform actions."
      diff --git a/docs/standard_rules/S-pwm.html b/docs/standard_rules/S-pwm.html
      index 2214c6044..1756c862d 100644
      --- a/docs/standard_rules/S-pwm.html
      +++ b/docs/standard_rules/S-pwm.html
      @@ -47,7 +47,6 @@ MathJax = {
       
    • indoc
    • inform6
    • inpolicy
    • -
    • inrtps

    Resources

    • extensions
    • kits
    • diff --git a/docs/standard_rules/S-var.html b/docs/standard_rules/S-var.html index 69ac9282e..7da29a33f 100644 --- a/docs/standard_rules/S-var.html +++ b/docs/standard_rules/S-var.html @@ -47,7 +47,6 @@ MathJax = {
    • indoc
    • inform6
    • inpolicy
    • -
    • inrtps

    Resources

    • extensions
    • kits
    • @@ -1362,6 +1361,8 @@ some response texts can be hung. non-recurring. A dialogue beat can be spontaneous or unspontaneous. A dialogue beat is usually unspontaneous. +A dialogue beat can be voluntary or involuntary. A dialogue beat is usually +voluntary. A dialogue line can be performed or unperformed. A dialogue line is usually unperformed. @@ -1377,6 +1378,7 @@ some response texts can be hung. The performed property is accessible to Inter as "performed". The spontaneous property is accessible to Inter as "spontaneous". +The voluntary property is accessible to Inter as "voluntary". The recurring property is accessible to Inter as "recurring". To make (T - an object) a live conversational subject: diff --git a/docs/standard_rules/index.html b/docs/standard_rules/index.html index 0d6325541..8de27d1b9 100644 --- a/docs/standard_rules/index.html +++ b/docs/standard_rules/index.html @@ -31,7 +31,6 @@
    • indoc
    • inform6
    • inpolicy
    • -
    • inrtps

    Resources

    • extensions
    • kits
    • diff --git a/inform7/Downloads/excerpts-diagnostics.txt b/inform7/Downloads/excerpts-diagnostics.txt index 49d5f07bd..9d54aa331 100644 --- a/inform7/Downloads/excerpts-diagnostics.txt +++ b/inform7/Downloads/excerpts-diagnostics.txt @@ -1,5 +1,5 @@ Size of lexicon: 3165 excerpt meanings - Stored among 855 words out of total vocabulary of 10635 + Stored among 855 words out of total vocabulary of 10638 719 words have a start list: longest belongs to report (with 293 meanings) 21 words have an end list: longest belongs to digits (with 7 meanings) 29 words have a middle list: longest belongs to to (with 4 meanings) diff --git a/inform7/Downloads/preform-diagnostics.txt b/inform7/Downloads/preform-diagnostics.txt index f9ccc9706..b5007ea7f 100644 --- a/inform7/Downloads/preform-diagnostics.txt +++ b/inform7/Downloads/preform-diagnostics.txt @@ -1,6 +1,6 @@ internal nti 28 constraint (none) extremes [1, 1] - internal hits 1320/8640 nti 29 constraint (none) extremes [0, 0] + internal hits 1320/8646 nti 29 constraint (none) extremes [0, 0] internal hits 4036/8296 nti 30 constraint (none) extremes [0, 0] @@ -24,7 +24,7 @@ internal nti 11 constraint (none) extremes [1, 1] - internal hits 2/13892 nti 12 constraint (none) extremes [0, 0] + internal hits 2/13898 nti 12 constraint (none) extremes [0, 0] hits 0/18 nti 16 constraint DS = {16} extremes [3, infinity) English: @@ -5446,12 +5446,12 @@ internal nti 18 constraint (none) extremes [1, infinity) - hits 214/10970 nti 19 constraint DW = {12, 13} extremes [2, infinity) + hits 214/10976 nti 19 constraint DW = {12, 13} extremes [2, infinity) English: - (hits 206/4306) (matched long text) constraint DS = {12} extremes [2, infinity) + (hits 206/4309) (matched long text) constraint DS = {12} extremes [2, infinity) - (hits 8/3633) (matched long text) constraint DS = {13} extremes [3, infinity) + (hits 8/3636) (matched long text) constraint DS = {13} extremes [3, infinity) hits 206/2612 nti 12 constraint DS = {12} extremes [2, infinity) English: @@ -5470,35 +5470,35 @@ section {...} (hits 162/1262) (matched long text) constraint DS = {12} extremes [2, infinity) - hits 8/7266 nti 13 constraint DS = {13} extremes [3, infinity) + hits 8/7272 nti 13 constraint DS = {13} extremes [3, infinity) English: {...} begin/begins here - (hits 4/3633) (matched long text) constraint DS = {13} extremes [3, infinity) + (hits 4/3636) (matched long text) constraint DS = {13} extremes [3, infinity) {...} end/ends here - (hits 4/3629) (matched: 'the standard rules end here') constraint DS = {13} extremes [3, infinity) + (hits 4/3632) (matched: 'the standard rules end here') constraint DS = {13} extremes [3, infinity) - hits 32/13892 nti 15 constraint (none) extremes [1, infinity) + hits 32/13898 nti 15 constraint (none) extremes [1, infinity) English: (hits 0/20) constraint (none) extremes [1, 1] {...} - (hits 0/6926) constraint (none) extremes [2, infinity) + (hits 0/6929) constraint (none) extremes [2, infinity) - (hits 0/6756) constraint DS = {14} extremes [4, infinity) + (hits 0/6759) constraint DS = {14} extremes [4, infinity) * constraint CS = {15} extremes [1, 1] * constraint DS = {15} extremes [2, 2] table {...} - (hits 14/6767) (matched long text) constraint DS = {15} extremes [2, infinity) + (hits 14/6770) (matched long text) constraint DS = {15} extremes [2, infinity) equation {...} - (hits 0/6753) constraint DS = {15} extremes [2, infinity) + (hits 0/6756) constraint DS = {15} extremes [2, infinity) include the {...} by {...} - (hits 0/6741) constraint DS = {15} extremes [5, infinity) + (hits 0/6744) constraint DS = {15} extremes [5, infinity) include {...} by {...} - (hits 18/6753) (matched long text) constraint DS = {15} extremes [4, infinity) + (hits 18/6756) (matched long text) constraint DS = {15} extremes [4, infinity) include (- {...} - (hits 0/6735) constraint DS = {15} extremes [3, infinity) + (hits 0/6738) constraint DS = {15} extremes [3, infinity) hits 9/2942 nti 16 constraint DS = {16} extremes [2, infinity) English: @@ -5513,12 +5513,12 @@ when {...} (hits 4/1285) (matched: 'when scene begins is a scene based rulebook') constraint DS = {16} extremes [2, infinity) - hits 0/13512 nti 14 constraint DS = {14} extremes [4, infinity) + hits 0/13518 nti 14 constraint DS = {14} extremes [4, infinity) English: include (- {###} in the preform grammar (hits 0/106) constraint DS = {14} extremes [7, 7] use {...} language element/elements - (hits 0/6756) constraint DS = {14} extremes [4, infinity) + (hits 0/6759) constraint DS = {14} extremes [4, infinity) hits 39/490 nti 22 constraint DS = {22} extremes [2, infinity) English: diff --git a/inform7/Figures/memory-diagnostics.txt b/inform7/Figures/memory-diagnostics.txt index 64e633f21..5df97bfea 100644 --- a/inform7/Figures/memory-diagnostics.txt +++ b/inform7/Figures/memory-diagnostics.txt @@ -1,6 +1,6 @@ Total memory consumption was 139587K = 136 MB - ---- was used for 2127258 objects, in 374812 frames in 0 x 800K = 0K = 0 MB: + ---- was used for 2127358 objects, in 374813 frames in 0 x 800K = 0K = 0 MB: 30.2% inter_tree_node_array 60 x 8192 = 491520 objects, 43255680 bytes 19.4% text_stream_array 4926 x 100 = 492600 objects, 27743232 bytes @@ -17,7 +17,7 @@ Total memory consumption was 139587K = 136 MB 1.5% inter_schema_token 14164 objects, 2152928 bytes 1.4% inter_name_generator_array 51 x 1000 = 51000 objects, 2041632 bytes 1.3% package_request 21353 objects, 1879064 bytes - 1.2% vocabulary_entry_array 163 x 100 = 16300 objects, 1830816 bytes + 1.2% vocabulary_entry_array 164 x 100 = 16400 objects, 1842048 bytes 1.1% dict_entry_array 501 x 100 = 50100 objects, 1619232 bytes 1.0% inter_symbols_table 26887 objects, 1505672 bytes 1.0% match_trie_array 11 x 1000 = 11000 objects, 1496352 bytes @@ -282,5 +282,5 @@ Total memory consumption was 139587K = 136 MB ---- code generation workspace for objects 3528 bytes in 19 claims 0.1% emitter array storage 281184 bytes in 2006 claims --136.-6% was overhead - -195265496 bytes = -190688K = -186 MB +-136.-6% was overhead - -195276728 bytes = -190699K = -186 MB diff --git a/inform7/Figures/timings-diagnostics.txt b/inform7/Figures/timings-diagnostics.txt index 1ca928cab..494abd1be 100644 --- a/inform7/Figures/timings-diagnostics.txt +++ b/inform7/Figures/timings-diagnostics.txt @@ -1,11 +1,11 @@ 100.0% in inform7 run - 68.0% in compilation to Inter - 46.3% in //Sequence::undertake_queued_tasks// - 4.4% in //MajorNodes::pre_pass// - 3.6% in //MajorNodes::pass_1// + 67.6% in compilation to Inter + 46.2% in //Sequence::undertake_queued_tasks// + 4.5% in //MajorNodes::pre_pass// + 3.7% in //MajorNodes::pass_1// 1.8% in //ImperativeDefinitions::assess_all// - 1.4% in //RTKindConstructors::compile// - 1.4% in //RTPhrasebook::compile_entries// + 1.5% in //RTKindConstructors::compile// + 1.5% in //RTPhrasebook::compile_entries// 1.1% in //Sequence::lint_inter// 0.7% in //ImperativeDefinitions::compile_first_block// 0.7% in //Sequence::undertake_queued_tasks// @@ -13,11 +13,11 @@ 0.3% in //MajorNodes::pass_2// 0.3% in //Sequence::undertake_queued_tasks// 0.3% in //World::stage_V// - 4.8% not specifically accounted for - 27.2% in running Inter pipeline - 8.8% in step 14/15: generate inform6 -> auto.inf - 6.9% in step 5/15: load-binary-kits - 5.8% in step 6/15: make-synoptic-module + 4.1% not specifically accounted for + 27.4% in running Inter pipeline + 9.0% in step 14/15: generate inform6 -> auto.inf + 6.7% in step 5/15: load-binary-kits + 6.0% in step 6/15: make-synoptic-module 1.8% in step 9/15: make-identifiers-unique 0.3% in step 11/15: eliminate-redundant-labels 0.3% in step 12/15: eliminate-redundant-operations @@ -25,5 +25,5 @@ 0.3% in step 7/15: shorten-wiring 0.3% in step 8/15: detect-indirect-calls 1.9% not specifically accounted for - 4.0% in supervisor + 4.1% in supervisor 0.8% not specifically accounted for diff --git a/inform7/Internal/Inter/Architecture16Kit/kit_metadata.json b/inform7/Internal/Inter/Architecture16Kit/kit_metadata.json index 14b6044fa..efb9bdfbe 100644 --- a/inform7/Internal/Inter/Architecture16Kit/kit_metadata.json +++ b/inform7/Internal/Inter/Architecture16Kit/kit_metadata.json @@ -2,7 +2,7 @@ "is": { "type": "kit", "title": "Architecture16Kit", - "version": "10.2.0-beta+6X27" + "version": "10.2.0-beta+6X28" }, "compatibility": "16-bit", "kit-details": { diff --git a/inform7/Internal/Inter/Architecture32Kit/kit_metadata.json b/inform7/Internal/Inter/Architecture32Kit/kit_metadata.json index 587ad7944..728768da1 100644 --- a/inform7/Internal/Inter/Architecture32Kit/kit_metadata.json +++ b/inform7/Internal/Inter/Architecture32Kit/kit_metadata.json @@ -2,7 +2,7 @@ "is": { "type": "kit", "title": "Architecture32Kit", - "version": "10.2.0-beta+6X27" + "version": "10.2.0-beta+6X28" }, "compatibility": "32-bit", "kit-details": { diff --git a/inform7/Internal/Inter/BasicInformKit/kit_metadata.json b/inform7/Internal/Inter/BasicInformKit/kit_metadata.json index 5a4f025c2..c3094778a 100644 --- a/inform7/Internal/Inter/BasicInformKit/kit_metadata.json +++ b/inform7/Internal/Inter/BasicInformKit/kit_metadata.json @@ -2,7 +2,7 @@ "is": { "type": "kit", "title": "BasicInformKit", - "version": "10.2.0-beta+6X27" + "version": "10.2.0-beta+6X28" }, "needs": [ { "need": { diff --git a/inform7/Internal/Inter/CommandParserKit/kit_metadata.json b/inform7/Internal/Inter/CommandParserKit/kit_metadata.json index aa066fed9..1e6717b01 100644 --- a/inform7/Internal/Inter/CommandParserKit/kit_metadata.json +++ b/inform7/Internal/Inter/CommandParserKit/kit_metadata.json @@ -2,7 +2,7 @@ "is": { "type": "kit", "title": "CommandParserKit", - "version": "10.2.0-beta+6X27" + "version": "10.2.0-beta+6X28" }, "needs": [ { "need": { diff --git a/inform7/Internal/Inter/DialogueKit/Sections/Director.i6t b/inform7/Internal/Inter/DialogueKit/Sections/Director.i6t index 06bd21ace..8c95303e7 100644 --- a/inform7/Internal/Inter/DialogueKit/Sections/Director.i6t +++ b/inform7/Internal/Inter/DialogueKit/Sections/Director.i6t @@ -119,7 +119,7 @@ first to speak. (Note that |speaker| will often be the player.) @h Active dialogue. In active mode only, the Director sometimes initiates conversation itself, and this is the rule doing that. In passive mode the rule does nothing. -In stories with a lot of dialogue, this will be run quite slowly: on the +In stories with a lot of dialogue, this will run quite slowly: on the other hand, it only has to run once in every turn, so that may not matter. = @@ -131,9 +131,12 @@ other hand, it only has to run once in every turn, so that may not matter. if ((DirectorBeatAccessible(db, player)) && (DirectorBeatAvailable(db)) && (DirectorBeatRelevant(db))) { - DirectorPerformBeat(db); - line_performance_count = 0; - rfalse; + if ((GProperty(DIALOGUE_BEAT_TY, db, voluntary) == false) || + (DirectorBeatFirstSpeaker(db) ~= player)) { + DirectorPerformBeat(db); + line_performance_count = 0; + rfalse; + } } for (db=1: db<=NO_DIALOGUE_BEATS: db++) if ((GProperty(DIALOGUE_BEAT_TY, db, spontaneous)) && diff --git a/inform7/Internal/Inter/EnglishLanguageKit/kit_metadata.json b/inform7/Internal/Inter/EnglishLanguageKit/kit_metadata.json index 7228a6c85..2b63dc97c 100644 --- a/inform7/Internal/Inter/EnglishLanguageKit/kit_metadata.json +++ b/inform7/Internal/Inter/EnglishLanguageKit/kit_metadata.json @@ -2,7 +2,7 @@ "is": { "type": "kit", "title": "EnglishLanguageKit", - "version": "10.2.0-beta+6X27" + "version": "10.2.0-beta+6X28" }, "needs": [ { "need": { diff --git a/inform7/Internal/Inter/WorldModelKit/kit_metadata.json b/inform7/Internal/Inter/WorldModelKit/kit_metadata.json index f0e5c390e..cbe8ef410 100644 --- a/inform7/Internal/Inter/WorldModelKit/kit_metadata.json +++ b/inform7/Internal/Inter/WorldModelKit/kit_metadata.json @@ -2,7 +2,7 @@ "is": { "type": "kit", "title": "WorldModelKit", - "version": "10.2.0-beta+6X27" + "version": "10.2.0-beta+6X28" }, "needs": [ { "need": { diff --git a/inform7/extensions/standard_rules/Sections/Variables and Rulebooks.w b/inform7/extensions/standard_rules/Sections/Variables and Rulebooks.w index 61d228e93..8a49e8f00 100644 --- a/inform7/extensions/standard_rules/Sections/Variables and Rulebooks.w +++ b/inform7/extensions/standard_rules/Sections/Variables and Rulebooks.w @@ -1267,6 +1267,8 @@ A dialogue beat can be recurring or non-recurring. A dialogue beat is usually non-recurring. A dialogue beat can be spontaneous or unspontaneous. A dialogue beat is usually unspontaneous. +A dialogue beat can be voluntary or involuntary. A dialogue beat is usually +voluntary. A dialogue line can be performed or unperformed. A dialogue line is usually unperformed. @@ -1282,6 +1284,7 @@ non-recurring. The performed property is accessible to Inter as "performed". The spontaneous property is accessible to Inter as "spontaneous". +The voluntary property is accessible to Inter as "voluntary". The recurring property is accessible to Inter as "recurring". To make (T - an object) a live conversational subject: diff --git a/services/lexicon-module/Figures/excerpts-diagnostics.txt b/services/lexicon-module/Figures/excerpts-diagnostics.txt index 49d5f07bd..9d54aa331 100644 --- a/services/lexicon-module/Figures/excerpts-diagnostics.txt +++ b/services/lexicon-module/Figures/excerpts-diagnostics.txt @@ -1,5 +1,5 @@ Size of lexicon: 3165 excerpt meanings - Stored among 855 words out of total vocabulary of 10635 + Stored among 855 words out of total vocabulary of 10638 719 words have a start list: longest belongs to report (with 293 meanings) 21 words have an end list: longest belongs to digits (with 7 meanings) 29 words have a middle list: longest belongs to to (with 4 meanings)