@prog subway-empty.muf 1 99999 d 1 i ( Program to move the entire contents of one room into another. Must be set wizard and wizard-owned for the subway system to do proper disaster recovery. Because this program must be LINK_OK in order for it to be callable by the subway, it can be called by any mucker, so we are a bit paranoid about who calls us. We work only when called by a program whose dbref corresponds to a property on our program object; the property is of the form *ok-caller-, eg *ok-caller-12:yes to let object #12 call us. The value of the property is unimportant, as long as it's not "". ) : main (src dst -- ) ( Get caller list and clear off all but bottom element [that's the most recent caller] ) callers 1 - dup 0 > if 1 swap 1 for pop pop loop else pop then ( Construct property name. ) int intostr "*ok-caller-" swap strcat ( Get property and exit if not set. ) prog swap getpropstr "" strcmp not if pop pop exit then ( Okay, we're being called acceptably. ) swap begin ( Loop while the room still has something in its contents. ) dup contents dup while ( Move the thing to the destination. ) 3 pick moveto loop ( Clear off the stack. ) pop pop pop ; . c q