Cryptic runtime error message

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?

1 Like

Right. It’s trying to look up an I6 property on some value which is not a valid object.

1 Like

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 :rofl:)

1 Like

Found it!

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:
	allow access;

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?

1 Like

“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 untouchable_object, not particular_possession, and this doesn’t seem to be exposed to I7 anywhere.

1 Like