| ! 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) <<WhoAmI>>; | |
| 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; | |
Xet Storage Details
- Size:
- 2.49 kB
- Xet hash:
- d11abb58cfecf67991f070cb4100939f4eb00399727358dfa3870f0d5b410bd7
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.