Pushing Between Rooms

How exactly does the “pushing it to” action work? I’ve noticed that it can trigger carrying rules, like so:

[code]The storage room is a room. The garage is south of the storage room.

The very heavy bookcase is a thing in the storage room. It is pushable between rooms.

Instead of going while the player is carrying something:
say “You can’t walk while you’re holding [the list of things held by the player].”

Test me with “push bookcase s”.[/code]

It’s a regular “going” action, but the action variable “thing gone with” is set.

But does that count as carried or held?

It appears to count as both carried and held (either phrasing will trigger the message in the above example), even though the item is never in inventory.

Sorry, I didn’t understand what you were asking.

It looks like the item is momentarily moved to the player’s inventory, when the action is invoked. This is handled by the ConvertToGoingWithPush() function (at the I6 level).

OK, so what would be the best workaround if you want the player to be able to push and pick up the very heavy bookcase but not carry it between rooms?

How about this?

Instead of going while the player is carrying something that is not the thing gone with: say "You can't walk while you're holding [the list of carried things that are not the thing gone with]."

Action variables can be a pain in the rear. It would be nice to define an adjective that means “carried but not because it’s being pushed,” but you can’t refer to an action variable in the definition, so I don’t think it’s possible.

Easiest workaround, I guess, would be to write an “instead of pushing the bookcase to” rule that doesn’t invoke going at all. (Just set the player and bookcase location manually.)