It does seem that I am too much of a newbie to realise what is advanced behaviour in Inform.
Try this:
[code]“Test Game” by “C.E.J. Pacian”
Include Custom Library Messages by Ron Newcomb.
The Vague Room is a room. “What a roomy room!”
The Other Room is east of the Vague Room. “Bit cramped in here.”
The apple is a thing in the Other Room.
The handsome fellow is a man in the vague room.
Every turn:
if the location of the handsome fellow is not the location of the player:
now the handsome fellow is in the location of the player;
say “The handsome fellow comes too.”
After choosing notable locale objects:
if the handsome fellow is a notable-object listed in the Table of Locale Priorities:
now the handsome fellow is mentioned.
[This prevents the fellow from being printed twice.]
The list-the-sidekick rule is listed after the I-could-also-see rule in the for printing the locale description rules.
[The list-the-sidekick rule is listed after the you-can-also-see rule in the for printing the locale description rules.]
This is the list-the-sidekick rule:
if the location of the handsome fellow is the location of the player:
say “As always, there’s your trusty sidekick, the handsome fellow.”;
continue the activity.[/code]
Results in:
Comment out “Include Custom Library Messages by Ron Newcomb”, swap I-could-also-see for you-can-also-see, and the game is the same, except the last command results in:
And that would be the case I did not think to test. For Looking action #6 we need to add [ignore library line break][paragraph break] to the very end of it, like this:
Looking action 6 "[if the library message object is not the location].[otherwise if the story tense is in any past tense] there.[otherwise] here.[end if][ignore library line break][paragraph break]"
Furthermore, this
The list-the-sidekick rule is listed last in the for printing the locale description rules.
works both with and without CLM.
Combined with the fix for Mark Tilford’s observation that say “[The player] saw [the player].” doesn’t work outside of 2nd person, I’m about ready to release version 4 of CLM. (But I think I’ll let it bake a few days to see if more issues crop up.)
As others have shown you can do it with some of the extensions. But that in itself points to a problem: that arguably fundamental behavior like this is (1) relegated to an extension (that also requires a framework extension) and (2) that it’s not the easiest to set up or even conceptualize from an end-user perspective.
The whole notion of the “locale,” while making sense from a back-end, programmatic perspective, is exposed way too much to authors who should not have to worry about so many of the internal mechanics as they clearly do.