>>enter bed
>I got onto Plum's bed.
>
>>drop mirror
>I dropped the mirror.
>
>>l
>Plum's Room (on Plum's bed)
>On Plum's bed I could see a mirror.
>
>>out
>You get off Plum's bed.
>
>Plum's Room
>On Plum's bed is a mirror.
Note the two default messages, one when listing items on the supporter
while the player was not on the supporter, and one while in the
process of getting off of the bed.
Michael Martin has suggested that the next build of Inform might fix
the issue(since these cases are handled in the extension, it seems)
but in the meantime any suggestions would be helpful.
-J
I can see the reason - a fix is on its way. Some things have changed in the
"Standard Rules" code. (The fix will be for I7 version 4W37, by the way -
not sure whether it will be back compatible with 4U65).
The second message, "On Plum's bed is a mirror", does not seem like the
standard one - by default I think it would say "a bed (on which is a
mirror)". Are you using another extension to print the contents of things?
If so, you might need to modify that extension to get what you want for this
message (if there are no special hooks to help modify the text).
David Fisher
Hmm. This made me go and look for the code which normally prints "(on which
is ...)", which turns out to be the I6 routine WriteAfterEntry (in
Library/Natural/verblim.h), which uses hard coded values for "is" and "are".
This is a longish routine, which I am hesistant to just replace wholesale
(since it could potentially change in the future, which would then be
silently overridden by the extension. Future changes to the code are not
impossible, since there is already a comment referring to I7 in the code).
Any thoughts?
(The effect of not replacing it is to print "(on which is/are ...)" instead
of the correct "(on which was/were ...)" when using past tense with this
extension).
David Fisher
It's likely that this will change in the future, yes, but not in the
next build.
What this means in practical terms is that it's unlikely to alter
before, say, comp games need to be compiled, so if there's a hack
someone wants to make available, it may be worth doing that for the
short term.
In the longer term, I am hoping to see the room description code
broken out into a more comprehensible and readily changeable set of
pieces.
The more long-term plan, as I understand it, is indeed to pull control
of library defaults into the main library; this is one of those things
that are genuinely quite difficult to keep sync'd up if they're done
only by extension, and the main question is how best to implement the
core functionality.
The main problem I've found is to do with literal strings appearing in the
code ... the "risky" component of the Custom Library Messages extension is
to do with replacements to various small rules and routines, which would not
be necessary if all of the literal text was confined to the main
library-message-printing I6 routine (LanguageLM in english.h).
I think the general "message" design is brilliant - routing all message
printing through a single output routine. This also allows non-English
languages to be supported more easily. Unfortunately, lots of the new I7
rules contain literal text, which means they need to be individually
replaced if you want to change the messages. This introduces a bit of a
danger of silently overriding a future version of one of these routines.
So to me, the problem is more to do with the code design than whether
customisations should be in an extension or not ...
David Fisher
Yeah, this is something that needs to be fixed (but all at once and in
a grand overhaul).
>I can see the reason - a fix is on its way. Some things have changed in the
>"Standard Rules" code. (The fix will be for I7 version 4W37, by the way -
>not sure whether it will be back compatible with 4U65).
Thank you very much!
I am currently only using 4U65 for compatability with CLM, so when
they both update I see no reason not to upgrade both I7 and CLM. I've
been trying to keep compatability as I wrote, so hopefully nothing
will break when I do so.
>The second message, "On Plum's bed is a mirror", does not seem like the
>standard one - by default I think it would say "a bed (on which is a
>mirror)". Are you using another extension to print the contents of things?
That is because the bed is scenery I think.
-J
>Hmm. This made me go and look for the code which normally prints "(on which
>is ...)", which turns out to be the I6 routine WriteAfterEntry (in
>Library/Natural/verblim.h), which uses hard coded values for "is" and "are".
>
>This is a longish routine, which I am hesistant to just replace wholesale
>(since it could potentially change in the future, which would then be
>silently overridden by the extension. Future changes to the code are not
>impossible, since there is already a comment referring to I7 in the code).
>
>Any thoughts?
You seem to be fairly on top of build changes to Inform, so I really
couldn't say.
-J
Oops, that's right ...
This one turns out to be printed by the I6 routine "Locale", which uses
WriteListFrom to print a list, which ultimately uses the constants IS__TX
and ARE__TX to print "is" or "are" in routine WriteListR ... being
constants, these can't be changed dynamically during the game, so the
solution is to either replace this routine (and any others which use these
constants), or change the values of the constants.
This is the way to do that, if your game stays in past tense all of the
time:
* Go to the directory Inform 7/Library/Natural
* Edit the file English.h (in a normal text editor)
* Search for "IS__TX" (about line 365)
* There are several quoted strings containing "is" and "are". Change these
to "was" and "were".
Note that you will have to do this change every time you update your Inform
7 version.
I'll update the Custom Library Messages extension to handle the "get off the
bed" problem, and put in a note about the is/are problem in the past tense
...
David Fisher
>This is the way to do that, if your game stays in past tense all of the
>time:
>
>* Go to the directory Inform 7/Library/Natural
>* Edit the file English.h (in a normal text editor)
>* Search for "IS__TX" (about line 365)
>* There are several quoted strings containing "is" and "are". Change these
>to "was" and "were".
Thanks! Since I am currently using the second to last build for this
particular game anyway that should be fine.
>I'll update the Custom Library Messages extension to handle the "get off the
>bed" problem, and put in a note about the is/are problem in the past tense
Great- thank you very much!
-J
OK, the new version (v20) is available from the I7 extensions page:
http://www.inform-fiction.org/I7/Download%20-%20Extensions.html
There is a new version of Default Messages there as well (the only code
change is to handle "get off <supporter>" in the past tense).
David Fisher
Fantastic! Much obliged.
-J
> l
> I could see Foo and Bar here.
How would I change it to "I could see foo and bar there." instead?
-J
I see you're giving the past tense a good workout!
I've added this to the extension (since there are a few other messages that
say "here" which would sound better as "there" in past tense as well), and
it should be available from the I7 extensions page some time soon (as Custom
Library Messages version 21).
David Fisher
>I see you're giving the past tense a good workout!
Well, the squeaky wheel, you know. Overall the extension has been
fantastic. Also, so far it has handled pronouns with no problems at
all, even when the game switches back and forth between first and
second person.
>I've added this to the extension (since there are a few other messages that
>say "here" which would sound better as "there" in past tense as well), and
>it should be available from the I7 extensions page some time soon (as Custom
>Library Messages version 21).
Awesome. That will definately be appreciated!
For now, there are few enough supporters in the game that I will
probably try to 'mention' anything that is on top of one.
-J