Inform 7, 1st-person present tense, and separating me/you?

Howdy all!

I’ve been piddling around with a pulpy '30s dime-novel adventure-type game idea in Inform 7. No idea if I’ll ever finish it, but… Learning experience, yanno?

Anyway, I have a very strongly characterized protagonist, who also acts as the narrator (thanks to Ron Newcomb’s lovely Custom Include Library Messages, making it easy to switch the tense of the library messages to 1st person present). The player acts as more of a little voice in the protagonist’s head, suggesting to her what to do — except when the player types something outlandish, in which case I want to break the 4th wall and have my protagonist say something snarky directly to the player, as I expect the player will be “out of the zone” in those moments, anyway.

In the process of going through and trying to break things and implement some amusing responses to outlandish commands, I’ve run up on a little road block.

See, in an attempt to separate “me” (the player) from “you” (the protagonist), given the tense of the game, I’m doing something like:

Victoria is a woman. The player is Victoria. Understand "Vicky", "Vic", "you", "yourself" as Victoria. [snip] the numskull is a backdrop. It is everywhere. [So true, is it not?!? ;P ] Understand "me" as the numskull. [snip] Instead of kissing Victoria: say "What do you expect me to do, turn myself into a toad and hop to safety? Or perhaps destroy Dr. Hadrian with a plague of warts?" Instead of kissing the numskull: say "I'd just as soon strangle myself with my own entrails!"

This lets us do things like “examine yourself”. Good so far.

Typing “examine me” is a little off-kilter, because it always prints “(the numskull)”, like it’s rejecting some kind of internal “me”, but not a game-breaker, I guess.

But when I get into implementing some snarky default messages, I am getting stuck! Presumably because the numskull is a backdrop instead of a “person”. For example, via the above code:

[code]>kiss yourself
What do you expect me to do, turn myself into a toad and hop to safety? Or perhaps destroy Dr. Hadrian with a plague of warts?

kiss me
What do you expect me to do, turn myself into a toad and hop to safety? Or perhaps destroy Dr. Hadrian with a plague of warts? (this should have elicited the “entrails” response.)

kiss the numskull
I can only do that to something animate.[/code]

Any ideas on a better, more robust way to go about this (hopefully without having an invisible “numskull” everywhere in the game)? I apologize for my ignorance! I fancy myself a fairly proficient in “normal” languages, but I7 is, well, different, and I am still trying to wrap my head around things! :smiley:


That comment in brackets is printed by the ‘clarifying the parser’s choice of something’ activity. You can easily write custom responses for it (see section 17.28 of the built-in manual). For instance: Rule for clarifying the parser's choice of the numskull: do nothing.

Since I7 doesn’t support multiple inheritance, you can’t have something that is both a backdrop and a person; but you can make a backdrop ‘animate’, which would be what matters in these cases: Include (- has animate -) when defining the numskull. This particular syntax is just barely mentioned in the manual; but it’s what makes persons animate as defined by the Standard Rules.

Thank you very much for your response!

So there is definitely something called “me” hanging around somewhere, causing that rule to be checked in the first place. Hmmm. I had hoped that saying “the player is Victoria” would internally replace the player object with something that wasn’t recognized as “me”! Maybe I am too stuck in an OO mindset!

I will add a do-nothing rule for now, but I am a little worried that it might not be the most robust way to go about it. In an ideal world, I would do something to explicitly remove the game’s built-in concept of “me” and then replace it with my own implementation, instead of covering the original one up, something like “Do not understand “me” as the player”. I have a feeling that the original “me” left hiding under there may rear it’s ugly head in confusing ways later, leading to “fun” debugging! :slight_smile: Perhaps when I am more fluent, a different solution will present itself!

Yes; it is the Victoria object. You did successfully replace the player object, but “me” is handled internally as a pronoun which always applies to the current player.

You can hack around this pronoun usage, but I do not have sample code on hand.

Thanks, zarf!

I ended up scrapping the separation of me/you anyway. It seems to confuse testers who are used to second-person IF. :confused: