Extension just stops working? (Conversation Framework)

Okay, this is weird. I remember my game working fine. I"m gonna guess I did something…but I’d swear it compiled before.

Today when I try to compile (I had actually moved it in a folder to drop box, I get errors in the extension?

[rant]In Book 2 - Abbreviated commands for addressing the current interlocutor in the extension Conversation Framework by Eric Eve:

Problem. In the sentence ‘let np be the number of visible people who are not the player’ , I was expecting to read a description of values, but instead found some text that I couldn’t understand - ‘visible people who are not the player’.
I was trying to match this phrase:

number of (visible people who are not the player - description of values)
This was what I found out:

visible people who are not the player = something unrecognised
Problem. In the sentence ‘let the interlocutor be a random visible person who is not the player’ , I was expecting to read a description of values, but instead found some text that I couldn’t understand - ‘visible person who is not the player’.
I was trying to match this phrase:

a/-- random (visible person who is not the player - description of values)
This was what I found out:

visible person who is not the player = something unrecognised
Problem. You wrote ‘otherwise’ : but this is an ‘else’ or ‘otherwise’ with no matching ‘if’ (or ‘unless’), which must be wrong.
See the manual: 11.8 > Otherwise
In Book 3 - Greeting Protocols, Chapter 2 - Greeting in the extension Conversation Framework by Eric Eve:
Problem. In the sentence ‘now the noun is a random visible person who is not the player’ , I was expecting to read a description of values, but instead found some text that I couldn’t understand - ‘visible person who is not the player’.
I was trying to match this phrase:

a/-- random (visible person who is not the player - description of values)
This was what I found out:

visible person who is not the player = something unrecognised[/rant]

Ok, wow. I just fixed this by changing several instances in both Conversation Framework and threaded Conversation of “person who is not the player” to “person who is not yourself”. Now the game works WEIRD. What rule did I rewrite that broke “the player” in existing extensions (one well-worn, the other new but pretty solid…?)

You didn’t manage to create an object with “player” in its name did you? Check your index.

PS “Person who is not yourself” won’t work when the player character has a separate identity, I think. That is, if you say “The player is Alice” then the player won’t be “yourself.”

I’ll check that. I’m surprised that it’s not come up that changing the player breaks conversation framework. I didn’t change the player either but I’ll see if I named something “player” inadvertently.

I don’t think that changing the player should break Conversation Framework as it stands. What I was saying is, it’s my understanding that “yourself” is the default player character object; if you don’t say “The player is Alice” then the “yourself” object will be the player character and in play at the appropriate room. If you do say “The player is Alice” then the “yourself” object will be moved out of play (at the beginning of play? During startup? Not sure when this happens). So rules that refer to “yourself” may not fire when the player has been changed.

Rules referring to “the player” should be fine even when the player has been changed; but if you create an object with “player” in its title they go all screwy.

Compare this code:

[code]Lab is a room. Alice is a woman, here. The player is Alice. The player carries a whatsit and a fofof.

Every turn when yourself carries a whatsit: say “Yourself has a whatsit.”
Every turn when the player carries a whatsit: say “The player has a whatsit.”
Every turn when Alice carries a whatsit: say “Alice has a whatsit.”

Test me with “z/showme yourself/showme me”.[/code]

The rule referring to the “yourself” object doesn’t fire.

Just to make it clear, this is a known Inform bug.

The work-around, for now, is to avoid the word “player” (and anything else that might be easily confused with a variable; fortunately, most built-in variables tend to have longer names) in object names. If you really need to have an object named “player” in your game, change its compile-time name to something else and add some “understand” statements to let the in-game parser still recognize it, e.g.:

The record-player is a device.
The printed name of the record-player is "record player".
Understand "record" and "player" as the record-player.

or even:

A game-player is a kind of person. Understand "player" as a game-player.
Alice is a female game-player. Bob is a male game-player.
The printed name of Alice is "Player Alice". The printed name of Bob is "Player Bob".