1
0
mirror of https://github.com/sehugg/8bitworkshop.git synced 2024-12-01 13:50:30 +00:00
8bitworkshop/presets/zmachine/ruins3.inf
2020-07-07 18:40:03 -05:00

995 lines
40 KiB
INI

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;
! ---------------------------------------------------------------------------- !