Setting pronouns

I have a small nagging problem. Unfortunately I’m developing in library version 6.11 but I think the behaviour is the same in later versions.

Basically it is that if I push an object from one room to another, the pushed object don’t become the “it”-object.

Transcript from Curses! (in 6.11, a bit spoilery but early in the game)

>x radio
It rolls on casters, and has a bakelite on/off switch.
The antiquated wireless is currently switched off.

>nouns
At the moment, "it" means the antiquated wireless, "him" is unset, "her" is unset and "them" means the teachests.

>push it north
It moves easily on the casters.

Aunt Jemima's Lair

>nouns
At the moment, "it" means the daisy calendar, "him" is unset, "her" is unset and "them" means the teachests.

>x it
The calendar is turned to June and a watercolour painting of some wild white common daisies.

>w

Potting Room
This light room is full of pot plants, flowers, seeds, ornamental trowels and other miscellaneous garden implements.

A pair of yellow rubber gloves hangs from a hook on one wall.

Aunt Jemima, who has for years collected varieties of daisy, is engaged in her regular annual pastime of deciding which species make the best chains.

>nouns
At the moment, "it" means the daisy calendar, "him" is unset, "her" means Jemima and "them" means the old gardeners' gloves.

>x her
She's been fiddling about with those cut flowers all afternoon. And she's a bit upset at being left alone in the house while you're off on holiday, so best not to get on her bad side. You really ought to make it up to her somehow.

>

If I use the constant MANUAL_PRONOUNS, the radio stays the same but the “her”-object will then be unset when entering the potting room…

I guess I could reset the “it” in the objects after-routine but I would like to make it more general.

I tried changing order in the routine AllowPushDir between moving the object and the player, but that didn’t work.

Not the biggest thing in the world but it bugs me…

EDIT: The source is here if anyone wants to try it hands on.

Pronouns get set as part of the Look action which is part of the Go action. (Unless you use MANUAL_PRONOUNS, of course.)

So I guess the most general solution is to add a SetPronoun() call at the end of AllowPushDir().

1 Like

I changed the AllowPushDir routine to the following:

[ AllowPushDir i;
    if (parent(second) ~= compass) return L__M(##PushDir, 2, noun);
    if (second == u_obj or d_obj)  return L__M(##PushDir, 3, noun);
    AfterRoutines(); i = noun; move i to player;
    <Go second>;
    if (location == thedark) move i to real_location;
    else                     move i to location;
	PronounNotice(i);
];

And that did the trick!

Thank you.

note that Curses don’t use the standard library, but an adhoc library (now lost, together with Curses’s source, by admission of Lord Inform himself…), so the behavior of Curses don’t necessarily coincide whit Inform 5 or 6 standard library

I would say that this reverse engineered version (linked above) comes pretty close. The raw Reform-created source also contains all the keys (together with 5/12) to recreate it.