[I7] Overriding "yourself", and "[the noun]" in context

I’m toying with a WIP in which I’m fiddling with tenses and the story viewpoint, courtesy of Ron Newcomb’s excellent Custom Library Messages extension.

I now have most messages as I’d like them, except for exchanges like:

> PUT ME IN ME (First taking yourself) You would have to be holding yourself first.
I can change the “You” thanks to Custom Library Messages’ “[We]” feature. But I can’t seem to change “yourself” without special casing it for every verb and message.

Digging deeper I am suspicious - though I may be wrong - that this might be coming from the underly I6 library’s YOURSELF__TX constant and/or the PSN__ or equivalent routine; it doesn’t seem to be coming from the yourself object’s saved_short_name (which is for changing player characters?) and setting the printed name of the yourself object, or indeed changing the player character to someone else, doesn’t seem to do anything. Is there a way of changing “yourself” in I7? I don’t mind the solution being ugly :wink:

Secondarily, I’ve had to replace most library messages because I want a particular character other than the player to be referred to as “I” or “me” or “myself” depending on context (for example, “I would have to be holding myself first.” vs “You would have to be holding me first.”) I’ve added “[the-noun-me]”, [the-noun-I]" etc. to handle this, and I just use the right one depending on the context. Any less clumsy suggestions would be appreciated.

[Edited for clarity]

Aha, well, I think I’ve found enough of a solution for my purposes.

I can replace “you” and “yourself” in the way I generally want to without resorting to I6 code.

Rule for printing the name of the player: say "George".

This bypasses the you/yourself magic inside I6. Less hackily:

Rule for printing the name of the player: say "[the printed name of the player]".
Which bypasses the I6 magic and directs it to use the player’s I6 short_name directly. By default of course our player is still named “yourself” by the I7 standard library. So we need one (and only one) of the following to change the player’s printed name from “yourself”:

The printed name of the player is "George". [which sets player.short_name in I6] George is a man. The player is George. [which sets player to George, and George.short_name is "George" anyway in I6]
Which about wraps it up for my first question. I may post a follow up w.r.t. my in-game narrator, since I think I’ve found a nicer approach to saying “my” and “I” in the right places, though still not an automatic one :wink:

I’m working heavily on the next version of CLM, and it will solve that you/yourself issue out of the box.

The question of a second (and third, etc) referent is a trickier one, and one I specifically decided to avoid for the time being. However, I am considering adding a family of phrases like [We of the noun] to tackle the problem. Would that solve this 2nd issue? I guess the primary question is, are the commands entered into the prompt addressed to the omniscient narrator (like usual) or to an in-game character who is distinct from the player (as you seem to be doing?)

Another bug was discovered when Plurality is included: apparently the standard library disagrees with Plurality as to whether the lower-case version of [that-those of the noun] should print that/those/him/her or that/those/he/she. CLM is caught in the middle, so I’m thinking of using the same types of say-phrases as David’s CLM to avoid the issue entirely.

Any input or ideas would be welcome.

That’s great news Ron, thanks :slight_smile:

Just as a footnote, and not because I’d expect any future CLM version to necessarily care, I’m trying to clearly distinguish between parser messages (present tense “I” and “you” style) and in game messages (past tense story style) using Zork Zero style square brackets, so I’ve also had to manually override score printing (the announce the score rule); disambiguation (currently via Disambiguation Control by Jon Ingold, but only because it has a handy message table) and the print the final question rule. It’s amazing how many little details are buried in odd places.

You’re right that in my case I’m toying with an in-game character as the narrator, which does make for exciting messages. “Me” “my” “myself” and “I” are certainly giving me a little jip.

I like your [We of the noun] style approach, that’s pretty much what I’m going to end up with; since I really don’t want the narrator to refer to himself by his full name, I’d actually like to redact the [the (object)] phrases entirely, making it a compile error, and force myself to use more specialised constructs throughout. I’m not sure if that’s possible; I might try making [the (object)] start a segmented substitution which cannot be finished, so as to get a compile error.

At the moment I’m toying with notation like:

