version 4 by Emily Short
This extension adds three actions: emptying something (for emptying a container onto the floor); transferring something into something (for moving the contents of a container into another container); and dumping something onto something (for moving the contents of a container onto a table). All three actions are implemented for non-player characters as well as for the player.
If an object in a container should not be movable, it is enough to supply an "instead of taking" rule (and another "instead of someone trying taking..." rule, if other characters than the player are going to interact with the object). These insteads will be honored in the process of emptying. (A note of warning: because of the way messages are printed, the results may be infelicitous if we rely on making the contained object "fixed in place" rather than writing an instead of taking rule. In that case, Inform may print "That's fixed in place." at a point in the action where it is unclear what "That" refers to.)