! ------ Frozen world #ifndef SKIP_FROZEN; ! Here's the deal. If both are < 0, don't bug the player (various negative numbers are ! used for flags at this point, but only for smartass responses.) Global pole_angel = 0; Global pole_devil = 0; [ FroEnter; give frosnow ~absent; give frowind ~absent; ]; [ FroExit; give frosnow absent; remove frosnow; give frowind absent; remove frowind; ]; Fake_Action TrackDir; Class froprintsclass with name "paw" "track" "tracks" "print" "prints" "footprint" "trail" "trails" "pawprints", before [; Follow: give froprints general; print "Which way? "; <>; ], has scenery; [ FroCrevasseDeath; deadflag = 1; print "You strike off across the virgin snow. After no more than a few steps, \ however, your foot crunches into ice and through it. Your balance is far \ gone, and you flail as you plummet into blue-lit shadow --^^The impact \ stuns you, and bitter cold takes care of the rest.^"; rtrue; ]; ! ----- Object FroDesolation "Desolation of Ice" with description [; print "Blue sky glares above you, to the dead-white horizon, and between \ them is nothing but wind and the cold. Snow crunches gently beneath \ your feet. Above your head, a wind-sculpted spire of ice twists fantastically, \ and its shadow lies as strange and utterly black against the glittering snow. \ You can make out something dark to the south, a pole or \ column of some sort."; if (froprints has general) print " Tracks in the snow lead south and southwest."; new_line; rtrue; ], s_to [; print "Your feet scrape numbly through the snow, for a time.^"; return FroAtPole; ], sw_to [; print "The horizon darkens as you walk. After a while, you can make out the face \ of a low cliff ahead. It rises, until -- still distant -- it blots out the sun; \ you pass into shadow.^"; return FroCliffShadow; ], cant_go [; return FroCrevasseDeath(); ], u_to CantGoThatWay, d_to "The ground seems solid.", has light outdoors winter; Nearby frospire "ice spire" with name "ice" "spire" "sculpted", description "The spire is twice your height; it juts alone from the bare and unadorned \ snow, and there is nothing like it visible for miles. The wind has carved it into \ a mad folly of curves and hollows. At the spire's foot, a night-black shadow falls \ across the snow.", before [; Climb: "The edges of the spire's sculpted planes are razors. You take an awkward \ grip, and try to pull yourself up; and you slide down again, leaving a \ few drops of blood to crystallize in the wind."; LookBehind: <>; ReceiveBehind: <>; ], has scenery; Nearby spireshadow "shadow behind the spire" class shadowclass, with description [; "The shadow that you stepped out of is as black as the one you stepped into. \ It lies in shocking contrast on the snow. In fact, it seems to be sunk \ deep into the snow... not entirely an illusion, for its outline is melted \ slightly into the frost. A slight but temperate breeze blows from the shadow."; ], door_to NovBalcony, door_world world_November, 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. (But then, you \ were shivering already.)"; Smell: "You smell nothing, but a hint of warm air -- warm for here -- plays \ on your numb face."; Receive: print (The) noun, " crosses the line from blinding white to numb black. \ You cannot see it, and then it is gone.^"; rfalse; Enter: give self general; print "The shadow ", (emphstring) "flares,", " whirling between you and \ the glaring white landscape; the bitter cold fades to no feeling at all --^^"; PauseClear(); print "-- Air scalds your face, and then is merely tepid; you slowly adjust \ again to the brisk autumn breeze.^^"; rfalse; ]; Nearby froprints "tracks in the snow" class froprintsclass, with description [; give froprints general; "Broad padded paws seem to have left these tracks. There are several \ sets of prints, and they become somewhat mixed with your own, but \ they all seem to run south and southwest."; ], before [; TrackDir: "The tracks lead south and southwest."; ]; ! for this prints only, general means all prints are visible. Nearby fropolefar "distant pole" with name "distant" "dark" "pole" "column", description [; print "The pole is at least ten minutes' walk to the south"; if (blanket hasnt moved) print ". There's a smudge of crimson at its base"; "; that's all you can make out from here."; ], before [; Examine: rfalse; default: "The pole is far to the south."; ], has scenery; Object FroAtPole "Desolation, By Crevasse" with short_name [; if (tongue has general) { print "Dethowathun, Frothen t'o a Pole"; rtrue; } ], description [; if (tongue has general) { "The air thliceth you withouth rwemorthe. The horithon ith an irreguwar wawl \ oth dh'irthy whithe againth bwue, and the thnow beneath you ith markth'dh \ onwy by a fhew pawpwinthh. To the eatht andh thoutheahh, though, the ithe \ fthalls away in'u an ablup', thadhowy cwethathe."; } print "The air slices you without remorse. The horizon is an irregular wall \ of dirty white against blue, and the snow beneath you is marked only by \ a few pawprints. To the east and southeast, though, the ice falls away \ into an abrupt, shadowy crevasse."; if (froprints has general) print " The tracks in the snow lead north, west, and southeast."; new_line; rtrue; ], n_to [; print "Light gleams on the spire ahead as you push through bitter wind.^"; return FroDesolation; ], w_to [; return indirect(FroDesolation.sw_to); ], cant_go [; return FroCrevasseDeath(); ], u_to CantGoThatWay, d_to [; deadflag = 1; "You sit, grasp the icy lip, and swing yourself over the edge. You feel \ for a foothold... there... and another... your hand slips --^^The impact \ stuns you, and bitter cold takes care of the rest.^"; ], e_to "You step to the lip of the crevasse. There's no going further without \ going down, and you're most uncertain about that.", se_to [; print_ret (string) self.e_to; ], before [; Taste: if (tongue has general) { if (noun ~= tongue && noun ~= fropole && noun ~= frosnow && noun ~= snow) "Your thonh' ith otherwithe occupiedh."; } Go: if (noun == u_obj) rfalse; if (tongue has general) { "You can' go anywhele! Your thonh' ith frothen t'o thith pole!"; } if (pole_angel > 0 || pole_devil > 0) { if (pole_devil < 3) { IncDevil(); rtrue; } else { print "You turn away from the pole. ", (emphstring) "Coward.", " "; rfalse; } } rfalse; ], has light outdoors winter; Nearby froprints2 "tracks in the snow" class froprintsclass, with description [; give froprints general; "Broad padded paws seem to have left these tracks. There are several \ sets of prints, and they become somewhat mixed with your own, but \ most of them run north and west. However, a few tracks go southeast, right \ towards the crevasse. They lengthen as they approach the lip, and \ pick up again across the yards of air to the other side."; ], before [; TrackDir: "The tracks lead north, west, and southeast across the crevasse."; ]; Nearby frocrevasse "crevasse" with name "crevasse" "cwethathe" "crevice" "chasm", short_name [; if (tongue has general) { print "cwethathe"; rtrue; } ], description [; if (tongue has general) "You can'h thee ith when you're thtuck wike thith."; "You peer down into a tumbled, sculpted abyss \ of blue shadow -- beautiful, but certainly deadly. You notice, though, \ that several tracks in the snow lead right to the crevasse's rim, and \ pick up again beyond, as if something was in the habit of leaping across. \ Whatever it is, it can leap much farther than you."; ], before [; Enter: <>; Receive: remove noun; print_ret "You toss ", (the) noun, " over the edge. It vanishes into \ still blue depths with hardly a sound."; Search: "You can see nothing but ice and blue depths of shadow."; JumpOver: "The crevasse is much too wide."; ], has scenery container open; Nearby fropole "iron pole", with name "iron" "iwon" "metal" "methal" "pole", short_name [; if (tongue has general) { print "iwon pole"; rtrue; } ], describe [; if (tongue has general) { print "^A me'al pole thtick'h outh 'rom the thnow, and your thonh' ith \ frothen t'o ith."; if (blanket hasnt moved) { print " A' ith' fhoot thithh -- I wean th'ithhh -- hit'thhh -- \ There'th a red fhuzthy bunbhle hewe, dammith."; } new_line; rtrue; } else { print "^A metal pole sticks out from the snow"; if (pole_devil >= 1 && pole_devil <= 4) { print ", ", (emphstring) "just waiting for you to lick it."; } else { print "."; } if (blanket hasnt moved) { print " At its foot sits a red, fuzzy bundle, neatly folded and \ quite outrageous in this chilly-white world."; } new_line; rtrue; } ], description [; if (tongue has general) { print_ret "The pole ith zhuth thy of your own heighth. It'th unadhorned iwon, \ noth ethen well polithed. Andh there's no needh to dwelw on the \ thact that you ", (emphstring) "throthe", " your ", (emphstring) "thonh'", " to it!"; } print "The pole is just shy of your own height. It's unadorned iron, \ not even well polished.^"; if (pole_angel == 0) { new_line; IncAngel(); } else { if (pole_devil >= 0) { new_line; IncDevil(); } } rtrue; ], before [; Climb: if (tongue has general) "Yeah, righthe."; "The pole is bitter cold, painful even to touch, and you can see perfectly \ well that there's nothing on top of it."; Touch: if (tongue has general) "It'the thtill reawly coldh."; print "The metal is bitter, painfully cold.^"; if (pole_devil < 0) rtrue; new_line; IncDevil(); rtrue; Push, Pull, Take: if (tongue has general) "It doethn'th bhudhghe."; "The pole feels like it's rooted in stone far below, and in all the ice \ between that stone and your feet."; Taste, Eat: if (tongue has general) "You're wicking ith now, mowon! Ith thathes like ithe! Ith tathes \ like your thonh' ith frothen t'o it!"; switch (pole_angel) { 0: IncAngel(); rtrue; 1, 2: IncAngel(); new_line; IncDevil(); rtrue; 3: print "You plant your tongue on the pole. \ It immediately freezes in place. \ Freethes im plathe.^"; pole_angel = -1; pole_devil = -1; give tongue general; rtrue; default: print "Once was ", (emphstring) "entirely", " enough.^"; if (pole_devil == -1) { pole_devil = -2; print "^", (emphstring) "Heh heh.", "^"; } rtrue; } Ignite: if (tongue has general) { give tongue ~general; print "You holdh the thlame againth' the pole. Fhor a momen' nothing hapthenth... \ then a hinth of wawmth. Thank the ghothh. You yank hardh.^^"; print (emphstring) "Owww!", "^^Your tongue ripth -- rips free of the pole. \ Aii, that stings. A lot.^"; rtrue; } ], has static; [ IncAngel; pole_angel++; switch (pole_angel) { 1: "You think to yourself what a bad idea it would be to lick the icy metal."; 2: "Are you crazy? Your tongue would freeze to the pole instantly."; 3: "I will if you keep insisting. But I can't imagine where you got such a \ disastrous notion."; } ]; [ IncDevil; pole_devil++; switch (pole_devil) { 1: print (emphstring) "Hold on a minute. I dare you to lick that pole."; new_line; 2: print (emphstring) "Come on, lick the pole. I double-dare you."; new_line; 3: print (emphstring) "I double-dog-dare you to put your tongue on that iron pole."; new_line; 4: print (emphstring) "Go on, lick it."; new_line; default: pole_devil = 3; print (emphstring) "I double-dog-dare you."; new_line; } ]; Nearby blanket "red blanket" with short_name [; if (tongue has general) { print "redh b'lanketh"; rtrue; } ], name "red" "redh" "fuzzy" "blanket" "b^lanketh" "bundle" "bunbhle", describe [; if (self hasnt moved) rtrue; ], description [; if (tongue has general) { "It'th a thick, fhuzthy bhrithe redh b'lanketh."; } "It's a thick, fuzzy, bright red blanket."; ], after [; Wear: print "You wrap the blanket awkwardly around yourself."; switch (world) { world_Frozen: print " A bit of warmth begins to creep back."; default: print " It's very warm."; } new_line; rtrue; Disrobe: print "You unwrap yourself from the blanket."; switch (world) { world_Frozen: if (location == FroCliffTop || frowind in location) print " The wind immediately lashes you. Tears spring to your eyes, \ and freeze."; else print " The dim chill pours down your skin."; } new_line; rtrue; ], has clothing; Object FroCliffShadow "Shadow of Cliff" with description [; print "The unbounded and bitter ice is broken, to the west; a low cliff rears up \ all along that curve of the horizon. The sun is hidden behind the stony \ wall, but soft beams of light seem to radiate from the cliff-edge, across \ the sky and over your head."; if (froprints has general) print " Tracks in the snow lead northeast, east, northwest, and southwest."; else print " Pawprints track through the snow nearby."; new_line; rtrue; ], ne_to [; print "The twisted spire grows slowly as you trudge across the ice.^"; return FroDesolation; ], e_to [; print "A faint shadow on the ice ahead slowly widens, until you reach the lip \ of an unfathomable crevasse.^"; return FroAtPole; ], nw_to [; print "Your feet crunch softly in the snow and cold. Eventually the ground \ slopes up, as you reach the steep slope that is the northern extremity of \ the cliff.^"; return FroOnSlope; ], sw_to [; print "You trudge through the shadow of the cliff, which gradually looms.^"; return FroCliffBottom; ], cant_go [; return FroCrevasseDeath(); ], u_to CantGoThatWay, d_to "The ground seems solid.", has light outdoors winter; Nearby froprints3 "tracks in the snow" class froprintsclass, with description [; give froprints general; "Broad padded paws seem to have left these tracks. There are several \ sets of prints, and they become somewhat mixed with your own, but \ the heaviest trails run northeast, east, northwest, and southwest."; ], before [; TrackDir: "The tracks lead northeast, east, northwest, and southwest."; ]; Nearby froclifffar "distant cliff" with name "distant" "low" "cliff" "face" "edge", description "The distant cliff runs across the western edge of the world. It doesn't look \ very high, though distance may be deceptive. You're sure it looks lower to the north, \ though. The sun is low enough to have set behind the cliff, and its ragged top edge \ slices sunbeams into a long, wavered veil of light across the sky.", before [; Examine: rfalse; default: "The cliff is far to the west."; ], has scenery; Nearby frocliffshadowfar "cliff's shadow" with name "cliff^s" "dark" "darkness" "black" "blackness" "shadow" "shade", description "The sun is low enough, and the western cliff high enough, that \ you are in the cliff's shadow. The world is dim and the snow grey. But the sky \ is still brightly blue; it's not yet night.", before [; Examine: rfalse; Enter: "You're already in the cliff's shadow; you have been for some time."; default: "It's just shadow."; ], has scenery; Nearby frobeams "sunbeams" with name "sunbeam" "sunbeams" "beam" "beams" "soft" "long" "veil" "light", description "The sun is low enough to have set behind the cliff, and its ragged top edge \ slices sunbeams into a long, wavered veil of light across the sky.", before [; Examine: rfalse; default: "The sunbeams are far out of reach."; ], has scenery; Object FroOnSlope "Snowy Slope" with description [; print "You stand on a steep angle, digging your feet carefully in the snow, \ trying not to slip. The crest of this ridge rises to the west; the sun \ is hidden behind it. To the south, the slope steepens."; if (froprints has general) print " Tracks in the snow run south and southeast."; new_line; rtrue; ], w_to "You make a dedicated attempt, but the slope rises too sharply, and your feet \ slip again and again on the snow-covered ice.", nw_to [; <>; ], sw_to [; <>; ], u_to [; <>; ], d_to "Which way do you want to descend?", se_to [; print "You slither down the slope, and then set off across the icy plain.^"; return FroCliffShadow; ], s_to [; print "You move across the face of the slope, slowly upward. As you rise, the \ snow thins; after a time, you move across bare chill stone.^"; return FroCliffTop; ], cant_go [; return FroCrevasseDeath(); ], has light outdoors winter; Nearby boxkey "twisted key" with name "twisted" "metal" "key" "prong" "prongs" "pronged" "bit" "rod", initial "There's a gleam of metal in the snow -- a twisted bit of rod, pronged; \ perhaps a key of some sort.", description "The key, if that's what it is, is only a few inches long. Three small \ prongs spread from each end. They look as if they were meant to angle straight \ out, symmetrically; but the rod is twisted, and the prongs bent and flattened.", before [; Turn: "The prongs bite into your fingers, but they do not give. \ Whatever the metal is, you are unable to untwist it."; Tie: ! really fix <>; PutOn, Insert: if (second == voicebox || second == voiceboxscrews) { "You hold one end of the twisted rod against the box's pale discs. \ The prongs fit the incised stars once, you feel sure. No more."; } ]; Nearby froprints4 "tracks in the snow" class froprintsclass, with description [; give froprints general; "Broad padded paws seem to have left these tracks. There are several \ sets of prints, and they become somewhat mixed with your own, but \ they seem to lead south and southeast."; ], before [; TrackDir: "The tracks lead south and southeast."; ]; Object FroCliffTop "Top of Cliff" with description [; print "You stand on the edge of a cliff, a silent wave of weathered stone; it \ stares out over the equally silent sea of ice that lies to the east, and \ below. The stark edge gentles and descends to the north, and the cliff \ steepens to the south.^"; if (cliffcrack hasnt general) { print "^A narrow crack runs through the rock, a few feet from the edge."; if (crackwater in cliffcrack) print " The crack seems to be full of water."; new_line; } else { print "^The edge of the cliff is broken away at one point, leaving fresh \ raw stone.^"; } rtrue; ], e_to "The drop is dizzying. Perhaps you should descend back north.", ne_to [; <>; ], se_to [; <>; ], d_to [; <>; ], n_to [; print "Ice traces the stones as you descend, then spreads.^"; return FroOnSlope; ], cant_go "The wind batters you back.", has light outdoors winter; Nearby clifftopedge "cliff" with name "cliff" "edge" "cliff-edge" "stark" "rim" "lip" "stone" "rock", description [; if (cliffcrack hasnt general) "The cliff-edge is worn by centuries of the wind. You peer down -- carefully, \ with the wind a hand on your shoulder; but you can make out the shadow \ of a gap in the cliff face, directly below you."; else "There is a raw bite in the cliff-edge; it has split away entirely, at the \ point where it was cracked. You can make out rubble lying at the cliff's \ base."; ], before [; Touch: "The stone is aching cold."; Push, Pull, Attack: "The stone endures."; LookUnder: <>; Climb, Enter: <>; JumpOver: deadflag = 1; "As you wish."; ], has scenery; Nearby cliffcrack "narrow crack" with name "narrow" "crack", description [; print "It's a few yards long, too narrow to fit more than a thumbnail into, \ and much too thin and dark to make out depth. It runs parallel to \ the cliff's edge, a couple of feet in."; if (crackwater in self) { if (crackwater >= 4) print " The crack is filled with freezing water."; else print " The crack is filled with water."; } new_line; rtrue; ], before [; Search: if (crackwater in self) { if (crackwater >= 4) "The crack brims with freezing water."; else "The crack brims with water."; } "There's nothing in the crack, that you can see."; Empty, EmptyT: "Unlikely."; Receive: if (noun == jaroil || IsOilPod(noun) ~= 0) { remove noun; if (noun ~= jaroil) print "You easily rupture the pod; an acrid oil spills out. "; if (crackwater in self) { "The crack is already full of water. The oil forms a rainbow layer \ on top, spilling across the stone, but it evaporates almost \ immediately."; } "The oil fills the crack neatly. But it evaporates almost \ immediately, leaving no trace."; } if (noun == jarwater) { if (jarwater.number >= 6) print "You crack away the layer of ice, and upend the jar. "; if (crackwater in self) { remove noun; "The crack is already full of water. The excess just spills across \ stone and vanishes."; } remove noun; move crackwater to self; StartDaemon(crackwater); "The water fills the crack neatly. The stone must be whole, beneath, for \ the level isn't sinking."; } print_ret "The crack is much too thin for ", (the) noun, "."; ], each_turn [; if (self has general) "^A crack snickers at you from mid-air. [BUG]^"; ], has scenery container open; ! general means it's broken (and, hopefully, removed) Object crackwater "water in the crack" with name "water", short_name [; if (self.number >= 4) print "freezing "; rfalse; ], parse_name [ num wd; num = 0; wd = NextWord(); while ((wd == 'water') || ((self.number >= 4) && (wd == 'freezing' or 'ice' or 'frost'))) { num++; wd = NextWord(); } return num; ], description [; print "The water fills the crack."; switch (self.number) { 2, 3: print " It's laced with crystals of ice."; 4, 5, 6: print " It's rapidly freezing solid."; } new_line; rtrue; ], before [; Taste: "Your tongue won't fit in the crack either."; Take, Drink: "You can't imagine any way to get the water out of there."; ], number 0, ! how frozen? daemon [; self.number = self.number + 1; if (self.number == 6) { ! here we go... StopDaemon(self); remove self; remove cliffcrack; give cliffcrack general; move cliffrubble to FroCliffBottom; switch (location) { FroCliffTop: print "^", (emphstring) "Crack!", "^^"; "You look down, just in time to see the lip of the cliff slide away \ towards the distant snow. Shards of ice follow, a glittering \ shower from the crack that is now the cliff's new edge. The rumble \ fades below."; FroCliffBottom: print "^", (emphstring) "Crack!", "^^"; "You look up, just in time to see the lip of the cliff slide towards \ you. You leap back, quickly, as heavy stone chunks crunch into the \ snow at the cliff's base. The echoes fade; after a final delicate \ rain of flaked ice, silence."; FroCliffShadow: "^A hint of motion, far to the west, draws your eye. Something on the \ cliff? A long moment later, there is a distant rumble."; FroOnSlope: "^You hear a crunching rumble, somewhere to the south."; } rtrue; } if (location == FroCliffTop) { switch (self.number) { 2: "^Delicate crystals of frost are forming in the crack."; 4: "^The water in the crack is nearly frozen over."; 5: "^There is a faint pop from the ice in the crack. Another."; } } ], has scenery; Object frocliffwind "wind" FroCliffTop with article "the", name "wind" "gale", description "It's constant, deathly strong, and cold.", react_before [; Smell: if (noun == 0) { <>; } Listen: if (noun == 0) { <>; } ], before [; Examine: rfalse; Smell: <>; Listen: "The wind is a unending scream."; Touch: "The wind scrapes your skin raw."; Follow: "It's howling east, right off the cliff."; default: "You can't. It's wind."; ], number -1, ! used by each_turn each_turn [; if (self.number == -1) { self.number = 0; "^You thought the wind was deadly on the plain below... this stone is \ thrust like a challenge into the bitter sky, and the sky assaults it. \ A constant roar of ice blasts across you from the west. You would not care \ to climb higher."; } self.number = self.number + 1; if (self.number == 2) { self.number = 0; switch (random(7)) { 1, 4: "^The wind screams."; 2: "^The wind scours your face."; 3: "^The wind seems to lay open your bones."; } } ], has scenery; Object FroCliffBottom "Base of Cliff" with description [; print "The snow ends here; to the west rises a massive, worn wall of stone. It \ seems to press against you, even without touching, and against the unbounded white \ world that stretches east. But it does little against the wind."; if (froprints has general) print " Tracks in the snow run northeast."; new_line; rtrue; ], ne_to [; print "You move out, shivering, into the endless snow.^"; return FroCliffShadow; ], d_to "The ground seems solid.", w_to frocave, u_to frocave, in_to [; <>; ], sw_to "The cliff prevents you.", nw_to "The cliff prevents you.", cant_go [; return FroCrevasseDeath(); ], before [; Go: if (noun == w_obj or u_obj or frocave) { if (cliffrubble notin FroCliffBottom) "The cave is out of your reach."; print "You scramble up onto the rubble, and stretch... there, a hand on \ the lip of the cave. Several moments of strenuous exercise, and you \ are inside.^"; rfalse; } ], has light outdoors winter; Nearby frocave "cave" with name "cave" "dark" "hole", describe [; print "^There is a cave in the cliff's face, a dark hole several feet above your \ head."; if (cliffrubble in FroCliffBottom) { print " Rubble is mounded against the cliff, directly below the cave."; } new_line; rtrue; ], description [; print "The cave is a black circle on the stone. Unnaturally regular, now that \ you look. Strange."; if (cliffrubble notin FroCliffBottom) " But it's well out of your reach."; else " The rubble is piled below it."; ], before [; Climb: <>; Search: "You can't see into the cave from down here."; Receive, Touch, Push, Pull: "You can't reach the cave."; ], door_dir w_to, door_to FroInCave, has static door open; Nearby froprints5 "tracks in the snow" class froprintsclass, with description [; give froprints general; "Broad padded paws seem to have left these tracks. There are several \ sets of prints, and they become somewhat mixed with your own, but \ they all seem to run northeast."; ], before [; TrackDir: "The tracks lead northeast."; ]; Object cliffrubble "rubble" with name "mound" "pile" "chunks" "stone" "rubble", description "Large chunks of stone are piled at the base of the cliff, below \ the cave. Their edges are raw and sharp, freshly broken.", before [; Climb, Enter: <>; LookUnder, LookBehind, Search, Push, Pull: "You'll never be able to shift the pile."; Take: "Oh, leave it. It's just rock."; ], has scenery; Object FroInCave "Tunnel Mouth" with description "The tunnel is round, as you saw from the outside, and the walls are \ smooth; a hint of groove curves around them. The passage recedes west, dimly, \ though you can make out a hint of glow in the distance. A blinding blue and \ white circle of outer world glares at you from the east. Somehow, the wind is \ not blowing in, so the air is icily still.", e_to [; print "You sit on the lip of the tunnel, turn, and carefully lower yourself to \ the rubble below."; if (random(11) <= 5) print " A chunk of stone slides, but you manage to wobble your way off \ with only a slight wrench to your ankle."; new_line; return FroCliffBottom; ], out_to [; <>; ], ne_to [; <>; ], d_to [; <>; ], w_to [; print "As you move deeper into the tunnel, you feel the floor rising, very slightly.^"; return FroInCave2; ], in_to [; <>; ], sw_to [; <>; ], u_to [; <>; ], cant_go "The tunnel runs west and east.", has light winter; Nearby froendglow1 "distant glow" with name "distant" "hint" "of" "glow", description "You can't make out the source of the glow. It's soft, and very distant.", before [; Examine: rfalse; Follow: <>; default: "The glow is far to the west."; ], has scenery; Object FroInCave2 "Chill Tunnel" with description "The tunnel is very straight. You can tell that it's not quite east-west, \ though; the distant bright spot of outside snow is more east-northeast, \ and a strange watery glow is visible west-southwest.", e_to [; print "You walk towards the light.^"; return FroInCave; ], out_to [; <>; ], ne_to [; <>; ], d_to [; <>; ], w_to [; print "You walk towards the glow. The walls change, abruptly, from smooth carved \ stone to milky blue ice.^"; return FroLightCave; ], in_to [; <>; ], sw_to [; <>; ], u_to [; <>; ], cant_go "The tunnel runs west and east.", has light winter; Nearby froendlight2 "distant light" with name "distant" "bright" "spot" "snow" "world", description "It's the light at the beginning of the tunnel, far to the east.", before [; Examine: rfalse; Follow: <>; default: "The bright spot is at the east end of the tunnel."; ], has scenery; Nearby froendglow2 "distant glow" with name "distant" "strange" "watery" "glow", description "You can't make out the source of the glow. It's soft, distant, but \ pervasive.", before [; Examine: rfalse; Follow: <>; default: "The watery glow is far to the west."; ], has scenery; Object FroLightCave "Cave of Light" with description "The shape of the tunnel is the same, but you are surrounded by \ translucent ice, here at the end. \ To the east the passage returns to the dimness of stone. \ The west wall is an irregular sweep \ of ice; and it glows, with what must be the setting rays of the sun, \ somewhere to the west. \ Ripples of gold light fall through milky blue veils, turning this space \ into a small still cathedral.", out_to [; <>; ], ne_to [; <>; ], d_to [; <>; ], e_to [; print "You leave, feeling again the faint downward and northward angle \ of the tunnel. Stone surrounds you again.^"; return FroInCave2; ], cant_go "The tunnel runs only east.", before [; Smell: if (noun == nothing) <>; Listen: if (noun == nothing) <>; Attack, KnockOn, Push, Take, Touch, Ignite, Examine: if (noun ~= nothing && noun in compass) { <<(action) froendice second>>; } ], has light winter; Nearby froendice "wall of ice" with name "wall" "sweep" "of" "milky" "ice", description "The cave is walled with pure ice, but the western curve is a phantasm \ of frozen, muted color and light. An indistinct shape is caught within it.", before [; Attack, KnockOn, Push, Take: "The ice is iron-hard."; Touch: "The ice burns your fingers implacably."; Search: "You cannot make out what the shape is, that is caught within the ice \ to the west."; Ignite: "A spot of ice glistens, and a single tiny drop falls away, to freeze \ again immediately to the wall."; Listen: "A roaring, whispering sussurus -- very faint -- emanates from the ice."; ], number 1, ! used by each_turn each_turn [; self.number = self.number + 1; if (self.number == 3) { print "^You hear a distant, muted rush, more with your bones than your ears.^"; } if (self.number == 6) { self.number = 3; print "^The muted roar surges again.^"; } ], has scenery; Nearby froshape "indistinct shape", with name "indistinct" "blur" "shape" "form", initial "Caught within the western ice is a dark, indistinct form. The glow \ behind it casts a night-black shadow across the tunnel's floor.", description "Pale light and ice \ veil its shape; you are sure only that it's been still for a long, long time.", before [; Examine: rfalse; LookBehind: "Behind the shape is nothing but the silent glow."; default: "The shape is deep within the ice."; ], has static; Nearby shapeshadow "shadow in front of the shape" class shadowclass, with description [; "The edges of the shadow are indistinct, though still somehow impenetrably \ dark."; ], door_to DomEast, door_world world_Dome, before [; Smell: "The shadow breathes a bitter, choking odor."; Receive: print (The) noun, " fades into utter blackness.^"; rfalse; Enter: give self general; print "The shadow ", (emphstring) "blurs,", " devouring the milky ice-light \ around you, then the world, then you --^^"; PauseClear(); print "-- Air scalds your face, and then is merely tepid, with a bitter burning \ scent. The world is still dim, but with a strange glare --^^"; rfalse; ]; ! --------------- Object frosnow "snow" with name "ice" "snow", found_in FroDesolation FroAtPole FroCliffShadow FroOnSlope FroCliffBottom, description "The snow is dry, powdery, and actually quite a thin sheet. \ Only a few inches down, it turns to iron-hard ice. The snow is tracked \ with the prints of some large-pawed animal.", before [; Touch: "The cold prickles your half-numbed fingertips."; Eat, Taste: if (tongue has general) "Your thonh' ith colbh enout' alweady."; "You scoop up a few flakes. \ They melt slowly on your tongue, leaving a sharp, electric taste: \ ...winter."; Ignite: "You kneel, and melt a tiny hollow in the surface snow. As soon as you \ stand, though, you lose it; one more shadow of white amid white."; Take: if (parent(snow) ~= nothing) { "There's no need to start a collection."; } move snow to player; snow.number = 0; itobj = snow; "You scrape up a scant handful of snow."; ], has scenery absent; ! absent switched Object snow "handful of snow" with name "handful" "of" "snow", description [; switch (self.number) { 0,1: "Just a handful of dry, powdery snow."; 1,2: "Just a small handful of powdery snow."; 3,4: "Just a small clot of snow."; 5,6: "Just a tiny clot of snow."; default: "Just a handful of confetti. [BUG]"; } ], number 0, ! how much is melted away? before [; ThrowAt: remove self; "The snow is too powdery to make much of a snowball. When you throw it, it \ just sprays."; Drop: if (verb_word == 'throw') <>; remove self; "The snow scatters and is lost."; Eat, Taste: if (tongue has general) "Your thonh' ith colbh enout' alweady."; remove self; "The snow melts slowly on your tongue, leaving a sharp, electric taste: \ ...winter."; Ignite: "You feed a few flakes to the fire. As you'd expect, they hiss and vanish."; ]; [ MaintainSnowPhase curnum; curnum = locationof(snow); if (curnum hasnt winter) { snow.number = snow.number + 1; switch (snow.number) { 2: if (TestScope(snow) ~= 0) { print "^The handful of snow is beginning to melt.^"; } 4,6: if (TestScope(snow) ~= 0) { print "^Water drips from the snow.^"; } 7: if (snow in jar) { if (TestScope(snow) ~= 0) { print "^The last bit of snow in the jar melts.^"; } move jarwater to jar; jarwater.number = 2; ! just past melting give jarwater ~general; remove snow; } else { if (TestScope(snow) ~= 0) { print "^The last bit of snow melts away.^"; } remove snow; } } } ]; Object frowind "wind" with article "the", name "wind" "gale", found_in FroDesolation FroAtPole FroCliffShadow FroOnSlope FroCliffBottom, description "The wind seems to be eternal, here. It's cold and sharp as metal, and \ the sound that it shivers across the ice is the sound of utter patience.", react_before [; Smell: if (noun == 0) { <>; } Listen: if (noun == 0) { <>; } ], before [; Examine: rfalse; Smell: "The wind smells of ozone and ice: the tang of the dead of winter."; Listen: "This land moans unremittingly -- twisting louder or softer sometimes, \ but the wind is never gone."; Touch: "The wind bites your skin."; Follow: "~Who has seen her, following the wind?~ Yes, very poetic, but not \ very practical."; default: "You can't. It's wind."; ], number 0, ! used by each_turn each_turn [; self.number = self.number + 1; if (self.number == 2) { self.number = 0; switch (random(11)) { 1: "^The wind shrieks."; 2: "^A gust of wind scours your face."; 3: "^A knife of icy wind seems to lay open your bones."; 4: "^The wind slackens, then blasts again."; 5: "^A gust of wind nearly staggers you."; 6: "^The wind swirls."; } } ], has scenery absent; ! absent switched #ifnot; ! SKIP_FROZEN; Object FroDesolation "Cold Room" with description "Fifth room.", has light; Constant FroCliffTop FroDesolation; Constant cliffcrack FroDesolation; Constant FroLightCave FroDesolation; Constant FroCliffShadow FroDesolation; Constant FroCliffBottom FroDesolation+1; Constant FroOnSlope FroDesolation+2; Nearby blanket "red blanket" with name "red" "blanket", has clothing; Nearby frowind "wind" with number 0, has scenery; Nearby snow "snow" with name "snow"; Constant crackwater snow; [ MaintainSnowPhase; ]; [ FroEnter; ]; [ FroExit; ]; #endif; ! SKIP_FROZEN;