After the idle discussion about how to implement Craverly Heights in ZIL (particularly the name-changing paperwork), Jesse and Henrik have come up with a compact way to introduce that convenience in ZILF.
Starting with Suspended, some Infocom games had various ways behind the scenes to change the printed name. Learning ZIL mentions the SDESC property, but the Infocom approaches were not consistent and the ZILF stdlib does not implement SDESC.
But they came up with this brief example which introduces an SDESC function similar in spirit to the (implemented) DESCFCN and shows it off, with a map which changes names and a compass which does not:
<VERSION XZIP> <CONSTANT RELEASEID 1> <CONSTANT GAME-BANNER "Test - Extended descriptions"> <INSERT-FILE "zillib/parser"> ;"SDESCFCN - Extension" <PROPDEF SDESCFCN <>> <DEFMAC PRINTD ("ARGS" OBJ) <FORM NEW-PRINTD !.OBJ>> <ROUTINE NEW-PRINTD (OBJ) <COND (<T? <GETP .OBJ ,P?SDESCFCN>> <APPLY <GETP .OBJ ,P?SDESCFCN>>) (ELSE <PRINTD!-SOME-NEW-OBLIST-NAME .OBJ>)>> <ROUTINE GO () <CRLF> <INIT-STATUS-LINE> <V-VERSION> <CRLF> <SETG HERE ,FOREST> <MOVE ,PLAYER ,HERE> <V-LOOK> <MAIN-LOOP>> <ROOM FOREST (DESC "Forest") (IN ROOMS) (LDESC "You are lost in the woods.") (FLAGS LIGHTBIT)> <OBJECT MAP (IN FOREST) (SYNONYM MAP) (DESC "map") (SDESCFCN MAPDESC-F) (FLAGS TAKEBIT)> <OBJECT COMPASS (IN FOREST) (SYNONYM COMPASS) (DESC "compass") (FLAGS TAKEBIT)> <ROUTINE MAPDESC-F () <COND (<1? <RANDOM 2>> <TELL "curious map">) (ELSE <TELL "strange map">)>>