@prog aprilfools.muf 1 999 d 1 i : roomname "Wherever you go, there you are" ; : set-a-flag (dbref flag prop -- ) 3 pick 3 pick flag? if swap pop "y" 0 addprop else 3 pick swap remove_prop set then ; : unset-a-flag (dbref flag prop -- ) 3 pick over prop-exists? if swap pop remove_prop else pop "!" swap strcat set then ; : set-a-prop (dbref prop val saveprop -- ) 4 pick 4 pick prop-exists? if 4 pick 4 pick getpropstr 5 pick rot rot 0 addprop else 4 pick swap remove_prop then 0 addprop ; : unset-a-prop (dbref prop saveprop -- ) 3 pick over prop-exists? if 3 pick over getpropstr 4 pick rot remove_prop 0 addprop else pop remove_prop then ; : do-do 0 db_top 1 - 1 for prog "@last" 3 pick intostr 0 addprop dbref dup ok? if dup program? not if dup "d" "@-old-dark-" set-a-flag then ( dup player? if dup "s" "@-old-silent-" set-a-flag dup "_mute" "yes" "@-old-_mute-" set-a-prop then dup room? if dup "@-old-name-" over name 0 addprop dup roomname setname then ) then pop loop ; : do-undo 0 db_top 1 - 1 for prog "@last" 3 pick intostr 0 addprop dbref dup ok? if dup program? not if dup "d" "@-old-dark-" unset-a-flag then ( dup player? if dup "s" "@-old-silent-" unset-a-flag dup "_mute" "@-old-_mute-" unset-a-prop then dup room? if dup name roomname strcmp not if dup "@-old-name-" prop-exists? if dup dup "@-old-name-" getpropstr setname dup "@-old-name-" remove_prop then then then ) then pop loop ; : main dup "do" strcmp not if pop do-do exit then dup "undo" strcmp not if pop do-undo exit then ; . c q