This is easiest to demonstrate with a scenario:
Place is a room.
A box is here.
A toy is a kind of thing.
Two toys are in the box.
Instead of taking the box when something is in the box:
say "The box is too heavy with the [regarding toys in the box]toy[s] in it."
Test me with "take box / take toy / take box / take toy / take box".
which yields:
Place
You can see a box (in which are two toys) here.
>get box
The box is too heavy with the toys in it.
>get toy
Taken.
>get box
The box is too heavy with the toys in it. [<-- ???]
>get toy
Taken.
>get box
Taken.
As you can see, the [s]
substitution is not taking its cue from the [regarding...]
substitution. I thought that it was just that it needed to be fed a number, but:
Instead of taking the box when something is in the box:
say "The box is too heavy with the [regarding the number of toys in the box]toy[s] in it." [changed]
doesn’t fix the issue. The underlying routines are:
[ STextSubstitution;
if (say__n ~= 1) print "s";
];
[ RegardingNumber n;
prior_named_list = n;
prior_named_list_gender = -1;
prior_named_noun = nothing;
];
The STextSubstitution()
routine is only responsive to the value of say__n
, which is not updated by RegardingNumber()
.
For my own purposes, I’ve updated the latter to:
[ RegardingNumber n;
prior_named_list = n;
prior_named_list_gender = -1;
prior_named_noun = nothing;
say__n = n; ! ADDED
];
Does the default behavior count as a bug?