§23   ‘Ruins’ revisited

These fragments I have shored against my ruins
— T. S. Eliot (1888–1965), The Waste Land

Though ‘Ruins’ is a small world, and distorted in shape by the needto have “one example of everything”, it seems worth a few pages to gather together the fragments scattered through the book so far and complete the game.

To begin with, the stage set back in §4 was too generic, too plain. Chosen at random, it may as well become La Milpa, a site rediscovered in dense rainforest by Eric Thompson in 1938, towards the end of the glory days of archaeological exploration. (La Milpa has been sadly looted since.) Though this is something of a cliché of interactive fiction, ‘Ruins’ contains two objects whose purpose is to anchor the player in time and place. Lining the packing case, we find:

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.";

And among the player's initial possessions:

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.";

To turn from the setting to the prologue, it is a little too easy to enter the structure in the rainforest. And if the steps were always open, surely the rain would sluice in? Recall that the Forest includes inward map connections to the steps, which are a door, instead of to the Square_Chamber directly:

d_to steps, in_to steps,

The steps are, however, intentionally blocked by rubble, as happened in thecase of the hidden staircase found by Alberto Ruz beneath the Temple of theInscriptions at another site, Palenque:

Object -> steps "stone-cut steps"
  with name 'steps' 'stone' 'stairs' 'stone-cut' 'pyramid' 'burial'
            'structure' 'ten' '10',
       rubble_filled true,
       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
  has  scenery door open;

