| ! ---------------------------------------------------------------------------- | |
| ! A short demonstration of the new "add_to_scope" (new in library 5/6): | |
| ! a global object (one's nose) sneakily provided in scope whenever the player | |
| ! is (which is to say, always!); | |
| ! and a single object (the steriliser), which is both supporter and container | |
| ! at the same time as having internal parts (well, one, anyway) | |
| ! ---------------------------------------------------------------------------- | |
| Switches dv5; Release 1; | |
| Constant Story "A NASAL TWINGE"; | |
| Constant Headline "^An Interactive Aroma^\ | |
| Copyright (c) 1994 by Graham Nelson.^"; | |
| Include "Parser"; | |
| Include "VerbLib"; | |
| Include "Grammar"; | |
| Object newplay "yourself" | |
| with description "As good-looking as ever.", number thedark, | |
| add_to_scope nose, | |
| capacity 5, | |
| before | |
| [; Inv: if (nose has general) print "You're holding your nose. "; | |
| Smell: if (nose has general) | |
| "You can't smell a thing with your nose held."; | |
| ], | |
| has concealed animate proper transparent; | |
| Object nose "nose" | |
| with name "nose", article "your", | |
| before [; Take: if (self has general) | |
| "You're already holding your nose."; | |
| if (children(player) > 1) "You haven't a free hand."; | |
| give self general; player.capacity=1; | |
| "You hold your nose with your spare hand."; | |
| Drop: if (self hasnt general) "But you weren't holding it!"; | |
| give self ~general; player.capacity=5; | |
| print "You release your nose and inhale again. "; | |
| <<Smell>>; | |
| ], | |
| has scenery; | |
| Verb "pinch" "tweak" | |
| * noun -> Take; | |
| Verb "release" "let" | |
| * noun -> Drop | |
| * "go" "of" noun -> Drop; | |
| Object lab "Chemical Laboratory" | |
| with description | |
| "A crowded laboratory, packed with fuming flasks and retort \ | |
| stands, gas taps and ventilated cupboards. Noxious-looking \ | |
| air seeps in from the north.", | |
| cant_go "The only exit is to a northern annexe, but the air looks | |
| cloudy there.", | |
| n_to corridor | |
| has light; | |
| Nearby conic "conical flask" | |
| with name "conical" "cone" "flask"; | |
| Nearby beaker "Pyrex beaker" | |
| with name "beaker" "pyrex"; | |
| Nearby mat "asbestos mat" | |
| with name "asbestos" "heatproof" "mat"; | |
| Nearby washing "sterilising machine" | |
| with name "washing" "sterilising" "machine", | |
| add_to_scope top_of_wm go_button, | |
| before [; PushDir: AllowPushDir(); rtrue; | |
| Receive: | |
| if (receive_action==##PutOn) | |
| <<PutOn noun top_of_wm>>; | |
| SwitchOn: <<Push go_button>>; ], | |
| after | |
| [; PushDir: "It's hard work, but the steriliser does roll."; | |
| ], | |
| initial | |
| [; print "There is a sterilising machine on casters here (a kind of \ | |
| chemist's washing machine) with a ~go~ button. "; | |
| if (children(top_of_wm)~=0) | |
| { print "On top"; | |
| WriteListFrom(child(top_of_wm), ISARE_BIT + ENGLISH_BIT); | |
| print ". "; | |
| } | |
| if (children(self)~=0) | |
| { print "Inside"; | |
| WriteListFrom(child(self), ISARE_BIT + ENGLISH_BIT); | |
| print ". "; | |
| } | |
| ], | |
| has static container open openable; | |
| Object top_of_wm "top of the sterilising machine", | |
| with article "the", | |
| has static supporter; | |
| Object go_button "~go~ button" | |
| with name "go" "button", | |
| before [; Push, SwitchOn: "The power is off."; ], | |
| has static; | |
| Object box "box" top_of_wm | |
| with name "box", | |
| has container openable; | |
| Object paper "strip of litmus paper" box | |
| with name "strip" "of" "litmus" "paper"; | |
| Object corridor "Fumy Corridor" | |
| with description "A fumy corridor, where your eyes stream.", | |
| s_to lab, n_to safety, | |
| each_turn [; if (nose hasnt general) | |
| { deadflag=1; "The fumes overcome you!"; } | |
| ], | |
| before | |
| [; Smell: "A horrid scent of ammonia!"; | |
| ], | |
| has light; | |
| Object safety "Safety!" | |
| with description "Safe at last from the foul air, you find yourself in the \ | |
| foyer.", s_to corridor | |
| has light; | |
| [ Initialise; | |
| location = lab; move newplay to lab; ChangePlayer(newplay); | |
| print "^^^^^Oh no, you've developed...^^"; | |
| ]; | |
| end; | |
Xet Storage Details
- Size:
- 4.58 kB
- Xet hash:
- 7516029a3a559085f1b18cc4be791e5147a0019ff6eeaa77e6d3569bb94e46f1
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.