Array EndMapping --> 0 0 0 0 0 0 0 0; Array EndRooms --> EndRoomInitial EndRoomWhite EndRoomGold EndRoomRed EndRoomBrown EndRoomGreen EndRoomBlue EndRoomBlack; Global EndExitsFound = 0; Class EndRoomClass with number 0, count 0, short_name [; print "([BUG] End Room "; CapColorString(self.number); if (self.count) print ", ", (string) self.count.name_str; print ")"; rtrue; ], n_to [; return EndGoDir(n_obj); ], ne_to [; return EndGoDir(ne_obj); ], e_to [; return EndGoDir(e_obj); ], se_to [; return EndGoDir(se_obj); ], s_to [; return EndGoDir(s_obj); ], sw_to [; return EndGoDir(sw_obj); ], w_to [; return EndGoDir(w_obj); ], nw_to [; return EndGoDir(nw_obj); ], out_to [; <>; ], d_to [; deadflag = 2; print "You pass silently down through the diagram.^^"; print (emph) "Around you, the world goes as flat as a page in a book.", "^^"; "The symbols are beyond your comprehension. But there is no time here; so you begin your study."; ], after [; Drop: remove noun; print_ret (The) noun, " passes silently down through the diagram and is gone."; ], each_turn [; if (self.number) { if (self has general) return; give self general; print "^"; switch (random(5)) { 1: print "A voice is speaking:"; 2: print "You hear a voice:"; 3: print "Someone is talking:"; 4: print "Someone is talking, though not to you:"; default: print "You hear words:"; } print "^^"; EndStory(self.number); } ], has ~general; [ FoundInEndRoom; if (location ofclass EndRoomClass) rtrue; else rfalse; ]; [ FoundInEndRoomEx; if ((location ofclass EndRoomClass) && location.number) rtrue; else rfalse; ]; Object endvoice "voice" with name 'voice' 'voices' 'speaking' 'words' 'talking' 'someone' 'person', found_in FoundInEndRoomEx, before "The voice is no longer audible.", react_before [; Listen: if (noun == nothing) <>; ], has scenery; FloorObject endcellfloor with name 'smooth' 'web' 'mark' 'marks' 'geometric' 'intricate' 'elaborate' 'diagram' 'figure' 'plane', short_name "elaborate diagram", found_in FoundInEndRoom, description "This is not the diagram you inscribed. These marks are ramified across the entire floor, dividing into swirls and sprays too delicate to discern. It is beyond your comprehension.", before [; Touch, Rub: "The marks beneath you have no tactile sensation."; Enter: <>; ]; [ EndGoDir dir res; !print "Going ", (string) dir.name_str, " (", dir.count, ").^"; res = EndMapping-->(dir.count); if (res) { if (res == location) print "The world seems unwilling to change as you travel.^"; else print "You move across the diagram.^"; return res; } if (EndExitsFound == 7) { print (emph) "Around you, the world goes as flat as a page in a book.", "^"; TransportEffect(); deadflag = 2; "^You pause between moments to consider the possibilities. What might stand ahead? The fragments of your past seem no more than the shuffled cards of a lost game. The future is anywhere, now.^^ You move into the next moment."; } EndExitsFound++; res = EndRooms-->EndExitsFound; res.count = dir; EndMapping-->(dir.count) = res; print "You move across the diagram.^"; return res; ]; ! ---- EndRoomClass EndRoomInitial with short_name "Cell, Possibly", description "This space, barely wider than your outstretched arms, seems to have been chopped raw from unfinished stone. Only the floor is smooth -- an intricate web of geometric marks which swirls from wall to wall. Eight narrow gaps pierce the walls, one in each compass direction."; WallObject -> endcellwall with name 'grey' 'gray' 'stone' 'rough' 'gap' 'gaps' 'narrow', short_name "stone wall", description "The eight walls are unseamed, unsmoothed grey rock. There is a narrow gap in each wall.", before [; Touch, Push: "The stone is rough and unyielding."; Enter: <>; ]; CeilingObject -> endcellceiling with name 'grey' 'gray' 'stone' 'rough', short_name "stone ceiling", description "The stone ceiling is low, crowding roughly down on your head.", before [; Touch, Push: <>; ]; ! ---- EndRoomClass EndRoomWhite with number 1, short_name "White Hallway, Possibly", description "You are in a high, dim corridor, walled in cracked and moldering white plaster. The only light comes from tiny flickering candles above; intricate geometric marks cover the floor. The hall curves gently away in all eight directions."; CeilingObject -> endhallceiling with description [; return hallceiling.description(); ]; WallObject -> endhallwall with name 'white', parse_name ParseNameClonePlus, parse_name_clone hallwall, short_name "plaster walls", description [; return hallwall.description(); ], before [; Rub, Touch, Attack, Take, Push, Pull: <>; ]; Object -> endhallcandles "candles" with parse_name ParseNameClone, parse_name_clone hallcandles, description [; return hallcandles.description(); ], before [; Examine: rfalse; default: "The candles are out of reach."; ], has scenery pluralname; ! ---- EndRoomClass EndRoomGold with number 2, short_name "Gold Harp Chamber, Possibly", description "Broad golden pillars march around the edge of this circular chamber. The walls between the pillars are deeply set, painted in variegated shades of yellow and amber, and lit from some hidden source. The floor is still awash with geometric marks. Archways lead in all directions."; WallObject -> endharpwall with name 'painted' 'source' 'panel' 'panels', description "The eight wall panels are stippled in shades of gold and amber. They are framed by the golden pillars; and somehow lit from the sides, as if invisible lights shone behind each pillar."; Object -> endharppillars "pillars" with parse_name ParseNameClone, parse_name_clone harppillars, description "The pillars seem to be wood, in fact -- floridly carved and painted with gilt. Eight of them are evenly spaced around the perimeter of the room.", before [; Take, Push, Pull, Climb, Attack, LookBehind: <<(action) harppillars>>; ], has scenery pluralname; Object -> endharp "harp" with name 'harp' 'gold' 'unstrung', initial "In the center of the room stands an unstrung harp of gold.", description "The instrument stands unblemished; but it has no strings.", before [; Take, Push, Pull: "The harp is too large to move."; Receive: if (noun == knottedstring) "That's not a harpstring."; Play: "No one can play this harp."; Listen: "You hear nothing."; ], has static; ! ---- EndRoomClass EndRoomRed with number 3, short_name "Red-Curtained Room, Possibly", description "The walls of this small room are entirely swathed in heavy red brocade curtains. Geometric diagrams cover the floor. Openings lead in all eight directions."; WallObject -> endmirrorwall with name 'red', parse_name ParseNameClonePlus, parse_name_clone mirrorwall, description "Curtains of dark-red silk brocade fall from ceiling to floor, all around you. The rough folds seem to soak up sound; the silence drags at you.", before [; Touch, LookBehind, Search, Open, Close, Push, Pull, Listen: <<(action) mirrorwall>>; ], has pluralname; Object -> endmirrorframe "mirror frame" with name 'mirror' 'oval' 'tall' 'standing' 'frame' 'bar' 'bars' 'empty', initial "In the center of the room is a standing mirror frame, which is empty.", description "It seems to be a plain frame of iron bars. Nothing is within.", before [; Enter: "You step through the empty frame. Nothing changes."; Take, Push, Pull, Turn: "The mirror frame is anchored to the floor."; ], has static; ! ---- EndRoomClass EndRoomBrown with number 4, short_name "Brown Shed, Possibly", description "This room looks like nothing so much as a small, windowless garden shed. The floor is a plane of geometric diagrams, but the walls are unfinished brown planks. Narrow openings in every direction lead to eight steep stairways, which climb away into darkness.", u_to [; <>; ]; WallObject -> endshedwall with name 'brown', parse_name ParseNameClonePlus, parse_name_clone shedwall, description "The shed walls are weathered, rough brown planks.", before [; Touch: <>; ], has pluralname; ! ---- EndRoomClass EndRoomGreen with number 5, short_name "Green Bower, Possibly", description "A tiny pleasance-garden is nestled here, high on a mountainside. Shrubs and raised flowerbeds lie atop a plane of geometric markings. A lush green valley is visible in the distance; eight paths run in all directions."; Object -> endgbalconyvalley "valley" with parse_name ParseNameClone, parse_name_clone gbalconyvalley, description "The valley is infinite in detail, though bounded by stone. The trees are spread in afternoon sunlight.", before [; Examine: rfalse; default: "The valley is far, far below you."; ], has scenery; Object -> endgbowershrubs "shrubs" with parse_name ParseNameClone, parse_name_clone gbowershrubs, description [; return gbowershrubs.description(); ], before [; Search, Take, Pull, Smell: <<(action) gbowershrubs>>; ], has scenery pluralname; Object -> endgardenmountain "mountain" with name 'mountain' 'cliff' 'peak', description "The mountain stands proud, drenched with afternoon sunlight.", before [; Examine: rfalse; default: "The mountain is high above you."; ], has scenery; ! ---- EndRoomClass EndRoomBlue with number 6, short_name "Blue Mosaic Room, Possibly", description "The walls and ceiling of this room are entirely covered with tiny blue tiles. The floor is a plane of geometric diagrams. Archways lead in all directions."; WallObject -> endmosaic with name 'tile' 'tiles' 'mosaic' 'mosaics' 'blue' 'wall' 'walls' 'sky', description "The mosaic seems to represent a perfect blue sky, rising up the walls and across the ceiling.", before [; Take, Pull, Touch, Rub, Push, Search, Enter: <<(action) mosaic>>; ]; CeilingObject -> endmosaicceiling with before [; Examine, Search: <>; ]; Object -> endcage "brass stand" with name 'brass' 'wire' 'stand' 'curved', initial [; if (endbird in self) "A tiny brass bird perches on a curved stand in the center of the room."; else "In the center of the room is an empty stand of curved brass."; ], description [; return self.initial(); ], before [; Take, Push, Pull: "The stand is bolted to the floor."; Receive, Enter: "The stand is suitable only for birds to perch on."; ], has static transparent; Object -> -> endbird "brass bird" with name 'tiny' 'brass' 'bird' 'sparkling', description "The bird is a minute shape of sparkling brass.", before [; Examine: rfalse; Search: <>; default: remove self; "The bird startles up, flutters around your head, and vanishes away into the blue mosaic sky."; ], number 0, each_turn [; self.number++; if (self.number == 4) print "^The bird cocks its head and peers at you.^"; ], has scenery animate; ! ---- EndRoomClass EndRoomBlack with number 7, short_name "Black Night, Perhaps", description "You are surrounded by deep sky. In all directions you see stars in their slow-eternal coursing. The infinite diagram remains below you, dark markings on blackness, but even its geometry is not dense enough to bisect the night."; Object -> endstars "stars" with name 'deep' 'night' 'sky' 'star' 'stars' 'constellation', description "The stars await you. Their constellations are, as yet, utterly unfamiliar.", before [; Examine: rfalse; Search: <>; default: "How can you reach the stars?"; ], has scenery pluralname;