/*** VERBS ***/ VERB sign, play, rname, shell, eat, swim, feed, score, dig, cut, plug, tie, untie, wipe, shake, xyzzy, jamb, abracadabra; sign(PREACT) = Preact; play(PREACT) = Preact; eat(PREACT) = Preact; cut(PREACT) = Preact; feed(PREACT) = Preact; plug(PREACT) = Preact; untie(PREACT) = Preact; wipe(PREACT) = Preact; shake(PREACT) = Preact; jamb(PREACT) = Preact; tie(PREACT) = Preact; score(PREACT) = Proc() {Expect(NO_OBJ, NO_OBJ);} dig(PREACT) = Proc() {Expect(NO_OBJ, NO_OBJ);} swim(PREACT) = Proc() {Expect(NO_OBJ, NO_OBJ);} i = inventory; plugh = xyzzy; clean = wipe; shut = close; peruse = read; chuck = throw; hurl = throw; toss = throw; heave = throw; discard = drop; excavate = dig; grab = take; push = touch; pet = touch; devour = eat; consume = eat; wade = swim; ford = swim; shazam = abracadabra; hocus = abracadabra; abra = abracadabra; end = quit; bye = quit; leave = exit; climb = up; /*** VERB ROUTINES ***/ plug(ACTION) = Proc() { If ($loc($ME) == irm13) { If ($loc(cotton) == $ME) { "You stick the cotton into the rhino's ears.\n"; $move(cotton, $ALL); rhino.earplg = 1; $exit(1); } } "I don't quite understand what you mean.\n"; } dig(ACTION) = Proc() { If ($loc(shovel) != $ME) { "You don't have something to dig with.\n"; $exit(1); } If ($loc($ME) == irm9) { If (!cotton.tookbt) { cotton.tookbt = 1; "You find some cotton buried in the sand.\n"; $move(cotton, irm9); Return 0; } "OK\n"; Return 0; } If ($loc($ME) == prm17) { If (!pendant.dugbt) { pendant.dugbt = 1; "You find an ancient pendant buried in the grave.\n"; $move(pendant, prm17); Return 0; } "You dig some but you don't find anything.\n"; Return 0; } "The ground is too hard to dig into.\n"; } cantdo = Proc() { "I don't believe I can do that.\n"; } sign(ACTION) = cantdo; play(ACTION) = cantdo; arolg = Proc() { "It will probably cost you an arm or a leg to feed that.\n"; $exit(1); } feed(ACTION) = Proc() { If (($loc($ME) == irm8) | ($loc($ME) == irm9)) { If (Dobj == crocodiles) { arolg(); } } If (($loc($ME) == prm19) & (Dobj == bear)) { If (!bear.hitbr) { arolg(); } } If (($loc($ME) == prm6) & (Dobj == smilo)) { If (!smilo.stond) { arolg(); } } If (($loc($ME) == prm22) | ($loc($ME) == prm23)) { If (Dobj == tyrannosaurus) { arolg(); } } "I don't quite understand what you mean.\n"; } cut(ACTION) = cantdo; throw(ACTION) = Proc() { If ($loc(Dobj) != $ME) { "You don't have it.\n"; $exit(1); } "OK.\n"; cdrop(); } eat(ACTION) = Proc() {"I think I just lost my appetite.\n";} abracadabra(ACTION) = Proc() { If (prehs != $loc($loc($ME))) { "That phrase hasn't worked in at least ten thousand years.\n"; Return 0; } If ($loc($ME) != prm17) { "Nothing happens.\n"; Return 0; } If (spear.tooky) { If (!spear.abrad) { spear.abrad = 1; "The rubble gets magically cleared away.\n"; Return 0; } } "Nothing much happens.\n"; } tie(ACTION) = Proc() {"It is impossible to tie a knot in that right now. \n";} untie(ACTION) = Proc() {"I don't quite understand what you mean.\n";} swim(ACTION) = Proc() { If ($loc($ME) == irm8) { ei8(); Return 0; } If ($loc($ME) == irm9) { ei8(); $move($ME, irm8); Return 0; } "I don't see enough water here to even wade in.\n"; } wipe(ACTION) = Proc() {"I don't quite comprehend what you are saying.\n";} shake(ACTION) = Proc() {"That probably won't accomplish much.\n";} jamb(ACTION) = Proc() {"I don't quite comprehend what you mean.\n";} xyzzy(ACTION) = Proc() { "You are transported to a room where you are faced by a wizard who " "points to you and says, \"Them's fighting words!\" You immediately " "get attacked by all sorts of denizens of the museum: there is a cobra " "chewing on your leg, a troglodyte is bashing your brains out with a " "gold nugget, a crocodile is removing large chunks of flesh from you, " "a rhinoceros is goring you with his horn, a sabre-tooth cat is busy " "trying to disembowel you, you are being trampled by a large mammoth, " "a vampire is sucking you dry, a Tyrannosaurus Rex is sinking his six " "inch long fangs into various parts of your anatomy, a large bear is " "dismembering your body, a gargoyle is bouncing up and down on your " "head, a burly troll is tearing you limb from limb, several dire " "wolves are making mince meat out of your torso, and the wizard is " "about to transport you to the corner of Westwood and Broxton. " "Oh dear, you seem to have gotten yourself killed, as well.\n"; skore(); ratng(); ratnx(); $spec(QUIT); } score(ACTION) = Proc() { skore(); ratng(); } quit( ACTION ) = Proc() { skore(); ratng(); ratnx(); $spec(QUIT); } scale = Proc() { $ME.weight = 0; If ($cont($ME)) { scads($cont($ME)); } } scads = Proc(obj) { If (obj) { $ME.weight = $ME.weight + obj.weight; scads($link(obj)); } } TakeAct = Proc() {ctake();} DropAct = Proc() {cdrop();} ctake = Proc() { scale(); If (Dobj.NOTAKE) { "That thing is too heavy to carry.\n"; Skip = TRUE; Return 0; } If ((Dobj.weight + $ME.weight) > 20) { "You are carrying too much. You will have to at least drop " "something first.\n"; Skip = TRUE; Return 0; } $ME.weight = Dobj.weight + $ME.weight; If (!Dobj.rarea) { Return 0; } $ME.pscore = $ME.pscore + Dobj.pfound; Dobj.pfound = 0; } cdrop = Proc() { If ($loc($ME) == prm21) { "OK, it falls further down into the crack.\n"; $move(Dobj, prm22); Skip = TRUE; Return 0; } If (!Dobj.rarea) { Return 0; } Else If ((Dobj.rarea == 2) & ($loc($ME) == mrm5)) { scord(); } Else If ((Dobj.rarea == 1) & ($loc($ME) == mrm3)) { scord(); } } scord = Proc() { $ME.pscore = $ME.pscore + Dobj.pplace; Dobj.pplace = 0; } rname(ACTION) = Proc() { $sdesc($loc($ME))(); $exit(1); } shell(ACTION) = Proc() { $spec(EXEC, "/bin/csh", "-i", 0); }