@prog common-desc.muf 1 999 d 1 i ( Desc program designed for sharing descs, somewhat like copydesc [#501], but intended for different uses and thus somewhat different in implementation. This is designed for a bunch of rooms which have differing exit lists but share most of their descs. Using #501, there's no way to get the individual room's exits listed with @576 after the @501-copied desc. This program is just like #23 except that it actually fetches the desc properties from a different object. [The actual desc of the holder object is not used.] Usage: put this in a desc, followed by the dbref of the holder object, then [optionally] a property prefix [which defaults to _dsc, a la #23]. For example, to copy #12345's desc to the room but with a line above and below, @desc here=@23 @set here=_dsc1:---- Before line ---- @set here=_dsc2:26170 12345 @set here=_dsc3:---- After line ---- @set #12345=_dsc1:Common desc, line 1 @set #12345=_dsc2:Common desc, line 2 The object being desced must be owned by a wizard or by the owner of the holder object. ) : say me @ swap notify ; : killme 0 sleep daemon kill ; : run-it ( s -- ) 1 strcut swap pop dup " " instr dup if strcut else pop "" then swap atoi dbref depth 2 - dup 3 + neg rotate (N x1 ... xN s d) call (N x1 ... xN junk1 ... junkM ) depth 1 < if "Error: stack trashed (#1)" say killme then depth rotate dup int? not if "Error: stack trashed (#2)" say killme then (x1 ... xN junk1 ... junkM N) depth (x1 ... xN junk1 ... junkM M+1) swap - dup 1 < if "Error: stack trashed (#3)" say killme then 1 - mpop ; : main ( s -- ) dup " " instr dup if strcut else pop "" then swap atoi dbref trigger @ owner over owner over dbcmp swap true-wizard? or not if pop pop exit then ( prop holder ) swap dup not if pop "_dsc" then ( holder prop ) 1 begin ( holder prop n ) 3 copy intostr strcat getpropstr dup while ( holder prop n value ) dup "@" 1 strncmp not if dup 1 strcut swap pop atoi dbref program? if run-it else say then else say then 1 + loop 4 mpop ; . c q