(dont scan *) is a pacian-specific attribute assigned to the object
($ attracts $) defines “floating objects”, that is, items that can be in more than one place at a time (similar to the “found_in” property in inform).
you can assign these individually as he’s done here but, since dialog is all about lists and recursion, you can also assign them to ‘regions’
(room *(forest room $)) %% this sets up a new custom room attribute that inherits from the usual room attribute.
#trees %% this creates a movable scenery object
(name *) trees
(plural *)
(descr *) You see towering oaks all around.
((forest room $) attracts *) %% now the trees are in every forest room we create.
i would point out one advantage of inform6 in this respect. once you’ve “attracted” an object to something in dialog, you can’t make it disappear or “un-attract” it again. whereas, in inform you can simply zap the found_in property. it’s a small thing but occasionally useful.
EDIT:
actually, ignore this last part. i remembered that you can apply rules to an attract predicate which will let you apply and un-apply them.
(#livingRoom attracts #shagCarpet)
(year is 1976)