CONSTANT Story "Coffee Test"; CONSTANT Headline "^In the Public Domain^^"; Replace Identical; Replace MakeMatch; Replace NounDomain; Replace TryGivenObject; Include "Parser"; Object LibraryMessages with before [;Strong: "Not here it attracts flies.";]; Include "Pname"; Include "Verblib"; Include "Grammar"; [Initialise; Banner(); lookmode=2; location=PlainRm; print "^You are in a plain room with:^ a coffee table ^ a cup of coffee^ and a book.^"; return 2;]; Object PlainRm "Plain Old Room" with description "You are in a plain room with NO exits.^^", cant_go "You're hopelessly stuck here.", has light ; Object -> Table "coffee table" with pname '.x' 'coffee' 'table', describe [; "There is a coffee table here.";], description [; if (children(self)==0) "It's rectangular... "; if (Coffee in Table && CBook notin Table) "There is a cup of coffee on the table."; if (CBook in table && Coffee notin Table) "There is a book on the table"; if (CBook in Table && Coffee in table) "There are a cup of coffee and a book on the table.";], before [; take,push,pull,turn: "Don't be ridiculous!";], has supporter ; Object -> Coffee "Cup of Coffee" with name 'coffee' 'cup' 'of', describe [; "There is a cup of coffee here (on the table).";], description "Piping hot in an infinitely endless cup.", before [; dropOn: move self to Table; "You drop ",(the)self," onto the table."; drink: "You take a gulp of coffee from the bottomless cup";], ; Object -> Cbook "Coffee Table Book" with pname '.x' 'coffee' '.x' 'table' 'book', describe [; "There is a book here (on the table).";], description "Hard covered and beautifully decorated.", before [; dropOn: move self to Table; "You drop ",(the)self," onto the table."; read: "The pages are all blank!";], ; [ReadSub; "You can't read that!";]; [DropOnSub; "You can't drop ",(the)noun," on ",(the)second,".";];