[code]When play begins, say “[The subjective narrator] was playing catch with [the subjective narrator 's] friend [the objective protagonist]. A strange feeling came over [the objective narrator], as if [the subjective protagonist] and [the subjective narrator] were being watched. [The narrator 's] instincts seemed in accord with [the protagonist 's] own, as [the subjective pronoun of the protagonist] turned and scanned the horizon.”

I was playing catch with Lennie. A strange feeling came over me, as if Lennie and I were being watched. My instincts seemed in accord with Lennie’s own, as he turned and scanned the horizon.[/code]
But I keep confusing that even when typing it, so I may go for [I the library message object], [me the noun], [my of the second noun], [myself the person asked], etc. instead since they’re easier for me to parse when writing the text.

Oh, a trivial oddity with CLM version 3:

Include Custom Library Messages by Ron Newcomb.
The story tense is past tense. The story viewpoint is third person masculine.
Cave is a room. George is a man in Cave. Lennie is a man in Cave. The player is Lennie. A persuasion rule: rule succeeds. An apple is in the cave.
(first taking George)
He didn't suppose George would have cared for that.

George pick up the apple.

Perhaps I did something wrong, but the preceeding failure seems to upset CLM and leads to “pick up” rather than “picked up”.


En-bracketing messages can be done relatively easily with the Activity that the extension provides. I think. You might still need to tack on a [ignore library line break] on the corrected message so the closing bracket stays on the same line, but that’s the intention.

Indeed, though my bug report on that one in particular was downgraded to feature request. :frowning:

As for the second referent, one way may be:

The second viewpoint is a declension that varies. The second viewpoint is usually first person.

…and then create a [they] [them] set that works just like the [we] set except for consulting above variable. Then change both viewpoints simultaneously when the pov shifts, I becoming you and you becoming I.

If capitalization isn’t an issue (i.e., names not pronouns are printed) then the [I] [me] set become available.

My interest is, are there some standard messages that could be [they]-ified now, permanently, so that any author could use a second referent just by setting said variable to differ from the story viewpoint variable.

Was already fixed.

Oh, I hadn’t thought of that. Yes, that’s a nice idea; if I created a table describing which messages I want bracketed, that could work nicely and avoid tedious retyping, especially when upgrading to a new CLM version. I might have to do that.

Curses! I’ve certainly been guilty of that sort of code in the past, but somehow other people doing it is always more vexing :wink: It always feels somewhat dirty to cut and paste a whole rule just to change a piece of text. Now if it libraries could and did label their text like rules - ‘say “hello” (this is the standard greeting)’ - and authors could change it without changing the rules - ‘the standard greeting is “what ho”’ - I’d be breaking out the callooh callay. I don’t have to work on foreign language translations of course.

As far as [they]-ification, my adjusted custom library messages are shaping up in this sort of way:

Inserting it into action 9 "[We] [aux][put*] [me the noun] into [me the second noun]." Inserting it into action 10 "[We the person asked] [aux][put*] [me the noun] into [me the second noun]." Inserting it into action 1 "[We] [aux]need[-s] to be holding [me the noun] before [we] [can] put [it-them] into something else." Inserting it into action 2 "[That-Those of the noun] [can't] contain things." Inserting it into action 3 "[We the noun] [is-are] closed." Inserting it into action 4 "[We]'ll need to take [it-them of noun] off first." Inserting it into action 5 "[We] [can't] put something inside itself."
So far I have [We the (object)], [Me the (object)], [Myself the (object)] and [The (object) 's], plus lowercase versions. I’ve declared “the narrator” as a thing that varies (though in my case it may not), and am pointing it at a story character. The “to say” substitutions such as [we the (object)] will check against the narrator to see whether they should say I/me/myself/etc. or “the object”. Then I can write [We the narrator] etc. in descriptive passages, and my adjusted library messages are happy too.

Now whether this approach is sane or useful to anyone else I’ve no idea at all, but it’s looking promising for me.

I like the second referent idea; assuming I’m following it correctly (feeling dim today), where the narrator wasn’t an in-game character per se but might change during play that could be handy.

Incidentally in the spirit of forcing myself down this road and avoiding accidents I tried to create a compile error for “[the (object)]” by redefining it as opening an uncloseable segmented substitution. This works great, but sadly then the Standard Library and various extensions then won’t compile (d’oh). So I’m now just printing an error message in bold each time to remind myself to fix the offenders wherever I see them.

Fantastic stuff, thanks Ron :slight_smile:

I made an alpha version of Version 4 of Custom Library Messages available here. It still has at least one bug that I know of when used in combination with Plurality – try CUTting a NPC – but that’s fewer bugs than version 3. Things are still morphing in its more rarefied features, but I imagine your prose will appreciate having all those boondoggles removed.