-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathGORREVEN.ACH
2437 lines (1924 loc) · 70.5 KB
/
GORREVEN.ACH
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
# GORREVEN.ACH
#
# The Gorreven Papers
#
# by Derek T. Jones
#
# Copyright 1995 Derek T. Jones
include "standard"
include "gorreven.lex"
include "gorreven.typ"
include "debug"
################################## The Hinter ###############################
keyword wait_on_guard, use_disguise, get_on_with_it,
try_mop, try_dustpan, put_in_food, now_escape, power_off,
check_broom
lex hinter
full : 'hint'
hint : wait_on_guard
hints : 0
interpret : TRUE
methods
'INTERPRET' : {
case hints +:= 1 of {
5 : write "Not very sure of yourself, are you? That's ", hints,
" hints you've asked for.\n"
10 : write "You've pretty much given up trying to figure this out ",
"yourself, haven't you?"
}
case hint of {
wait_on_guard : {
>>You should probably wait to do anything suspicious until the guard
>>isn't watching you. (Hitting RETURN by itself is "waiting".)
}
use_disguise : write "You're going to be awfully conspicuous. ",
"Can you think of some way to disguise yourself?"
get_on_with_it : write "Now you're ready to operate under cover! ",
"Go find the Papers!"
try_mop : write "So you can't get the Papers with your bare hands. ",
"Isn't there anything in, say, the broom closet, of a ",
"sufficient length to reach them?"
check_broom : write "Didn't you notice something strange about the ",
"broom in the broom closet? Perhaps you should ",
"investigate that."
try_dustpan : write "You twit! Do I have to tell you everything? ",
"How on earth did you think you were going to use the bare ",
"end of a mop to manuever a folder of papers across the ",
"moat? BALANCE them? If you'd looked at the dustpan, ",
"you would have seen that you could put it on the end of ",
"the mop handle, and had yourself a long-handled shovel ",
"with which you could have safely retrieved the papers. ",
"Rather too late now, though, don't you think?"
put_in_food : {
write "Now think about this. How could you make the ",
"best use of that poison? How about putting it in their ",
"food or something?"
'MENTION SELF' -> poison
}
now_escape : write "You got the Gorreven Papers! Excellent! Now you ",
"simply have to escape with them."
power_off : write "That's too bad about those electrified fences. ",
"You should probably locate a circuit breaker panel ",
"somewhere and just turn all the switches off. Circuit ",
"breaker panels are usually simple hinged metal panels ",
"flush with the wall; just open the panel and you can ",
"turn the switches on or off."
} # case
} # INTERPRET
end
############################################################################
########################### First Level ####################################
############################################################################
room cell
desc : "bare cell"
methods
'INITIAL' : 'START HERE' -> player
'BRIEF' : >>Back in the bare cell.
'FIRSTDESC' : {
>>This should never have happened.
>>
>>I've told myself that a thousand times. I am our most intrepid agent.
>>If anyone could retrieve the Gorreven Papers, I could.
>>
>>What other precautions could have I taken? Some places just aren't built
>>to be broken into.
>>
>>Or out of.
>>
>>I have become intimately familiar with the four bare walls of my cell and
>>the dirty yellow light bulb that glares down from the ceiling. My cell
>>has no door, but an alert guard blocks the doorway twenty-four hours a
>>day - or at least as far as I can tell. I have to sleep sometimes. They
>>leave the guard in a doorless doorway so that he will constantly remain
>>alert. No napping on the other side of a supposedly secure steel door.
>>It doesn't surprise me; if I wanted to keep myself prisoner I would have
>>done the same.
>>
>>I was brought in here blindfolded after a good beating. It gives me
>>headaches just trying to remember any of the turns I took on the way in.
>>But now I'm on the inside of this complex. On the same side of those
>>electric fences as the Gorreven Papers. The Gorreven Papers! To
>>think of them was unspeakable; to speak of them was unthinkable. If I
>>can't get out of here with the papers, I'm not going out at all, because
>>my life won't be worth a fake dollar bill. None of our lives will.
>>
>>
>> Derek Jones Presents...
>>
>> an Archetype Adventure
>>
>> "The Gorreven Papers"
>>
>>
} # FIRSTDESC
'LONGDESC' :
>>I'm standing in a small bare cell with four bare walls.
'north' : if guard.alive then foiled_escape else hall
end # cell
wearable prison_coveralls
location : player
desc : "prison coveralls"
wearing : TRUE
pronoun : "them"
methods
'INDEF' : desc
'look' : {
>>It's a one-piece drab gray pair of coveralls with an enormous neon orange
>>triangle on the chest; probably to indicate my special status.
}
'wear' : if uniform.wearing = TRUE then
write "But I'm already wearing ", 'DEF' -> uniform, "."
else
message --> wearable
end
# foiled_escape
#
# A dummy "room" which represents an attempt to escape from the cell
# with the guard alive.
room foiled_escape
methods
'ENTERED' : {
writes "I try to brush past the guard. "
if guard.alert then {
'Funny Business' -> guard
player.location := cell
'MOVE' -> player
}
else {
writes "Since he is looking down the north hall, I am hard not to "
writes "notice as I move into that very same hall. "
'Impatient Fury' -> guard
}
}
end
sit_furniture cot
desc : "dingy cot"
location : cell
proximity : "on"
methods
'look' : {
>>It is a dingy, ill-maintained cot with a thin and moth-eaten mattress.
>>The Marriott this isn't.
}
'get' :
if player.location ~= self then
>>It's too clumsy and bulky.
else
message --> sit_furniture
end
object cot_fragment
desc : "sharp piece of metal"
name : desc & "|sharp metal|piece of metal|metal"
location : cot
broken_off : FALSE
breaks_glass : TRUE
methods
'look' :
if broken_off then
>>It makes a nice informal knife; just about the right size and very sharp.
else {
>>It is a piece of the cot's frame, about the length of my hand, sticking
>>off to the side a little. The cot is not in good shape and this is one
>>reason. It is already almost completely broken off and is only barely
>>connected to the cot at one end. One side of it is very sharp and
>>dangerous.
}
'get' :
if broken_off then
message --> object
else
>>It's part of the frame of the cot, but it is a little loose.
'break' :
if broken_off then
>>I can't break that.
else
>>I don't know if I could break it, but maybe I could break it OFF...
'break_off' : 'break off'
'break off...from' : 'break...off of'
'break...off of' :
if broken_off then
>>It's not part of anything anymore.
else if main.dobj = cot then
'break off'
else
write "It's not part of ", 'DEF' -> main.dobj, "."
'break off' :
if broken_off then
>>It's not on the cot anymore.
else {
writes "I give the piece of metal a hard yank and twist and it breaks "
writes "off suddenly with a soft popping sound. "
broken_off := TRUE
if guard.alert then {
writes "The guard has been watching the entire operation. "
writes "\"Murderous scheming dog,\" he snarls. "
'Impatient Fury' -> guard
}
else {
writes "Immediately I palm the incriminating evidence in my "
writes "other hand. "
location := player; 'MOVE'
writes "However, the sound alerts the guard, who whirls around "
writes "with his gun drawn. "
'Become Alert' -> guard
>>"What was that noise?" he demands.
>>
>>"I hurt my hand on the cot," I grumble, holding up the hand I
>>just used. Fortunately it is sporting a small trickle of blood, incurred
>>when the metal came loose. "I wanna doctor." It is of course the very
>>last thing I want but it is important that I project an image of whining
>>helplessness.
>>
>>He snorts and returns his gun to its holster. "You're barely important
>>enough to be kept alive. Forget the doctor." I wonder what he has been
>>told about me. It is true that I am too dangerous to be kept alive at
>>much expense.
}
}
end
################################# The Guard ##############################
keyword under_cot
object guard
desc : 'Desc' -> self
pronoun : "him"
location : cell
alert : TRUE
alive : TRUE
# Counters indicating the guard's patience with respect to various actions
maxalert : 4 + ?4 # between four and eight times
alertness : UNDEFINED # how frequently he looks down the hall;
# first set in 'INITIAL' below.
bha : 3 # Bare Hands - Alert
stare : 4 # how many times you can stare at the guard before
# he loses it
never_put_on : FALSE
methods
'INITIAL' : {
'REGISTER' -> after
alertness := maxalert
}
'AFTER' :
if alive then
case alertness -:= 1 of {
1 : {
>>The guard looks out down the north hall.
alert := FALSE
'MENTION' -> main
}
0 : {
>>The guard returns his steely gaze to me.
'Become Alert'
'MENTION' -> main
}
} # case
'Become Alert' : {
alert := TRUE
alertness := maxalert
}
'Desc' :
if alive then {
if alert then "alert guard" else "guard"
}
else
"dead guard"
'get' :
if alive then
>>Sure. I'll just pick him up and carry him like a baby.
else
>>I don't want to burden myself with that.
'look' :
if alert then {
writes "He is blocking the doorway to the north. "
writes "He is staring coldly back at me. "
'Become Alert'
case stare -:= 1 of {
3 : >>"What are you looking at?" he snarls. "Face the other wall."
2 : {
writes "Fingering his pistol, he lets me know in no uncertain "
writes "terms that I am not to cast my loving gaze on him again "
write "or I will certainly receive punishment."
}
1 : {
writes "He pistol-whips me around my head and neck until I lose "
writes "consciousness. It is some time before I reawaken, staring "
write "up at the single light bulb in the ceiling."
}
0 : 'Impatient Fury'
}
}
else {
writes "He doesn't seem to be paying attention"
if alive then
write " to me at the moment."
else
write ". This is probably because he's quite dead."
}
'kill...with' :
if not alive then
write "He's already dead."
else if main.dobj ~= cot_fragment then
>>That isn't going to make much of a weapon.
else if cot_fragment.location ~= player then
write "I don't have ", 'DEF' -> main.dobj, "."
else if alert then {
writes "It might have been a good idea if it hadn't been right "
writes "under his eyes. "
'Impatient Fury'
}
else {
>>I come up swiftly behind him and plunge the sharp metal into the
>>back of his neck, through his carotid artery and out the front of his
>>throat. This prevents him from screaming but not from fighting back.
>>I hang onto his back like a pit bull, waiting for him to expend his
>>last few seconds of life; he fires his gun twice but both shots are
>>wild. I am safe. In a moment more he is growing cold in a pool of
>>his own blood.
alert := alive := FALSE
hinter.hint := use_disguise
for each.location = self do {
each.location := player.location
'MOVE' -> each
}
}
'Funny Business' : {
case bha -:= 1 of {
2 : {
writes "He laughs an unpleasant laugh and plants a booted foot "
writes "in my gut. The force sends me bouncing back across the "
writes "room. "
alertness := maxalert
}
1 : {
writes "He is not as amused this time. He produces a pistol and "
writes "beats me about the face with it. \"Keep that up,\" he "
writes "promises, \"and you'll learn about the other end of this "
writes "gun!\" "
alertness := maxalert
}
0 : 'Impatient Fury'
} # case Bare Hands - Alert
write
}
'kill' :
if not alive then
write "He's already dead."
else {
writes "I lunge at him, my bare hands grasping for a hold on his "
writes "throat. "
if alert then
'Funny Business' # trying some funny business
else {
writes "He is not paying attention at the moment and I manage to get "
writes "a grip on the back of his thick neck. His response is "
writes "immediate; he slams backward into the wall, crushing me "
writes "against it, then wrenches me off his back, throwing me with "
writes "one swift motion onto the floor. "
'Impatient Fury'
}
}
'Impatient Fury' : {
writes "His face twists into a mask of rage; his pistol is "
writes "suddenly in his hand and he uses it to drill a .38 caliber "
writes "hole through my skull. The black curtain of death falls "
stop "with merciful speed."
}
'put...under' :
if main.dobj = cot then {
>>With some effort I manage to drag him over to the cot and push him
>>under it. I wonder how long he'll stay hidden under there.
guard.location := under_cot
'MOVE'
}
else
>>What will that accomplish? Nothing.
'put...on' :
if alive then
write "He's not going to let me do that."
else if main.dobj = cot then {
if never_put_on then {
>>Pushing and grunting, I manage to get him over to the cot and,
>>somehow, on top of it. I arrange the body so it faces away from the
>>door in a sleeping posture. There is some blood on the floor now but
>>that is nothing new around here. My own beating wounds are just
>>starting to scab.
never_put_on := FALSE
}
else
>>I heave and push and get the guard back on the cot.
location := cot; 'MOVE'
}
else
>>There's no good reason to do that.
'pull' : 'push'
'push' :
if not alive then
write "Nothing happens."
else {
writes "I ", main.verb, " ", 'DEF' -> self, ". This was probably ",
"unwise."
'Impatient Fury'
}
end
room hall
desc : "long dark hallway"
methods
'south' : cell
'north' : stairwell
'LONGDESC' : {
>>I am in a long, dark hallway. The lighting is minimal; there is only
>>one dull blue light recessed into the wall midway down its length. There
>>is a wet odor and I can see a few dark puddles gleaming randomly on the
>>floor.
}
end
############################# Guard's Possessions ###########################
object gun
desc : "gun"
name : "gun|pistol|revolver"
location : guard
bullets : 4
breaks_glass : TRUE
methods
'DEF' : "the guard's gun"
'look' :
if bullets = 1 then
write "There is only one bullet left."
else
write "There are ", bullets, " bullets left."
end
wearable uniform
desc : "guard's uniform"
syn : "his uniform"
location : guard
wearing : guard
first_worn : TRUE
methods
'get' :
if wearing = guard then
>>The guard is still wearing it.
else
message --> object
'wear' : {
if prison_coveralls.wearing = TRUE then
write "But I'm already wearing ", 'DEF' -> prison_coveralls, "."
else {
message --> wearable
if wearing = TRUE and first_worn then {
first_worn := FALSE
hinter.hint := get_on_with_it
>>We are roughly the same height. He was considerably larger at the middle,
>>so the uniform bags somewhat, but by tightening the belt, I look passable.
>>It is unfortunate for the guard that it had to come to this but that is
>>what happens to obstacles. I can still smell his odor on the collar and
>>armpits. Blood is spattered down the front which is very annoying but
>>there isn't much I can do about that.
}
}
}
'remove' :
if wearing = guard then {
main.dobj := guard
'take...off'
}
else
message --> wearable
'remove...from' : 'take...off'
'take...off of' : 'take...off'
'get...off' : 'take...off'
'get...off of' : 'take...off'
'take...off' :
if main.dobj ~= guard then
write "It isn't on ", 'DEF' -> main.dobj, "."
else {
>>Struggling, I manage to get the guard's uniform off of his fat, sweaty -
>>and increasingly cold - body.
wearing := FALSE
'get'
}
end
object IDcard
desc : "ID card"
syn : "I.D.|ID"
location : guard
proper : FALSE
methods
'look' : {
writes "There's a picture of the guard I killed, with the name "
writes "\"S. Krugnik\" beneath it. On the other side is a magnetic "
write "stripe."
}
'put...in' : {
if main.dobj ~= vault_door then
'NORMAL' -> PutInto
else {
writes "I slip the ID card into the slit in the door. "
'Unlock' -> vault_door
}
} # put in
end
################################# End of Guard's Possessions ############
room stairwell
desc : "spiral stairwell"
methods
'LONGDESC' : {
>>I'm at the top of a stairwell containing a spiral staircase. The stairs
>>are metal with a little peeling grip tape at the edges. It is rather dark
>>at the top; a harshly buzzing blue light burns away fiercely about halfway
>>down. There are pipes nearby and one of them is dripping steadily.
>>There is a damp metal smell everywhere.
}
'down' : stairwell2
'south' : hall
end
room stairwell2
desc : "spiral stairwell"
methods
'LONGDESC' : {
>>I am halfway down a spiral staircase. There is a bright blue light set
>>into the wall next to me. I can see a littering of dead bugs on the
>>stairs below.
}
'down' : stairwell3
'up' : stairwell
end
room stairwell3
desc : "spiral stairwell"
methods
'LONGDESC' : {
>>I am standing at the bottom of a spiral staircase. Halfway up, the blue
>>light burns and buzzes. It is fairly dark here but I can see the outline
>>of a doorway to the east.
}
'east' : dark_hall
'up' : stairwell2
end
room dark_hall
desc : "dark hallway"
methods
'FIRSTDESC' :
>>I have to stop a moment and let my eyes adjust to the darkness.
'LONGDESC' : {
>>I'm standing in a rather dark hallway, but I can see in the darkness
>>that a wide corridor extends to the south, with some light coming from its
>>far end. To the west is the stairwell. There is a bad smell coming from
>>a narrower passage that continues to the east.
}
'west' : stairwell3
'east' : stinky_hall
'south' : L_shaped_hall # to wide_corridor
end
room stinky_hall
desc : "filthy corridor"
methods
'FIRSTDESC' : {
>>As I enter the narrower passage, I have to stop and adjust to the rank
>>smell... something is rotting or decaying.
>>I find myself in a filthy corridor that runs through what appears to be
>>a number of jail cells. They lack the individual light bulb that my cell
>>had. I suppose I should consider myself honored.
}
'LONGDESC' : {
>>I am standing between cells on both sides. A flickering flourescent
>>light with a broken cover illuminates the area in a way that seems
>>surreal.
}
'west' : dark_hall
end
scenery cells
desc : "rows of cells"
location : stinky_hall
methods
'INDEF' : desc
'Desc' : {
>>I peer into the cells. Most of the occupants are... not alive. Those
>>that are, I am half-inclined to put out of their misery.
if first_seen then {
>>I squint deeper into the darkness. All of the cells have a little
>>doorbell-like device. Above each one is a sign that reads, "RING WHEN
>>READY TO COOPERATE."
>>Now that is sad. Really sad.
}
}
end
object human_arm
desc : "long lumpy shape"
syn : desc & "|lumpy shape|shape|arm|human arm|bone|human bone"
location : stinky_hall
never_seen : TRUE
broken_off : FALSE
methods
'look' : {
if never_seen then {
writes "It's on the floor, extending out under the bars of one of "
writes "the cells. I bend lower to take a better look... "
writes "Ugh. It's a decaying human arm. "
never_seen := FALSE
desc := "human arm"
}
writes "It makes my usually strong stomach twist a little just to "
writes "look at it. "
if not broken_off then {
writes "It seems to be connected to a lumpy shape inside the cell. "
writes "I can guess what THAT might be. "
}
write
}
'get' : {
if not broken_off then {
>>I pull at it gingerly; there is some resistance but then it suddenly
>>breaks free. The motion stirs up the still air and I nearly gag with the
>>strength of the smell.
broken_off := TRUE
}
message --> object
}
end
room L_shaped_hall
desc : "gently inclined hallway"
methods
'LONGDESC' :
>>I'm in an L-shaped hallway that inclines gently to the west.
'north' : dark_hall
'west' : wide_corridor
end
room wide_corridor
desc : "wide corridor"
methods
'east' : L_shaped_hall
'south' : if vault_door.open then elevator
'LONGDESC' : {
>>I'm in a wide corridor, well lit by recessed flourescent lighting. To
>>the south is an enormous vault door.
}
end
object vault_door
desc : "enormous vault door"
syn : "slit"
never_taken : TRUE
open : FALSE
location : wide_corridor
tries : 0
methods
'get' : {
if never_taken then {
writes "Do you try these things just to see if I'm paying attention? "
writes "Of course "
never_taken := FALSE
}
write "I can't do that."
}
'look' : {
writes "It is huge and looks like it's made of steel. Shoot, for that "
writes "size it could be made of tin and it would be just as secure. "
writes "It is "
if open then write "standing open." else write "closed tight."
}
'enter' :
if not open then
write "It isn't open."
else {
player.location := elevator; 'MOVE' -> player
}
'open' :
if open then
write "It's already open."
else {
case tries +:= 1 of {
1 : {
writes "As I get closer to the door, I can see a thin slit in the "
writes "center, but no handle, knob, button, or any means of opening "
writes "the door. "
if vault_guard.alive then
writes "I am reluctant to ask the guard for help, to say the least. "
else {
writes "I don't think the guard is going to give me any help, "
writes "being dead as he is. "
}
write
}
2 : {
writes "I press around the door, looking for hidden panels or "
write "buttons, but all I encounter is the one center slit."
}
default : {
writes "Still can't seem to do it. "
'Grow Wary' -> vault_guard
write
}
} # case
} # else
'open...with' :
if open then 'open'
else if main.dobj = IDcard then 'Unlock'
else write "I'm afraid ", 'DEF' -> main.dobj, " isn't working."
'Unlock' : {
writes "There is a clicking sound within the door and then the loud "
writes "sound of huge steel bolts being drawn back. It takes a good "
writes "five seconds for the monster to open. The door swings wide, "
write "opening to the south."
open := TRUE
}
end
guard_type vault_guard
location : wide_corridor
methods
'Grow Wary' :
if alive then {
writes "The guard seems troubled by my obvious inexperience with the "
writes "vault door. \"Having trouble with the door?\" he asks "
writes "suspiciously, trying to get a better look at my face. "
suspicious := 8
}
end
################################## The Elevator ###########################
room elevator
level : 1
desc : "elevator"
never_rode : TRUE
time_delay : 0
waiting_at : UNDEFINED
player_here : FALSE
methods
'INITIAL' : 'REGISTER' -> after
'north' :
case level of {
1 : wide_corridor
2 : elev_alcove
3 : dingy_hall
4 : guard_tower
default : cell # take out later
}
'FIRSTDESC' :
write "The enormous vault door grinds shut behind me."
'LONGDESC' : {
writes "I'm standing in what looks like a stainless steel elevator. "
writes "To say that it looks \"heavy-duty\" is an understatement. "
writes "There is a panel of buttons on the wall labeled 1 through 4. "
write "Button number ", 'Name' -> elev_button, " is currently lit."
}
# When the elevator is called from another floor, there is a random number
# of turns that the player must wait before the elevator arrives.
# The sender of this message is always an elev_call_button, and sender.level
# is the requested level.
'Calling Elevator' : {
time_delay := ? 4
waiting_at := sender
}
'AFTER' :
if waiting_at and (time_delay -:= 1) <= 0 then {
elevator.level := waiting_at.level
if player.location = waiting_at.location then {
writes "There is a quiet bell sound and the elevator slides into "
write "view. The light on the button goes off."
}
waiting_at := UNDEFINED
}
else if player.location = self then
player_here := TRUE
else { # player NOT here
if player_here and (?4) = 4 then {