| Constant Story "RUINS"; | |
| Constant Headline "^An Interactive Worked Example^ | |
| Copyright (c) 1999 by Angela M. Horns.^"; | |
| ! ---------------------------------------------------------------------------- ! | |
| ! This version recreated by Roger Firth in May 2001, using the simple | |
| ! (albeit time-consuming) process of combining the various fragments | |
| ! of "Ruins" quoted in Edition 4/1 of the Inform Designer's Manual. | |
| ! | |
| ! PLAYER | |
| ! lamp,dictionary,map | |
| ! GREAT PLAZA | |
| ! | mushroom,packing-case,camera,newspaper,steps | |
| ! | | |
| ! | | |
| ! SQUARE CHAMBER -------------------- WORMCAST | |
| ! | inscriptions,sunlight,(key) eggsac | |
| ! | | |
| ! | | |
| ! STOOPED CORRIDOR | |
| ! | statuette,door | |
| ! | | |
| ! | | |
| ! UPPER CANYON SHRINE | |
| ! | ball / \ paintings,altar,mask,(priest) | |
| ! | ---------- ---------- | |
| ! | / \ | |
| ! XIBALB� ANTECHAMBER | |
| ! | stela | cage,skeletons,(warthog) | |
| ! | | | |
| ! | | | |
| ! LOWER CANYON BURIAL SHAFT | |
| ! | chasm honeycomb | |
| ! | | |
| ! | | |
| ! PUMICE LEDGE | |
| ! bone | |
| ! | |
| ! ---------------------------------------------------------------------------- ! | |
| Constant MAX_CARRIED = 7; ! Defined in DM4 �22 | |
| Constant MAX_SCORE = 30; ! Defined in DM4 �22 | |
| Include "Parser"; | |
| Include "VerbLib"; | |
| ! ---------------------------------------------------------------------------- ! | |
| ! The TREASURE class definition. | |
| ! | |
| ! Defined in DM4 �5, modified in �23 | |
| Class Treasure | |
| with before [; | |
| Take, Remove: | |
| if (self in packing_case) | |
| "Unpacking such a priceless artifact had best wait until | |
| the Carnegie Institution can do it."; | |
| if (self.photographed_in_situ == false) | |
| "This is the 1930s, not the bad old days. Taking an | |
| artifact without recording its context is simply looting."; | |
| Photograph: | |
| if (self has moved) "What, and fake the archaeological record?"; | |
| if (self.photographed_in_situ) "Not again."; | |
| ], | |
| after [; | |
| Insert: | |
| if (second == packing_case) { | |
| score = score + self.cultural_value; | |
| if (score == MAX_SCORE) { | |
| deadflag = 2; | |
| print_ret "As you carefully pack away ", | |
| (the) noun, | |
| " a red-tailed macaw flutters down from the | |
| tree-tops, feathers heavy in the recent rain, | |
| the sound of its beating wings almost | |
| deafening, stone falling against stone... | |
| As the skies clear, a crescent moon rises | |
| above a peaceful jungle. It is the end of | |
| March, 1938, and it is time to go home."; | |
| } | |
| "Safely packed away."; | |
| } | |
| Photograph: | |
| self.photographed_in_situ = true; | |
| ], | |
| cultural_value 5, | |
| photographed_in_situ false; | |
| ! ---------------------------------------------------------------------------- ! | |
| ! The game beings in the GRAND PLAZA. | |
| ! | |
| ! Defined in DM4 �4, modified in �8, �9 and �23 | |
| Object Forest "~Great Plaza~" | |
| with description | |
| "Or so your notes call this low escarpment of limestone, but the | |
| rainforest has claimed it back. Dark olive trees crowd in on all | |
| sides, the air steams with the mist of a warm recent rain, midges | |
| hang in the air. ~Structure 10~ is a shambles of masonry which | |
| might once have been a burial pyramid, and little survives | |
| except stone-cut steps leading down into darkness below.", | |
| d_to steps, | |
| in_to steps, | |
| u_to | |
| "The trees are spiny and you'd cut your hands to ribbons | |
| trying to climb them.", | |
| cant_go | |
| "The rainforest is dense, and you haven't hacked through it for days | |
| to abandon your discovery now. Really, you need a good few | |
| artifacts to take back to civilization before you can justify | |
| giving up the expedition.", | |
| before [; Listen: "Howler monkeys, bats, parrots, macaw."; ], | |
| has light; | |
| ! Defined in DM4 �4, modified in Exercise 1 and �23 | |
| Object -> mushroom "speckled mushroom" | |
| with name 'speckled' 'mushroom' 'fungus' 'toadstool', | |
| initial | |
| "A speckled mushroom grows out of the sodden earth, on | |
| a long stalk.", | |
| description | |
| "The mushroom is capped with blotches, and you aren't | |
| at all sure it's not a toadstool.", | |
| after [; | |
| Take: | |
| if (self.mushroom_picked) | |
| "You pick up the slowly-disintegrating mushroom."; | |
| self.mushroom_picked = true; | |
| "You pick the mushroom, neatly cleaving its thin stalk."; | |
| Drop: | |
| "The mushroom drops to the ground, battered slightly."; | |
| Eat: | |
| steps.rubble_filled = false; | |
| "You nibble at one corner, unable to trace the source of an | |
| acrid taste, distracted by the flight of a macaw overhead | |
| which seems to burst out of the sun, the sound of the beating | |
| of its wings almost deafening, stone falling against stone."; | |
| ], | |
| mushroom_picked false, | |
| has edible; | |
| ! Defined in DM4 �12 | |
| Object -> packing_case "packing case" | |
| with name 'packing' 'case' 'box' 'strongbox', | |
| initial | |
| "Your packing case rests here, ready to hold any important | |
| cultural finds you might make, for shipping back to civilisation.", | |
| before [; | |
| Take, Remove, PushDir: | |
| "The case is too heavy to bother moving, as long as your | |
| expedition is still incomplete."; | |
| ], | |
| has static container open openable; | |
| ! Defined in DM4 �6 | |
| Object -> -> camera "wet-plate camera" | |
| with name 'wet-plate' 'plate' 'wet' 'camera', | |
| description | |
| "A cumbersome, sturdy, stubborn wooden-framed wet plate | |
| model: like all archaeologists, you have a love-hate | |
| relationship with your camera."; | |
| ! Defined in DM4 �23 | |
| Object -> -> newspaper "month-old newspaper" | |
| with name 'times' 'newspaper' 'paper' 'month-old' 'old', | |
| description | |
| "~The Times~ for 26 February, 1938, at once damp and brittle | |
| after a month's exposure to the climate, which is much the way you | |
| feel yourself. Perhaps there is fog in London. | |
| Perhaps there are bombs."; | |
| ! Defined in DM4 �4, modified in �5 and �23 | |
| Object -> steps "stone-cut steps" | |
| with name 'steps' 'stone' 'stairs' 'stone-cut' 'pyramid' 'burial' | |
| 'structure' 'ten' '10', | |
| description [; | |
| if (self.rubble_filled) | |
| "Rubble blocks the way after only a few steps."; | |
| print "The cracked and worn steps descend into a dim | |
| chamber. Yours might "; | |
| if (Square_Chamber hasnt visited) | |
| print "be the first feet to tread"; | |
| else | |
| print "have been the first feet to have trodden"; | |
| " them for five hundred years. On the top step is | |
| inscribed the glyph Q1."; | |
| ], | |
| door_to [; | |
| if (self.rubble_filled) | |
| "Rubble blocks the way after only a few steps."; | |
| return Square_Chamber; | |
| ], | |
| door_dir d_to, | |
| rubble_filled true, | |
| has scenery door open; | |
| ! ---------------------------------------------------------------------------- ! | |
| ! The SQUARE CHAMBER. | |
| ! | |
| ! Defined in DM4 Exercise 2, modified in $8 and $9 | |
| Object Square_Chamber "Square Chamber" | |
| with name 'lintelled' 'lintel' 'lintels' 'east' 'south' 'doorways', | |
| description | |
| "A sunken, gloomy stone chamber, ten yards across. A shaft of | |
| sunlight cuts in from the steps above, giving the chamber a | |
| diffuse light, but in the shadows low lintelled doorways to | |
| east and south lead into the deeper darkness of the Temple.", | |
| u_to Forest, | |
| e_to Wormcast, | |
| s_to Corridor, | |
| before [; | |
| Insert: | |
| if (noun == eggsac && second == sunlight) { | |
| remove eggsac; | |
| move stone_key to self; | |
| "You drop the eggsac into the glare of the shaft of | |
| sunlight. It bubbles obscenely, distends and then bursts | |
| into a hundred tiny insects which run in all directions | |
| into the darkness. Only spatters of slime and a curious | |
| yellow-stone key remain on the chamber floor."; | |
| } | |
| ], | |
| has light; | |
| ! Defined in DM4 �8 | |
| Object -> "carved inscriptions" | |
| with name 'carved' 'inscriptions' 'carvings' 'marks' 'markings' 'symbols' | |
| 'moving' 'scuttling' 'crowd' 'of', | |
| initial | |
| "Carved inscriptions crowd the walls, floor and ceiling.", | |
| description | |
| "Each time you look at the carvings closely, they seem to be still. | |
| But you have the uneasy feeling when you look away that they're | |
| scuttling, moving about. | |
| Two glyphs are prominent: Arrow and Circle.", | |
| has static pluralname; | |
| ! Defined in DM4 �8 | |
| Object -> sunlight "shaft of sunlight" | |
| with name 'shaft' 'of' 'sunlight' 'sun' 'light' 'beam' 'sunbeam' | |
| 'ray' 'rays' 'sun^s' 'sunlit' 'air' 'motes' 'dust', | |
| description | |
| "Motes of dust glimmer in the shaft of sunlit air, so that it seems | |
| almost solid.", | |
| before [; | |
| Examine, Search: | |
| ; | |
| default: | |
| "It's only an insubstantial shaft of sunlight."; | |
| ], | |
| has scenery; | |
| ! ---------------------------------------------------------------------------- ! | |
| ! The STOOPED CORRIDOR. | |
| ! | |
| ! Defined in DM4 �13 | |
| Object Corridor "Stooped Corridor" | |
| with description | |
| "A low, square-cut corridor, running north to south, | |
| stooping you over.", | |
| n_to Square_Chamber, | |
| s_to StoneDoor; | |
| ! Defined in DM4 �5 | |
| Treasure -> statuette "pygmy statuette" | |
| with name 'snake' 'mayan' 'pygmy' 'spirit' 'precious' 'statuette', | |
| initial | |
| "A precious Mayan statuette rests here!", | |
| description | |
| "A menacing, almost cartoon-like statuette of a pygmy spirit | |
| with a snake around its neck."; | |
| ! Defined in DM4 �13 | |
| Object -> StoneDoor "stone door" | |
| with name 'door' 'massive' 'big' 'stone' 'yellow', | |
| description | |
| "It's just a big stone door.", | |
| when_closed | |
| "The passage is barred by a massive door of yellow stone.", | |
| when_open | |
| "The great yellow stone door is open.", | |
| door_to [; if (self in Corridor) return Shrine; return Corridor; ], | |
| door_dir [; if (self in Shrine) return n_to; return s_to; ], | |
| with_key stone_key, | |
| found_in Corridor Shrine, | |
| has static door openable lockable locked; | |
| ! ---------------------------------------------------------------------------- ! | |
| ! The SHRINE. | |
| ! | |
| ! Defined in DM4 �23 | |
| Object Shrine "Shrine" | |
| with description | |
| "This magnificent Shrine shows signs of being hollowed out from | |
| already-existing limestone caves, especially in the western of the | |
| two long eaves to the south.", | |
| n_to StoneDoor, | |
| se_to Antechamber, | |
| sw_to | |
| "The eaves taper out into a crevice which would wind further if it | |
| weren't jammed tight with icicles. The glyph of the Crescent is | |
| not quite obscured by ice."; | |
| ! Defined in DM4 �23 | |
| Object -> paintings "paintings" | |
| with name 'painting' 'paintings' 'lord' 'captive', | |
| initial | |
| "Vividly busy paintings, of the armoured Lord trampling on a | |
| captive, are almost too bright to look at, the graffiti of an | |
| organised mob.", | |
| description | |
| "The flesh on the bodies is blood-red. The markers of the Long Count | |
| date the event to 10 baktun 4 katun 0 tun 0 uinal 0 kin, the sort | |
| of anniversary when one Lord would finally decapitate a captured | |
| rival who had been ritually tortured over a period of some years, | |
| in the Balkanised insanity of the Maya city states.", | |
| has static; | |
| ! Defined in DM4 �12 and �15 | |
| Object -> stone_table "slab altar" | |
| with name 'stone' 'table' 'slab' 'altar' 'great', | |
| initial | |
| "A great stone slab of a table, or altar, dominates the Shrine.", | |
| has enterable supporter static; | |
| ! Defined in DM4 �11 | |
| Treasure -> -> mask "jade mosaic face-mask" | |
| with name 'jade' 'mosaic' 'face-mask' 'mask' 'face', | |
| initial | |
| "Resting on the altar is a jade mosaic face-mask.", | |
| description | |
| "How exquisite it would look in the Museum.", | |
| after [; | |
| Wear: | |
| move priest to Shrine; | |
| if (location == Shrine) | |
| "Looking through the obsidian eyeslits of the mosaic mask, | |
| a ghostly presence reveals itself: a mummified calendrical | |
| priest, attending your word."; | |
| Disrobe: | |
| remove priest; | |
| ], | |
| cultural_value 10, | |
| has clothing; | |
| ! ---------------------------------------------------------------------------- ! | |
| ! The UPPER/NORTH CANYON. | |
| ! | |
| ! Defined in DM4 �23 | |
| Object Canyon_N "Upper End of Canyon" | |
| with description | |
| "The higher, broader northern end of the canyon rises only to an | |
| uneven wall of volcanic karst.", | |
| s_to Junction, | |
| d_to Junction, | |
| has light; | |
| ! Defined in DM4 �15, modified in Exercise 24 and �23 | |
| Object -> huge_ball "huge pumice-stone ball" | |
| with name 'huge' 'pumice' 'pumice-stone' 'stone' 'ball', | |
| initial | |
| "A huge pumice-stone ball rests here, eight feet wide.", | |
| description | |
| "A good eight feet across, though fairly lightweight.", | |
| before [; | |
| PushDir: | |
| if (location == Junction && second == ne_obj) | |
| "The Shrine entrance is far less than eight feet wide."; | |
| AllowPushDir(); | |
| rtrue; | |
| Pull, Push, Turn: | |
| "It wouldn't be so very hard to get rolling."; | |
| Take, Remove: | |
| "There's a lot of stone in an eight-foot sphere."; | |
| ], | |
| after [; | |
| PushDir: | |
| if (second == n_obj) "You strain to push the ball uphill."; | |
| if (second == u_obj) <<PushDir self n_obj>>; | |
| if (second == s_obj) "The ball is hard to stop once underway."; | |
| if (second == d_obj) <<PushDir self s_obj>>; | |
| ], | |
| has static; | |
| ! ---------------------------------------------------------------------------- ! | |
| ! The XIBALB�/JUNCTION. | |
| ! Defined in DM4 �23 | |
| Object Junction "Xibalb@'a" | |
| with description | |
| "Fifty metres beneath rainforest, and the sound of water is | |
| everywhere: these deep, eroded limestone caves extend like | |
| taproots. A slither northeast by a broad collapsed column of | |
| ice-covered rock leads back to the Shrine, while a kind of canyon | |
| floor extends uphill to the north and downwards to south, | |
| pale white like shark's teeth in the diffused light from the | |
| sodium lamp above.", | |
| ne_to Shrine, | |
| n_to Canyon_N, | |
| u_to Canyon_N, | |
| s_to Canyon_S, | |
| d_to Canyon_S, | |
| has light; | |
| ! Defined in DM4 �23 | |
| Treasure -> stela "stela" | |
| with name 'stela' 'boundary' 'stone' 'marker', | |
| initial | |
| "A modest-sized stela, or boundary stone, rests on a ledge | |
| at head height.", | |
| description | |
| "The carvings appear to warn that the boundary of Xibalb@'a, | |
| Place of Fright, is near. The Bird glyph is prominent."; | |
| ! ---------------------------------------------------------------------------- ! | |
| ! The LOWER/SOUTH CANYON. | |
| ! | |
| ! Defined in DM4 �23 | |
| Object Canyon_S "Lower End of Canyon" | |
| with description | |
| "At the lower, and narrower, southern end, the canyon stops dead at | |
| a chasm of vertiginous blackness. Nothing can be seen or heard | |
| from below.", | |
| n_to Junction, | |
| u_to Junction, | |
| s_to "Into the chasm?", | |
| d_to nothing, | |
| has light; | |
| ! Defined in DM4 �12, modified in �21 and �23 | |
| Object -> chasm "horrifying chasm" | |
| with name 'blackness' 'chasm' 'pit' 'horrifying' 'bottomless', | |
| before [; | |
| Enter: | |
| deadflag = 3; | |
| "You plummet through the silent void of darkness, cracking | |
| your skull against an outcrop of rock. Amidst the pain and | |
| redness, you dimly make out the God with the Owl-Headdress..."; | |
| JumpOver: | |
| "It's far too wide."; | |
| ], | |
| after [; | |
| Receive: | |
| remove noun; | |
| print_ret (The) noun, | |
| " tumbles silently into the darkness of the chasm."; | |
| Search: | |
| "The chasm is deep and murky."; | |
| ], | |
| react_before [; | |
| Jump: | |
| <<Enter self>>; | |
| Go: | |
| if (noun == d_obj) <<Enter self>>; | |
| ], | |
| each_turn [; | |
| if (huge_ball in parent(self)) { | |
| remove huge_ball; | |
| Canyon_S.s_to = On_Ball; | |
| Canyon_S.description = | |
| "The southern end of the canyon now continues onto the | |
| pumice-stone ball, wedged into the chasm."; | |
| "^The pumice-stone ball rolls out of control down the last few | |
| feet of the canyon before shuddering into the jaws of the | |
| chasm, bouncing back a little and catching you a blow on the | |
| side of the forehead. You slump forward, bleeding, and... | |
| the pumice-stone shrinks, or else your hand grows, because you | |
| seem now to be holding it, staring at Alligator, son of | |
| seven-Macaw, across the ball-court of the Plaza, the heads of | |
| his last opponents impaled on spikes, a congregation baying | |
| for your blood, and there is nothing to do but to throw anyway, | |
| and... but this is all nonsense, | |
| and you have a splitting headache."; | |
| } | |
| ], | |
| has scenery open container; | |
| ! ---------------------------------------------------------------------------- ! | |
| ! The PUMICE LEDGE. | |
| ! | |
| ! Defined in DM4 �23 | |
| Object On_Ball "Pumice-Stone Ledge" | |
| with description | |
| "An impromptu ledge formed by the pumice-stone ball, wedged into | |
| place in the chasm. The canyon nevertheless ends here.", | |
| n_to Canyon_S, | |
| d_to Canyon_S, | |
| u_to Canyon_S, | |
| has light; | |
| ! Defined in DM4 �23 | |
| Treasure -> "incised bone" | |
| with name 'incised' 'carved' 'bone', | |
| initial | |
| "Of all the sacrificial goods thrown into the chasm, perhaps | |
| nothing will be reclaimed: nothing but an incised bone, lighter | |
| than it looks, which projects from a pocket of wet silt in the | |
| canyon wall.", | |
| description | |
| "A hand holding a brush pen appears from the jaws of Itzamn@'a, | |
| inventor of writing, in his serpent form."; | |
| ! ---------------------------------------------------------------------------- ! | |
| ! The ANTECHAMBER. | |
| ! | |
| ! Defined in DM4 �23 | |
| Object Antechamber "Antechamber" | |
| with description | |
| "The southeastern eaves of the Shrine make a curious antechamber.", | |
| nw_to Shrine; | |
| ! Defined in DM4 Exercise 22, modified in Exercise 55 | |
| Object -> cage "iron cage" | |
| with name 'iron' 'cage' 'bars' 'barred' 'frame' 'glyphs', | |
| description | |
| "The glyphs read: Bird Arrow Warthog.", | |
| inside_description [; | |
| if (self.floor_open) | |
| "From the floor of the cage, an open earthen pit cuts | |
| down into the burial chamber."; | |
| "The bars of the cage surround you."; | |
| ], | |
| when_open | |
| "An iron-barred cage, large enough to stoop over inside, looms | |
| ominously here, its door open. There are some glyphs on the | |
| frame.", | |
| when_closed | |
| "The iron cage is closed.", | |
| after [; | |
| Enter: | |
| print "The skeletons inhabiting the cage come alive, locking | |
| bony hands about you, crushing and pummelling. You lose | |
| consciousness, and when you recover something grotesque | |
| and impossible has occurred...^"; | |
| move warthog to Antechamber; | |
| remove skeletons; | |
| give self ~open; | |
| give warthog light; | |
| self.after = 0; | |
| ChangePlayer(warthog, 1); | |
| <<Look>>; | |
| ], | |
| react_before [; | |
| Go: | |
| if (noun == d_obj && self.floor_open) { | |
| PlayerTo(Burial_Shaft); | |
| rtrue; | |
| } | |
| ], | |
| floor_open false, | |
| has enterable transparent container openable open static; | |
| ! Defined in Exercise 55 | |
| Object -> -> skeletons "skeletons" | |
| with name 'skeletons' 'skeleton' 'bone' 'skull' 'bones' 'skulls', | |
| article "deranged", | |
| has pluralname static; | |
| ! ---------------------------------------------------------------------------- ! | |
| ! The BURIAL SHAFT. | |
| ! | |
| ! Defined in Exercise 55 | |
| Object Burial_Shaft "Burial Shaft" | |
| with description | |
| "In your eventual field notes, this will read: | |
| ~A corbel-vaulted crypt with an impacted earthen plug as seal | |
| above, and painted figures conjecturally representing the Nine | |
| Lords of the Night. Dispersed bones appear to be those of one | |
| elderly man and several child sacrifices, while other funerary | |
| remains include jaguar paws.~ (In field notes, it is essential | |
| not to give any sense of when you are scared witless.)", | |
| n_to Wormcast, | |
| u_to [; | |
| cage.floor_open = true; | |
| self.u_to = self.opened_u_to; | |
| move selfobj to self; | |
| print "Making a mighty warthog-leap, you butt at the earthen-plug | |
| seal above the chamber, collapsing your world in ashes and | |
| earth. Something lifeless and terribly heavy falls on top of | |
| you: you lose consciousness, and when you recover, something | |
| impossible and grotesque has happened...^"; | |
| ChangePlayer(selfobj); | |
| give warthog ~light; | |
| <<Look>>; | |
| ], | |
| cant_go | |
| "The architects of this chamber were less than generous in | |
| providing exits. Some warthog seems to have burrowed in from the | |
| north, though.", | |
| before [; Jump: <<Go u_obj>>; ], | |
| opened_u_to [; PlayerTo(cage); rtrue; ], | |
| has light; | |
| ! Defined in DM4 �5 | |
| Treasure -> honeycomb "ancient honeycomb" | |
| with name 'ancient' 'old' 'honey' 'honeycomb', | |
| article "an", | |
| initial | |
| "An exquisitely preserved, ancient honeycomb rests here!", | |
| description | |
| "Perhaps some kind of funerary votive offering.", | |
| after [; | |
| Eat: | |
| "Perhaps the most expensive meal of your life. The honey tastes | |
| odd, perhaps because it was used to store the entrails of the | |
| Lord buried here, but still like honey."; | |
| ], | |
| has edible; | |
| ! ---------------------------------------------------------------------------- ! | |
| ! The WORMCAST. | |
| ! | |
| ! Defined in DM4 Exercises 7 and 8, modified in Exercise 54 | |
| Object Wormcast "Wormcast" | |
| with description | |
| "A disturbed place of hollows carved like a spider's web, strands of | |
| empty space hanging in stone. The only burrows wide enough to crawl | |
| through begin by running northeast, south and upwards.", | |
| w_to Square_Chamber, | |
| s_to [; | |
| print "The wormcast becomes slippery around you, as though your | |
| body-heat is melting long hardened resins, and you shut your | |
| eyes tightly as you burrow through darkness.^"; | |
| if (eggsac in player) return Square_Chamber; | |
| return random(Square_Chamber, Corridor, Forest); | |
| ], | |
| ne_to [; return self.s_to(); ], | |
| u_to [; return self.s_to(); ], | |
| cant_go [; | |
| if (player ~= warthog) | |
| "Though you begin to feel certain that something lies behind | |
| and through the wormcast, this way must be an animal-run at | |
| best: it's far too narrow for your armchair-archaeologist's | |
| paunch."; | |
| print "The wormcast becomes slippery around your warthog body, and | |
| you squeal involuntarily as you burrow through the darkness, | |
| falling finally southwards to...^"; | |
| PlayerTo(Burial_Shaft); | |
| rtrue; | |
| ], | |
| after [; | |
| Drop: | |
| move noun to Square_Chamber; | |
| print_ret (The) noun, | |
| " slips through one of the burrows and is quickly | |
| lost from sight."; | |
| ], | |
| has light; | |
| ! Defined in DM4 �23 | |
| Object -> eggsac "glistening white eggsac", | |
| with name 'egg' 'sac' 'eggs' 'eggsac', | |
| initial | |
| "A glistening white eggsac, like a clump of frogspawn the size of a | |
| beach ball, has adhered itself to something in a crevice in one | |
| wall.", | |
| after [; Take: "Oh my."; ], | |
| react_before [; | |
| Go: | |
| if (location == Square_Chamber && noun == u_obj) { | |
| deadflag = true; | |
| "The moment that natural light falls upon the eggsac, it | |
| bubbles obscenely and distends. Before you can throw it | |
| away, it bursts into a hundred tiny, birth-hungry | |
| insects..."; | |
| } | |
| ]; | |
| ! ---------------------------------------------------------------------------- ! | |
| ! These objects are moved into place as the game proceeds. | |
| ! | |
| ! Defined in DM4 �14, modified in �23 | |
| Object sodium_lamp "sodium lamp" | |
| with name 'sodium' 'lamp' 'heavy', | |
| describe [; | |
| if (self has on) | |
| "^The sodium lamp squats on the ground, burning away."; | |
| "^The sodium lamp squats heavily on the ground."; | |
| ], | |
| before [; | |
| Examine: | |
| print "It is a heavy-duty archaeologist's lamp, "; | |
| if (self hasnt on) "currently off."; | |
| if (self.battery_power < 10) "glowing a dim yellow."; | |
| "blazing with brilliant yellow light."; | |
| Burn: | |
| <<SwitchOn self>>; | |
| SwitchOn: | |
| if (self.battery_power <= 0) | |
| "Unfortunately, the battery seems to be dead."; | |
| if (parent(self) hasnt supporter && self notin location) | |
| "The lamp must be securely placed before being lit."; | |
| Take, Remove: | |
| if (self has on) | |
| "The bulb's too delicate and the metal handle's too hot | |
| to lift the lamp while it's switched on."; | |
| PushDir: | |
| if (location == Shrine && second == sw_obj) | |
| "The nearest you can do is to push the sodium lamp to the | |
| very lip of the Shrine, where the cave floor falls away."; | |
| AllowPushDir(); | |
| rtrue; | |
| ], | |
| after [; | |
| SwitchOn: | |
| give self light; | |
| SwitchOff: | |
| give self ~light; | |
| ], | |
| daemon [; | |
| if (self hasnt on) return; | |
| if (--self.battery_power == 0) give self ~light ~on; | |
| if (self in location) { | |
| switch (self.battery_power) { | |
| 10: "^The sodium lamp is getting dimmer!"; | |
| 5: "^The sodium lamp can't last much longer."; | |
| 0: "^The sodium lamp fades and suddenly dies."; | |
| } | |
| } | |
| ], | |
| battery_power 100, | |
| has switchable; | |
| ! Defined in DM4 �16 | |
| Object dictionary "Waldeck's Mayan dictionary" | |
| with name 'dictionary' 'local' 'guide' 'book' 'mayan' 'waldeck' | |
| 'waldeck^s', | |
| description | |
| "Compiled from the unreliable lithographs of the legendary raconteur | |
| and explorer ~Count~ Jean Frederic Maximilien Waldeck | |
| (1766??-1875), this guide contains what little is known of the | |
| glyphs used in the local ancient dialect.", | |
| before [ w1 w2 glyph; | |
| Consult: | |
| wn = consult_from; | |
| w1 = NextWord(); ! First word of subject | |
| w2 = NextWord(); ! Second word (if any) of subject | |
| if (consult_words==1 && w1~='glyph' or 'glyphs') glyph = w1; | |
| else if (consult_words==2 && w1=='glyph') glyph = w2; | |
| else if (consult_words==2 && w2=='glyph') glyph = w1; | |
| else "Try ~look up <name of glyph> in book~."; | |
| switch (glyph) { | |
| 'q1': "(This is one glyph you have memorised!)^^ | |
| Q1: ~sacred site~."; | |
| 'crescent': "Crescent: believed pronounced ~xibalba~, | |
| though its meaning is unknown."; | |
| 'arrow': "Arrow: ~journey; becoming~."; | |
| 'skull': "Skull: ~death, doom; fate (not nec. bad)~."; | |
| 'circle': "Circle: ~the Sun; also life, lifetime~."; | |
| 'jaguar': "Jaguar: ~lord~."; | |
| 'monkey': "Monkey: ~priest?~."; | |
| 'bird': if (self.correct) "Bird: ~dead as a stone~."; | |
| "Bird: ~rich, affluent?~."; | |
| default: "That glyph is so far unrecorded."; | |
| } | |
| ], | |
| correct false, | |
| has proper; | |
| ! Defined in DM4 �23 | |
| Object map "sketch-map of Quintana Roo" | |
| with name 'map' 'sketch' 'sketch-map' 'quintana' 'roo', | |
| description | |
| "This map marks little more than the creek which brought you | |
| here, off the south-east edge of Mexico and into deepest | |
| rainforest, broken only by this raised plateau."; | |
| ! Defined in DM4 �23 | |
| Object stone_key "stone key" | |
| with name 'stone' 'key'; | |
| ! Defined in DM4 �17, modified in �18 and �23 | |
| Object priest "mummified priest" | |
| with name 'mummified' 'priest', | |
| initial | |
| "Behind the slab, a mummified priest stands waiting, | |
| barely alive at best, impossibly venerable.", | |
| description | |
| "He is desiccated and hangs together only by will-power. Though his | |
| first language is presumably local Mayan, you have the curious | |
| instinct that he will understand your speech.", | |
| life [; | |
| Answer: | |
| "The priest coughs, and almost falls apart."; | |
| Ask: switch (second) { | |
| 'dictionary', 'book': | |
| if (dictionary.correct == false) | |
| "~The ~bird~ glyph... very funny.~"; | |
| "~A dictionary? Really?~"; | |
| 'glyph', 'glyphs', 'mayan', 'dialect': | |
| "~In our culture, the Priests are ever literate.~"; | |
| 'lord', 'tomb', 'shrine', 'temple': | |
| "~This is a private matter.~"; | |
| 'paintings': | |
| "The calendrical priest frowns. ~10 baktun, 4 katun, | |
| that makes 1,468,800 days since the beginning of time: | |
| in your calendar 19 January 909.~"; | |
| 'ruins': | |
| "~The ruins will ever defeat thieves. In the underworld, | |
| looters are tortured throughout eternity.~ A pause. | |
| ~As are archaeologists.~"; | |
| 'web', 'wormcast': | |
| "~No man can pass the Wormcast.~"; | |
| 'xibalba': | |
| if (Shrine.sw_to == Junction) | |
| "The priest shakes his bony finger."; | |
| Shrine.sw_to = Junction; | |
| "The priest extends one bony finger southwest toward the | |
| icicles, which vanish like frost as he speaks. ~Xibalb@'a, | |
| the Underworld.~"; | |
| } | |
| "~You must find your own answer.~"; | |
| Tell: | |
| "The priest has no interest in your sordid life."; | |
| Attack, Kiss: | |
| remove self; | |
| "The priest desiccates away into dust until nothing remains, | |
| not a breeze nor a bone."; | |
| ThrowAt: | |
| move noun to location; <<Attack self>>; | |
| Show, Give: | |
| if (noun == dictionary && dictionary.correct == false) { | |
| dictionary.correct = true; | |
| "The priest reads a little of the book, laughing in a | |
| hollow, whispering way. Unable to restrain his mirth, | |
| he scratches in a correction somewhere before returning | |
| the book."; | |
| } | |
| if (noun == newspaper) | |
| "He looks at the date. ~12 baktun 16 katun 4 tun 1 uinal | |
| 12 kin~, he declares before browsing the front page. | |
| ~Ah. Progress, I see.~"; | |
| "The priest is not interested in earthly things."; | |
| ], | |
| orders [; | |
| Go: | |
| "~I must not leave the Shrine.~"; | |
| NotUnderstood: | |
| "~You speak in riddles.~"; | |
| default: | |
| "~It is not your orders I serve.~"; | |
| ], | |
| has animate; | |
| ! Defined in DM4 Exercise 53 | |
| Object warthog "Warthog" | |
| with name 'wart' 'hog' 'warthog', | |
| initial | |
| "A warthog snuffles and grunts about in the ashes.", | |
| description | |
| "Muddy and grunting.", | |
| orders [; | |
| Go, Look, Examine, Smell, Taste, Touch, Search,Jump, Enter: | |
| rfalse; | |
| Eat: | |
| "You haven't the knack of snuffling up to food yet."; | |
| default: | |
| "Warthogs can't do anything so involved. If it weren't for the | |
| nocturnal eyesight and the lost weight, they'd be worse off | |
| all round than people."; | |
| ], | |
| has animate proper; | |
| ! Defined in DM4 �8 | |
| Object low_mist "low mist" | |
| with name 'low' 'swirling' 'mist', | |
| description "The mist has an aroma reminiscent of tortilla.", | |
| before [; | |
| Examine, Search: | |
| ; | |
| Smell: | |
| <<Examine self>>; | |
| default: | |
| "The mist is too insubstantial."; | |
| ], | |
| react_before [; Smell: if (noun == nothing) <<Smell self>>; ], | |
| found_in Square_Chamber Forest, | |
| has scenery; | |
| ! Defined in DM4 Exercise 46 | |
| Object tiny_claws "sound of tiny claws" thedark | |
| with name 'tiny' 'claws' 'sound' 'of' 'scuttling' 'scuttle' 'things' | |
| 'creatures' 'monsters' 'insects', | |
| article "the", | |
| initial | |
| "Somewhere, tiny claws are scuttling.", | |
| before [; | |
| Listen: | |
| "How intelligent they sound, for mere insects."; | |
| Touch, Taste: | |
| "You wouldn't want to. Really."; | |
| Smell: | |
| "You can only smell your own fear."; | |
| Attack: | |
| "They easily evade your flailing about."; | |
| default: | |
| "The creatures evade you, chittering."; | |
| ], | |
| each_turn [; StartDaemon(self); ], | |
| daemon [; | |
| if (location ~= thedark) { | |
| self.turns_active = 0; | |
| StopDaemon(self); | |
| rtrue; | |
| } | |
| switch (++(self.turns_active)) { | |
| 1: "^The scuttling draws a little nearer, and your breathing | |
| grows loud and hoarse."; | |
| 2: "^The perspiration of terror runs off your brow. The | |
| creatures are almost here!"; | |
| 3: "^You feel a tickling at your extremities and kick outward, | |
| shaking something chitinous off. Their sound alone is a | |
| menacing rasp."; | |
| 4: deadflag = true; | |
| "^Suddenly there is a tiny pain, of a hypodermic-sharp fang | |
| at your calf. Almost at once your limbs go into spasm, your | |
| shoulders and knee-joints lock, your tongue swells..."; | |
| } | |
| ], | |
| turns_active 0; | |
| ! ---------------------------------------------------------------------------- ! | |
| ! Utility routines. | |
| ! Defined in DM4 �4, modified in �21 and �23 | |
| [ Initialise; | |
| TitlePage(); | |
| location = Forest; | |
| move map to player; | |
| move sodium_lamp to player; | |
| move dictionary to player; | |
| StartDaemon(sodium_lamp); | |
| thedark.description = | |
| "The darkness of ages presses in on you, and you feel | |
| claustrophobic."; | |
| "^^^Days of searching, days of thirsty hacking through the briars of | |
| the forest, but at last your patience was rewarded. A discovery!^"; | |
| ]; | |
| ! Defined in DM4 Exercise 123 | |
| [ TitlePage i; | |
| @erase_window -1; print "^^^^^^^^^^^^^"; | |
| i = 0->33; if (i > 30) i = (i-30)/2; | |
| style bold; font off; spaces(i); | |
| print " RUINS^"; | |
| style roman; print "^^"; spaces(i); | |
| print "[Please press SPACE to begin.]^"; | |
| font on; | |
| box "But Alligator was not digging the bottom of the hole" | |
| "Which was to be his grave," | |
| "But rather he was digging his own hole" | |
| "As a shelter for himself." | |
| "" | |
| "-- from the Popol Vuh"; | |
| @read_char 1 -> i; | |
| @erase_window -1; | |
| ]; | |
| ! Defined in DM4 �22 | |
| [ PrintRank; | |
| print ", earning you the rank of "; | |
| if (score == 30) "Director of the Carnegie Institution."; | |
| if (score >= 20) "Archaeologist."; | |
| if (score >= 10) "Curiosity-seeker."; | |
| if (score >= 5) "Explorer."; | |
| "Tourist."; | |
| ]; | |
| ! Defined in DM4 �21 | |
| [ DeathMessage; | |
| if (deadflag == 3) print "You have been captured"; | |
| ]; | |
| ! ---------------------------------------------------------------------------- ! | |
| Include "Grammar"; | |
| ! Defined in DM4 �6 | |
| [ PhotographSub; | |
| if (camera notin player) "Not without the use of your camera."; | |
| if (noun == player) "Best not. You haven't shaved since Mexico."; | |
| if (children(player) > 1) | |
| "Photography is a cumbersome business, needing the use of both | |
| hands. You'll have to put everything else down."; | |
| if (location == Forest) "In this rain-soaked forest, best not."; | |
| if (location == thedark) "It is far too dark."; | |
| if (AfterRoutines()) return; | |
| print_ret "You set up the elephantine, large-format, wet-plate camera, | |
| adjust the sodium lamp and make a patient exposure of ", | |
| (the) noun, "."; | |
| ]; | |
| Verb 'photograph' | |
| * noun -> Photograph; | |
| ! ---------------------------------------------------------------------------- ! | |
Xet Storage Details
- Size:
- 41.1 kB
- Xet hash:
- 17019a18a629330201938843d8146276c9526b1e821ae52c6e83312b867320a2
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.