Inventory This is the complete source code of the example game Ruins.inf.
Back to List
Complete
Browsing Ruins.inf
001 Constant Story "RUINS";
002 Constant Headline "^An Interactive Worked Example^
003 Copyright (c) 1999 by Angela M. Horns.^";
004
005 ! ---------------------------------------------------------------------------- !
006 ! This version recreated by Roger Firth in May 2001, using the simple
007 ! (albeit time-consuming) process of combining the various fragments
008 ! of "Ruins" quoted in Edition 4/1 of the Inform Designer's Manual.
009 !
010 ! PLAYER
011 ! lamp,dictionary,map
012 ! GREAT PLAZA
013 ! | mushroom,packing-case,camera,newspaper,steps
014 ! |
015 ! |
016 ! SQUARE CHAMBER -------------------- WORMCAST
017 ! | inscriptions,sunlight,(key) eggsac
018 ! |
019 ! |
020 ! STOOPED CORRIDOR
021 ! | statuette,door
022 ! |
023 ! |
024 ! UPPER CANYON SHRINE
025 ! | ball / \ paintings,altar,mask,(priest)
026 ! | ---------- ----------
027 ! | / \
028 ! XIBALBÁ ANTECHAMBER
029 ! | stela | cage,skeletons,(warthog)
030 ! | |
031 ! | |
032 ! LOWER CANYON BURIAL SHAFT
033 ! | chasm honeycomb
034 ! |
035 ! |
036 ! PUMICE LEDGE
037 ! bone
038 !
039 ! ---------------------------------------------------------------------------- !
040
041 Constant MAX_CARRIED = 7; ! Defined in DM4 §22
042 Constant MAX_SCORE = 30; ! Defined in DM4 §22
043
044 Include "Parser";
045 Include "VerbLib";
046
047 ! ---------------------------------------------------------------------------- !
048 ! The TREASURE class definition.
049 !
050 ! Defined in DM4 §5, modified in §23
051 Class Treasure
052 with before [;
053 Take, Remove:
054 if (self in packing_case)
055 "Unpacking such a priceless artifact had best wait until
056 the Carnegie Institution can do it.";
057 if (self.photographed_in_situ == false)
058 "This is the 1930s, not the bad old days. Taking an
059 artifact without recording its context is simply looting.";
060 Photograph:
061 if (self has moved) "What, and fake the archaeological record?";
062 if (self.photographed_in_situ) "Not again.";
063 ],
064 after [;
065 Insert:
066 if (second == packing_case) {
067 score = score + self.cultural_value;
068 if (score == MAX_SCORE) {
069 deadflag = 2;
070 print_ret "As you carefully pack away ",
071 (the) noun,
072 " a red-tailed macaw flutters down from the
073 tree-tops, feathers heavy in the recent rain,
074 the sound of its beating wings almost
075 deafening, stone falling against stone...
076 As the skies clear, a crescent moon rises
077 above a peaceful jungle. It is the end of
078 March, 1938, and it is time to go home.";
079 }
080 "Safely packed away.";
081 }
082 Photograph:
083 self.photographed_in_situ = true;
084 ],
085 cultural_value 5,
086 photographed_in_situ false;
087
088 ! ---------------------------------------------------------------------------- !
089 ! The game beings in the GRAND PLAZA.
090 !
091 ! Defined in DM4 §4, modified in §8, §9 and §23
092 Object Forest "~Great Plaza~"
093 with description
094 "Or so your notes call this low escarpment of limestone, but the
095 rainforest has claimed it back. Dark olive trees crowd in on all
096 sides, the air steams with the mist of a warm recent rain, midges
097 hang in the air. ~Structure 10~ is a shambles of masonry which
098 might once have been a burial pyramid, and little survives
099 except stone-cut steps leading down into darkness below.",
100 d_to steps,
101 in_to steps,
102 u_to
103 "The trees are spiny and you'd cut your hands to ribbons
104 trying to climb them.",
105 cant_go
106 "The rainforest is dense, and you haven't hacked through it for days
107 to abandon your discovery now. Really, you need a good few
108 artifacts to take back to civilization before you can justify
109 giving up the expedition.",
110 before [; Listen: "Howler monkeys, bats, parrots, macaw."; ],
111 has light;
112
113 ! Defined in DM4 §4, modified in Exercise 1 and §23
114 Object -> mushroom "speckled mushroom"
115 with name 'speckled' 'mushroom' 'fungus' 'toadstool',
116 initial
117 "A speckled mushroom grows out of the sodden earth, on
118 a long stalk.",
119 description
120 "The mushroom is capped with blotches, and you aren't
121 at all sure it's not a toadstool.",
122 after [;
123 Take:
124 if (self.mushroom_picked)
125 "You pick up the slowly-disintegrating mushroom.";
126 self.mushroom_picked = true;
127 "You pick the mushroom, neatly cleaving its thin stalk.";
128 Drop:
129 "The mushroom drops to the ground, battered slightly.";
130 Eat:
131 steps.rubble_filled = false;
132 "You nibble at one corner, unable to trace the source of an
133 acrid taste, distracted by the flight of a macaw overhead
134 which seems to burst out of the sun, the sound of the beating
135 of its wings almost deafening, stone falling against stone.";
136 ],
137 mushroom_picked false,
138 has edible;
139
140 ! Defined in DM4 §12
141 Object -> packing_case "packing case"
142 with name 'packing' 'case' 'box' 'strongbox',
143 initial
144 "Your packing case rests here, ready to hold any important
145 cultural finds you might make, for shipping back to civilisation.",
146 before [;
147 Take, Remove, PushDir:
148 "The case is too heavy to bother moving, as long as your
149 expedition is still incomplete.";
150 ],
151 has static container open openable;
152
153 ! Defined in DM4 §6
154 Object -> -> camera "wet-plate camera"
155 with name 'wet-plate' 'plate' 'wet' 'camera',
156 description
157 "A cumbersome, sturdy, stubborn wooden-framed wet plate
158 model: like all archaeologists, you have a love-hate
159 relationship with your camera.";
160
161 ! Defined in DM4 §23
162 Object -> -> newspaper "month-old newspaper"
163 with name 'times' 'newspaper' 'paper' 'month-old' 'old',
164 description
165 "~The Times~ for 26 February, 1938, at once damp and brittle
166 after a month's exposure to the climate, which is much the way you
167 feel yourself. Perhaps there is fog in London.
168 Perhaps there are bombs.";
169
170 ! Defined in DM4 §4, modified in §5 and §23
171 Object -> steps "stone-cut steps"
172 with name 'steps' 'stone' 'stairs' 'stone-cut' 'pyramid' 'burial'
173 'structure' 'ten' '10',
174 description [;
175 if (self.rubble_filled)
176 "Rubble blocks the way after only a few steps.";
177 print "The cracked and worn steps descend into a dim
178 chamber. Yours might ";
179 if (Square_Chamber hasnt visited)
180 print "be the first feet to tread";
181 else
182 print "have been the first feet to have trodden";
183 " them for five hundred years. On the top step is
184 inscribed the glyph Q1.";
185 ],
186 door_to [;
187 if (self.rubble_filled)
188 "Rubble blocks the way after only a few steps.";
189 return Square_Chamber;
190 ],
191 door_dir d_to,
192 rubble_filled true,
193 has scenery door open;
194
195 ! ---------------------------------------------------------------------------- !
196 ! The SQUARE CHAMBER.
197 !
198 ! Defined in DM4 Exercise 2, modified in $8 and $9
199 Object Square_Chamber "Square Chamber"
200 with name 'lintelled' 'lintel' 'lintels' 'east' 'south' 'doorways',
201 description
202 "A sunken, gloomy stone chamber, ten yards across. A shaft of
203 sunlight cuts in from the steps above, giving the chamber a
204 diffuse light, but in the shadows low lintelled doorways to
205 east and south lead into the deeper darkness of the Temple.",
206 u_to Forest,
207 e_to Wormcast,
208 s_to Corridor,
209 before [;
210 Insert:
211 if (noun == eggsac && second == sunlight) {
212 remove eggsac;
213 move stone_key to self;
214 "You drop the eggsac into the glare of the shaft of
215 sunlight. It bubbles obscenely, distends and then bursts
216 into a hundred tiny insects which run in all directions
217 into the darkness. Only spatters of slime and a curious
218 yellow-stone key remain on the chamber floor.";
219 }
220 ],
221 has light;
222
223 ! Defined in DM4 §8
224 Object -> "carved inscriptions"
225 with name 'carved' 'inscriptions' 'carvings' 'marks' 'markings' 'symbols'
226 'moving' 'scuttling' 'crowd' 'of',
227 initial
228 "Carved inscriptions crowd the walls, floor and ceiling.",
229 description
230 "Each time you look at the carvings closely, they seem to be still.
231 But you have the uneasy feeling when you look away that they're
232 scuttling, moving about.
233 Two glyphs are prominent: Arrow and Circle.",
234 has static pluralname;
235
236 ! Defined in DM4 §8
237 Object -> sunlight "shaft of sunlight"
238 with name 'shaft' 'of' 'sunlight' 'sun' 'light' 'beam' 'sunbeam'
239 'ray' 'rays' 'sun^s' 'sunlit' 'air' 'motes' 'dust',
240 description
241 "Motes of dust glimmer in the shaft of sunlit air, so that it seems
242 almost solid.",
243 before [;
244 Examine, Search:
245 ;
246 default:
247 "It's only an insubstantial shaft of sunlight.";
248 ],
249 has scenery;
250
251 ! ---------------------------------------------------------------------------- !
252 ! The STOOPED CORRIDOR.
253 !
254 ! Defined in DM4 §13
255 Object Corridor "Stooped Corridor"
256 with description
257 "A low, square-cut corridor, running north to south,
258 stooping you over.",
259 n_to Square_Chamber,
260 s_to StoneDoor;
261
262 ! Defined in DM4 §5
263 Treasure -> statuette "pygmy statuette"
264 with name 'snake' 'mayan' 'pygmy' 'spirit' 'precious' 'statuette',
265 initial
266 "A precious Mayan statuette rests here!",
267 description
268 "A menacing, almost cartoon-like statuette of a pygmy spirit
269 with a snake around its neck.";
270
271 ! Defined in DM4 §13
272 Object -> StoneDoor "stone door"
273 with name 'door' 'massive' 'big' 'stone' 'yellow',
274 description
275 "It's just a big stone door.",
276 when_closed
277 "The passage is barred by a massive door of yellow stone.",
278 when_open
279 "The great yellow stone door is open.",
280 door_to [; if (self in Corridor) return Shrine; return Corridor; ],
281 door_dir [; if (self in Shrine) return n_to; return s_to; ],
282 with_key stone_key,
283 found_in Corridor Shrine,
284 has static door openable lockable locked;
285
286 ! ---------------------------------------------------------------------------- !
287 ! The SHRINE.
288 !
289 ! Defined in DM4 §23
290 Object Shrine "Shrine"
291 with description
292 "This magnificent Shrine shows signs of being hollowed out from
293 already-existing limestone caves, especially in the western of the
294 two long eaves to the south.",
295 n_to StoneDoor,
296 se_to Antechamber,
297 sw_to
298 "The eaves taper out into a crevice which would wind further if it
299 weren't jammed tight with icicles. The glyph of the Crescent is
300 not quite obscured by ice.";
301
302 ! Defined in DM4 §23
303 Object -> paintings "paintings"
304 with name 'painting' 'paintings' 'lord' 'captive',
305 initial
306 "Vividly busy paintings, of the armoured Lord trampling on a
307 captive, are almost too bright to look at, the graffiti of an
308 organised mob.",
309 description
310 "The flesh on the bodies is blood-red. The markers of the Long Count
311 date the event to 10 baktun 4 katun 0 tun 0 uinal 0 kin, the sort
312 of anniversary when one Lord would finally decapitate a captured
313 rival who had been ritually tortured over a period of some years,
314 in the Balkanised insanity of the Maya city states.",
315 has static;
316
317 ! Defined in DM4 §12 and §15
318 Object -> stone_table "slab altar"
319 with name 'stone' 'table' 'slab' 'altar' 'great',
320 initial
321 "A great stone slab of a table, or altar, dominates the Shrine.",
322 has enterable supporter static;
323
324 ! Defined in DM4 §11
325 Treasure -> -> mask "jade mosaic face-mask"
326 with name 'jade' 'mosaic' 'face-mask' 'mask' 'face',
327 initial
328 "Resting on the altar is a jade mosaic face-mask.",
329 description
330 "How exquisite it would look in the Museum.",
331 after [;
332 Wear:
333 move priest to Shrine;
334 if (location == Shrine)
335 "Looking through the obsidian eyeslits of the mosaic mask,
336 a ghostly presence reveals itself: a mummified calendrical
337 priest, attending your word.";
338 Disrobe:
339 remove priest;
340 ],
341 cultural_value 10,
342 has clothing;
343
344 ! ---------------------------------------------------------------------------- !
345 ! The UPPER/NORTH CANYON.
346 !
347 ! Defined in DM4 §23
348 Object Canyon_N "Upper End of Canyon"
349 with description
350 "The higher, broader northern end of the canyon rises only to an
351 uneven wall of volcanic karst.",
352 s_to Junction,
353 d_to Junction,
354 has light;
355
356 ! Defined in DM4 §15, modified in Exercise 24 and §23
357 Object -> huge_ball "huge pumice-stone ball"
358 with name 'huge' 'pumice' 'pumice-stone' 'stone' 'ball',
359 initial
360 "A huge pumice-stone ball rests here, eight feet wide.",
361 description
362 "A good eight feet across, though fairly lightweight.",
363 before [;
364 PushDir:
365 if (location == Junction && second == ne_obj)
366 "The Shrine entrance is far less than eight feet wide.";
367 AllowPushDir();
368 rtrue;
369 Pull, Push, Turn:
370 "It wouldn't be so very hard to get rolling.";
371 Take, Remove:
372 "There's a lot of stone in an eight-foot sphere.";
373 ],
374 after [;
375 PushDir:
376 if (second == n_obj) "You strain to push the ball uphill.";
377 if (second == u_obj) <<PushDir self n_obj>>;
378 if (second == s_obj) "The ball is hard to stop once underway.";
379 if (second == d_obj) <<PushDir self s_obj>>;
380 ],
381 has static;
382
383 ! ---------------------------------------------------------------------------- !
384 ! The XIBALBÁ/JUNCTION.
385
386 ! Defined in DM4 §23
387 Object Junction "Xibalb@'a"
388 with description
389 "Fifty metres beneath rainforest, and the sound of water is
390 everywhere: these deep, eroded limestone caves extend like
391 taproots. A slither northeast by a broad collapsed column of
392 ice-covered rock leads back to the Shrine, while a kind of canyon
393 floor extends uphill to the north and downwards to south,
394 pale white like shark's teeth in the diffused light from the
395 sodium lamp above.",
396 ne_to Shrine,
397 n_to Canyon_N,
398 u_to Canyon_N,
399 s_to Canyon_S,
400 d_to Canyon_S,
401 has light;
402
403 ! Defined in DM4 §23
404 Treasure -> stela "stela"
405 with name 'stela' 'boundary' 'stone' 'marker',
406 initial
407 "A modest-sized stela, or boundary stone, rests on a ledge
408 at head height.",
409 description
410 "The carvings appear to warn that the boundary of Xibalb@'a,
411 Place of Fright, is near. The Bird glyph is prominent.";
412
413 ! ---------------------------------------------------------------------------- !
414 ! The LOWER/SOUTH CANYON.
415 !
416 ! Defined in DM4 §23
417 Object Canyon_S "Lower End of Canyon"
418 with description
419 "At the lower, and narrower, southern end, the canyon stops dead at
420 a chasm of vertiginous blackness. Nothing can be seen or heard
421 from below.",
422 n_to Junction,
423 u_to Junction,
424 s_to "Into the chasm?",
425 d_to nothing,
426 has light;
427
428 ! Defined in DM4 §12, modified in §21 and §23
429 Object -> chasm "horrifying chasm"
430 with name 'blackness' 'chasm' 'pit' 'horrifying' 'bottomless',
431 before [;
432 Enter:
433 deadflag = 3;
434 "You plummet through the silent void of darkness, cracking
435 your skull against an outcrop of rock. Amidst the pain and
436 redness, you dimly make out the God with the Owl-Headdress...";
437 JumpOver:
438 "It's far too wide.";
439 ],
440 after [;
441 Receive:
442 remove noun;
443 print_ret (The) noun,
444 " tumbles silently into the darkness of the chasm.";
445 Search:
446 "The chasm is deep and murky.";
447 ],
448 react_before [;
449 Jump:
450 <<Enter self>>;
451 Go:
452 if (noun == d_obj) <<Enter self>>;
453 ],
454 each_turn [;
455 if (huge_ball in parent(self)) {
456 remove huge_ball;
457 Canyon_S.s_to = On_Ball;
458 Canyon_S.description =
459 "The southern end of the canyon now continues onto the
460 pumice-stone ball, wedged into the chasm.";
461 "^The pumice-stone ball rolls out of control down the last few
462 feet of the canyon before shuddering into the jaws of the
463 chasm, bouncing back a little and catching you a blow on the
464 side of the forehead. You slump forward, bleeding, and...
465 the pumice-stone shrinks, or else your hand grows, because you
466 seem now to be holding it, staring at Alligator, son of
467 seven-Macaw, across the ball-court of the Plaza, the heads of
468 his last opponents impaled on spikes, a congregation baying
469 for your blood, and there is nothing to do but to throw anyway,
470 and... but this is all nonsense,
471 and you have a splitting headache.";
472 }
473 ],
474 has scenery open container;
475
476 ! ---------------------------------------------------------------------------- !
477 ! The PUMICE LEDGE.
478 !
479 ! Defined in DM4 §23
480 Object On_Ball "Pumice-Stone Ledge"
481 with description
482 "An impromptu ledge formed by the pumice-stone ball, wedged into
483 place in the chasm. The canyon nevertheless ends here.",
484 n_to Canyon_S,
485 d_to Canyon_S,
486 u_to Canyon_S,
487 has light;
488
489 ! Defined in DM4 §23
490 Treasure -> "incised bone"
491 with name 'incised' 'carved' 'bone',
492 initial
493 "Of all the sacrificial goods thrown into the chasm, perhaps
494 nothing will be reclaimed: nothing but an incised bone, lighter
495 than it looks, which projects from a pocket of wet silt in the
496 canyon wall.",
497 description
498 "A hand holding a brush pen appears from the jaws of Itzamn@'a,
499 inventor of writing, in his serpent form.";
500
501 ! ---------------------------------------------------------------------------- !
502 ! The ANTECHAMBER.
503 !
504 ! Defined in DM4 §23
505 Object Antechamber "Antechamber"
506 with description
507 "The southeastern eaves of the Shrine make a curious antechamber.",
508 nw_to Shrine;
509
510 ! Defined in DM4 Exercise 22, modified in Exercise 55
511 Object -> cage "iron cage"
512 with name 'iron' 'cage' 'bars' 'barred' 'frame' 'glyphs',
513 description
514 "The glyphs read: Bird Arrow Warthog.",
515 inside_description [;
516 if (self.floor_open)
517 "From the floor of the cage, an open earthen pit cuts
518 down into the burial chamber.";
519 "The bars of the cage surround you.";
520 ],
521 when_open
522 "An iron-barred cage, large enough to stoop over inside, looms
523 ominously here, its door open. There are some glyphs on the
524 frame.",
525 when_closed
526 "The iron cage is closed.",
527 after [;
528 Enter:
529 print "The skeletons inhabiting the cage come alive, locking
530 bony hands about you, crushing and pummelling. You lose
531 consciousness, and when you recover something grotesque
532 and impossible has occurred...^";
533 move warthog to Antechamber;
534 remove skeletons;
535 give self ~open;
536 give warthog light;
537 self.after = 0;
538 ChangePlayer(warthog, 1);
539 <<Look>>;
540 ],
541 react_before [;
542 Go:
543 if (noun == d_obj && self.floor_open) {
544 PlayerTo(Burial_Shaft);
545 rtrue;
546 }
547 ],
548 floor_open false,
549 has enterable transparent container openable open static;
550
551 ! Defined in Exercise 55
552 Object -> -> skeletons "skeletons"
553 with name 'skeletons' 'skeleton' 'bone' 'skull' 'bones' 'skulls',
554 article "deranged",
555 has pluralname static;
556
557 ! ---------------------------------------------------------------------------- !
558 ! The BURIAL SHAFT.
559 !
560 ! Defined in Exercise 55
561 Object Burial_Shaft "Burial Shaft"
562 with description
563 "In your eventual field notes, this will read:
564 ~A corbel-vaulted crypt with an impacted earthen plug as seal
565 above, and painted figures conjecturally representing the Nine
566 Lords of the Night. Dispersed bones appear to be those of one
567 elderly man and several child sacrifices, while other funerary
568 remains include jaguar paws.~ (In field notes, it is essential
569 not to give any sense of when you are scared witless.)",
570 n_to Wormcast,
571 u_to [;
572 cage.floor_open = true;
573 self.u_to = self.opened_u_to;
574 move selfobj to self;
575 print "Making a mighty warthog-leap, you butt at the earthen-plug
576 seal above the chamber, collapsing your world in ashes and
577 earth. Something lifeless and terribly heavy falls on top of
578 you: you lose consciousness, and when you recover, something
579 impossible and grotesque has happened...^";
580 ChangePlayer(selfobj);
581 give warthog ~light;
582 <<Look>>;
583 ],
584 cant_go
585 "The architects of this chamber were less than generous in
586 providing exits. Some warthog seems to have burrowed in from the
587 north, though.",
588 before [; Jump: <<Go u_obj>>; ],
589 opened_u_to [; PlayerTo(cage); rtrue; ],
590 has light;
591
592 ! Defined in DM4 §5
593 Treasure -> honeycomb "ancient honeycomb"
594 with name 'ancient' 'old' 'honey' 'honeycomb',
595 article "an",
596 initial
597 "An exquisitely preserved, ancient honeycomb rests here!",
598 description
599 "Perhaps some kind of funerary votive offering.",
600 after [;
601 Eat:
602 "Perhaps the most expensive meal of your life. The honey tastes
603 odd, perhaps because it was used to store the entrails of the
604 Lord buried here, but still like honey.";
605 ],
606 has edible;
607
608 ! ---------------------------------------------------------------------------- !
609 ! The WORMCAST.
610 !
611 ! Defined in DM4 Exercises 7 and 8, modified in Exercise 54
612 Object Wormcast "Wormcast"
613 with description
614 "A disturbed place of hollows carved like a spider's web, strands of
615 empty space hanging in stone. The only burrows wide enough to crawl
616 through begin by running northeast, south and upwards.",
617 w_to Square_Chamber,
618 s_to [;
619 print "The wormcast becomes slippery around you, as though your
620 body-heat is melting long hardened resins, and you shut your
621 eyes tightly as you burrow through darkness.^";
622 if (eggsac in player) return Square_Chamber;
623 return random(Square_Chamber, Corridor, Forest);
624 ],
625 ne_to [; return self.s_to(); ],
626 u_to [; return self.s_to(); ],
627 cant_go [;
628 if (player ~= warthog)
629 "Though you begin to feel certain that something lies behind
630 and through the wormcast, this way must be an animal-run at
631 best: it's far too narrow for your armchair-archaeologist's
632 paunch.";
633 print "The wormcast becomes slippery around your warthog body, and
634 you squeal involuntarily as you burrow through the darkness,
635 falling finally southwards to...^";
636 PlayerTo(Burial_Shaft);
637 rtrue;
638 ],
639 after [;
640 Drop:
641 move noun to Square_Chamber;
642 print_ret (The) noun,
643 " slips through one of the burrows and is quickly
644 lost from sight.";
645 ],
646 has light;
647
648 ! Defined in DM4 §23
649 Object -> eggsac "glistening white eggsac",
650 with name 'egg' 'sac' 'eggs' 'eggsac',
651 initial
652 "A glistening white eggsac, like a clump of frogspawn the size of a
653 beach ball, has adhered itself to something in a crevice in one
654 wall.",
655 after [; Take: "Oh my."; ],
656 react_before [;
657 Go:
658 if (location == Square_Chamber && noun == u_obj) {
659 deadflag = true;
660 "The moment that natural light falls upon the eggsac, it
661 bubbles obscenely and distends. Before you can throw it
662 away, it bursts into a hundred tiny, birth-hungry
663 insects...";
664 }
665 ];
666
667 ! ---------------------------------------------------------------------------- !
668 ! These objects are moved into place as the game proceeds.
669 !
670 ! Defined in DM4 §14, modified in §23
671 Object sodium_lamp "sodium lamp"
672 with name 'sodium' 'lamp' 'heavy',
673 describe [;
674 if (self has on)
675 "^The sodium lamp squats on the ground, burning away.";
676 "^The sodium lamp squats heavily on the ground.";
677 ],
678 before [;
679 Examine:
680 print "It is a heavy-duty archaeologist's lamp, ";
681 if (self hasnt on) "currently off.";
682 if (self.battery_power < 10) "glowing a dim yellow.";
683 "blazing with brilliant yellow light.";
684 Burn:
685 <<SwitchOn self>>;
686 SwitchOn:
687 if (self.battery_power <= 0)
688 "Unfortunately, the battery seems to be dead.";
689 if (parent(self) hasnt supporter && self notin location)
690 "The lamp must be securely placed before being lit.";
691 Take, Remove:
692 if (self has on)
693 "The bulb's too delicate and the metal handle's too hot
694 to lift the lamp while it's switched on.";
695 PushDir:
696 if (location == Shrine && second == sw_obj)
697 "The nearest you can do is to push the sodium lamp to the
698 very lip of the Shrine, where the cave floor falls away.";
699 AllowPushDir();
700 rtrue;
701 ],
702 after [;
703 SwitchOn:
704 give self light;
705 SwitchOff:
706 give self ~light;
707 ],
708 daemon [;
709 if (self hasnt on) return;
710 if (--self.battery_power == 0) give self ~light ~on;
711 if (self in location) {
712 switch (self.battery_power) {
713 10: "^The sodium lamp is getting dimmer!";
714 5: "^The sodium lamp can't last much longer.";
715 0: "^The sodium lamp fades and suddenly dies.";
716 }
717 }
718 ],
719 battery_power 100,
720 has switchable;
721
722 ! Defined in DM4 §16
723 Object dictionary "Waldeck's Mayan dictionary"
724 with name 'dictionary' 'local' 'guide' 'book' 'mayan' 'waldeck'
725 'waldeck^s',
726 description
727 "Compiled from the unreliable lithographs of the legendary raconteur
728 and explorer ~Count~ Jean Frederic Maximilien Waldeck
729 (1766??-1875), this guide contains what little is known of the
730 glyphs used in the local ancient dialect.",
731 before [ w1 w2 glyph;
732 Consult:
733 wn = consult_from;
734 w1 = NextWord(); ! First word of subject
735 w2 = NextWord(); ! Second word (if any) of subject
736 if (consult_words==1 && w1~='glyph' or 'glyphs') glyph = w1;
737 else if (consult_words==2 && w1=='glyph') glyph = w2;
738 else if (consult_words==2 && w2=='glyph') glyph = w1;
739 else "Try ~look up
Last updated 23 June 2004.
This site is no longer supported; information may be out of date.
Maintained as a historical archive by the Interactive Fiction Technology Foundation.
Copyright 1993-2018 IFTF, CC-BY-SA unless otherwise noted.
This page was originally managed by Graham Nelson (graham@gnelson.demon.co.uk) assisted by C Knight.