Next we must face the delicate issue of how to get from the mundane 1930s to a semi-magical Maya world. The stock device of Miguel Angel Asturias's Leyendas de Guatemala and other founding works of magic realism (indeed, of Wuthering Heights come to think of it) is for the arriving, European rationalist to become fascinated by a long tale told by local peasants. This would take too much code to get right in so small a game, though, and there also remains the unresolved question of what the mushroom is for. So we delete the original before rule for the mushroom, which made eating it potentially fatal, and instead give it an after:

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.";
This is a typical map of `Ruins'; which names all eleven
"rooms" (such as Great Plaza*), uses lines to mark the 
connections between them, and lists the items of interest in each room
under the room's name. Some connections are also labelled to indicate 
if a connection is one-way or requires puzzle-solving.

*  The player begins at the Great Plaza, carrying the map, the sodium lamp and Waldeck's Mayan dictionary. [description]

This is fairly authentic, as a cult of hallucinogenic mushrooms seems to have existed. Anyway, the player is getting off pretty lightly considering that Maya lords also went in for narcotic enemas and ritual blood-letting from the tongue and penis, an interactive fiction for which the world is not yet ready.

Descending underground, §8 alluded to an eggsac which burst on contact with natural light. Naturally, this repellent object belongs in the Wormcast, and here is its definition:

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...";
               }
       ];

Note the clue that some object is within the egg sac: as it turned out in §8, a stone key, released by putting the egg sac into the shaft of sunlight. The key itself has a very short definition:

Object stone_key "stone key"
  with name 'stone' 'key';

This is not an easy puzzle, but a further clue is provided by the carvings onthe Stone Chamber wall, which can be translated with Waldeck's dictionary to read “becoming the Sun/life”.

Given the key, the player must next solve the problem of bringing light to the Stooped Corridor, by pushing the burning sodium lamp south. This means, as promised in §14, adding a before rule to the lamp:

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;

§14 also promised to run down the battery power: although since 100 turns is plenty, this rule doesn't play any real part in the game and is just window-dressing. We need to StartDaemon(sodium_lamp) in the Initialise routine, and define the lamp's daemon along the following lines:

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.";
        }
    }
],

With the obligatory light puzzle solved, the Shrine can at last be opened:

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.";

Looking up the Crescent glyph in the dictionary (§16) reveals that it stands for the word “xibalbá”: asking the Priest (§17) brought into existence by wearing the jade mosaic mask (§11) melts the icicles and makes the southwest connection to Xibalbá, of which more later. No Maya game would be complete without their religiously-observed cyclical countings of time:

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;

Having called the priest “calendrical”, here's another topic to Ask the priest about:

'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.~";

And also, to make the point once more, and remind the player once again ofdistant Europe:

Show, Give: ...
    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.~";

Perhaps the player will never see either calculation: if so, it doesn't matter, as dates and calendars turn out to be this game's red herring. (Every game should have one.) The Antechamber of the Shrine is an undistinguished room…

Object Antechamber "Antechamber"
  with description
          "The southeastern eaves of the Shrine make a curious
          antechamber.",
       nw_to Shrine;

… except that this is where the iron cage (§15 and §21) is located, so that the Burial Shaft lies below, with its complex puzzle in which the player is transformed to a warthog and back again, opening the shaft. Lastly, then, in the southwest eaves of the Shrine is a natural cave entrance, which in Mayan mythology leads to the Underworld. There is supposed to be a crossroads here, but in this modest game a three-way junction is all we have space for:

Object Junction "Xibalb@'a"
  with description
           "Fifty metres beneath rainforest, and the sound of water
           is everywhere: these deep, eroded limestone caves
           extend like tap roots. 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;
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.";

This canyon houses the eight-foot pumice stone ball (see §15) at the north end, and the chasm (§12, §21) at the south:

Object Canyon_N "Upper End of Canyon"
  with s_to Junction, d_to Junction,
       description
           "The higher, broader northern end of the canyon rises only
           to an uneven wall of volcanic karst.",
  has  light;
Object Canyon_S "Lower End of Canyon"
  with n_to Junction, u_to Junction,
       s_to "Into the chasm?", d_to nothing,
       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.",
  has  light;

As promised in §12, the chasm must react to having the stone ball pushed into it, which means adding this to the chasm's definition:

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.";
    }
],

(Horribly violent, semi-religious ball-game rituals are common in early central America, though nobody knows why: all substantial Maya cities have prominent ball-courts.) A fat paragraph of text in which fairly interesting thingshappen, beyond the player's control, is sometimes called a “cut-scene”. Most critics dislike the casual use of cut-scenes, and ‘Ruins’ would be a better game if the confrontation with Alligator were an interactive scene. But this manual hasn't the space. Instead, here is the final location, which represents “standing on the wedged ball”:

Object On_Ball "Pumice-Stone Ledge"
  with n_to Canyon_S, d_to Canyon_S, u_to Canyon_S,
       description
           "An impromptu ledge formed by the pumice-stone ball,
           wedged into place in the chasm. The canyon nevertheless
           ends here.",
  has light;
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.";

And this is where Itzamná lays down his brush, for this is the fifth and last of the cultural artifacts to collect. The game ends when they are all deposited in the packing case, a rule which means a slight expansion of the definition of Treasure:

after [;
    Insert:
        ...
        if (score == MAX_SCORE) {
            deadflag = 2;
            "As you carefully pack away ", (the) second,
            " 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.";
        }

The following sequence of 111 moves tests ‘Ruins’ from beginning to end: “examine case / read newspaper / get newspaper / get camera / down / examine steps / east / up / enter structure 10 / eat mushroom / eat mushroom / down / examine inscriptions / look up arrow in dictionary / east / get eggsac / west / put eggsac in sunlight / get key / drop lamp / light lamp / look / push lamp s / get statuette / drop all except camera / photograph statuette / get key / open door / unlock door with key / open door / drop key / get pygmy / north / up / put pygmy in case / down / south / get dictionary / get newspaper / south / north / push lamp south / examine paintings / drop all but camera / photograph mask / get mask / get dictionary / get newspaper / wear mask / show dictionary to priest / show newspaper to priest / drop newspaper / ask priest about ruins / ask priest about paintings / se / nw / push lamp se / push lamp nw / sw / look up crescent in dictionary / ask priest about xibalba / sw / north / push ball south / push ball south / south / drop all but camera / remove mask / drop mask / photograph bone / get all / north / north / drop all but camera / photograph stela / get all / ne / north / north / up / put bone in case / put stela in case / put mask in case / down / east / nw / west / south / south / push lamp se / examine cage / enter cage / open cage / nw / north / north / east / down / east / up / drop all but camera / photograph honeycomb / get all / up / open cage / out / push lamp nw / north / north / up / put honeycomb in case”.

REFERENCES
I am indebted to, which is to say I have roundly travestied, the following: “Mapping La Milpa: a Maya city in northwestern Belize” (Tourtellot, Clarke and Hammond, Antiquity 67 (1993), 96–108). All the same ‘Ruins’ favours old-fashioned ideas of Maya, a good example being the “calendrical priests” fondly imagined by early archaeologists before Maya writing was deciphered.   The standard all-in-one-book book is Michael D. Coe's The Maya (fourth edition).   The same author's history of Breaking the Maya Code offers pungently vivid portraits of Sir Eric Thompson and Maximilien Waldeck. The British Museum guide Maya Glyphs, by S. D. Houston, is a trifle more reliable than Waldeck's work.   Numerous colour-postcard photographs by F. Monfort are collected in Yucatan and the Maya Civilization (Crescent Books, 1978).