@prog 0-rooms.muf 1 9999 d 1 i : say me @ swap notify ; : split-list (list N fn -- match Nmatch other Nother) over 1 < if pop 0 exit then 0 3 pick 1 -1 for ( list Nlist fn match Nmatch i ) over + 3 + dup 1 + pick 3 pick 4 + pick ( list Nlist fn match Nmatch i+Nm+4 listel fn ) exec if pop else rotate swap 1 + dup 3 + rotate 1 - over 3 + -1 * rotate then loop dup 2 + rotate pop (dup 2 + pick over + 2 + over 1 + roll) ; : chk-obj (list Nl player obj -- list Nl player obj) over over owner dbcmp not if exit then dup player? if exit then dup room? if dup name tolower "parent" instr if exit then then rot 1 + rot 3 pick ; : roomp room? ; : thingp thing? ; : main dup string? if 1 swap me @ wizard? if dup if "*" swap strcat match dup not if "Can't turn that into a player!" say pop exit then else pop me @ then else pop me @ then else pop 0 me @ then 0 swap #0 contents begin dup while chk-obj next loop pop pop dup not if pop if "[Nothing to report]" say then exit then "You have the following stuff in #0 that doesn't belong there." say "Please move it where it belongs at your earliest convenience." say dup 5 > if 5 else dup then 1 -1 for pop 1 - swap me @ unparse_object " " swap strcat say loop dup if dup intostr "[" swap strcat " more omitted]" strcat say "[Use \"0-stuff\" to see more when you have dealt with the above.]" say then begin dup 0 > while 1 - swap pop loop pop ( ' roomp split-list ' thingp split-list depth "rooms/things/other" pstack dup 2 + pick over + dup 4 pick over + 3 + swap 2 + roll ) ; . c q