@prog multiroom-contents.muf 1 999 d 1 i : dark-flag "d" ; : link-flag "l" ; : wizard-flag "c" ; : say me @ swap notify ; : do-hdr "Contents:" say ; : hdr-say (did-hdr x x str) 4 pick not if 4 rotate pop do-hdr 1 4 rotate 4 rotate 4 rotate then say ; : tag-if (s tag -- s') dup if " (" swap ")" strcat strcat strcat else pop then ; : say-it (did-hdr tag obj) dup name over owner me @ dbcmp me @ wizard? or me @ "s" flag? not and if "(#" strcat over int intostr strcat over flagstr strcat me @ "a" flag? if " " strcat over owner name strcat then ")" strcat then 3 pick tag-if hdr-say ; : maybe-say-it (did-hdr tag obj) me @ over dbcmp if exit then me @ wizard? if say-it exit then dup owner me @ dbcmp if say-it exit then dup dark-flag flag? if exit then dup player? over awake? and if say-it exit then dup program? over link-flag flag? not and if exit then dup "dark" getpropstr if exit then say-it ; : say-contents (did-hdr tag room -- did-hdr) dup room? not if pop pop exit then rot rot 3 pick contents begin dup while maybe-say-it next loop pop rot prog wizard? prog owner wizard-flag flag? and if online 4 + ( did-hdr tag room o1 ... oN N+4 ) dup rotate swap dup rotate swap dup rotate swap ( o1 ... oN did-hdr tag room N+4 ) 5 (1+4) swap 1 for pop ( ... o did-hdr tag room ) 4 rotate dup "*Jack" getpropstr atoi dbref 3 pick dbcmp if ( ... did-hdr tag room o ) name "The prone body of " swap strcat 3 pick tag-if hdr-say else pop then loop then pop pop ; : main 0 "" trigger @ say-contents trigger @ "_multiroom" getpropstr "," explode ( did-hdr rs1 ... rsN N ) dup 2 + rotate swap ( rs1 ... rsN did-hdr N ) 1 swap 1 for pop swap atoi dbref trigger @ owner over owner over dbcmp swap wizard? or if dup "_multiroom-loc" getpropstr swap say-contents else pop then loop pop ; . c q