I have a character that, at the early stages of the game, is known as “the man”.
When the character is first mentioned, he is referred to as “a man”.
Something like this:
Steve is on the operating table.
Understand "man" and "patient" as Steve.
The printed name of Steve is "[first]the man[then]a man".
How do I get the interpreter to refer to Steve as “a man” the first time he’s mentioned, and “the man” thereafter?
It’s a nuisance to do this through the printed name. The printed name isn’t supposed to include articles like “a” or “the” – those come from elsewhere.
It might be easier to write an
initial appearance property, either of Steve or the operating table. Then you can write any paragraph you like.
Here’s a dumb way of doing it:
"ArticleMan" by Brian Rushton
Hallway is a room.
An ogre is in Hallway.
now the indefinite article of an ogre is "the";
If you run it, it says:
You can see an ogre here.
You can see the ogre here.
But I agree with Zarf. You might as well call it ‘the ogre’ but use the initial appearance property to say ‘an ogre’ the first time it appears.
The problem was that I wanted to refer to Steve as “a/the man” until the action of examining his name badge was carried out.
I’ve taken from the The Gopher-Wood example.
Instead of calling the patient man or Steve, I’ve called him patient because that’s what he is no matter what name we know him as. No definite/indefinite article trickiness. The patient becomes proper-named when we learn he is called Steve.
A patient is on the operating table.
Understand "man" and "patient" as the patient.
The printed name of the patient is "man".
After examining the name badge for the first time:
now the printed name of the patient is "Steve";
now the patient is proper-named.
Understand "Steve" as the patient when the patient is proper-named.
Ah, I didn’t quite understand what you were going for. That should work fine.
You could also do
The printed name of the patient is "[if the patient is proper-named]Steve[else]man[end if]".
This saves you from having to set the
printed name property in the rule. But that’s just a matter of style. (I prefer having fewer state changes and more variable text.)