mirror of
https://github.com/sehugg/8bitworkshop.git
synced 2024-11-27 01:51:35 +00:00
995 lines
40 KiB
INI
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<4C> ANTECHAMBER
|
|||
|
! | stela | cage,skeletons,(warthog)
|
|||
|
! | |
|
|||
|
! | |
|
|||
|
! LOWER CANYON BURIAL SHAFT
|
|||
|
! | chasm honeycomb
|
|||
|
! |
|
|||
|
! |
|
|||
|
! PUMICE LEDGE
|
|||
|
! bone
|
|||
|
!
|
|||
|
! ---------------------------------------------------------------------------- !
|
|||
|
|
|||
|
Constant MAX_CARRIED = 7; ! Defined in DM4 <20>22
|
|||
|
Constant MAX_SCORE = 30; ! Defined in DM4 <20>22
|
|||
|
|
|||
|
Include "Parser";
|
|||
|
Include "VerbLib";
|
|||
|
|
|||
|
! ---------------------------------------------------------------------------- !
|
|||
|
! The TREASURE class definition.
|
|||
|
!
|
|||
|
! Defined in DM4 <20>5, modified in <20>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 <20>4, modified in <20>8, <20>9 and <20>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 <20>4, modified in Exercise 1 and <20>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 <20>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 <20>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 <20>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 <20>4, modified in <20>5 and <20>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 <20>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 <20>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 <20>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 <20>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 <20>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 <20>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 <20>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 <20>12 and <20>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 <20>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 <20>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 <20>15, modified in Exercise 24 and <20>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<4C>/JUNCTION.
|
|||
|
|
|||
|
! Defined in DM4 <20>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 <20>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 <20>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 <20>12, modified in <20>21 and <20>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 <20>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 <20>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 <20>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 <20>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 <20>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 <20>14, modified in <20>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 <20>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 <20>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 <20>23
|
|||
|
Object stone_key "stone key"
|
|||
|
with name 'stone' 'key';
|
|||
|
|
|||
|
! Defined in DM4 <20>17, modified in <20>18 and <20>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 <20>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 <20>4, modified in <20>21 and <20>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 <20>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 <20>21
|
|||
|
[ DeathMessage;
|
|||
|
if (deadflag == 3) print "You have been captured";
|
|||
|
];
|
|||
|
|
|||
|
! ---------------------------------------------------------------------------- !
|
|||
|
|
|||
|
Include "Grammar";
|
|||
|
|
|||
|
! Defined in DM4 <20>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;
|
|||
|
|
|||
|
! ---------------------------------------------------------------------------- !
|