The main problem is that the rule puts people in scope for any action. It lets the player interact with others in a dark room in any old way, not only by speech – attacking, touching, and taking e.g. will all work as if the room was lighted.
However, it would seem that a rule such as
After deciding the scope of the player while speech when in darkness:
repeat with neighbour running through people enclosed by the location:
unless the neighbour is in a closed container, place the neighbour in scope.
does work after all.
Only, the rule preamble doesn’t allow conditions on the form
After deciding the scope of the player while telling something about
Instead, you have to write just
After deciding the scope of the player while telling
So, if you add the following definitions
Asking is speech.
Telling is speech.
Answering is speech.
then the rule above will compile and work nearly as intended. The remaining problem is that ‘asking is speech’ is interpreted only as “asking it for” and never as “asking it about”.
Here’s a workaround:
Define a new action for the “ASK X ABOUT Y” commands, define it as speech, and redirect it to the good old asking it about action.
[code]Querying it about is an action applying to one thing and one topic. [You have to create the action before you declare it speech.]
Understand “ask [something] about [text]” as querying it about.
Check querying it about: try asking the noun about the topic understood; stop the action.
Asking something about something is speech.
Telling something about something is speech.
Answering something that something is speech.
Asking something for something is speech.
Querying something about something is speech. [We can add this as well, while we’re at it.]
Asking is speech.
Telling is speech.
Answering is speech.
Querying is speech.
After deciding the scope of the player while speech when in darkness:
repeat with neighbour running through people enclosed by the location:
unless the neighbour is in a closed container, place the neighbour in scope.[/code]