Ordering things and pronouns

I have a little poser.

I’m using I7 6G.

I’ve got a room which has a door between it and an adjacent room.

The first factor is that I don’t want the door mentioned on this side, so I say

Before listing nondescript items when player is in foyer: now school door is not marked for listing.

That works fine on its own.

The second factor is that there are several objects in here which I always want nondescriptively listed before anything the player may drop here. I’ve been doing this by shuffling them in the room every turn:

Before listing nondescript items when player is in foyer: if C is in location, now C is in location; [lists C third] if B is in location, now B is in location; [lists B second] now A is in location; [always lists A first]

This approach works fine in other rooms where I’m doing similar stuff, but the catch in this room is that the door (now invisible to the player) always grabs the pronoun ‘IT’ if the player types ‘LOOK’. And I can’t shuffle the door.

I tried to fix this by adding a routine which manually goes through items marked for listing at the same time, and pulls pronouns from the first thing in the list (which I hoped would be last to appear in the room). This stops the door ever grabbing pronouns, but it’s not getting the choice right of what should grab the pronouns all the time, because it turns out the order of things in the ‘marked for listing’ list is not always the same as the order in which they appear in the room when the game runs!

Anyone have the solution for this one?

-Wade

Is there something else that’s always in the room? Could you manually assign pronouns to that object specifically after looking?

For example, if there’s a chandelier:

After looking when the player is in the foyer: set pronouns from chandelier; continue the action.

The trick is that I don’t just want to avoid the door being ‘it’. I want ‘it’ to be correctly assigned to whatever happens to come last in the room description when the player looks, which is the usual behaviour. That could be something they’ve dropped, or it could be C if C is still there, etc.

In my current fix, hiding the door gives random results. In your fix, it gives the chandelier, even if someone drops something else in the room in the meantime.

-Wade

Hmm, I see what you mean. What if you made the door a container instead of a door, and wrote a bunch of instead rules to treat it like a door. It’d be a pain, but that way you could shuffle the “door” like a thing.

You could try this:

[code]The last mentioned object is a thing that varies.

Rule for printing the name of a thing (called the item of interest):
now the last mentioned object is the item of interest;
make no decision.

After looking:
set pronouns from the last mentioned object.[/code]
(6Lxx would already have a “prior named object” variable but in 6G60 you’ll have to make your own.)

I had high hopes for that one. Bizarrely, it works OK at first, but then if you drop an object in the room, it starts setting ‘it’ to be the school door again.

This suggest to me that either

  • the school door is becoming the last mentioned object at some point, and I don’t see how it could as it is unmarked for listing and its name is never printed, or

  • pronouns are being set to the school door by I7 at a later stage than ‘after looking’ [EDIT: did a test and it’s not this.]

-Wade

I can’t replicate your problem, but as a last hack you could add an “if the item of interest is not the school door or the player is not in the foyer” clause to the rule.

I already did that. (Right now my feelings are ‘ARGH ARGH ARGH ARGH ARGH!’)

I think I can see what the problem is, anyway. I7 decides its list of things to be listed before I do my shuffling. That’s why when I repeat through that list, it doesn’t correspond to reality. If it did, my own fix would work. I still don’t know why it keeps dragging in the bloody door when it’s unmarked for listing and never mentioned, but it does.

So, I’d like to force it to redo the list in order of what’s in the room now, but how to do that is kind of eluding me. How would I do a survey of what’s in the room in the order I7 perceives it to be in now?

EDIT: Maybe this wouldn’t do it anyway. I get the feeling the construction of the text is controlled by other factors that help it read well, as opposed to the raw order of the items.

EDIT EDIT: Maybe I found a bug. An item which, when dropped, drags the school door back in, has the word ‘school’ in its name.

EDIT EDIT EDIT: Even when I forbade it to set pronouns from the other school item, it still set them off the school door in that moment. I guess that doesn’t preclude a bug entirely.

EDIT EDIT EDIT EDIT: Seriously, I think I found a bug. As soon as I stop dropping the school shoes in this location, I never see the school door set to anything when I type ‘pronouns’. I can drop other objects and they produce results as expected. If I drop the school shoes, suddenly ‘it’ is being set the school door.

EDIT EDIT EDIT EDIT EDIT: I don’t know why it would choose ‘it’ to be a thing that is not marked for listing and can’t even be referred to in this room, when there are things which are marked for listing and can be referred to which could be made ‘it’. So I don’t know if it’s ‘school’ related, but it certainly looks odd to me. I haven’t fixed it. All I can say is my hack makes it better (without the polling marked for listing items hack, it makes ‘it’ the school door immediately) but it doesn’t eliminate it.

-Wade

How about this?

After printing the name of a thing (called the item) while looking in the foyer: set pronouns from the item.

Seems like if you just force the “set pronouns from” to be tied to the printing the name activity it should get the pronouns set from the last thing whose name was printed.

By the way, the built-in (to 6G60) extension Complex Listing by Emily Short is designed to let you give a special order to lists like the list of things in a room, so it seems like it might be up your alley for this. One example description is “A common descriptive strategy in listing numerous objects is to save the most astonishing or interesting items for last. In this example, we arrange it so that the most peculiar items in a room are always included at the end of the list, no matter in what order they have been taken or dropped.” I don’t know what effect it might have on your bug.

Maybe you could try changing “school door” to “school-door” (with printed name and understand rules for “school door”) to completely rule out whether it’s a name bug or not.

Thanks matt and buster for your suggestions.

matt, your schtick worked! I can drop school shoes in this room and the school door doesn’t reappear. And it’s correctly choosing the last object. Whew.

-Wade