So I know I’ve seen this before, and somehow gotten around it, but I’m stumped this time. What exactly does this runtime error mean?
[** Programming error: tried to find the “.” of (something) **]
I’m guessing it’s something like a null pointer exception?
Right. It’s trying to look up an I6 property on some value which is not a valid object.
Okay, thanks, good to know. Now if I could just find it.
The RULES debug command may help there.
Yeah, I tried that, and the rule listed before the error message isn’t the culprit. I have a suspicion what extension it’s happening in though…
Huh, that wasn’t it. Oh well. I’m sure there’s a way to find it.
Well, it happens only when the player tries an action that requires a touchable noun which is in another room and placed in scope (and with reaching inside rules added). I guess maybe I’ll spend some time scouring the I6T? (Because I’ve tried deactivating most of my code )
Apparently my code is conflicting with Deluxe Doors. Here’s mine:
"Touch the Robot" by Phil Riley
Include Deluxe Doors by Emily Short.
The player is in top of the elevator car.
The elevator car-room is a room.It is privately-named. The printed name is "elevator car".
The top of the elevator car is above the elevator car-room.
The mauve guard robot is in the elevator car-room.
After deciding the scope of the player when the location is top of the elevator car:
If the mauve guard robot is in the elevator car-room:
place the mauve guard robot in scope;
Rule for reaching inside the elevator car-room when the location is top of the elevator and the mauve guard robot is in the elevator car-room:
The conflicting part of DD is:
Rule for reaching inside a room when the particular possession is part of an open door (called target) (this is the arrange scope for partial doors rule):
if the target is a half-door of a touchable door, allow access.
The problem can be avoided by checking that
particular possession is an actual thing before checking
is part of an open door.
So the question I have now is what is the point of
particular possession? Why would it be nothing, but apparently only when running my code?
“The particular possession” is a global variable meant to be used in the “deciding concealed possessions of” activity. For some reason it’s not the same variable as “the container in question” and “the supporter in question”, two different names for the same variable that’s meant to be used with “reaching inside” and “reaching outside”.
It looks like the same variable is being repurposed for the thing being reached for (not an uncommon practice in I6 territory). But if so, this is not documented anywhere, and I can’t find any evidence of it in the I6 code—the global variable used for the accessibility rules is
particular_possession, and this doesn’t seem to be exposed to I7 anywhere.