! WhatIs An improvement upon "What is" commands such as ! the Zork-like "What is a Grue" and "Who am I" ! By L. Ross Raszewski ! ! Give anything you wish to "What is" the attribute "queryable" and put the ! response in the "whatsit" property of that object. ! Whatsit can be a string or routine. ! you can change the queryable attribute throughout the game, allowing you to ! do such things as only allowing a player to query an object he has seen ! before. ! ! This library also responds to the question "Who am I" by printing "You are ! (the name of the player-object)" This can be useful for multiple player ! games or games in which the player plays a predetermined character. ! ! The tokens IsAmAre and AllObjsScope can be used by verb grammar. The former ! accepts the words "is" "am" or "are". The second places all objects in ! scope. ! ! Also included is the "queryobj", a place where you can put queryable ! objects which do not appear in the game. The only reason I include this ! is so you can have something such as your "ChoosObjs" entry point prefer ! objects in the "queryobj". A sample question, "What is a Grue" is provided ! ! Attribute queryable; Property whatsit; [ WhoAmISub; if (player has general) "Good Question"; print_ret "You are ", object player, "."; ]; [ IsAmAre w; w=NextWord(); if (w=='is' or 'am' or 'are') return 0; return -1;]; [ AllObjsScope i; if (scope_stage==1) rfalse; if (scope_stage==2) { for (i=selfobj:i<=top_object:i++) PlaceInScope(i); rtrue;}; ]; [ WhatIsSub ; if (noun==player) <>; if (noun hasnt queryable) print_ret "Good Question"; if (Zregion(noun.whatsit)==2 or 3) { PrintOrRun(noun,whatsit); rtrue;}; "Good Question"; ]; [ WhatIsESub; "What is what?";]; verb "who" "what" * IsAmAre ->WhatIsE * IsAmAre "I" ->WhoAmI * IsAmAre "I?" ->WhoAmI * IsAmAre scope=AllObjsScope ->WhatIs; Object queryobj "WhatIs Objects"; nearby qgrue "grue" with name "grue" "lurking", whatsit "A hideous creature which lurks in darkness, feeding on \ adventurers foolish enough to enter a cave without their \ brass lantern.", has queryable;