! ------ November world (plants) #ifndef SKIP_NOVEMBER; Global player_rads = 0; ! how much have you gotten? 8 is fatal. Global player_rad_timer = 0; ! counter for showing symptoms (if player_rads >= 8) Global player_suit = 0; ! how much suit-gas in your body? 0 is none. [ CheckPlayerRads; if (player_rads >= 8) { deadflag = 1; "But something is wrong. The darkness remains, and the burning is no \ part of it; the pain is you. Everything you know fades away, black to black, \ leaving only slow fire that grows and grows. And ends."; } player_suit = 0; ! because we're out of here rfalse; ]; Object NovRoad "Abandoned Road" with name "pillar" "pillars", description "The sky is almost violet, infinitely distant -- you've never \ seen such a sky, and without the haze of metallic heat that summer should have. \ But the wind is sharp and chilly, and the trees nearby are a quilt of orange, red, \ and gold.^^\ Beneath you the road is old, filled with weeds and ragged moss; dirt shows \ only in patches. To the south, the track is choked with trees, as it runs into \ the fringes of an autumn forest. It continues the other way, though, \ towards an immense stone wall that hems the northern horizon.", cant_go "The road runs north and south.", s_to "You approach the forest, but underbrush has grown across the road and young \ trees are springing up in it. After pressing a few yards farther, the effort \ becomes too much, and you retreat.", n_to [; print "You stroll for a while towards the wall.^"; return NovChimneyRoad; ], has light outdoors; Nearby novsouthroadwall "stone wall" with name "immense" "stone" "wall", description [; print "The wall stretches across the north, as far as you can see in both \ directions, and it's huge. Dark and massive, even off in the distance as it is. \ You can make out"; if (westpillarbroke in NovRoadWest) { if (westpillarbroke hasnt general) print " one black pillar rising where the road reaches the wall;"; else print " two black pillars rising where the road reaches the \ wall, one straight, one leaning nearly to touch it;"; } else { print " two black pillars rising where the road reaches the wall;"; } " but you can make out nothing else."; ], before [; if (action ~= ##Examine) "The wall is nearly a mile away."; ], has scenery; Nearby novsouthroadroad "dirt road" with name "dirt" "abandoned" "road", description "The road was wide once, you think, but weeds fill the ruts and push in \ from the edges. A smooth moss has covered most of what must have been bare \ dirt.", before [; Search: <>; Take: if (self hasnt general) { give self general; "Do you want to take the road north or south?^^(Sorry.)"; } ], has scenery; ! general means we've used the corny line. Nearby novsouthroadforest "forest to the south" with name "forest" "tree" "trees", description "The forest is thickly dappled with autumn color -- color \ which you should not see for months yet, and never so rich, not in the southern \ climate where you live. (But you are already certain that you are \ elsewhere.) The trees are thick as well, old and crowded, choking the road \ that disappears into them.", before [; Climb: "The trees are tall, and you're not much of an athlete."; Touch: "You approach a tree. It feels like a tree. Rough, and just a bit warmer \ than it ought. Friendly."; Enter: <>; ], has scenery; Object NovChimneyRoad "Abandoned Road, at Chimney" with name "forest" "pillar" "pillars", description "A worn stub of brick juts up here, by the road. It's no more than twice \ your height; but scattered bricks in the weeds attest to \ an imposing chimney in time past. \ Whatever building the chimney served is now just rotted scraps \ of wood and a few stony ridges, and some mounds off to the west. \ The road continues towards the wall north, and the distant forest south.", cant_go "The road runs north and south, and vaguely artificial hummocks \ stand to the west.", s_to [; print "You stroll for a while towards the forest.^"; return NovRoad; ], w_to NovMounds, n_to [; print "You stroll for a while, up to the wall.^"; return NovGateRoad; ], before [; Go: if (noun ~= w_obj && noun ~= n_obj && noun ~= s_obj) rfalse; if (self hasnt general) { give self general; rfalse; } if (chimneyshadow hasnt general) { give chimneyshadow general; "Passing the chimney, you bring yourself abruptly short. Did \ something move? There is only grass; and the fading sense of a \ precipice behind the worn brick."; } rfalse; ], has light outdoors; ! general means you've left here before Nearby novchimney "worn brick chimney" with name "worn" "brick" "stub" "chimney" "bricks", description "Most of the chimney is fallen; only a ragged angle remains, casting \ its shadow far out into the afternoon weeds. Weathered bricks lie uncaring \ in the grass below. They've been there a while, and they're not moving soon.", before [; Take: if (self has general) "There's no need to start a collection."; give self general; move brick to player; itobj = brick; "You pick up a dusty chunk of brick from the weeds."; Push, Pull, Attack: "The remaining stub of chimney, you find, is remaining because it's pretty sturdy."; Search, Enter: "Only one corner of the chimney is still standing. There's no inside, particularly."; LookBehind: <>; ReceiveBehind: <>; ], has scenery; ! general means the brick is taken Nearby chimneyshadow "shadow behind the chimney" class shadowclass, with description [; print "The chimney's shadow is thick as black silk."; if (self hasnt general) { print " Suspicious, you"; give self general; } else print " You"; " shift your line of vision, \ and watch the darkness deepen into a gulf, and narrow \ again to lie calmly on the grass."; ], door_to SilBehindStand, door_world world_Silent, before [; Smell: "You smell nothing. A hint of breeze touches you from behind."; Receive: print (The) noun, " slides into the shadow, moving beyond the simple \ limits of grass and sky, leaving your hand empty.^"; rfalse; Enter: give self general; print "The shadow ", (emphstring) "flares", " as you set foot \ to it. The old brick of the chimney looms impossibly above you, \ blotting out the sun, the sky, the darkness before you, your name --^^"; PauseClear(); if (CheckPlayerRads() ~= 0) rtrue; print "-- Everything drops silently into place again. You are staring \ at a bale of hay.^^"; rfalse; ]; ! general means you've done your double-take Nearby novchimneywall "stone wall" with name "immense" "stone" "wall", description [; print "The wall stretches across the north, \ and it's even bigger than it looked from the forest edge. \ Massive stone blocks march in their rows, in both directions, as far as you can \ see. The road stretches up to an immense gate."; if (westpillarbroke in NovRoadWest) { if (westpillarbroke hasnt general) " There a single black pillar rises, nearly as high as the wall."; else " There a single black pillar rises, nearly as high as the wall; \ and another leans crazily, almost touching the first."; } else { " There a black pillar rises on either side, each nearly as high as the wall."; } ], before [; if (action ~= ##Examine) "The wall is nearly half a mile away."; ], has scenery; Nearby novchimneyroadroad "dirt road" with name "dirt" "abandoned" "road", description "The road was wide once, you think, but weeds fill the ruts and push in \ from the edges. Just about all of what's left is covered with a smooth olive \ moss.", before [; Search: <>; ], has scenery; Nearby novmoundsfar "mounds and ridges" with name "mound" "mounds" "stony" "ridge" "ridges", description "Stony ridges and low, overgrown mounds are visible in the meadow to the west.", before [; Examine: rfalse; default: "They're off to the west. You'll have to approach them."; ], has scenery; Object NovMounds "Fields By Road" with name "road" "stub" "chimney" "wall", description "This was probably a building once. Those ridges lie straight and \ at right angles; the rotted logs are tumbled too close to be natural. Nothing \ but field, now. A few mounds by the foundation were probably something once; \ although a bright vine on one catches your notice. The broken chimney to the \ east marks the old road.", cant_go "Once you push much beyond the old foundations, the meadow plants turn \ thick and tangled. It's not worth the effort.", e_to NovChimneyRoad, u_to CantGoThatWay, d_to CantGoThatWay, has light outdoors; Nearby novruins "ruins" with name "rotted" "rotten" "log" "logs" "ridge" "ridges" "ruins" "foundation", description "They're obviously long left to decay. But you don't find \ much else of interest.", before [; Search, LookUnder, LookBehind: <>; Take, Pull: "Nothing of the ruins looks worth taking."; ], has scenery; Nearby novruinweeds "meadow plants" with name "weeds" "weed" "plant" "plants" "meadow", description "Grassy things and things with leaves. You're no expert. But the \ shades of green are pretty, sweeping in slow waves with the spicy autumn wind.", before [; Take, Pull: "You haven't any use for the meadow plants."; Smell: "The weeds smell dusty, with a hint of green."; Taste, LookUnder, Search: <<(action) novroadmoss>>; ], has scenery; Nearby novmound "mounds" with name "mound" "mounds", description "The mounds are just a few feet high, and overgrown; it's hard to \ tell what was down there. But a strikingly yellow vine crawls over one of them.", before [; LookUnder, Search: if (self has general) "You find nothing else."; give self general; move plastic to player; "You poke under the vines that cover the mound. Just dirt... no, there's \ a bit of blue showing. You tug at it, then twist, trying to dislodge the \ vine tendrils that clutch at it. Finally the scrap comes away in your hand."; ], has scenery; ! general means the plastic has been found. Nearby moundvine "yellow vine" with name "yellow" "vine" "vines", describe [; rtrue; ], description [; print "The vine is actually a muddy color, but the leaves are broad and \ streaked with bright yellow. Uncounted fine tendrils root deeply into \ the mound."; if (oilpod1 in self) { print " A single fat red pod, about the size of your fist, clings to the \ vine at one point."; } new_line; return; ], before [; Touch: "You reach out and brush one leaf, hesitantly. The leaf wiggles. \ No horrible screaming noises ensue; \ no carnivorous roots whip around your hand. Just a vine."; Take, Pull: "The vine is anchored by a multitude of roots."; Smell: "The vine has a sharp, sweetish odor. It's not very pleasant."; Ignite: "The vine sizzles where the flame touches it, and an oily sap drips \ and sparkles. But nothing else seems to happen."; Search, LookUnder, LookBehind: <>; Receive: print "Putting things on "; DefArt(self); " would achieve nothing."; ], after [; LetGo: if (IsOilPod(noun) == 0) { print "A vine with ", (a) noun, " growing on it? Weird. [BUG]^"; rtrue; } "The pod gives ripely when you touch it. It snaps free, and \ a drop of oily fluid leaks from the stem."; ], has static supporter; Object NovGateRoad "Road at Gate" with short_name [; if (novgate hasnt open) print "Road at Gate"; else print "Road at Open Gate"; rtrue; ], name "forest" "vine" "vines", description [; print "The wall looms here, streaked gold with sideways sunlight. The finely-etched \ stone blocks are each wider than you can reach; they file at least forty \ feet above you. The gate... would be huge anywhere else. It's \ a square of dark wood half the wall's height, "; if (novgate hasnt open) print "sealing the road."; else print "suspended above the road."; print " The road runs from the gate towards the distant forest in the south.^"; rtrue; ], n_to [; if (novgate hasnt open) <>; return novgate; ], s_to [; print "You stroll for a while, back to the ruined chimney.^"; return NovChimneyRoad; ], w_to [; print "You approach the base of the west pillar.^"; return NovRoadWest; ], e_to [; print "You approach the base of the east pillar.^"; return NovRoadEast; ], ne_to "The wall stands that way.", nw_to "The wall stands that way.", cant_go [; print "The road leads south from the gate, and the \ massive pillars stand east and west."; if (westpillarbroke in NovRoadWest) print " Well, one stands, and -- never mind."; new_line; rtrue; ], before [; Go: if (noun == n_obj || noun == novgate) { if (novgate has open) { print "Wide as it is, the gateway presses briefly around you with its \ sensation of weighty stone; but sunlit hills are beyond.^"; } } ], has light outdoors; Nearby novroadpillars "metal pillars" with name "metal" "pillars", describe [; if (westpillarbroke in NovRoadWest) { if (westpillarbroke has general) { "^The pillar to the east still stands, but the western one tilts \ wildly over your head. It leans toward its partner as if it had \ a secret to impart. But bright sky slices thin between the \ two dark shapes."; } else { "^The pillar to the east still stands, but the western one lies \ crumpled flat on the ground before the gate."; } } "^On either side of the gate, only a few feet from the wall, stands a massive \ metal pillar. Each is almost as wide as you are tall, and they reach \ nearly to the top of the wall."; ], description [; if (westpillarbroke in NovRoadWest) { if (westpillarbroke hasnt general) { "They're old, rust-streaked. The west one lies fallen at the foot \ of the gate. Its cable is broken too; it dangles loose from the \ top of the west gate-track."; } else { "They're old, rust-streaked. The west one leans above you, suspended \ by its cable, which makes an angled line back to the top of the \ west gate-track."; } } "They're old, rust-streaked; the west one even has yellowish \ vines wreathing the top. But they daunt you nevertheless. They \ clearly have something to do with the gate, for twin cables run from \ the tops of the pillars to the tops of the gate-side tracks."; ], before [; Examine: rfalse; default: "The pillars are a few yards to each side of the road. You'll have to \ move to the east or west to reach them."; ], has static; Nearby novgate "wooden gate" with name "wood" "wooden" "gate" "track" "tracks", description [; print "The gate is a cross-planked affair of dark old wood. It's twenty feet \ high at least"; if (self has open) print ", and suspended fifteen feet above the roadway"; print ". The edges of the gate are set onto twin metal tracks that run all \ the way up this face of the wall. \ You can also make out cables -- glinting; metal cables? \ -- which run from the top corners of the gate, up along the tracks, and then \ across to the tops of the pillars."; if (westpillarbroke in NovRoadWest && westpillarbroke hasnt general) { print " The east one, anyway."; } new_line; rtrue; ], door_dir n_to, door_to NovPastGate, before [; Enter: if (self hasnt open) "There's a gate in the way, and it's the size of a small barn."; rfalse; Climb: "The beams of the gate are too massive to get a grip on, and the gate-tracks \ are too smooth."; Search, LookBehind, LookUnder: "Peering between two beams, you can see the road disappearing over a rise \ to the north. Beyond that, in the distance, ivy-wound towers delicately \ finger the sky."; Open: if (self has open) "The gate is already open."; "With a desperate hope that nobody is watching, you brace yourself under \ a beam and heave. The gate pays no attention.^^You heave again. The \ gate responds with a finely-honed disdain.^^You give up."; Close: if (self hasnt open) "The gate is already closed."; "The gate is well out of your reach, not that your reach could do much to it \ in any event."; ], has scenery door; ! open means open. Nearby novroadgatecables "cables" with name "metal" "cable" "cables", description [; print "The cables run from the top corners of the gate, up along the tracks \ that hold the edge-beams of the gate."; if (westpillarbroke in NovRoadWest) { if (westpillarbroke hasnt general) { " At the top, the east cable stretches across a few feet of space \ to the top of its column. The west cable just hangs broken."; } else { " At the top, the cables stretch across to the tops of the columns. \ A few feet on the east side, that; but on the west, the cable \ makes a long taut angle to the top of the leaning pillar."; } } " At the top the cables stretch across a \ few feet of space to the tops of the columns; but you can see nothing further \ from here."; ], before [; Follow: <>; Examine: rfalse; default: "The cables are not within reach."; ], has scenery; Nearby novgateroadwall "stone wall" with name "immense" "stone" "wall", before [; Examine: <>; Climb: "The wall may be old, but its craft is astonishing. You can barely fit \ a fingertip between two blocks. Climbing is out of the question."; Attack: "Nothing happens."; ], has scenery; Nearby novgateroadroad "dirt road" with name "dirt" "abandoned" "road", description "The road was wide once, you think, but weeds fill the ruts and push in \ from the edges. Just about all of what's left is covered with a smooth olive \ moss. The road runs up to the gate in the wall.", before [; Search: <>; ], has scenery; Object NovRoadWest "By the West Pillar" with name "road" "vine" "vines", description [; print "You are at the foot of the west pillar;"; if (westpillarbroke notin self) print " it and the wall lean"; else print " the wall leans"; print " dangerously against the violet sky. The road"; if (novgate hasnt open) print " and the closed gate"; else print " and the open gate"; " lie east."; ], cant_go "There's nothing much in that direction.", e_to NovGateRoad, in_to [; if (westpillarbroke in self) <>; if (westpillar hasnt open) <>; return westpillar; ], u_to [; if (westpillar in self) <>; if (westpillarbroke in self) <>; "Look, pal, up just isn't an option. [BUG]"; ], n_to "The wall stands that way.", ne_to [; <>; ], nw_to [; <>; ], has light outdoors; Nearby novroadwestwall "stone wall" with name "immense" "massive" "stone" "wall", description "It's no different here. Forty feet high, close-fitted stone.", before [; Climb: <>; ], has scenery; Nearby novgatewest "gate" with name "wood" "wooden" "gate", description [; if (novgate has open) "The gate is open, raised high above the road."; else "The gate is still closed."; ], before [; Examine: rfalse; default: "The gate is east of here. You'll have to approach it."; ], has scenery; Nearby westtrackcable "track and cable" with name "track" "gate-track" "cable", description [; if (westpillar in NovRoadWest) { "The cable runs from the top corner of the gate, up along the gate-track to \ the top of the wall, and across to the top of the pillar that stands here."; } else { if (westpillarbroke has general) { "The cable runs from the top corner of the gate, up along the gate-track to \ the top of the wall, and slants down to the top of the leaning pillar."; } else { "The cable runs from the top corner of the gate, and up along the gate-track to \ the top of the wall, where a broken end hangs loose."; } } ], before [; Examine: rfalse; default: "That is out of reach."; ], has scenery; Nearby westpillar "west pillar" with name "west" "w" "metal" "pillar" "small" "hatch" "door" "hinge" "hinges" "base" "rust", describe [; if (self has open) "^A small hatch stands open at the pillar's base."; rtrue; ], description [; print "The pillar is almost as wide as you are tall, and reaches \ nearly to the top of the wall. It's badly streaked and patched \ with corrosion. You can even see yellowish vines near the top, crawling down \ the sides and out along the cable which runs to the gate-track."; print " There's a small hatch"; if (self hasnt open) { print " outlined in"; if (self has general) print " oily"; print " rust at the pillar's base."; } else print " standing open at the pillar's base."; new_line; rtrue; ], door_to WestPillarIn, door_dir in_to, before [ ix; Enter: if (self hasnt open) "The small hatch is closed."; Climb: "There's no way up the outside of the pillar."; Attack, KnockOn: print "The pillar emits a gentle ", (emphstring) "boonnng."; new_line; rtrue; Push, Pull: if (westslab hasnt general) { print "A terrible creaking, and the pillar sways just a bit. It must \ be even more corroded than it looks. And then you hear a faint snap; \ followed by a rumbling high above.^"; StartDaemon(westslab); rtrue; } else { if (westslab notin WestPillarIn) { "The pillar stings your hands with its vibration. You draw \ back, startled."; } ! Now, the tests print "You heave at the pillar; a faint sway encourages you. You \ lean your full weight. It gives more... and, \ with a terrible howl, begins to buckle. Rusty shards spray from \ the ancient metal.^^The pillar, slowly, leans.^^"; if (westpulley has general) { remove self; move westpillarbroke to NovRoadWest; give westpillarbroke ~general; "You see the cable slide free of the top of the pillar, as the pillar \ moves away from the gate-track. Then the pillar is shrieking its \ ruin down against the blind earth."; } if (westpulley hasnt general && eastpulley hasnt general) { remove self; move westpillarbroke to NovRoadWest; give westpillarbroke ~general; "Then it is swinging around; the pillar is caught by the cable that \ runs from its top to the gate-track. Below, the gate twitches. \ You stare as the west corner of the gate jerks up, just a thread.^^\ But no more. The pillar slams into the wall with a splitting \ note; and the cable snaps. The pillar screams and drops to its \ ruin."; } if (westpulley hasnt general && eastpulley has general) { OpenNovGate(); remove self; move westpillarbroke to NovRoadWest; give westpillarbroke general; "Then it is swinging around; the pillar is caught by the cable that \ runs from its top to the gate-track. Below, the gate twitches. \ You stare as the west corner of the gate jerks up, just a thread. \ Then the east side rises as well. The pillar slams into the wall, \ and scrapes; it is still leaning.^^\ The gate rises, rises, as the west pillar falls. The cables whine and \ hum. But they hold; and the pillar slows, approaching its mate to \ the east.^^\ A final creak. Stillness. The west pillar hangs suspended, leaning \ towards the east pillar which stands still straight; nearly reaching \ it; not quite touching. The gate is open."; } "Then an elf crawls out and shoves it back upright. [BUG]."; } Lock, Unlock: "The hatch isn't locked; it's just very very old."; Search, LookBehind: if (self hasnt open) "The small hatch is closed."; "It's dim, but you can make out metal rungs leading up the inside wall."; Open: if (self has open) "The hatch is already open."; if (self hasnt general) "You pry at the hatch. Rust sifts down from the rim, but the \ hinges are solidly corroded. You do, however, \ feel the entire pillar swaying and creaking gently. It's \ a little disturbing."; Receive: ix = IsOilSource(noun); if (ix == 0) return L__M(##PutOn,3,second); remove noun; give self general; if (ix == 3) print "You crush the pod;"; else print "You empty the jar;"; " oil soaks down over the rusty hinges. It seems \ to evaporate almost instantly, but a slight glistening remains \ which bodes well."; ], after [; Open: print "More rust flakes down, and the hinges sound like they're grinding your \ bones, but you manage to lever the hatch open.^"; if (westslab hasnt general) { print "^The pillar sways just a bit. It must \ be even more corroded than it looks. And then you hear a faint snap, \ followed by a rumbling high above.^"; StartDaemon(westslab); } rtrue; Close: "Shoving the hatch to is easier -- slightly -- than opening it was."; ], has static door supporter openable; ! open means open, general means oiled. Object westpillarbroke "west pillar" with name "west" "w" "metal" "pillar" "small" "hatch" "door" "hinge" "hinges" "base", describe [; if (self has general) "^The pillar leans drunkenly to the east, suspended by its cable. The \ base is twisted like dry paper."; else "^The pillar lies on the ground, here and east, flat as a foot. Its base is \ twisted like dry paper."; ], description [; if (self has general) print "The pillar hangs astonishingly, suspended by one taut line: the cable \ which angles from its top back to the top of the gate-track. The \ pillar is"; else print "The pillar is so much rusty wreck. It's"; " mostly torn away from its base, \ but the metal is crumpled around the slab that's still inside. There's \ no way in."; ], before [; Enter: "The hatch hangs loose from a distorted frame, but there's no way in. \ Whatever room there was in front of the dull slab is gone now, \ tight with twisted metal. The gaping tears at the base of the \ pillar are the same."; Climb: if (self has general) "There's no way up the outside of the pillar."; "It's lying on the ground."; Attack, KnockOn: "The pillar emits a muffled clunk."; Push, Pull: if (self has general) "The pillar sways gently on its cable, and the gate creaks \ alarmingly. You stop."; "The pillar does not move."; Search, LookBehind: "You can make out nothing inside but more rusty shreds."; Open, Close: "The hinges are badly bent. No amount of oil will move them now."; ], has static; ! general means leaning; ~general means on ground. Object WestPillarIn "Inside the West Pillar" with description "The pillar rises through hollow dimness, lit only by the daylight \ pouring through the hatch at your feet. Far above, a few needles of light \ show that the top of the pillar is decaying as badly as the rust-eaten \ walls around you. A set of narrow rungs ascends.", out_to [; print "You worm your way out to sunlight.^"; return NovRoadWest; ], u_to [; ShowLadderMessage(u_obj); print " The pillar sways slightly to your movement."; new_line; return WestPillarUp; ], d_to "You are at the bottom of the shaft. The floor seems to be some \ wet stony substance, but it is even with the ground outside.", cant_go "You can only climb up or out.", has light; Nearby westpillarhatch "hatch" with name "small" "hatch" "door", before [; Enter: <>; Close, Pull: "The hatch doesn't seem to be designed to close from the inside. \ This is probably best."; ], has scenery; Object WestPillarUp "West Pillar, Top" with description "You cling to the rungs at the top of the metal shaft. The walls \ are miserably corroded, and there are several rust-edged holes around you. \ The roof above you is solid, but it is not metal; it's an odd black substance. \ It's also heavily overgrown with yellowish vines that crawl in and out of \ the pillar.", cant_go "The holes are too small to fit more than a hand through. The only way \ out is the hatch far below.", d_to [; ShowLadderMessage(d_obj); new_line; return WestPillarIn; ], u_to "This is as high as the pillar goes, as high as the ladder goes, and really \ much higher than you wanted to go.", out_to [; <>; ], before [; Jump: "Better not."; Drop: "There's nowhere to put anything down here."; Examine: switch (noun) { d_obj: "The floor is very far away."; u_obj: <>; default: rfalse; } ], has light; Nearby westpillarholes "holes" with name "hole" "holes" "small" "gap", description "There are several irregular rusty holes near the top of the \ pillar. There's also one which is obviously meant to be there; the cable \ runs out through it.", before [; Enter: <>; Search: "You can see the wall outside, and the track that runs up it, across \ from the pillar. The cable runs out one of the holes, to the top \ of the track, and descends to the gate."; Attack, Rub: "You scratch away some of the rust, but you strike metal before \ the hole gets much bigger."; ], has scenery; Nearby westpillarupwall "stone wall" with name "immense" "massive" "stone" "wall" "track" "gate" "gate-track", before [; Examine: <>; default: "That's outside the pillar."; ], has scenery; Nearby westpillarvine "yellowish vine" with name "yellow" "yellowish" "vine" "vines", describe [; rtrue; ], description [; print "The vine is actually a muddy color, but the leaves are broad and \ streaked with bright yellow. Uncounted fine tendrils root deeply into \ the black surface above. The vines thread in and out through the holes in \ the pillar."; switch (children(self)) { 0: new_line; return; 1: " A single fat red pod clings to the vine at one point."; 2: " Two fat red pods cling to the vine."; 3: " Three fat red pods cling to the vine."; default: " [BUG] Too many pods cling to the vine."; } return; ], before [; Touch: "Just a vine."; Take, Pull: "The vine is anchored by a multitude of roots."; Smell: "The vine has a sharp, sweetish odor. It's not very pleasant."; Ignite: "The vine sizzles where the flame touches it, and an oily sap drips \ and sparkles. But nothing else seems to happen."; Search: <>; Receive: print "Putting things on "; DefArt(self); " would achieve nothing."; LetGo: if (IsOilPod(noun) == 0) { print "A vine with ", (a) noun, " growing on it? Weird. [BUG]^"; rfalse; } while (child(self) ~= nothing) { move child(self) to player; } "Carefully, you pull all three pods from the vine."; ], ! after [; ! LetGo: ! "The pod gives ripely when you touch it. It snaps free, and \ ! a drop of oily fluid leaks from the stem."; ! ], has static supporter; Nearby westpillarroof "roof" with name "roof" "odd" "black" "substance", description "The top of the pillar is sealed with a cap of some smooth black \ substance. You can't tell much about it, but the vines have nearly covered it.", has scenery; Nearby westpulley "rusty pulley" with name "large" "rusty" "metal" "wheel" "pulley" "axle", describe [; "^A large metal pulley is suspended here, on an axle that runs across \ the pillar just below the ceiling. A cable runs into the pillar, around \ the pulley, and descends a few feet to a frayed end."; ], description [; print "The wheel is over a yard wide; its axle, which runs east-west, \ is as thick as your wrist. Both pulley and axle are as thick with rust"; if (self hasnt general) print "."; else print ", though your oil shines in the crevices."; " A cable runs in from \ a hole to the north -- a deliberate hole, not corrosion -- and wraps \ several times around the pulley. But from there it descends only a few feet. \ The cable-end is frayed and ragged."; ], before [ ix; Receive: ix = IsOilSource(noun); if (ix == 0) return L__M(##PutOn,3,second); remove noun; give self general; if (ix == 3) print "You crush the pod;"; else print "You empty the jar;"; " oil soaks down over the pulley. It seems \ to evaporate almost instantly, but the joint and axle now glisten \ slightly in the dim light."; Turn, Push, Pull: if (self hasnt general) "The pulley is rusted solidly in place."; "You pull back and forth on the wheel, as hard as you can without losing \ your grip on the ladder. The oil has helped, but you're just not strong \ enough to turn it much."; ], has static supporter; ! general means oiled. Nearby westcable "cable" with name "metal" "frayed" "ragged" "cable" "rope" "end", description "The cable hangs down only a few feet, to a frayed, ragged end. It's \ wrapped several times around the great pulley; and from there, it leaves the \ pillar through a small gap to the north. Outside, you can see that the cable \ runs across a yard of empty space to the top of the stone wall. There it passes \ into the metal track which descends this face of the wall.", before [; Pull, Take: if (westpulley hasnt general) "The cable wraps several times around the pulley. Between the tight \ loops and the long years of rust and weight, it's completely immobile. \ You can't even unwrap it much. And pulling on the cable above the pulley \ is hopeless; you'd be lifting the entire gate below."; else "Pulling up on the cable with all your force, you manage to turn the wheel \ about half an inch."; Push, Attack: "The dangling cable-end swings gently."; Turn: "Maybe you want to turn the pulley?"; Climb: print "It doesn't ", (emphstring) "go", " anywhere. Unless you enjoy \ plummeting.^"; rtrue; Tie: "The cable is too stiff to tie."; ], has scenery; Nearby westslab "dull metal slab" with name "dull" "metal" "slab", describe [; if (self in WestPillarIn) "^A dull metal slab rests on the ground in the shaft, making this an uncomfortable \ squeeze. It's almost as broad as the shaft, and taller than you."; else "^A dull metal slab hangs here. [BUG]"; ], description "It's a thick block, not perfectly rectangular; the edges are a \ bit lumpy. The dim light brings out hints of hammer marks in the surface. The \ slab is nearly as wide as the shaft, although there's room to stand \ in front of it. Spliced to the top is a metal cable; it lies in untidy loops \ across the slab and spills onto the ground.", before [; Take: "Perhaps you don't understand the situation here. This thing is \ somewhat taller and wider than you, and it's solid metal."; LookUnder: "There doesn't seem to be anything under the slab. Of course, if there \ was anything, it would be pulverized."; LookBehind: "You pull yourself up a few rungs and look down. There's \ nothing behind the slab."; Push, Pull, Turn: "For all it moves, it might have grown here since sea split from sky."; Touch: "The surface is rather uneven."; ], number 0, ! used by daemon daemon [; self.number = self.number + 1; give self general; if (self.number < 2) { "^The rumbling noise rapidly grows louder."; ! and return } StopDaemon(self); move self to WestPillarIn; switch (location) { WestPillarIn: deadflag = 1; "^Something metallic, hard, and very, very heavy roars down from the \ darkness above."; NovRoadWest: print "^There is a concussive ", (emphstring) "thump", " within the \ pillar. Then -- silence, broken only a faint rattling which rapidly \ dies away.^"; rtrue; } ], has static transparent; ! general means it's falling (the cable is broken). Object westslabcable "cable" westslab with name "metal" "frayed" "ragged" "cable" "rope" "end", description "The cable is about thirty feet long. \ One end is spliced to itself through a \ hole in the slab; the other is just a frayed end. \ The cable spills loosely across the ground.", before [; Take, Pull: "You can't unmoor the cable from the slab."; Climb: "You can't climb something which is lying on the ground."; Tie: "The cable is too stiff to tie."; ], has scenery; Object NovRoadEast "By the East Pillar" with name "gate" "road" "vine" "vines", description [; print "You are at the foot of the east pillar; it and the wall lean dangerously \ against the violet sky. The road"; if (novgate hasnt open) print " and the closed gate"; else print " and the open gate"; " lie west."; ], cant_go "There's nothing much in that direction.", w_to NovGateRoad, in_to [; if (eastpillar hasnt open) <>; return eastpillar; ], u_to [; <>; ], n_to "The wall stands that way.", nw_to [; <>; ], ne_to [; <>; ], has light outdoors; Nearby novgateeast "gate" with name "wood" "wooden" "gate", before [; Examine: <>; default: "The gate is west of here. You'll have to approach it."; ], has scenery; Nearby easttrackcable "track and cable" with name "track" "gate-track" "cable", description [; "The cable runs from the top corner of the gate, up along the gate-track to \ the top of the wall, and across to the top of the pillar that stands here."; ], before [; Examine: rfalse; default: "That is out of reach."; ], has scenery; Nearby novroadeastwall "stone wall" with name "immense" "massive" "stone" "wall", before [; Examine: <>; Climb: <>; ], has scenery; Nearby eastpillar "east pillar" with name "east" "e" "metal" "pillar" "small" "hatch" "door" "hinge" "hinges" "base" "rust", describe [; if (self has open) "^A small hatch stands open at the pillar's base."; rtrue; ], description [; print "The pillar is almost as wide as you are tall, and reaches \ nearly to the top of the wall. It's somewhat streaked \ with corrosion. A cable runs from the top to the top of the gate-track."; print " There's a small hatch"; if (self hasnt open) { print " outlined in"; if (self has general) print " oily"; print " rust at the pillar's base."; } else print " standing open at the pillar's base."; new_line; rtrue; ], door_to EastPillarIn, door_dir in_to, before [ ix; Enter: if (self hasnt open) "The small hatch is closed."; Climb: "There's no way up the outside of the pillar."; Attack, KnockOn: print "The pillar emits a gentle ", (emphstring) "boonnng."; new_line; rtrue; Push, Pull: "The pillar stands firm."; Lock, Unlock: "The hatch isn't locked; it's just very very old."; Search, LookBehind: if (self hasnt open) "The small hatch is closed."; "It's dim, but you can make out metal rungs leading up the inside wall."; Open: if (self has open) "The hatch is already open."; if (self hasnt general) "You pry at the hatch. Rust sifts down from the rim, but the \ hinges are solidly corroded."; Receive: ix = IsOilSource(noun); if (ix == 0) return L__M(##PutOn,3,second); remove noun; give self general; if (ix == 3) print "You crush the pod;"; else print "You empty the jar;"; " oil soaks down over the rusty hinges. It seems \ to evaporate almost instantly, but a slight glistening remains \ which bodes well."; ], after [; Open: print "More rust flakes down, and the hinges sound like they're grinding your \ bones, but you manage to lever the hatch open.^"; rtrue; Close: "Shoving the hatch to is easier -- slightly -- than opening it was."; ], has static door supporter openable; ! open means open, general means oiled. Object EastPillarIn "Inside the East Pillar" with description "The pillar rises through hollow dimness, lit only by the daylight \ pouring through the hatch at your feet. \ A set of narrow rungs ascends the rust-touched wall of the shaft.", out_to [; print "You worm your way out to sunlight.^"; return NovRoadEast; ], u_to [; if (eastslab in EastPillarIn) print "There's just enough room in front of the slab. "; ShowLadderMessage(u_obj); if (eastslab in EastPillarUp) print " As you approach the top, you find that you must squeeze \ around a solid metal shape that hangs in the shaft."; new_line; return EastPillarUp; ], d_to "You are at the bottom of the shaft. The floor seems to be some \ wet stony substance, but it is even with the ground outside.", cant_go "You can only climb up or out.", has light; Nearby eastpillarhatch "hatch" with name "small" "hatch" "door", before [; Enter: <>; Close, Pull: "The hatch doesn't seem to be designed to close from the inside. \ This is probably best."; ], has scenery; Object EastPillarUp "East Pillar, Top" with description "You cling to the rungs at the top of the metal shaft. \ The walls are somewhat corroded, mostly beneath a small hole in the north \ side of the pillar. \ The roof above you is solid, but it is not metal; it's an odd black substance.", cant_go "The hole is too small to fit more than a hand through. The only way \ out is the hatch far below.", d_to [; ShowLadderMessage(d_obj); new_line; return EastPillarIn; ], u_to "This is as high as the pillar goes, as high as the ladder goes, and really \ much higher than you wanted to go.", out_to [; <>; ], before [; Jump: "Better not."; Drop: "There's nowhere to put anything down here."; Examine: switch (noun) { d_obj: "The floor is very far away."; u_obj: <>; default: rfalse; } ], has light; Nearby eastpillarholes "holes" with name "hole" "small" "gap", description "There's a small gap in the north wall of the pillar; the cable \ runs out through it.", before [; Enter: <>; Search: "You can see the wall outside, and the track that runs up it, across \ from the pillar. The cable runs out one of the holes, to the top \ of the track, and descends to the gate."; ], has scenery; Nearby eastpillarupwall "stone wall" with name "immense" "massive" "stone" "wall" "track" "gate" "gate-track", before [; Examine: <>; default: "That's outside the pillar."; ], has scenery; Nearby eastpillarroof "roof" with name "roof" "odd" "black" "substance", description "The top of the pillar is sealed with a cap of some smooth black \ substance. You can't tell much about it.", has scenery; Nearby eastpulley "rusty pulley" with name "large" "rusty" "metal" "wheel" "pulley" "axle", describe [; print "^A large metal pulley is suspended here, on an axle that runs across \ the pillar just below the ceiling. A cable runs into the pillar, around \ the pulley, and descends"; if (eastslab in EastPillarUp) " to a dull slab of metal which fills much of the shaft just below you."; else " into the shaft."; ], description [; print "The wheel is over a yard wide; its axle, which runs east-west, \ is as thick as your wrist. Both pulley and axle are as thick with rust"; if (self hasnt general) print "."; else print ", though your oil shines in the crevices."; print " A cable runs in from \ a hole to the north and wraps \ several times around the pulley. From there"; if (eastslab in EastPillarUp) " it descends tautly to the slab."; else " it descends tautly into the dimness of the shaft."; ], before [ ix; Receive: ix = IsOilSource(noun); if (ix == 0) return L__M(##PutOn,3,second); remove noun; give self general; if (ix == 3) print "You crush the pod;"; else print "You empty the jar;"; " oil soaks down over the pulley. It seems \ to evaporate almost instantly, but the joint and axle now glisten \ slightly in the dim light."; Turn, Push, Pull: if (self hasnt general) "The pulley is rusted solidly in place."; "You pull back and forth on the wheel, as hard as you can without losing \ your grip on the ladder. Nothing happens. \ Your oil may have done its work, but there's \ still a huge slab of metal on the end of the cable and an even larger \ gate on the other."; ], has static supporter; ! general means oiled. Nearby eastcable "cable" with name "metal" "cable" "rope", description [; print "The cable hangs down the center of the shaft, to the metal slab"; if (eastslab in EastPillarUp) print " which is suspended here."; else print " which is suspended far below."; " The cable is \ wrapped several times around the great pulley; and from there, it leaves the \ pillar through a small gap to the north. Outside, you can see that the cable \ runs across a yard of empty space to the top of the stone wall. There it passes \ into the metal track which descends this face of the wall."; ], before [; Pull, Take: "The cable wraps several times around the pulley, and it's stone-taut both \ above and below."; Push, Attack: "The cable does not move."; Turn: "Maybe you want to turn the pulley?"; Climb: print "You grab the cable. A few seconds of sliding and a bit of rope-burn brings \ you to the slab. It barely shifts under your weight. \ And standing here doesn't seem to be very exciting; \ so you swing over to the ladder and descend the rest of the way.^"; PlayerTo(EastPillarIn, 2); ! normal lookage for player movement. rtrue; Tie: "The cable is too stiff to tie."; ], has scenery; Nearby eastslab "dull metal slab" with name "dull" "metal" "slab", describe [; if (self in EastPillarUp) rtrue; else "^A dull metal slab hangs in the shaft, just above your head."; ], description [; print "It's a thick block, not perfectly rectangular; the edges are a \ bit lumpy. The dim light brings out hints of hammer marks in the surface. The \ slab is nearly as wide as the shaft, although there's room to climb around it."; if (self in EastPillarUp) print " Spliced to the top is a metal cable which runs up to the pulley."; new_line; rtrue; ], before [; Take: "Perhaps you don't understand the situation here. This thing is \ somewhat taller and wider than you, and it's solid metal."; LookUnder: "There's nothing below the slab."; LookBehind: "There's nothing behind the slab."; Push, Pull, Turn: "You give the slab a shove, and it swings by a fraction \ of an inch."; Touch: "The surface is rather uneven."; Enter: if (self in EastPillarUp) <>; ], has static; Object eastslabfar "dull metal slab" EastPillarIn with name "dull" "metal" "slab", description [; if (self in EastPillarUp) "The slab hangs far below, a black shape against the light spilling \ in through the hatch."; else "You can barely make out a black shape hanging far above you."; ], before [; Examine: rfalse; default: if (self in EastPillarUp) "The slab is far below you."; else "The slab is far above you."; ], has scenery; ! This sets the state for the gate mechanism, without printing anything. [ OpenNovGate val; if (val == 0) { ! open it give novgate open; move eastslab to EastPillarIn; move eastslabfar to EastPillarUp; } else { ! close it give novgate ~open; move eastslabfar to EastPillarIn; move eastslab to EastPillarUp; } ]; Object pillarladder "set of rungs" with name "set" "of" "narrow" "metal" "ladder" "rung" "rungs", found_in WestPillarIn WestPillarUp EastPillarIn EastPillarUp, description "They're just curved metal rungs. They're not wide, but they're wide \ enough, and they're spaced much as any other ladder you've come across. The \ metal is rough and rusted; but it seems firm.", react_before [; Smell: if (noun == nothing) "The air here is cool and slightly damp, traced with rust, and very still."; ], before [; Push, Pull, Turn, Take: "The rungs are fixed in place, which is quite reassuring."; Attack: "The rungs are immobile."; Climb: if (location == WestPillarUp || location == EastPillarUp) { <>; } else { <>; } ], number 0, ! used by ShowLadderMessage has scenery absent; ! absent is switched by MoveToWorld. [ ShowLadderMessage dir; if (dir == u_obj) { pillarladder.number = pillarladder.number + 1; } switch (pillarladder.number) { 1: print "You scurry easily"; 2: print "You climb quickly"; 3: print "You clamber"; 4: print "You haul yourself"; default: print "Once more, you drag yourself"; pillarladder.number = pillarladder.number - 1; } if (dir == u_obj) print " up"; else print " down"; print " the ladder."; ]; ! --------------------------------- Object NovPastGate "Road Beyond Gate" with name "gate" "rise", description "The wall stands, massive and unyielding, to the south. The road issues \ from its open gate, though, and leaps merrily over a rise to the north, and \ beyond it. Ivy-wound towers are visible, somewhere at the road's end.", s_to [; print "You duck, quite unnecessarily, as you pass under the massive hanging \ gate.^"; return NovGateRoad; ], n_to NovBranchRoad, cant_go "The road leads north and south.", has light outdoors; Nearby novpastgatewall "stone wall" with name "immense" "massive" "stone" "wall", description "This side is the same as the other. Forty feet high, close-fitted stone.", before [; Climb: <>; ], has scenery; Nearby novcastlefar "distant towers" with name "distant" "ivory" "tower" "towers" "ivy", description "Slender, ivory towers are visible beyond the rise, to the north.", before [; Examine: rfalse; default: "The towers are far to the north, beyond the rise."; ], has scenery; Nearby novpastgateroad "dirt road" with name "dirt" "abandoned" "road", description [; <>; ], before [; Search: <>; ], has scenery; Object NovBranchRoad "Branched Road" with description "A dawn-tale, ivory castle stands far to the north, heavily strung \ with ivy and reddening sunlight. The road runs towards it, and back to the \ south, over a hill that hides the stone wall. A branch of the road also leads \ northwest, towards a dome, which seems to float in a magenta lake.", s_to NovPastGate, n_to NovTrenchS, nw_to [; print "The magenta lake resolves into a broad growth of lichen that spreads \ raggedly around the dome.^"; return NovByDome; ], cant_go "The road leads north, northwest, and south.", has light outdoors; Nearby novfirstbucky "pile of pipes" with name "large" "pile" "pipe" "pipes" "cable" "cables", initial "A large pile of pipes and cable is sprawled untidily by the road.", description "The pipes are of various lengths, most longer than your body, though \ no thicker than your wrist. The metal cables run in and out of their open ends. \ Everything is heavily stained with rust, and a few of the cables seem to be \ broken.", before [; Pull, Push, Take: "You pull on a pipe, and a few others shift and clank. But the whole pile is \ laxly bound together, and much too heavy to move."; Search, LookUnder: "There's nothing much under the pile but rust-stained earth. You do notice that \ a few of the cables are anchored in the ground."; Climb, Enter: "You crawl onto the middle of the pile. Nothing new is apparent, but for \ an uneasy rolling scrape beneath you, so you carefully scramble out."; ], has static; Nearby novcastlefar2 "distant castle" with name "distant" "ivory" "castle" "tower" "towers" "moat" "trench" "ivy", description "The castle is delicate and graceful; its ivory-white stone gleams \ beneath a carpet of vines. There seems to be a moat circling its base.", before [; Examine: rfalse; default: "The castle is far to the north."; ], has scenery; Nearby novdomefar "distant dome" with name "distant" "low" "wide" "grey" "dome" "magenta" "pool" "lake", description "You cannot see much detail; it's a low, wide dome, shining grey, \ perhaps wood or polished stone. It's surrounded by what looks like a magenta pool. \ Perhaps not, though; the color fades into the surrounding green, rather than \ ending at a sharp bank. You really can't tell.", before [; Examine: rfalse; default: "The dome is far to the northwest."; ], has scenery; Nearby novbranchroaderoad "dirt road" with name "dirt" "abandoned" "road", description [; <>; ], before [; Search: <>; ], has scenery; Object NovTrenchS "South of Moat" with name "gate", description "The main road ends here, at the edge of a deep dry moat. Or nearly dry; \ a trickle of dark water crawls past jagged rusty edges of iron, far below. A \ broad stone arch spans the trench, up to the ivy-choked facade of the castle. \ A smaller road follows the moat's curve, east and west.", s_to NovBranchRoad, e_to [; print "The road curves north as it circles the castle.^"; return NovTrenchE; ], w_to [; print "The road curves north as it circles the castle.^"; return NovTrenchW; ], n_to NovStoneBridge, cant_go "The main road leads south; the lesser roads run east and west, \ along the trench; and the bridge is north.", before [; Listen: return NovHumListen(); ], each_turn #r$NovHumEachTurn, has light outdoors; Nearby novbridgesouth "stone bridge" with name "broad" "stone" "bridge" "arch" "span", description "The bridge is as wide as the road. Low stone walls curve along its edges. \ It ends at the castle gate, beyond the moat.", before [; Enter, Climb: <>; LookUnder: <>; ], has scenery; Nearby novtrenchsroad "dirt road" with name "main" "smaller" "dirt" "abandoned" "road", description [; <>; ], before [; Search: <>; ], has scenery; Object novtrench "moat" with name "deep" "dry" "moat" "trench", found_in NovTrenchS NovTrenchE NovTrenchW, description [; print "The trench is at least thirty feet deep, and the same in width. It \ stretches right to the castle's base; the close-fitted stone blocks that \ line the far wall of the moat run right up into the castle wall. The moat's \ bottom is lined with long plates of iron, jagged and rusty, and foul water \ trickles past."; if (location == NovTrenchE) { give novtrenchbucky general; print " You can also see some pipes and cables down there, lying scattered \ across the iron plates."; } new_line; rtrue; ], before [; Smell: "Decay and old damp rust breathe up from the depths."; Search: print "You can make out nothing below but edged iron"; if (location == NovTrenchE) { give novtrenchbucky general; print ", and ruined pipes,"; } " and muck."; Empty, EmptyT: "Hardly."; Receive: print_ret "If you threw ", (the) noun, " in the trench, you'd never get it out."; JumpOver: "You would die."; Enter, Climb: "You lean, carefully -- the near wall is as smoothly masoned as the other. You \ would certainly slip and fall, to the waiting metal teeth."; ], has absent container open scenery; ! absent-switched Object novcastlepasttrench "castle" novtrench with name "ivory" "castle" "tower" "towers" "green" "ivy" "vine" "vines", description [; print "The castle rears into the sky, immense yet still graceful. Ivy vines \ entwine it even more thickly than you saw from a distance; green runs up the towers \ and dangles into the moat, and the ivory-white stone peeks out in ten thousand \ fringed gaps."; if (location == NovTrenchS) print " A gate lies open on this side of the castle."; else print " A balcony curves from this side of the castle, above."; new_line; rtrue; ], before [; Examine: rfalse; default: "The castle is on the far side of the moat."; ], has scenery; Object novtrenchiron "rusty iron plates" novtrench with name "jagged" "rusty" "edged" "iron" "long" "plate" "plates" "edges", description "The plates are undoubtedly meant to discourage invaders. Or... no. \ They look, indeed, more as if they're meant to maim and kill invaders.", before [; Examine: rfalse; default: "The iron is at the bottom of the trench, and you have no desire to climb down."; ], has scenery; Object NovStoneBridge "Stone Bridge" with name "bridge" "arch", description "This gentle, broad arch curves above the castle moat. It meets the \ road at the south bank. The north end widens directly into the castle gate -- or \ would, if the gate were not entirely blocked by masses of tangled vine. You \ can see no way through.", s_to NovTrenchS, n_to "Green ivy tangles and knots across the gate. You push aside a few vines, but nowhere \ near enough to make any progress.", before [; Listen: return NovHumListen(); ], each_turn #r$NovHumEachTurn, has light outdoors; Nearby novcastlefrombridge "castle" with name "ivory" "castle" "gate" "green" "ivy" "tangled" "vine" "vines" "masses", description "The castle rears into the sky, immense yet still graceful. Ivy vines \ entwine it even more thickly than you saw from a distance; green runs up the towers \ and dangles into the moat, and the ivory-white stone peeks out in ten thousand \ fringed gaps. A gate stands at the north foot of the bridge, but the ivy curtains \ it entirely.", before [; Examine: rfalse; Enter: <>; Climb: "You grapple the vines -- they sag abominably -- and pull yourself up. For a few \ yards you manage; but the ivy becomes more unstable as you ascend. Finally \ you drop back down, wondering irritably who could have arranged \ for the vines to be at once too heavy to break and too flimsy to climb."; Attack, Eat: "The vines are too tough."; Taste: "The vines are tasteless."; Smell: "The vines have no scent."; Ignite: "A bit of green fiber sizzles, but the vines are too sap-rich to burn."; Push, Pull, Take: "The vines are firmly anchored."; Search, LookBehind: "The space within the castle seems to be entirely choked with vines, as well."; ], has scenery; Nearby novtrenchfrombridge "moat" with name "deep" "dry" "moat" "trench", before [; Examine, Smell, Search, Empty, EmptyT: <<(action) novtrench>>; Receive: print_ret "If you threw ", (the) noun, " in the trench, you'd never get it out."; JumpOver: "You already are over the trench."; Enter, Climb: "There's no way down from here. In fact, from this vantage, you can easily \ see that there's no way down anywhere."; ], has container open scenery; Nearby novtrenchironfrombridge "rusty iron plates" with name "jagged" "rusty" "edged" "iron" "long" "plate" "plates" "edges", description "The plates are undoubtedly meant to discourage invaders. Or... no. \ They look, indeed, more as if they're meant to maim and kill invaders.", before [; Examine: rfalse; default: "The iron is at the bottom of the trench."; ], has scenery; Object NovTrenchE "East of Moat" with name "shade" "shadow" "balcony", description "The road curves around the east side of the castle, edging the trench. \ To the north, it falls into the shade of trees; forest has grown down to the castle's \ north edge.", cant_go "The road runs north and south here.", s_to [; print "The road curves west as it circles the castle.^"; return NovTrenchS; ], w_to "There is no way across the moat here.", n_to "Once within the forest, the road is rapidly overgrown with greenery \ and small trees. You turn back.", before [; Listen: return NovHumListen(); ], each_turn #r$NovHumEachTurn, has light outdoors; Nearby novtrenchbucky "pile of pipes" with name "scattered" "loose" "pile" "pipe" "pipes" "cable" "cables", describe [; if (self hasnt general) "^A plain brass lever juts up by the moat."; else "^A loose pile of pipes and cable lies scattered at the bottom of the moat. \ There's also a plain brass lever nearby."; ], description [; give self general; "The pipes are of various lengths, most longer than your body, though \ no thicker than your wrist. The metal cables run in and out of their open ends. \ Everything is heavily stained with mud and rust; and the iron plates have \ taken their pay, for several pipes are bent or \ split, and most of the cables seem to be broken."; ], before [; Examine: rfalse; default: if (self hasnt general) { give self general; } "The pipes and cables are at the bottom of the trench, out of reach."; ], has static; ! general means you've noticed it. Nearby buckyleverbroke "brass lever" with name "plain" "brass" "lever", description "An unmarked brass lever rises from the stone lip of the trench.", before [; Pull: "The lever clunks (with a bit of a rattle), and springs back."; Push: "The lever won't push."; ], has scenery; Nearby novtrencheroad "dirt road" with name "main" "smaller" "dirt" "abandoned" "road", description [; <>; ], before [; Search: <>; ], has scenery; Nearby novtrencheforest "forest to the north" with name "forest" "tree" "trees", description "The forest is thickly dappled with autumn color -- color \ which you should not see for months yet, and never so rich, not in the southern \ climate where you live. \ The trees are thick as well, old and crowded, choking the road \ that disappears into them.", before [; Climb, Touch: <<(action) novsouthroadforest>>; Enter: <>; ], has scenery; Object NovTrenchW "West of Moat" with name "shade" "shadow" "balcony", description "The road curves around the west side of the castle, edging the trench. \ To the north, it falls into the shade of trees; forest has grown down to the castle's \ north edge. A smaller road branches off towards a dome that squats to the southwest.", cant_go "The road runs north, south, and southwest here.", s_to [; print "The road curves east as it circles the castle.^"; return NovTrenchS; ], e_to [; if (buckybridge hasnt general) "There is no way across the moat here."; return buckybridge; ], n_to "Once within the forest, the road is rapidly overgrown with greenery \ and small trees. You turn back.", sw_to [; print "Patches of magenta lichen gradually crowd out the meadow-grass.^"; return NovByDome; ], before [; Go: if (noun == e_obj || noun == buckybridge) { if (buckybridge has general) { if (NovBalcony hasnt visited) print "You step gingerly onto the bridge. For all its delicacy, it \ barely sways, and you climb easily across the gaping moat.^"; else print "You climb across the delicate span.^"; } } Listen: return NovHumListen(); ], each_turn #r$NovHumEachTurn, has light outdoors; Nearby buckybridge "pile of pipes" with name "neat" "hexagonal" "web" "pile" "stack" "pipe" "pipes" "cable" "cables", initial [; if (buckybridge hasnt general) "A neat stack of pipes and cable sits by the edge of the trench. Close by, \ a plain brass lever juts from the stonework."; else "An airy web of pipes and cables arches neatly over the moat, touching the \ balcony. The lever juts from the stonework near its base."; ], description [; if (buckybridge hasnt general) "The pipes are of various lengths; they're arranged in a tapering \ hexagonal stack, wider than you are tall but only half your height. Metal \ cables run in and out of their open ends, forming a symmetrical web within \ the stack."; else "The pile has extended itself into a slim, fragile-looking arch over the moat. \ The pipes hang in an astonishing tapering helix -- no two touch, in fact, \ but the cables that run between their ends bind them into integrity."; ], door_dir e_to, door_to NovBalcony, before [; Pull, Push, Take: "The pipes are firmly bound together, and barely shift under your full weight."; Search, LookUnder: if (buckybridge hasnt general) "There's nothing much under the pile. You do notice that \ a few of the cables are anchored in the ground."; else "The web arches over the moat."; Climb: <>; Enter: if (buckybridge hasnt general) { "You crawl up to the middle of the pile. Nothing new is apparent, and the \ interior of the pile is too heavily cable-crossed to enter, so you \ scramble back down."; } rfalse; ], has static door open; ! general means up. Nearby buckylever "brass lever" with name "plain" "brass" "lever", description "An unmarked brass lever rises from the stone lip of the trench, just by \ the base of the pile of pipes.", before [; Pull: switch (novpowerring.number) { 0: "The lever clunks solidly, and springs back."; 1: "The lever clunks solidly, and springs back. You hear a faint \ hum from somewhere below, but it fades quickly."; 2: "The lever clunks solidly, and springs back. You hear a \ hum from somewhere below; the pile of pipes bounces for \ a moment, and the cables jerk taut. But then the sound \ fades and the pile settles."; 3: print "The lever clunks solidly, and springs back. A loud hum \ begins"; if (buckybridge hasnt general) { give buckybridge general; "... and the pile of pipes trembles. The topmost pipe begins \ to rise into the air. Cables pull taut -- you see some \ actually being drawn into their anchorage in the ground -- \ but somehow this extends the entire pile into the air. \ It telescopes, pipes hanging crazily in their web of cables, \ and then begins to curve over the moat....^^With a final twang, \ the tip of the web touches the castle balcony."; } else { give buckybridge ~general; "; the web-bridge begins to relax, and draw back from the balcony. \ In moments it has collapsed back to a simple pile of pipes."; } default: "The lever bites your fingers. [BUG]"; } Push: "The lever won't push."; ], has scenery; Nearby novtrenchwroad "dirt road" with name "main" "smaller" "dirt" "abandoned" "road", description [; <>; ], before [; Search: <>; ], has scenery; Nearby novtrenchwforest "forest to the north" with name "forest" "tree" "trees", before [; Examine: <>; Climb, Touch: <<(action) novsouthroadforest>>; Enter: <>; ], has scenery; Object NovBalcony "Balcony" with name "moat" "trench", description "The mosaic paving is every shade of scarlet and grey, a shocking contrast \ to the castle walls, the ivory stone which was all that was visible from \ the ground beyond the moat. Even the ivy that chokes the walls above and \ below you does not venture far onto the colored tiles. A small arch would lead east \ into the castle, were it not entirely filled with vines. To the west, wild ruffling \ meadows spread under the violet sky; the dome is visible to the southwest, in its \ magenta stain of lichen.", w_to [; print "You step up on the bridge, and pass over the moat.^"; return NovTrenchW; ], e_to "The arch, and as far as you can tell the space beyond, is knotted and tangled \ full. You push aside a few vines, but nowhere \ near enough to make any progress.", cant_go "There is only the blocked arch east, and the bridge west.", before [; Listen: return NovHumListen(); ], has light outdoors; Nearby novmosaic "mosaic tiling" with name "mosaic" "grey" "scarlet" "red" "tile" "tiles" "tiling" "paving" "balcony", description "The tiles are in bold reds and greys, really quite unnerving in this \ rural world. But the patterns are abstract, just jagged, sharply-angled strips \ and rhombuses.", react_before [; Examine, Touch, Push: if (noun == d_obj) <<(action) self>>; rfalse; Lagach: "A deep sinister voice chuckles, ~Nightmare.~"; ], before [; Touch: "The tiles are smooth, just a bit worn."; Push: "Nothing shifts."; ], has scenery; Nearby buckybridgefrombalcony "bridge of pipes" with name "hexagonal" "web" "pile" "bridge" "pipe" "pipes" "cable" "cables", initial [; "An airy web of pipes and cables arches neatly over the moat, just touching the \ balcony, casting a pool of shadow across the mosaic tiles."; ], description [; "It's a slim, fragile-looking arch over the moat. \ The pipes hang in an astonishing tapering helix -- no two touch, in fact, \ but the cables that run between their ends bind them into integrity. The \ bridge's shadow is peculiarly solid."; ], before [; Pull, Push, Take: "The pipes are firmly bound together. The arch sways a bit, being anchored only \ at the far end, but nothing worse."; Climb, Enter: <>; LookBehind: <>; ReceiveBehind: <>; ], has static; Nearby buckyshadow "shadow behind the bridge" class shadowclass, with description "The bridge is a spacious webwork, but its shadow is a solid black \ span across the grey and red tiles. Something glitters at the shadow's edges... \ frost?", door_to FroDesolation, door_world world_Frozen, before [; Touch: "You reach into the shadow, and in, in, and the farther you stretch the \ farther there is to go -- you pull back, shivering -- from more than \ nerves; the shadow is aching, iron cold."; Smell: "You smell a hint of ice-bitten chill."; Receive: print "The shadow falls across your hand like winter wind. ", (The) noun, " is swallowed and gone, and you pull back, \ rubbing the chill from your skin.^"; rfalse; Enter: print "The shadow ", (emphstring) "flares", " across everything, dimming the \ vines, the darkened mosaic, the black sky --^^"; PauseClear(); if (CheckPlayerRads() ~= 0) rtrue; print "-- Deathly cold strikes like a soundless slap; you are dazzled \ by sun-glaring snow.^^"; rfalse; ]; Nearby novdomefar2 "distant dome" with name "distant" "low" "wide" "grey" "dome" "magenta" "pool" "lake" "stain" "lichen", before [; Examine: <>; default: "The dome is far to the southwest."; ], has scenery; Nearby novmeadowfar "distant meadow" with name "distant" "wild" "ruffling" "meadow" "meadows", description "Shades of green roll over and over in the breeze.", before [; Examine: rfalse; default: "The meadows lie beyond the moat."; ], has scenery; Nearby novcastlefrombalcony "castle" with name "ivory" "castle" "arch" "green" "ivy" "tangled" "vine" "vines" "masses", description "The castle rears into the sky, immense yet still graceful. Ivy vines \ entwine it even more thickly than you saw from a distance; green runs up the towers \ and dangles into the moat, and the ivory-white stone peeks out in ten thousand \ fringed gaps. There is an open arch to the east, but the ivy curtains \ it entirely.", before [; Enter: <>; Climb, Attack, Eat, Taste, Smell, Ignite, Push, Pull, Search, LookBehind: <<(action) novcastlefrombridge>>; ], has scenery; Object NovByDome "By Dome" with description "The dome rises to the west, without looming; its curve is gentle. \ A rough arch leads within. \ The dome's surface is a polished brown-grey, a bit mottled, and the whole structure \ is very slightly irregular; a homey, reassuring effect. The ground beneath you \ is a shocking contrast. Bright lichen covers everything with magenta tufts; \ there's not a blade of grass or stick of shrubbery within fifty yards of the \ dome. The olive-mossed roads are the only relief; they run northeast, towards \ the castle, and southeast.", ne_to [; print "The lichen gives way to more normal meadow weeds as you approach \ the castle.^"; return NovTrenchW; ], se_to [; print "The lichen gives way to more normal meadow weeds as you approach \ the intersection.^"; return NovBranchRoad; ], w_to novdomeoutside, cant_go "The roads lead northeast and southeast, and the dome is west.", before [; Go: if (noun == w_obj || noun == novdomeoutside) { print "You pause for a moment, as sun-dazzle fades from the dim interior.^"; } ], has light outdoors; Nearby novroadmossbydome "moss" with name "smooth" "olive" "ragged" "moss" "mat", description "A smooth, dark olive \ moss covers most of the road. Very smooth, in fact. The few patches of bare dirt \ are more eroded.", before [; Take, Pull: "You can't tear even a bit of the moss off the mat."; Smell: "The moss has just a trace of spicy scent, particularly where you've walked."; Eat, Taste: "Eating unknown plants seems like a bad idea."; LookUnder: "There doesn't seem to be anything there but dirt."; ], has scenery; Class lichenclass with name "bright" "magenta" "lichen" "tuft" "tufts" "patch" "pool", before [; Rub, Squeeze: "A few drops of sour-stinking sap ooze out. You hurriedly wipe your fingers \ clean."; Take, Pull: "You tug on a bit of the lichen, but it doesn't come free. It does ooze a \ bit of sour-stinking sap, which you hurriedly wipe off your fingers."; Ignite: "A puff of truly foul smoke arises. Fortunately, the fire smoulders and dies \ almost immediately."; Smell, Taste: "The lichen has a terribly, terribly sour reek. You're not even slightly tempted \ to taste it."; Eat: <>; Search, LookUnder: "You can't see anything in the lichen."; ], has scenery; Nearby novlichenbydome "magenta lichen" class lichenclass, with description "You've never seen anything like it. A crusty, raggedly tufted growth \ spreads for tens of yards around the dome, and it's a searing-bright magenta. \ The slanting sunlight makes streaks and shadows of it; your eyes hurt. You do \ notice, though, that the patch stretches considerably farther west of the dome \ than it does east.", before [; Touch: "The lichen is rough. It's also warm -- warmer than you'd expect, even in \ sunlight."; ]; Nearby novbydomeroad "dirt road" with name "dirt" "abandoned" "road", description "The road was wide once, you think, but it's rutted now, and lichen pushes in \ from the edges. A smooth moss has covered most of what must have been bare dirt.", before [; Search: "You search through the moss for a moment, but nothing turns up."; ], has scenery; Nearby novcastlefar3 "distant castle" with name "distant" "ivory" "castle" "tower" "towers" "moat" "trench" "ivy", before [; Examine: <>; default: "The castle is off to the northeast."; ], has scenery; Nearby novdomeoutside "dome" with name "irregular" "rough" "polished" "mottled" "brown" "grey" "arch" "dome", description "The dome is perhaps seven or eight yards high, and three times \ that across at the base. The sides slant sharply inward even at ground \ level, and they rise in a smooth curve to the dome's broad cap.", door_dir w_to, door_to NovDomeE, before [; Climb: "The slope is not steep, even at the base, but the dome's surface is \ so smooth that you cannot get a grip."; Attack, KnockOn: "The dome thumps hollowly, but the polished grey curve shows no damage."; Touch: "The dome is very smooth, a glossy grey-brown. You'd think it was wood, \ except that you cannot feel a grain to it, though it's not perfectly \ even either."; ], has scenery door open; Object NovDomeE "East Crescent Chamber" with name "arch", description [; !### check light level from core print "This dim space curves to fill the east edge of the dome. The only light comes \ from the bright archway to the east. The west wall curves as well, but \ toward you, obviously outlining a chamber in the dome's center; a"; if (novdomehatch hasnt open) print " closed"; else print " open"; print " hatch lies that way."; print " Closed doors lead northwest and southwest,"; print " around the dome's perimeter."; " A pull-cord hangs above a tiled depression by the eastern exit; several \ potted plants sit in corners of the chamber, but broad patches of the \ magenta lichen show that this place has gone long untended."; ], e_to [; print "The bright violet sky glares, and you blink painfully for a moment.^"; return NovByDome; ], out_to [; <>; ], nw_to novdomedoornorth, sw_to novdomedoorsouth, w_to novdomehatch, cant_go "The eastern arch leads outside, and other doors are northwest, southwest, and \ west.", before [; Go: give NovCore ~general; if (noun == w_obj || noun == novdomehatch) { if (novdomehatch has general && novdomehatch has open) "The hatchway is blocked by a tumultuous magenta mass."; } Listen: if (second == nothing) { if (novpowerring.number == 3) { "You can hear a faint hum, from somewhere below."; } } ], each_turn [; if (novpowerring.number == 3) { if (random(41) <= 20) "^A subliminal hum is coming from somewhere in the dome."; } ], has light; Nearby novdomebath "tiled depression" with name "white" "tile" "tiled" "depression" "hole", short_name [; if (statusprinting ~= 0) { print "depression"; rtrue; } ], describe [; if (child(self) == nothing) rtrue; print "^In the depression"; WriteListFrom(child(self), ISARE_BIT | TERSE_BIT | ENGLISH_BIT | RECURSE_BIT); "."; ], description [; print "The depression is a handspan deep, and a few feet wide. It's lined with \ white tile, sides and bottom -- free of lichen, too, you note. The pull-cord \ hangs by the depression's edge"; if (child(self) ~= nothing) { print ", and inside"; WriteListFrom(child(self), ISARE_BIT | TERSE_BIT | ENGLISH_BIT | RECURSE_BIT); } "."; ], react_before [; Exit: if (player in self) { if (location == thedark) move player to real_location; else move player to location; "You step out of the depression."; } ], before [; Smell: "The white tiles have the faintest shadow of an odor... something dry and \ prickly, however that smells."; Search: print "In ", (the) self; WriteListFrom(child(self), ISARE_BIT | TERSE_BIT | ENGLISH_BIT | RECURSE_BIT); "."; ], after [; Enter: "You step down onto the tiles."; ], has static container enterable open; Nearby novpullcord "pull-cord" with name "pull" "cord" "pull-cord" "thin" "bob", description "A thin cord dangles from the dimness; a decorative little bob \ adorns its end. It hangs near the tiled depression, at about shoulder-height.", number 7, before [; Push: "The bob swings gently."; Attack: "You can't break the cord."; Take: print "You yank on the cord, which refuses to come loose. "; <>; Pull: self.number = self.number-1; switch (self.number) { 6: "There is a grating click. After a moment, something groans breathily \ overhead."; 5: "There is a grating click, and a fading wheeze from overhead."; 4,3,2: "There is a grating click, but nothing else happens."; 1: "The cord grates and jams at its lowest extension."; 0: self.number = 1; "You can't pull it any farther."; } ], has scenery; Nearby novlichenindome "magenta lichen" class lichenclass, with name "broad" "patches", description [; print "There are several swathes of the magenta lichen spread about; \ most of the floor is covered. You notice that the areas around the potted \ plants are nearly bare, though."; if (novdomehatch has general && novdomehatch has open) { print " On the other hand, the space beyond the hatch is solidly \ packed with crusted magenta matter."; } new_line; rtrue; ], before [; Touch: "The lichen is rough. It's also surprisingly warm, in this dim chamber."; ]; Nearby novdomehatch "hatch" with name "w" "west" "western" "hatch" "hatchway" "cover", description [; print "It's a tall oval in the convex west wall, rimmed with heavy steel."; if (self hasnt open) { " The hatch cover is closed."; } else { if (self has general) " The hatch stands open, but the opening is choked with huge clumps \ of brilliant lichen."; else " The hatch stands open."; } ], door_dir w_to, door_to NovCore, before [; Open, Close, Push, Pull, Touch: if (player in novdomebath) { "You can't reach the hatch from where you're standing."; } ], after [; Open: print "You set your feet and pull. Dust sifts down from the rim as you haul \ the hatch cover open."; if (self has general) print " But the space beyond is entirely filled with masses of magenta \ lichen. Hmm."; new_line; rtrue; Close: "The hatch swings to, moaning."; ], has scenery door openable ~open; ! general means moss-clogged Nearby suitplants "potted plants" with name "potted" "plant" "plants" "fuzzy" "white" "flower" "flowers" "blossom" "blossoms", description "The plants grow in large blue ceramic pots. Most \ are somewhat pallid and spindly, in this dim chamber, but each one has a \ single fuzzy white blossom crowning its stem.", before [; Take, Attack, Pull: if (self hasnt general) { ; give self general; move limpstem to player; itobj = limpstem; "^Avoiding the cloud, you reach for the plant once again. \ It snaps free easily. But almost \ immediately, the flower begins to droop, and shed its hair-fine petals. \ You are left holding a limp stem."; } else { "There's no need to start a collection, especially of specimens which succumb \ so easily."; } Eat: "Best not to eat strange plants."; LookUnder: "Blue ceramic pots."; Smell: if (suitcloud in NovDomeE) { <>; } if (player_suit < 4) player_suit = 4; "An icy, herbal odor fills your head, and pours coolly down into your lungs."; Touch, Rub, Squeeze, Push, Taste: move suitcloud to NovDomeE; suitcloud.number = 3; if (player_suit < 4) player_suit = 4; "A cloud of vapor jets from the flower, in the instant that you touch it. You \ jerk back, but you still catch a whiff of herbal scent which chills \ your throat."; ], has scenery; ! general means you've tried to take a flower. Nearby novplantpots "pots" with name "large" "blue" "plain" "ceramic" "pot" "pots", description "They're plain, blue-glazed pots. All pretty much the same. \ Each one has a plant in it.", before [; Search: "Dirt and plants."; Take, Push, Pull: "The pots are too large to move."; ], has scenery; Class domedoorclass with name "door" "keyhole", description "The door is just a door. It has a keyhole by the handle.", before [; Search: "You can't see anything through the keyhole."; Receive: <>; ], has scenery door ~open openable locked lockable; Nearby novdomedoornorth "northwest door" class domedoorclass, with name "nw" "northwest", door_dir nw_to, door_to NovDomeW; Nearby novdomedoorsouth "southwest door" class domedoorclass, with name "sw" "southwest", door_dir sw_to, door_to NovDomeW; Object limpstem "limp stem" with name "limp" "stem", description "It's a decaying stem, all that's left of the flower you picked \ from the plant-pots.", before [; Smell: "The stem has no odor."; Eat: <>; ]; Object suitcloud "cloud of vapor" with name "cloud" "of" "herbal" "icy" "vapor" "gas", description "A cloud of vapor, barely visible, hangs about one of the plants.", number 0, before [; Take, Push, Pull: "You're more like to catch a shadow in a rabbit-snare."; Touch: "Unsurprisingly, you feel nothing."; Smell: if (player_suit < 10) player_suit = 10; "You lean into the cloud. \ The chill herbal scent drowns you, an icy blast which sweeps your senses aside. \ You shake your head, trying to clear it. Even the light seems ice-blue."; ], has scenery; ! general means you've tried to take a flower. Object NovDomeW "West Crescent Chamber" with description [; "Fairies dance and play here. [BUG]"; ], has light; Nearby easteregg "brightly-painted egg" with name "egg", description [; "[BUG]"; ]; Object NovCore "Central Chamber" with description [; print "You are in a room which is round, high, and nearly empty. An open hatch \ leads east. "; PowerRingLevel(); " a ring on the domed ceiling."; ], e_to novdomehatch2, out_to [; <>; ], before [; Listen: if (second == nothing) { if (novpowerring.number == 3) { "You can hear a faint hum, from somewhere below."; } } ], each_turn [; if (self hasnt general && player_suit == 0) { give self general; print "^There is a warm flush on your skin, somehow unpleasant.^"; } if (novpowerring.number == 3) { if (random(41) <= 15) "^A subliminal hum is coming from somewhere in the dome."; } ], has light; ! general means you've felt the rads, this session in the room Nearby novdomehatch2 "hatch" with name "e" "east" "eastern" "hatch" "cover", description "The hatch leads east. It's standing open, so the hatch cover itself is \ lying against the wall in the next room.", door_dir e_to, door_to NovDomeE, before [; Close: "The hatch opens into the outer room; you can't reach the cover from here."; ], has scenery door openable open; Fake_Action ReJuice; [ PowerRingLevel; switch (novpowerring.number) { 0: print "A faint, dust-grey light falls from"; 1: print "A greyish light is shed by"; 2: print "Light shines from"; 3: print "A bright stark radiance pours from"; default: print "[BUG] Chickens fall from"; } ]; Nearby novpowerring "ring" with name "light" "faint" "ring" "circle" "circular" "bar", description [; print "A circular bar hangs high above; you can make out little detail. "; PowerRingLevel(); " it."; ], number 0, ! light level before [; Examine: rfalse; ReJuice: ! This assumes that fuelblock.number changes by only 1 at a time if (second == 1) { ! power up switch (fuelblock.number) { 4: self.number = 1; "^The room seems brighter."; 2: self.number = 2; "^The room is definitely brighter."; 1: self.number = 3; "^The ring overhead burns with a stark white light. A faint hum \ has begun, somewhere below you.^^The red stuff \ is growing visibly now, like thick blood boiling up."; default: rtrue; } } else { ! power down switch (fuelblock.number) { 5: self.number = 0; "^The room is much dimmer now."; 3: self.number = 1; "^The room dims."; 2: self.number = 2; "^The light from the ring fades somewhat.^^The tide of lichen \ slows.^^The humming is no longer audible."; default: rtrue; } } default: "The ring is far above your reach."; ], daemon [ ix oldval oldrads; if (location == NovCore) { give novcorelichen general; } if (novcorelichen has general) { switch (fuelblock.number) { 1: ix = 15; 2: ix = 5; 3: ix = 4; 4: ix = 3; 5: ix = 2; default: ix = 1; } oldval = novcorelichen.number; novcorelichen.number = oldval + ix; !print "^[DEBUG] Lichen at ", novcorelichen.number, ".^"; if (novcorelichen.number >= 9 && oldval < 9) { move novcorelichen to NovCore; } if (novcorelichen.number >= 60) { give novdomehatch general; ! no re-entry give novcorelichen ~general; ! all grown, and if you're inside you die. switch (location) { NovDomeE: if (novdomehatch has open) print "^You notice that lichen has silently clogged the \ west hatchway.^"; } } } ! else oldval = 0; if (location == NovCore) { ! advance poisoning if (player_suit == 0) { oldrads = player_rads; player_rads = player_rads + novpowerring.number + 1; !print "^[DEBUG] player_rads at ", player_rads, ".^"; ! Can only advance 4 at a time, so this is safe if (player_rads >= 4 && oldrads < 4) { player_rad_timer = 0; print "^You feel a faint, feverish prickling on your skin.^"; } if (player_rads >= 8 && oldrads < 8) { player_rad_timer = 0; print "^There is a prickling flush of pain in your blood.^"; } if (player_rads >= 12 && oldrads < 12) { player_rad_timer = 0; print "^Your bones ache, and you feel vaguely ill.^"; } if (player_rads >= 16 && oldrads < 16) { player_rad_timer = 0; print "^You are feverish. Your stomach hurts, now.^"; } if (player_rads >= 20) { deadflag = 1; "^Everything blurs suddenly; you cannot focus. The fever \ sings fire, and the taste of blood --"; } } ! advance lichen message if (novcorelichen.number >= 9 && oldval < 9) { oldval = 999; print "^You notice faint reddish stains on the floor, by your feet. In \ fact, the patches seem to be shaped like your footprints.^"; } if (novcorelichen.number >= 21 && oldval < 21) { oldval = 999; print "^The reddish patches are growing, and darkening. They seem slightly rough.^"; } if (novcorelichen.number >= 35 && oldval < 35) { oldval = 999; print "^The patches are spreading across the floor; crusted, thick magenta \ growth.^"; } if (novcorelichen.number >= 45 && oldval < 45) { oldval = 999; print "^The floor is blanketed with heavy magenta tufts, except for a small \ bare patch around the blocks. Fingers of lichen \ pluck at your ankles.^"; } if (novcorelichen.number >= 60) { oldval = 999; deadflag = 1; "^Your foot is caught! You thrash furiously, but crusted tufts press \ heavily on your leg; you slip, and fall, with a white-hot snap of \ broken bone; but then you are choking as well --"; } if (novcorelichen.number >= 55 && oldval < 55) { oldval = 999; print "^You stagger, trying to keep your feet in the heaving, rustling magenta \ sea.^"; } } ! ongoing symptoms of rad sickness if (player_rads >= 8) { player_rad_timer = player_rad_timer + 1; if (player_rad_timer >= 3) { player_rad_timer = 0; switch (player_rads) { 8, 9, 10, 11: print "^Your skin still prickles unnervingly.^"; 12, 13, 14, 15: print "^Your flesh still aches, and you are momentarily dizzy.^"; 16, 17, 18, 19: print "^Your blood and bones burn with unseen fire. \ A wave of nausea buffets you.^"; default: print "^You dance the Roentgen Rhumba. [BUG]^"; } } } ! fade cloud if (suitcloud in NovDomeE) { suitcloud.number = suitcloud.number - 1; if (suitcloud.number <= 0) remove suitcloud; if (location == NovDomeE) { switch (suitcloud.number) { 2: ! nothing 1: print "^The vapor begins to disperse.^"; default: print "^The cloud of vapor has dissipated.^"; } } } ! fade suit level if (player_suit > 0) { player_suit = player_suit - 1; switch (player_suit) { 8, 6: print "^The herbal aroma clings in your lungs, cool and powerful.^"; 4, 2: print "^The icy, herbal aroma still lingers in the back of your throat.^"; 1: print "^The icy scent is fading from your palate.^"; 0: print "^You can no longer taste the herbal odor.^"; } } !print "^[DEBUG] End rad daemon.^"; ], has scenery; [ FuelBlockDist; switch (fuelblock.number) { 0: print " touching. They scream ~Yeugh, block cooties!~ [BUG]"; 1: print " lying only an inch apart"; default: print " lying ", (EnglishNumber) fuelblock.number, " inches from each other"; } ]; Class fuelblockclass with name "dull" "metal" "block" "blocks", description [; print (The) self, " is not large. The surface is dull, though it seems \ worked with great precision; the edges are right and the faces perfectly smooth. \ The blocks are"; FuelBlockDist(); "."; ], before [; Take: print_ret (The) self, " doesn't lift. You heave again. It barely \ stirs. This clearly isn't going to work."; LookUnder: "You can't even lift it."; Enter: "The blocks aren't really big enough to balance on."; Turn: "Nothing obvious happens."; Push: if (fuelblock.number == 1) { deadflag = 1; print_ret "You shove ", (the) self, " into contact with its mate. The light \ overhead blazes unbearably -- and there is a flare of heat on your \ face.^^You back away, but \ fever burns in your bones; even the lichen is blistering. \ Then everything dims, even as white-hot metal drips across the floor, \ somewhere distant...."; } fuelblock.number = fuelblock.number - 1; if (fuelblock hasnt general) { give fuelblock general; print "The position is awkward; you are leaning practically flat \ and scrabbling your toes on the floor for purchase. But you \ manage to shift ", (the) self, " a bare inch."; } else { print "You shove ", (the) self, " a bit closer to its partner."; print " They are now"; FuelBlockDist(); print "."; } new_line; <>; Pull: if (fuelblock.number == 18) { "Look, this isn't going to get any more exciting."; } fuelblock.number = fuelblock.number + 1; if (fuelblock hasnt general) { give fuelblock general; print "You brace your hands, set your heels, and haul. You look \ astonishingly stupid, leaning far over backwards with your \ weight set against a small chunk of metal; but you \ manage to shift ", (the) self, " a bare inch."; } else { print "You pull ", (the) self, " a bit farther from its partner."; print " They are now"; FuelBlockDist(); print "."; } new_line; <>; ], has static; Nearby fuelblock "left block" class fuelblockclass, with name "left", number 6, describe [; print "^In the center of the floor are two identical blocks of dull metal, each about \ the size of your head."; if (self hasnt general) { new_line; rtrue; } print " They are"; FuelBlockDist(); "."; ], has static; ! general means you care about the distance. Nearby fuelblock2 "right block" class fuelblockclass, with name "right", describe [; rtrue; ], has static; Object novcorelichen "magenta lichen" class lichenclass, with name "faint" "red" "reddish" "stain" "stains" "print" "prints" "patches" "footprints", initial [; indirect(self.description); rtrue; ], description [ sufstr; if (novpowerring.number < 3) sufstr = "."; else sufstr = ". They swell visibly as you watch."; if (novcorelichen.number >= 45) { print_ret "The floor is blanketed with heavy magenta tufts, except for a small \ bare patch around the blocks", (string) sufstr; } if (novcorelichen.number >= 35) { print_ret "There are large patches of thick, tufted magenta lichen across most of \ the floor", (string) sufstr; } if (novcorelichen.number >= 21) { print_ret "There are several large, rough reddish patches scattered across \ the floor", (string) sufstr; } if (novcorelichen.number >= 9) { print_ret "There are faint reddish stains on the floor, rather like footprints", (string) sufstr; } "Elves are painting the floor red. [BUG]"; ], number 0, has ~general ~scenery static; ! general means it's growing. ! --------------------------------- [ NovHumListen; if (second == nothing) { if (novpowerring.number == 3) { "You can hear a faint hum, from somewhere below."; } } rfalse; ]; [ NovHumEachTurn; if (novpowerring.number == 3) { if (random(41) <= 10) "^A subliminal hum is coming from somewhere below."; } ]; [ IsOilPod obj; if ((obj.description) == (oilpod1.description)) rtrue; else rfalse; ]; Class oilpod with name "fat" "red" "pod" "pods" "oil" "oily" "fluid", description "It's a bulging pod, about the size of your fist. The reddish \ skin glistens just a bit.", plural "red pods", before [; Touch, Push: "The pod gives ripely when you press it, and a trace of oily fluid leaks out."; Smell: "The pod has a powerful, sweet-acrid odor. It stings your eyes."; Taste: "You gingerly lick the trace of fluid on the pod's surface -- and spit. \ It's awful; a bitter oily flavor that burns your tongue."; Eat: remove self; print "You bite into the pod tentatively.^^"; print (emphstring) "Aagh!", "^^How nasty! The whole thing just collapsed; \ it was only a tight skin over fluid. And the fluid, of course, spurted \ all over your face, filling your mouth with a bitter, oily burning. \ You spit and sputter furiously, scrubbing at your face and clothing. \ The fluid evaporates with an unnaturally rapid chill. You're just glad \ you didn't swallow any, or get it in your eyes.^"; rtrue; Ignite: deadflag = 1; print "The pod's skin crinkles, smokes, darkens --^^"; print (emphstring) "Whummp!"; "^^Flaming oil spurts heavily. Much of it falls on you, and your clothing. \ There is nothing after that but red screaming and, eventually, shock."; EmptyT: <>; Attack, Empty, Open: <>; Squeeze: ! ### if second then <>? remove self; "The pod ruptures easily, drenching your hand with an oily fluid. It \ evaporates with an unnaturally rapid chill, leaving nothing but \ an acrid odor, and a few scraps of reddish skin, which you shake from \ your fingers."; !"a few scraps of reddish skin and an acrid odor."; ]; Object oilpod1 "red pod" moundvine class oilpod; Object oilpod2 "red pod" westpillarvine class oilpod; Object oilpod3 "red pod" westpillarvine class oilpod; Object oilpod4 "red pod" westpillarvine class oilpod; Object eastpillarfar "east pillar" with name "east" "e" "metal" "pillar", description "The east pillar stands nearly as high as the wall, a bit rusty. \ You can make out a cable running from its top to the top of the east \ gate-track.", found_in NovRoadWest NovGateRoad, before [; if (action ~= ##Examine) "The east pillar is a few yards off the road. You'll have to \ approach it to do anything."; ], has scenery absent; ! switched in by MoveToWorld() Object westpillarfar "west pillar" with name "west" "w" "metal" "pillar", description [; if (westpillarbroke in NovRoadWest) { if (westpillarbroke hasnt general) { "The west pillar lies fallen at the foot \ of the gate. Its cable is broken too; it dangles loose from the \ top of the west gate-track."; } else { "The west pillar leans crazily. It's suspended \ by its cable, which makes an angled line back to the top of the \ west gate-track."; } } "The west pillar stands nearly as high as the wall, rusty but still firm. \ You can make out a cable running from its top to the top of the west \ gate-track."; ], found_in NovRoadEast NovGateRoad, before [; if (action ~= ##Examine) { if (westpillarbroke in NovRoadWest) { if (self in NovRoadEast) "You'll have to approach it to do anything."; if (westpillarbroke has general) "The west pillar hangs just out of your reach. You'll have to \ approach its base."; else { ! an ugly, but normal, before clause. switch (action) { default: rfalse; } } } "The west pillar is a few yards off the road. You'll have to \ approach it to do anything."; } ], has scenery absent; ! switched in by MoveToWorld() Object plastic "scrap of something blue" with name "scrap" "of" "something" "blue", description "You really have no idea what it is. A worn shard, \ no longer than your finger. The surface is dirty and weathered, and scored \ by the vine's roots, but you can see that it was once brilliant blue. And \ it's no material you know; much too light to be metal or wood, and slightly \ flexible. Perhaps some kind of horn or bone. But the blue color isn't just a \ surface stain.", before [; Eat: print "It's much too tough to eat, but you take a lick. "; <>; Taste: "The blue material has no taste other than the dirt worn into it."; Smell: "The blue material has no odor."; ]; Object brick "chunk of brick" with name "chunk" "of" "brick", description "Bricks are the same everywhere."; Object novroadmoss "weeds and moss" with name "weed" "weeds" "smooth" "olive" "ragged" "moss" "mat", description "Weeds are pushing in from the sides of the road, and a smooth, dark olive \ moss covers most of what remains. Very smooth, in fact. The few patches of bare dirt \ are more eroded.", found_in NovRoad NovChimneyRoad NovGateRoad NovPastGate NovBranchRoad NovTrenchS NovTrenchW NovTrenchE, before [; Search: "You search through the weeds for a moment, but nothing turns up."; Take, Pull: "You yank a weed; but your unbotanical eye hasn't the look of it, and \ you toss it aside. The moss is more tenacious. You can't tear even \ a bit of it off the mat."; Smell: "The roadside plants have no particular odor, but the moss has just \ a trace of spicy scent, particularly where you've walked."; Eat, Taste: "Eating unknown plants seems like a bad idea."; LookUnder: "There doesn't seem to be anything there but dirt."; ], has scenery absent; ! stays absent except when in the Nov zone. #ifnot; ! SKIP_NOVEMBER; Object NovRoad "November Road" with description "Second room.", has light outdoors; Constant NovChimneyRoad NovRoad; Constant NovBalcony NovRoad; Object novroadmoss "thing" has static; Constant buckybridge novroadmoss; Constant novtrench novroadmoss; Object eastpillarfar "thing" has static; Object westpillarfar "thing" has static; Object pillarladder "thing" has static; Object novpowerring "ring" with daemon [; ]; [ OpenNovGate; rfalse; ]; [ IsOilPod; rfalse; ]; Constant eastpillar 10; Constant westpillar 11; Constant novgate 12; Global player_suit; #endif; ! SKIP_NOVEMBER;