I had been going all along on the assumption that this part of Speech Motivations would work:
[code]audience is a plural-named person. The printed name of audience is “anyone who can hear”.
For printing the name of audience when someone is among the audience: say “[the list of people who are among the audience]”
…
For finding an interlocutor for someone (called actor) (this is the address the whole audience rule):
let np be the number of people who are among the audience;
if np is 0:
if exclaiming something to:
now the interlocutor of the actor is the actor;
otherwise:
if the actor is the player, say “There’s no one here to talk to.”;
now the interlocutor of the actor is nothing;
rule succeeds;
if np is not 1:
now the interlocutor of the actor is the audience;
if the actor is the player, say “(addressing [the audience])”;
rule succeeds;
now the interlocutor of the actor is a random person who is among the audience;
if the actor is the player, say “(addressing [the interlocutor of the actor])”;
[/code]
Unfortunately, it doesn’t always work:
[code]Include Speech Motivations by Mike Ciul
Test is a room. Bob is a man in Test. Sue is a woman in Test.
test me with “actions/t Bob/ T foo”[/code]
If you run this, you’ll see that telling the audience about Bob is no problem, but telling the audience about an unparseable thing results in the error “Those aren’t available.” - apparently referring to the audience. I think I traced this message back to the basic accessibility rule, and digging around in the I6 source, it calls a rulebook called ACCESS_RB. But I don’t know what that is. I’d like to be able to manage this using the Flexible Action Requirement extension I’m working on, but maybe I’m on the wrong track.
I suppose I could put the audience in a room (call it the Auditorium) and then use a rule for reaching inside the auditorium. Or move the audience to the location whenever it’s the interlocutor. But both of those seem pretty hacky. Can anyone help?