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
-Version [[Version Number]] of the Standard Rules by Graham Nelson begins here.
+Version ] 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)