To recap: the problem is that when holding paper A, the game wasn’t allowing the player to take paper B (which isn’t takable, but I want them to try), and was always choosing the carried paper as the subject of TAKE.
The problem is that paper B is undescribed. Making it scenery also causes this problem. I suppose that since scenery is not takable, the game is disambiguating to the carried paper. Weirdly, making it undescribed also causes this behavior.
Aha! That’s what I was forgetting! Undescribed is the I7 equivalent of I6 concealed. I forgot that it was exposed to the author like that; I thought it was only used by the library.
So yes, the disambiguator will avoid scenery (-10 points) and undescribed things (-100 points) if it can. The latter has such a strong penalty because, in the library, concealed is only ever used on the player (the flag is set on any object that the player becomes, and unset if the player becomes someone else) and the player is usually a bad guess if there’s any other choice available. If there’s the player and one non-player person in a room, for example, verbs that require a person should default to the other guy.
DTPM rules should effectively override this, since they give a bonus between 1000 and 4000 points, but they’re also a pain to make work.
If you use other methods to make it not appear in room descriptions, like Drew suggests, that won’t have any impact on the disambiguator.
I’m just trying to understand the original scenario. If you want them to try to take paper B, presumably they’ve got a reason to want to try. Like, they can see paper B? So why is paper B undescribed?
Let’s see if I can make sense of this for you. Paper B is in view, but not reachable at the beginning, which the player will figure out after trying to get it (I don’t really want to say more, but the game will be out next week and it’s not long!). It’s described in the room description, so I needed to eliminate it as an item that showed up independently of that. Hence it’s scenery or it’s undescribed. I thought making it undescribed would work better than making it scenery when I started, but I can’t remember why now.
I should really annotate my code, because I often do things and then months later can’t remember why I did that.
There’s actually a third option for that, which is I think what you’re kinda intended to do - if you include the item in square brackets in the room description, Inform will output the printed name and won’t re-mention it when it gets to the “You can also see…” line.
Yep, if a thing has the “mentioned” property (which is set automatically by the “printing the name of” activity) when the locale description is being figured out, it will be ignored.
So you can do:
The Library is a room. "Rows of bookshelves line the walls[if the ancient tome is unhandled]. One book in particular catches your eye, an [ancient tome][end if]."
Yeah, that’s what I suspected she might need, the ‘mentioned’ feature affected by square brackets.
Additional, optional fussy commentary:
If you (anyone) want to be completist, you may wish to also protect yourself against weirdos (and people with legitimate reasons) who might play in BRIEF. Because the second time they come in the room, the room description won’t print and paper B will jump out into the ‘You can also see section.’ Which, in a case like Amanda’s, really amounts to writing a standalone description for paper B describing where it is, pretty much in the same manner as the room description.
In the case where it gets [mentioned], well, it’s mentioned and the description won’t print. When it’s not [mentioned], its own description will appear, which will incorporate the info about where it is and imply why we can’t get it now.
I expect most people don’t think about BRIEF for the good reason that hardly anyone seems to use it. But maybe as part of the increasing awareness of screenreader use (where people may want less spam of unchanging room descriptions), we should either think about BRIEF, or block it from our games if the game won’t work with it. Even making that decision is hard to do without understanding how BRIEF works.
These days I try to make sure BRIEF works, but I just axe SUPERBRIEF (which is 'never print the room description).
Oh yeah, re: the ‘mentioned’ feature, I’ll pass on a secret from Aaron Reed’s $700,000 book, that I happened to buy back in its cheapo days:
He uses, or used an approach he called BENT:
Bracket
Every
Notable
Thing
So when he’s writing the room description, he’d throw square brackets around nouns in the description he wanted to implement. This would force the game to not even compile until he had created those things at some minimal level.
I don’t use this, but here it is for anyone who never thought of using this approach.
Huh. I totally forgot about BRIEF and VERBOSE. I haven’t used either in 20 years.
The brackets thing is just difficult for me. I have trouble with punctuation and syntax using brackets in a description, so I almost never do it as it messes with my writing flow. I’d rather get around problems some other way so it doesn’t suck the joy out of writing.
Too late to fiddle with this game, anyway, so I’m just going to turn off BRIEF, etc.
I swear, Inform 7 is like a hydra. Solve a problem, and two more rise to take its place.