! ==============================================================================
! ENGLISH: Language Definition File
!
-! Supplied for use with Inform 6 -- Release 6.12.5 -- Serial number 210605
+! Supplied for use with Inform 6 -- Release 6.12.6 -- Serial number 220219
!
-! Copyright Graham Nelson 1993-2004 and David Griffith 2012-2021
+! Copyright Graham Nelson 1993-2004 and David Griffith 2012-2022
!
! This file is free software: you can redistribute it and/or modify
! it under the terms of the GNU Affero General Public License as
print " ";
5: print "^Would you like to RESTART, RESTORE a saved game";
#Ifdef DEATH_MENTION_UNDO;
- print ", UNDO your last move";
+ if (undo_flag ~= 0)
+ print ", UNDO your last move";
#Endif;
if (TASKS_PROVIDED == 0) print ", give the FULL score for that game";
if (deadflag == 2 && AMUSING_PROVIDED == 0)
! ==============================================================================
! GRAMMAR: Grammar table entries for the standard verbs library.
!
-! Supplied for use with Inform 6 -- Release 6.12.5 -- Serial number 210605
+! Supplied for use with Inform 6 -- Release 6.12.5 -- Serial number 220219
!
-! Copyright Graham Nelson 1993-2004 and David Griffith 2012-2021
+! Copyright Graham Nelson 1993-2004 and David Griffith 2012-2022
!
! This file is free software: you can redistribute it and/or modify
! it under the terms of the GNU Affero General Public License as
! ==============================================================================
! INFIX: Support for the optional library debugger extension "Infix".
!
-! Supplied for use with Inform 6 -- Release 6.12.5 -- Serial number 210605
+! Supplied for use with Inform 6 -- Release 6.12.6 -- Serial number 220219
!
-! Copyright Graham Nelson 1993-2004 and David Griffith 2012-2021
+! Copyright Graham Nelson 1993-2004 and David Griffith 2012-2022
!
! This file is free software: you can redistribute it and/or modify
! it under the terms of the GNU Affero General Public License as
! ==============================================================================
! LINKLPA: Link declarations of common properties and attributes.
!
-! Supplied for use with Inform 6 -- Release 6.12.5 -- Serial number 210605
+! Supplied for use with Inform 6 -- Release 6.12.6 -- Serial number 220219
!
-! Copyright Graham Nelson 1993-2004 and David Griffith 2012-2021
+! Copyright Graham Nelson 1993-2004 and David Griffith 2012-2022
!
! This file is free software: you can redistribute it and/or modify
! it under the terms of the GNU Affero General Public License as
Attribute pluralname;
#Ifdef INFIX;
+#Ifndef infix__watching;
Attribute infix__watching;
#Endif;
+#Endif;
! ------------------------------------------------------------------------------
! ==============================================================================
! PARSER: Front end to parser.
!
-! Supplied for use with Inform 6 -- Release 6.12.5 -- Serial number 210605
+! Supplied for use with Inform 6 -- Release 6.12.6 -- Serial number 220219
!
-! Copyright Graham Nelson 1993-2004 and David Griffith 2012-2021
+! Copyright Graham Nelson 1993-2004 and David Griffith 2012-2022
!
! This file is free software: you can redistribute it and/or modify
! it under the terms of the GNU Affero General Public License as
Constant HDR_SCREENWCHARS $21; ! byte
Constant HDR_SCREENWUNITS $22; ! word
Constant HDR_SCREENHUNITS $24; ! word
+#Iftrue (#version_number == 6);
+Constant HDR_FONTHUNITS $26; ! byte
+Constant HDR_FONTWUNITS $27; ! byte
+#Ifnot;
Constant HDR_FONTWUNITS $26; ! byte
Constant HDR_FONTHUNITS $27; ! byte
+#Endif;
Constant HDR_ROUTINEOFFSET $28; ! word
Constant HDR_STRINGOFFSET $2A; ! word
Constant HDR_BGCOLOUR $2C; ! byte
if (usual_grammar_after == 0) {
j = verb_wordnum;
+ #Ifdef TARGET_ZCODE;
+ parser_one = 0;
+ #Endif;
i = RunRoutines(actor, grammar);
#Ifdef DEBUG;
if (parser_trace >= 2 && actor.grammar ~= 0 or NULL)
#Ifdef TARGET_ZCODE;
if ((i ~= 0 or 1) &&
+ (parser_one ~= 0 ||
(UnsignedCompare(i, dict_start) < 0 ||
UnsignedCompare(i, dict_end) >= 0 ||
- (i - dict_start) % dict_entry_size ~= 0)) {
+ (i - dict_start) % dict_entry_size ~= 0))) {
usual_grammar_after = j;
i=-i;
}
#Ifdef DEBUG;
if (threshold >= 0 && parser_trace >= 5) print " ParseNoun returned ", threshold, "^";
#Endif; ! DEBUG
- if (threshold < 0) wn++;
- if (threshold > 0) { k = threshold; jump MMbyPN; }
-
- if (threshold == 0 || Refers(obj,wn-1) == 0) {
- .NoWordsMatch;
- if (indef_mode ~= 0) {
- k = 0; parser_action = NULL;
- jump MMbyPN;
- }
- rfalse;
+ ! Don't arbitrarily increase wn when ParseNoun() returns -1
+ if (threshold > 0) {
+ k = threshold;
+ wn = j + k;
+ jump MMbyPN;
+ }
+ ! Check wn instead of wn - 1
+ if (threshold == 0 || Refers(obj,wn) == 0) {
+ .NoWordsMatch;
+ if (indef_mode ~= 0) {
+ ! Restore wn to pre-ParseNoun() state
+ k = 0; parser_action = NULL; wn = j;
+ jump MMbyPN;
+ }
+ rfalse;
}
if (threshold < 0) {
- threshold = 1;
- dict_flags_of_noun = (w->#dict_par1) & (DICT_X654+DICT_PLUR);!$$01110100;
- w = NextWord();
+ ! Set threshold to reflect any words consumed by ParseNoun()
+ threshold = wn - j;
+ w = NextWord(); ! Ensure w contains actual first word of noun phrase
+ ! if ParseNoun() moved wn.
+ dict_flags_of_noun = (w->#dict_par1) & (DICT_X654+DICT_PLUR);!$$01110100;
while (Refers(obj, wn-1)) {
threshold++;
if (w)
#Ifdef TARGET_ZCODE;
-[ Dword__No w; return (w-(HDR_DICTIONARY-->0 + 7))/9; ];
-[ No__Dword n; return HDR_DICTIONARY-->0 + 7 + 9*n; ];
+[ Dword__No w dp dh;
+ dp = HDR_DICTIONARY-->0;
+ dh = dp->0 + 4;
+ dp = dp + dp->0 + 1;
+ return (w-(HDR_DICTIONARY-->0 + dh )) / (dp->0);
+];
+
+[ No__Dword n dp dh;
+ dp = HDR_DICTIONARY-->0;
+ dh = dp->0 + 4;
+ dp = dp + dp->0 + 1;
+ return HDR_DICTIONARY-->0 + dh + (dp->0 *n);
+];
#Ifnot; ! TARGET_GLULX
#Endif; ! TARGET_ZCODE
#Ifndef DrawStatusLine;
-[ DrawStatusLine width posa posb posc;
+[ DrawStatusLine width posa posb posc posd pose;
#Ifdef TARGET_GLULX;
! If we have no status window, we must not try to redraw it.
if (gg_statuswin == 0)
MoveCursor(1, 1);
width = ScreenWidth();
- posa = width-26;
+ posa = width-26; ! For standard move/score display.
posb = width-13;
posc = width-5;
+
+ posd = width-19; ! For time display.
+ pose = width-14;
+
spaces width;
MoveCursor(1, 2);
else
print (The) visibility_ceiling;
}
-
- if (sys_statusline_flag && width > 53) {
- MoveCursor(1, posa);
- print (string) TIME__TX;
- LanguageTimeOfDay(sline1, sline2);
- }
- else {
+ if (sys_statusline_flag) {
+ if (width > 29) {
+ if (width > 39)
+ MoveCursor(1, posd);
+ else
+ MoveCursor(1, pose);
+ print (string) TIME__TX;
+ LanguageTimeOfDay(sline1, sline2);
+ } else
+ jump DSLContinue;
+ } else {
if (width > 66) {
#Ifndef NO_SCORE;
MoveCursor(1, posa);
#Endif;
}
}
-
+ .DSLContinue;
MainWindow(); ! set_window
];
#Endif;
-This directory contains version 6.12.5 of the Inform 6 standard
+This directory contains version 6.12.6 of the Inform 6 standard
library. It has been modified slightly to not print out the version of
Inform and the version of the standard library in use in the game's
banner.
! ==============================================================================
! VERBLIB: Front end to standard verbs library.
!
-! Supplied for use with Inform 6 -- Release 6.12.5 -- Serial number 210605
+! Supplied for use with Inform 6 -- Release 6.12.6 -- Serial number 220219
!
-! Copyright Graham Nelson 1993-2004 and David Griffith 2012-2021
+! Copyright Graham Nelson 1993-2004 and David Griffith 2012-2022
!
! This file is free software: you can redistribute it and/or modify
! it under the terms of the GNU Affero General Public License as
!
! You should have received a copy of the GNU Affero General Public
! License along with this program. If not, see
-! https://gnu.org/licenses/.
+! https://gnu.org/licenses/
!
! In your game file, Include three library files in this order:
! Include "parser";
if (noun has open) return L__M(##Open, 3, noun);
give noun open;
- if (keep_silent || AfterRoutines()) return;
+ if (AfterRoutines() || keep_silent) return;
if (noun hasnt container)
return L__M(##Open, 5, noun);
System_file;
-Constant LibSerial "210605";
-Constant LibRelease "6.12.5";
+Constant LibSerial "220219";
+Constant LibRelease "6.12.6";
Constant LIBRARY_VERSION 612;
Constant Grammar__Version 2;