Here’s an apparent error in the Inform 6 library that is causing me some grief. Can anyone explain it and whether there’s a workaround?
Download, compile and run the following small test program. ASK WITCH ABOUT HERBS and she answers you as expected. Once you’ve established that the character is female, ASK HER ABOUT HERBS and you get a strange [** Programming error: tried to test “in” or “notin” of <routine 7539> **]
In the program I’m writing where I first noticed this, the error was [** Programming error: tried to test “in” or “notin” of <illegal object number 219361> **] and it occurred twice in succession. In both cases, the parenthesised “(the witch about that)” occurred after the error.
Note that this doesn’t happen when you have a male character and you ASK HIM ABOUT something.
Here’s the test program:
Constant DEBUG;
Constant Story "Ask Witch About Herbs";
Constant Headline "^An interactive bug hunt^^";
Include "parser";
Include "verblib";
[ Initialise;
location = room01;
"Try ASK WITCH ABOUT HERBS, then try ASK HER ABOUT HERBS.";
];
Object room01 "Witch's Hut"
with
description "This is the witch's hut.",
has light;
Object "witch" room01
with
name 'witch',
description "She's a withered old crone.",
life
[;
Ask:
if (second == 'herbs')
"I use them to make magic potions.";
],
has female animate;
Include "grammar";
End;
And here’s a sample transcript:
>ask witch about herbs
I use them to make magic potions.
>ask her about herbs
[** Programming error: tried to test "in" or "notin" of <routine 7539> **]
(the witch about that)
I use them to make magic potions.
Oh, I should have mentioned that I’m using Library v6.12.3pre.