! ------ Dome world #ifndef SKIP_DOME; Global DomDone = 0; ! Becomes 1 when you exit through to M-world. [ DomEnter; give domdome ~absent; give domsand ~absent; give domdirt ~absent; give dombars ~absent; if (DomDone == 0 && domdirt.number == 0) { give domcrowd ~absent; } ]; [ DomExit; give domdome absent; remove domdome; give domsand absent; remove domsand; give domdirt absent; remove domdirt; give dombars absent; remove dombars; give domcrowd absent; remove domcrowd; ]; Object DomEast "East of Dome" with description "You stand on the east side of a wide circle of grey, glittering sand. \ The sky is black; but it is not night, for the sun hangs above the western \ horizon, a strange, fierce white dot that does not dim the stars around it \ or the moons above. A familiar sky-black shadow lies at your feet, cast in \ dim sunlight from a waist-high dome which stands at the center of the circle. \ The sand is surrounded by a fence of sorts -- tall silver bars rise \ around you, a roofless cage. And beyond that is nothing but endless barren plain.", nw_to [; print "You circle the dome."; if (domcrowd hasnt absent) print " The white figures seem to become more intent, drawing a little \ closer to the bars."; new_line; return DomWest; ], sw_to [; <>; ], w_to "The dome is in your way.", out_to [; <>; ], cant_go "You can pass around the dome to the northwest or southwest.", has light outdoors; Nearby domeshadoweast "long shadow by the dome" class shadowclass, with name "long", description "The sun, shrunken and sullen, casts a long shadow from the dome east \ across the circle. A trace of frost whitens the sand, at its edges.", door_to FroLightCave, door_world world_Frozen, before [; Smell: "A thin chill breathes from the long shadow."; Receive: print (The) noun, " moves through the blackness and is gone.^"; rfalse; Enter: print "The shadow ", (emphstring) "spreads", " across the sand; the silver \ bars flicker away into the black sky, one by one, and then the stars --^^"; PauseClear(); if (domdirt.number > 0) { DomDeathByShadow(); rtrue; } print "-- Clean cold air snaps you back to awareness, in the soft and \ layered glow of the ice.^^"; if (lump in player) print "Something in your hand feels less weighty.^^"; rfalse; ]; Object DomWest "West of Dome" with description [; print "The west side of the circle is no different. Silver posts march around \ the perimeter of the sand, beneath the impossible starry, sun-lit night sky. The \ low dome rises to the east, at the circle's center"; if (domeshadowwest in self && domeshadowwest has general) print "; there is a bare edge of shadow at its foot"; "."; ], ne_to [; print "You circle the dome."; if (domcrowd hasnt absent) print " The white figures stir uneasily."; new_line; return DomEast; ], se_to [; <>; ], e_to "The dome is in your way.", out_to [; <>; ], cant_go "You can pass around the dome to the northeast or southeast.", has light outdoors; Nearby domeshadowwest "thin shadow by the dome" class shadowclass, with name "thin" "narrow" "edge", description [; give self general; print "The moon Amwal is high and rising. But it is yet low enough to cast a \ knife-thin edge of shadow, on the west side of the dome."; if (domcrowd hasnt absent) print " You notice a current of motion among the white figures as you \ turn towards the shadow."; new_line; rtrue; ], door_to MeanRoom, door_world world_Meaning, before [; Touch: give self general; if (domcrowd hasnt absent) print "The white outlines seem to vibrate as you bend over the dome. "; rfalse; Smell: give self general; "The edge of shadow has no odor at all."; Receive: give self general; if (domcrowd hasnt absent) print "The white outlines seem to vibrate as you bend over the shadow. "; print (The) noun, " moves through the blackness and is gone.^"; rfalse; Enter: give self general; if (domcrowd hasnt absent) { print "The white figures are whirling around the circle, echoing with \ harsh grating tones. You ignore them -- are they ", (emphstring) "leaping?", " -- and set foot to the darkness. "; } print "The shadow seems far too narrow to enter; but it ", (emphstring) "spreads", " across the sand, without seeming to change. The silver \ bars flicker away into the black sky, one by one, and then the stars --^^"; PauseClear(); if (domdirt.number > 0) { DomDeathByShadow(); rtrue; } print "-- There is nothing beneath your feet. You flail convulsively for \ a moment, before you realize that you are not falling.^^"; DomDone = 1; give domdirt general; ! no dirt-warnings after crowd is gone remove self; rfalse; ]; ! general means seen ! ----------------- Object domcrowd "crowd of white figures" with name "crowd" "of" "white" "pale" "shape" "shapes" "figure" "figures", found_in DomEast DomWest, describe [; new_line; switch (self.number) { 0: self.number = 1; "Beyond the bars, something shifts. You spin; a hooded white outline \ watches you, peering between the silver posts. Or at least it seems \ to. You can make out no detail of face or feature in that indistinct \ figure. Nor in the one next to it. You turn again; the circle is \ surrounded by a crowd of pale shapes."; 1: "A crowd of white shapes moves in slow turmoil beyond the bars."; } ], number 0, description [; "They might be human, within those pale outlines. But you have doubt; there is \ something about the way they move, stilt-angled.... The shapes keep well \ back from the silver bars."; ], react_before [; Listen: if (noun == nothing) <>; ], before [; Listen: "Deep, discordant notes seem to grate from the white shapes."; Touch: "The white figures flinch away."; Bow: "The white figures flicker, and bend towards you, in return."; ], life [; Ask, Tell, Answer, Order: "The white shapes shift excitedly."; Give, Show: print_ret "You hold out ", (the) noun, "; one of the shapes bends towards \ you for a moment. Then it twists away, and the crowd conceals it."; Attack, Kiss: "They are much too strange, and anyway out of reach."; WakeOther: "You're not certain you want them any more aroused."; ], each_turn [; if (location == DomWest && domeshadowwest hasnt general) { if (random(11) <= 3) "^Low tones grate through you, and you look up to see several of the \ white shapes moving animatedly to the west, beyond the bars. There \ is something about their motions -- are they gesturing to something \ behind you?"; } if (random(5) == 1) "^A sound surrounds you, like the murmuring of stones; deep and tumultuous, \ and harsh, though not loud."; ], has static animate hiddengender absent; ! absent-switched Object dombars "circle of silver bars" with name "circle" "silver" "bar" "bars" "post" "posts" "cage" "fence", found_in DomEast DomWest, description [; print "Each bar is the width of your two thumbs together. Each is mirror-bright, \ so that your face stares back a thousand times, drawn needle-slim.... \ The bars end twice your height above the sand; \ their spacing, around the rim of the circle of sand, could be wide enough \ for you to squeeze through. Beyond the bars, a barren plain of oily-looking earth \ reaches to the edge of the starred sky."; if (domcrowd hasnt absent) print " Indistinct white figures move slowly across it."; new_line; rtrue; ], before [; Touch: print "The silver is cool."; if (domcrowd hasnt absent) print " The white figures lurched forward as you reached out, \ but now they are retreating again."; new_line; rtrue; Climb: "There is nothing to climb to."; Push, Pull, Take: print "You seize a bar"; if (domcrowd hasnt absent) print " (the white figures swirl agitatedly)"; ", but it does not give, no matter how much pressure you apply."; Attack, KnockOn: "The bar thuds dully."; Search, LookBehind: <>; Enter, GetOff, GetOutOf: if (domdirt hasnt general) { <>; } if (domdirt.number == 0) { StartDaemon(domdirt); if (domcrowd hasnt absent) print "The white figures swirl furiously, but you ignore them, and"; else print "You"; " turn to slide \ between the bars. One leg, and... your foot itches. You shift your weight, \ pressing; but the itch has become a fierce burn, as if you were barefoot \ on hot glass. You fall back from the bars, scraping your sole in the \ clean sand."; } else { "Your skin begins burning even as you reach between the bars. You draw \ back hastily."; } ], has scenery absent; ! absent-switched. Object domdirt "outer plain" with name "plain" "oily" "tumbled" "discolored" "dirt" "earth" "soil", found_in DomEast DomWest, description [; print "To a glance, the outer plain simply seems to be dark, rich soil. But it has \ an oily gleam, glistening with traces of a dozen dark, viscous colors. The earth \ is harrowed and rutted."; if (domcrowd hasnt absent) print " Above it, the white shapes move slowly back and forth."; new_line; rtrue; ], number 0, react_before [; Smell: if (noun == nothing) <>; ], before [; Smell: "A thick, chokingly bitter odor drifts in from outside the circle."; Touch, Take, Eat, Taste, Dig: if (self hasnt general) { give self general; "You step towards the bars; but the white shapes are suddenly agitated, \ jerking back and forth just beyond the circle. You leap back, startled."; } if (self.number == 0) { StartDaemon(self); if (domcrowd hasnt absent) print "The white figures swirl furiously, but you ignore them, and"; else print "You"; " stretch \ your hand past the bars. The oily dirt is... a sudden fierce burn \ in your fingertips. Your jerk back, shaking the soil from your \ hand."; } else { "Your skin begins burning even as you reach between the bars. You draw \ back hastily."; } ], daemon [; self.number = self.number + 1; switch (self.number) { 1: "^The pain fades to a faint itching."; 2: if (domcrowd hasnt absent) { give domcrowd absent; remove domcrowd; "^The white figures are suddenly still, for a moment. Then, one by \ another, they fade into the lifeless distance."; } 3: "^There is a foul, bitter taste in your mouth."; 5: "^Your head aches, and the foul taste burns on your tongue."; 6: "^You stumble; the world jostles with vertigo. Your blood pounds, \ painfully."; 7: deadflag = 1; "^Your stomach knots. Everything seems ringed in light, and the roaring \ sand is -- under your knees? -- something burns, ah --"; } ], has scenery absent; ! absent-switched. general means the shapes have warned you [ DomDeathByShadow; deadflag = 1; "But something is wrong; your throat burns with a bitter reek, and an ache pulses \ again and again in your head. There is no you but the crushing pain, and \ the time of nothingness stretches, and stretches immeasurably. And ends."; ]; Object domdome "dome" with name "waist" "waist-high" "low" "high" "dull" "white" "dome", found_in DomEast DomWest, description [; print "The dome is a perfect hemisphere, of some glossy white substance. \ It dimly reflects the sun and moons, \ but it has no other detail, or even texture."; if (location == DomEast) print " The dome casts a long black shadow across the sand at your feet."; if (location == DomWest) { if (domeshadowwest in DomWest) { print " There is a narrow edge of black shadow along the west \ arc of the dome"; if (domeshadowwest hasnt general) { give domeshadowwest general; print ". What? Ah --"; } else { print ";"; } print " the moon Amwal, though nearly at zenith, is just low enough \ yet to cast it."; } else { print " The edge of shadow is gone, now; both moons are too high to \ cast any."; } } new_line; rtrue; ], before [; Touch, Push, Pull, Turn, Climb: print_ret "You extend your hand, and then jerk it back. The substance of the \ dome, featureless to the eye, feels as if it were ", (emphstring) "spinning", " in some icy-slick direction you cannot measure. Your fingertips are \ warm and tingling."; Listen: "The dome is quite silent."; LookUnder: print "The bottom edge of the dome disappears unremarkably into the grey sand."; if (location == DomEast) print " The setting sun casts a long shadow from the dome, across the sand."; if (location == DomWest) { if (domeshadowwest in DomWest) { print " There is a narrow edge of black shadow along the west \ arc of the dome"; if (domeshadowwest hasnt general) { give domeshadowwest general; print ". What? Ah --"; } else { print ";"; } print " the moon Amwal, though nearly at zenith, is just low enough \ yet to cast it."; } else { print " The edge of shadow is gone, now; both moons are too high to \ cast any."; } } new_line; rtrue; LookBehind: "You cannot see the other side of the dome from here."; Search: "You cannot see into the dome."; Enter: "How?"; Attack, KnockOn: if (second == nothing) "You strike the dome. On contact, your hand is snapped sharply to \ one side. You stumble to your balance, rubbing your tingling skin."; print_ret (The) second, " strikes the dome, and is snapped sharply to one \ side. You barely retain your hold."; Receive: if (noun == jarwater || noun == jaroil) { remove noun; print "You tilt the jar. A stream of "; if (noun == jarwater) print "water"; else print "oil"; print " strikes the dome, and sprays into a thousand bright droplets, \ that arc an astonishing distance and seem to evaporate in mid-air.^"; rtrue; } print (The) noun, " seems to rest on the dome for a splintered instant. Then \ it is spinning in a high arc, that ends on the grey sand near your feet.^"; keep_silent = 1; ; keep_silent = 0; rtrue; ], has scenery absent supporter; ! absent-switched Object domsand "grey sand" with name "circle" "grey" "glittering" "sand", found_in DomEast DomWest, description [; print "The sand is bright, a million points of reflected light in grey, and \ very, very clean. Nothing marks it but your own footprints, and even they \ are blurred. The sand ends, very abruptly, at the silver bars; beyond that \ edge, the ground is a tumbled, discolored soil.^"; if (lump in location && lump hasnt moved) print "^A perfectly clear glass sphere rests in the sand at your feet.^"; rtrue; ], react_before [; Examine, Take, Touch, Smell: if (noun == d_obj) { <<(action) self>>; } ], before [; Take: if (parent(sand) ~= nothing) { "There's no need to start a collection."; } move sand to player; itobj = sand; "You scoop up a handful of grey sand. It flows smoothly, trying to leak \ out between your fingers."; Touch: "The sand slides around your finger like fur."; Smell: "The sand has no odor."; Search, LookUnder, Dig: if (lump in location && lump hasnt moved) "A perfectly clear glass sphere rests in the sand at your feet."; "You scrape through the sand for a few moments. There doesn't seem to be \ anything down there but more sand."; ], has scenery absent; ! absent-switched Object sand "handful of sand" with name "handful" "of" "sand", description "It's a small mound of clean, grey sand.", before [; Touch, Smell: <<(action) domsand>>; ]; #ifnot; ! SKIP_DOME; [ DomEnter; ]; [ DomExit; ]; Object DomEast "East Dome" with description "Sixth room."; Object DomWest "West Dome" with description "Sixth room prime."; #endif; ! SKIP_DOME;