! _Hunter, in Darkness_ ! Special source-code edition ! Copyright 1999 Andrew Plotkin ! http://www.eblong.com/zarf/if.html ! This source code is provided for personal, educational use only. ! See README file for details. Object TopSlope "Top of Slope" with seen_once false, description [; if (~~self.seen_once) { self.seen_once = true; print "You emerge"; } else { print "You have emerged"; } print " onto a steep slope, high above a canyon that stretches out of sight to either side. Twisted and stalactite-hung stone forms a vault overhead, which glimmers with reflections of some unseen source of light; but the canyon below is shadowed. Water rushes somewhere at its root. You could climb farther down, and a narrow crevice leads back into the rock.^"; rtrue; ], after [; Drop: if (random(101) < 50) { print_ret "You manage to balance ", (the) noun, " against a jut in the slope."; } else { print "You try to balance ", (the) noun, " against a jut in the slope. It slips. "; <>; } ], ambient_smell [; print "The air stinks of ", (NameWumpus) 0; if (wumpus_wounded) ", tinged now with hot blood."; else ". Its lair must be somewhere in this place."; ], ambient_sound "You can hear the rushing of the unseen water that has carved this canyon.", light_level 1, touched_once 0, each_turn [; switch (self.touched_once) { 0: self.touched_once = 1; 1: self.touched_once = 2; print "^Your foot slips. For a moment your fatigue flares into panic, as you clutch to steady yourself, but you know you are tired, tired. This must end soon. Too much blood. Too much stone.^"; } ]; ObjExit -> slope_sides "slope beside you" with name 'left' 'right', door_to [; return self.description(); ], description "The slope is steeper on both sides of you. You cannot safely traverse the canyonside in either direction."; ObjExit -> slope_up "slope above" with name 'u//' 'up' 'above' 'ascend' 'ascent' 'slope', description "The canyon wall slopes upward to meet the roof.", door_to "You only manage to ascend a few feet before the stone becomes too smooth and featureless. The roof of the cavern is out of reach.", before [; Climb: <>; ]; ObjExit -> slope_down "slope below" with name 'd//' 'down' 'below' 'descend' 'descent' 'slope' 'canyon', description "The canyon wall slants away below. Old, old stone has been water-worn, layer by layer, into a deep, V-shaped canyon. It doesn't look an impossible climb, even tired as you are, if you take care.", door_to [; print "You turn, test your balance, and begin edging down the slope. And your foot slips."; if (TopSlope.touched_once >= 2) print " Again."; print "^^You fling your arms out"; if (crossbow in player) { remove crossbow; lost_crossbow = true; print ", heedless of your possessions"; } print ". You grasp at nothing."; print "^^"; print (emph) "Much", " too tired for this, you think, as you skid wildly down the canyon. A danger to yourself and everyone around you. ", (emph) "And below,", " you add with distant amusement, before the bottom arrives with a horrible jolt.^^"; status_override = "Numbness"; DrawStatusLine(); KeyPause(); status_override = 0; Antechamber.phase = true; remove ante_back; return Antechamber; ], before [; Climb, JumpInto: <>; JumpOver: "The canyon is a vast gulf at this level. Perhaps at the base it narrows enough to be jumped."; ThrownAt: if (noun has worn) { !### could be better print_ret "You're still wearing ", (the) noun, "."; } print (The) noun, " rattles away, down the slope, to the canyon's depths.^"; Lose(noun); rtrue; ]; ObjExit -> slope_back "narrow crevice" with name 'narrow' 'crevice' 'back' 'behind' 'backward' 'backwards', description "Behind you is the crevice through which you came.", door_to [; MazeReenterStart(); MazeSetup(); return Maze; ]; Object -> slope_light "unseen light" with name 'light' 'of' 'source' 'unseen', description "Perhaps there is a opening to the day, somewhere on the other side of the canyon. You can see nothing directly, but light lies across distant folds and draperies of stone, and reflects across the vaulted cavern.", before [; Examine, VagueShoot: rfalse; default: "Whatever the light is, it is far beyond reach across the canyon."; ], when_shot " Your bolt vanishes among the formations on the canyon's far side.", has scenery; Object -> slope_wumpus "beast" with name 'beast' 'creature' 'prey' 'animal' 'monster' 'wumpus' 'movement' 'something', describe [; new_line; "Movement, on a level area on the far side of the canyon, partway down. Something gliding silently back and forth, back and forth. Your prey. Waiting."; ], description "The creature does not look small, even from up here, even half-unformed by canyon shadows. It prowls across a wide ledge across the canyon and below your level. You do not think it knows you are here.", touched_once false, before [; Examine, VagueShoot: rfalse; Smell: <>; Listen: print_ret "The ", (NameWumpus) 0, " makes no sound you can hear from this distance."; default: print "If the ", (NameWumpus) 0, " were within your reach, you would be within its own."; if (~~self.touched_once) { self.touched_once = true; print " ", (emph) "And that were no position so easy of mind,", " you think to yourself, in a flash of poetic drifting. No. Back to the task."; } new_line; rtrue; ], when_shot [; wumpus_wounded = true; wumpus_known = true; remove self; print_ret " And you flinch at the hissing shriek that echoes up the cave walls.^^The dark shape flees -- not climbing, but ", (emph) "running", " down the canyon slope, vanishing in the depths. Your thudding pulse slows.^^ Moments later, barely sensed, the scent of blood. You have wounded the Wumpus."; ], has static;