-
Notifications
You must be signed in to change notification settings - Fork 13
Expand file tree
/
Copy pathship.zil
More file actions
3019 lines (2837 loc) · 88.7 KB
/
Copy pathship.zil
File metadata and controls
3019 lines (2837 loc) · 88.7 KB
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
"SHIP for
PLUNDERED HEARTS
(c) Copyright 1987 Infocom, Inc. All Rights Reserved."
<OBJECT SHIP
(IN GLOBAL-OBJECTS)
(DESC "Helena Louise")
(SYNONYM BOAT SHIP LOUISE)
(ADJECTIVE HELENA PIRATE)
(GENERIC GEN-BOAT)
(ACTION SHIP-F)>
<ROUTINE SHIP-F ()
<COND (<VERB? EXAMINE>
<COND (<SHIP-BOARD ,HERE>
;<OR <SHIP-BOARD ,HERE>
;<EQUAL? ,HERE ,CABIN ,DEUX-DECK>>
<V-LOOK>)
(<EQUAL? ,HERE ,CABIN ,DEUX-DECK>
<COND (<OR <ADJ-USED ,A?HELENA>
<NOUN-USED ,W?LOUISE ,SHIP>>
<PERFORM ,V?LOOK-INSIDE ,WINDOW>
<RTRUE>)
(T
<V-LOOK>)>)
(<OR <EQUAL? ,HERE ,CELL-1 ,CELL-2>
<EQUAL? ,HERE ,LAFS-ROOM ,BEACH ,LAGOON ,SHALLOWS>>
<COND (<FSET? ,SHIP ,MUNGBIT>
<TELL ,YOU-CANT
"see" T ,SHIP " anywhere, but a lot of debris floats in the lagoon" ,PCR>)
(T
<TELL
CTHE ,SHIP " floats, silent
and serene, some distance out in the lagoon" ,PCR>)>)
(T
<TELL ,YOU-CANT "see" T ,SHIP " from here." CR>)>)
(<VERB? POINT>
<COND (<NOT ,PRSI>
<PROPOSE>)
(T
<RFALSE>)>)
(<AND <VERB? PUT>
<PRSO? ,TRAY ,MIRROR>>
<IMPOSSIBLES>)>>
<ROUTINE GEN-BOAT ()
<COND (<GLOBAL-IN? ,OBJ-QUARTERS ,HERE>
<RETURN ,OBJ-QUARTERS>)
(<EQUAL? <LOC ,SKIFF> ,HERE>
<RETURN ,SKIFF>)
(T
<RETURN ,SHIP>)>>
<OBJECT DEBRIS
(IN LOCAL-GLOBALS)
(DESC "debris")
(DESCFCN DEBRIS-F)
(SYNONYM DEBRIS WOOD REMAINS SAIL)
(ADJECTIVE PLANK HUMAN CANVAS FLESH)
(FLAGS PLURALBIT NARTICLEBIT TRYTAKEBIT)
(ACTION DEBRIS-F)>
<ROUTINE DEBRIS-F ()
<COND ;(.OARG
<COND (<EQUAL? .OARG ,M-DESC?>
<RTRUE>)>
<TELL ,INDENT <PICK-ONE ,DEBRIS-BITS>>
<COND (<EQUAL? ,HERE ,BEACH ,SHALLOWS>
<TELL "bobs in the waves briefly.">)
(T
<TELL "floats by you.">)>)
(<NOT <FSET? ,SHIP ,MUNGBIT>>
<TELL ,YOU-CANT-SEE-ANY D ,DEBRIS " here!" CR>)
(<VERB? EXAMINE SEARCH LOOK-INSIDE>
<TELL ,INDENT <PICK-ONE ,DEBRIS-BITS>>
<COND (<EQUAL? ,HERE ,BEACH ,SHALLOWS>
<TELL "bobs briefly in the waves.">)
(T
<TELL "floats by you.">)>
<CRLF>
;<TELL
"Large planks of wood, cloth, and human remains appear to
be all that is left of" TR ,SHIP>)
(<VERB? TAKE>
<TELL
"You reconsider, thinking of" T ,SHIP " as it was, whole and proud." CR>)>>
<GLOBAL DEBRIS-BITS
<LTABLE
0
"A plank of wood "
"Some bloodied flesh "
"A bit of canvas sail ">>
<ROUTINE SHIP-BOARD (RM)
<COND ;(<NOT <FSET? .RM ,LIGHTBIT>> <RTRUE>)
(<OR <EQUAL? .RM ,CAPT-QUARTERS ,LANDING ,SLEEPING-CUPBOARD>
<EQUAL? .RM ,AFT-HOLD ,HOLD ,CREWS-QUARTERS>
<EQUAL? .RM ,POOP ,QUARTERDECK ,MAIN-DECK>
<EQUAL? .RM ,FOCSLE ,GALLEY ,BOWSPRIT ,CROWS-NEST>
<EQUAL? .RM ,BY-SHIP ,ON-LADDER ,RIGGING-ROOM>>
<RTRUE>)
(T <RFALSE>)>>
<ROUTINE INNER-DECK (RM) ;"All inner rooms of the ship"
<COND (<OR <EQUAL? .RM ,SLEEPING-CUPBOARD ,LANDING ,AFT-HOLD>
<EQUAL? .RM ,HOLD ,CREWS-QUARTERS ,GALLEY>>
<RTRUE>)
(T <RFALSE>)>>
<ROOM CABIN
(IN ROOMS)
(DESC "Cabin")
(LDESC
"You are in an officer's cabin, lit by the firelight glowing
through a porthole. A door is to starboard. Except for the built-in bed,
the room seems to have been emptied thoroughly, if hurriedly.")
(EAST PER CABIN-EXIT)
(OUT PER CABIN-EXIT)
;(SYNONYM LAFOND DEUX)
(GLOBAL WINDOW DOOR OBJ-QUARTERS)
(FLAGS ONBIT RLANDBIT INDOORSBIT NARTICLEBIT)>
<OBJECT CABIN-BED
(IN CABIN)
(DESC "bed")
(SYNONYM BED)
(FLAGS VEHBIT NDESCBIT CONTBIT SEARCHBIT SURFACEBIT OPENBIT)
(CAPACITY 100)
(ACTION BED-F)>
<ROUTINE CABIN-EXIT ()
<COND (<IN? ,HERO ,HERE>
<COND (<G? ,HERO-CTR 3>
<DEQUEUE I-MEET-HERO>
<DEQUEUE I-PIRATE-ATTACK>
<TELL
,CTHE-PIRATE-CAPTAIN "follows you through" TR ,DOOR CR>
<RETURN ,DEUX-DECK>)
(T
<TELL ,SINEWY-ARM CR>
<RFALSE>)>)
(<IN? ,HERO ,DEUX-DECK>
<RETURN ,DEUX-DECK>)
(<IN? ,CRULLEY ,HERE>
<TELL
"\"Not that way, me pretty,\" says" T ,CRULLEY ", blocking your way" ,PCR>
;<COND (<NOT <FSET? ,CRULLEY ,DEADBIT>>
<TELL
"\"Not that way, me pretty,\" says" T ,CRULLEY>)
(T
<TELL
"You hesitate to step over the body">)>
;<TELL " blocking your way" ,PCR>
<RFALSE>)
(T
<TELL CTHE ,DOOR ,IS-CLOSED ,PCR>
<THIS-IS-IT ,DOOR>
<RFALSE>)>>
<ROOM DEUX-DECK
(IN ROOMS)
(DESC "Deck")
(IN "\"It's not safe down there,\" the Falcon calls.")
(DOWN "\"It's not safe down there,\" the Falcon calls.")
(NORTH "The Falcon follows a step behind.")
(SOUTH "The Falcon follows a step behind.")
(EAST "The Falcon follows a step behind.")
(WEST "\"It's not safe down there,\" the Falcon calls.")
(GLOBAL OBJ-QUARTERS CREW FIRE)
(FLAGS ONBIT RLANDBIT NARTICLEBIT)
(ACTION DEUX-DECK-F)>
<ROUTINE DEUX-DECK-F (RARG)
<COND (<EQUAL? .RARG ,M-LOOK>
<MOVE ,HERO ,HERE>
<TELL
"The deck is an avalanche of noise and blood. Lit by roaring fires,
silhouetted forms crash swords, dancing around the screaming wounded."
;"A flood of freed slaves is sweeping up from the hold, yelling in
savage tongues as their black bodies join the skirmish.">)
;(<AND <EQUAL? .RARG ,M-BEG>
<VERB? EXAMINE>
<PRSO? ,SHIP>>
<PERFORM ,V?LOOK>
<RTRUE>)
(<EQUAL? .RARG ,M-ENTER>
<QUEUE I-END-PROLOGUE 1>)
(T <RFALSE>)>>
<OBJECT COFFER
(IN CABIN)
(DESC "coffer")
(SYNONYM COFFER CHEST LOCK BOX)
(ADJECTIVE SMALL METAL HEAVY)
(CAPACITY 15)
(SIZE 10)
(FLAGS NDESCBIT CONTBIT SEARCHBIT LOCKEDBIT)
(ACTION COFFER-F)>
<ROUTINE COFFER-F ()
<COND (<VERB? EXAMINE>
<TELL "It is a small heavy chest, with a ">
<COND (<FSET? ,COFFER ,MUNGBIT>
<TELL "smashed ">)>
<TELL "lock. It is">
<TELL-OPEN/CLOSED ,PRSO>
<TELL ".|">)
(<VERB? TAKE>
<COND (<PRSO? ,COFFER>
<COND (<NOT <FSET? ,COFFER ,NDESCBIT>>
<FSET ,COFFER ,TAKEBIT>
<DEQUEUE I-COFFER>
<MOVE ,COFFER ,PROTAGONIST>
<FCLEAR ,COFFER ,NDESCBIT>
<TELL "Taken." CR>)
(T
<TELL ,HUH>)>)
(T
<RFALSE>)>)
;(<VERB? TAKE>
<COND (<AND <NOT <FSET? ,COFFER ,NDESCBIT>>
<PRSO? ,COFFER>>
;<FCLEAR ,COFFER ,TRYTAKEBIT>
<FSET ,COFFER ,TAKEBIT>
<DEQUEUE I-COFFER>
<MOVE ,COFFER ,PROTAGONIST>
<FCLEAR ,COFFER ,NDESCBIT>
<TELL "Taken." CR>)
(T
<TELL ,HUH>)>)
(<AND <VERB? MUNG>
<PRSO? ,WINDOW>>
<PERFORM ,V?PUT-THROUGH ,COFFER ,WINDOW>
<RTRUE>)
(<VERB? BOARD STAND-ON>
<TELL CTHE ,COFFER " is too small to stand on." CR>)
(<AND <VERB? SHAKE>
<FSET? ,COFFER ,LOCKEDBIT>>
<TELL "It seems to be full of small, heavy objects" ,PCR>)
;(<VERB? LOOK-INSIDE SEARCH>
<COND (<FSET? ,PRSO ,OPENBIT>
<PERFORM ,V?SEARCH ,DOCUMENTS>
<RTRUE>)>)>>
<OBJECT LETTER
(DESC "missive" ;"letter")
(SYNONYM PAPER LETTER MISSIVE)
(FLAGS TAKEBIT)
(ACTION LETTER-F)>
<ROUTINE LETTER-F ()
<COND (<VERB? READ EXAMINE>
<TELL CTHE ,LETTER
" is in dear Papa's handwriting:|
|
\"Dearest child,|
You are in gravest danger! Lafond is a viper with the smile of a
saint, my most particular enemy. I have only now learned the depth of
his deception. Should Lafond get you in his power... It is unspeakable!|
I have sided with Nicholas Jamison, a sea captain and a gentleman,
whose circumstances have driven him to extreme measures, even branding
him a pirate. Nevertheless, I trust him and so may you.|
You will be safe -- but there is another for whom I fear! My horse is
waiting and I ride to her rescue. Jamison will deliver this to you.
Should anything happen to me, you must rely on him. I remain,
with love," T ,DAD ".\"" CR CR>
;<TELL
"The letter is in dear Papa's handwriting, addressed to " D ,ME ":|
|
\"I have just learned that Lafond has sent for you, telling
you that I am ill. I am not, and you are sailing into great danger.
Despite his claim to be my 'good friend,' Lafond is no friend of
mine! He is a tyrant and a viper, running a vast fleet of
pirate ships.|
I, with a young captain named Jamison, am outlawed for pirating the
demon's ships -- which is the only way to bleed his thieving organization
and return stolen goods to their rightful owners. Now he has you --
oh, my child, what have I done? He will hold you ransom for our lives!|
My horse is waiting. I ride now to Lafond's mansion to demand he
free you. I give this missive to my ally.\"" CR CR>)>>
<OBJECT INVITE
(IN COFFER)
(DESC "invitation")
(SYNONYM INVITE CARD INVITATION)
(ADJECTIVE LARGE WHITE)
(FLAGS TAKEBIT VOWELBIT)
(ACTION INVITE-F)>
;["Similar to the card taken by" T ,HERO ","]
;<COND (<NOT <FSET? ,INVITE ,EVERYBIT>>
<FSET ,INVITE ,EVERYBIT>
<TELL ,INDENT
"Davis must have carried two, for some reason." CR>)
(T
<RTRUE>)>
<ROUTINE INVITE-F ()
<COND (<VERB? READ EXAMINE>
<TELL
CTHE ,INVITE " is addressed to \"Davis\":||
In Honor of Jean Lafond,|
recently proclaimed|
Governor of " D ,ISLAND "|
A Dance at his Mansion|
Ananas Road, " D ,ISLAND "|
Formal Dress and Invitation Required" ,PCR CR>
<COND (<NOT <FSET? ,INVITE ,MUNGBIT>>
<FSET ,INVITE ,MUNGBIT>
<TELL
,INDENT "A ball! You haven't been to a ball in months!" CR>)
(T
<RFALSE>)>)
;(<AND <VERB? SHOW GIVE>
<PRSI? ,BUTLER>>
<I-BUTLER T>)
(<AND <VERB? SSHOW SGIVE>
<PRSO? ,BUTLER>>
<PERFORM ,V?GIVE ,INVITE ,BUTLER>
<RTRUE>)>>
<ROUTINE I-COFFER ()
<COND (<NOT <HELD? ,COFFER>>
<FCLEAR ,COFFER ,NDESCBIT>
<FSET ,COFFER ,TAKEBIT>
<THIS-IS-IT ,COFFER>
;<FCLEAR ,COFFER ,TRYTAKEBIT>
<TELL ,INDENT
"Suddenly, the ship lurches to one side, throwing you ">
<COND (<EQUAL? <LOC ,PROTAGONIST> ,CABIN-BED>
<MOVE ,PROTAGONIST ,HERE>
<TELL "out of the bed. ">)
(T
<TELL "off balance. ">)>
<COND (<FSET? ,COFFER ,TOUCHBIT>
<TELL CTHE ,COFFER>)
(T <TELL
"A " D ,COFFER " slides from under the bed and">)>
<TELL " bumps against your foot." CR>)
(T
<RFALSE>)>>
<ROOM CAPT-QUARTERS
(IN ROOMS) ;"MUNGBIT = typed first look text"
(DESC "Captain's Quarters")
(UP PER CLIMBING)
;(DOWN PER CLIMBING)
(NORTH PER CURTAIN-EXIT)
(SOUTH PER WINDOW-EXIT)
(GLOBAL CURTAIN WINDOW DESK DOOR SEA LADDER OBJ-QUARTERS)
(FLAGS ONBIT RLANDBIT INDOORSBIT NARTICLEBIT)
(ACTION CAPT-QUARTERS-F)>
<ROUTINE CAPT-QUARTERS-F (RARG)
<COND (<EQUAL? .RARG ,M-ENTER>
<COND (<IN? ,LEDGE ,ON-LADDER>
<MOVE ,LEDGE ,CAPT-QUARTERS>)
(<NOT <FSET? ,CAPT-QUARTERS ,TOUCHBIT>>
<MOVE ,PROTAGONIST ,CAPT-BED>
<SETG HERO-CTR 0>
<QUEUE I-HSHIP 2>
<TELL
"TWO DAYS LATER" ,ELLIPSIS>
<TELL ,INDENT
"You blear awake from a bored nap, focusing on something shiny. You
discern it to be" A ,HRING ", on a strong hand in the act of tying a ribbon
onto" AR ,RAPIER ,INDENT
"The man with" T ,RAPIER " and the ring turns, \"Sorry, I tried not to
wake you.\" You sit up as if the bed had caught fire, for this is the
Falcon, changed from his rags to a finery all red velvet and white lace -- and
in your presence!" CR CR>)
(T
<RFALSE>)>)
(<EQUAL? .RARG ,M-LOOK>
<COND (<NOT <FSET? ,HERE ,MUNGBIT>>
<FSET ,HERE ,MUNGBIT>
<TELL
"You are in the captain's " D ,OBJ-QUARTERS " of the " D ,SHIP ", where
you have been trapped these past days since your \"rescue\" from the
Lafond Deux. ">)>
<TELL
"The room has a masculine air, with ebony panelling, a large messy table,
and a rumpled bed">
<COND (<EQUAL? <LOC ,PROTAGONIST> ,CAPT-BED>
<TELL " (upon which you lie)">)>
<TELL ". A curtain masks the forward exit and ">
<COND (<FSET? ,LEDGE ,MUNGBIT>
<TELL "air breezes in over the ledge">)
(T
<TELL
"gilded woodwork decorates the sill of the tall window looking">)>
<TELL " aft.">
;<COND (<NOT <FSET? ,HERE ,TOUCHBIT>>
<TELL CR ,INDENT CTHE ,COFFER " from the other ship
sits on the table, smashed open and emptied of its valuable contents.
The pirates had, with much argument, divvied up the jewels found
inside just this afternoon.">)
(T
<RTRUE>)>
;<I-LOOK-SEA <>>)>>
<GLOBAL LADDER-HANGING <>> ;"Is the ladder swinging from Poop?"
<ROUTINE I-HERO-TO-ISLAND ()
<COND (<EQUAL? ,HERE ,CAPT-QUARTERS>
<TELL ,INDENT
"Men clomp about overhead and a rope ladder unfurls itself past the window.
Jamison climbs down it, entering" T ,SKIFF " that awaits him below.
He rows to the island as the men above " D ,HEAD " disperse, calling
farewells to their captain" ,PCR>)>
<SETG SKIFF-LOC 1>
<SETG SKIFF-TIED <>>
<REMOVE ,HERO>
;<MOVE ,LADDER ,CAPT-QUARTERS>
<SETG LADDER-HANGING T>
<QUEUE I-SEE-LADDER -1>>
<ROUTINE I-SEE-LADDER ()
<COND (<EQUAL? ,HERE ,CAPT-QUARTERS>
<QUEUE I-SEE-LADDER -1>
<COND (<PROB 40>
<TELL ,INDENT "The end of a rope ladder blows ">
<COND (<EQUAL? <LOC ,PROTAGONIST>
,CAPT-BED ,CAPT-QUARTERS>
<TELL "past the window.">)
(T ;"(Not on the LEDGE)"
<TELL "by.">)>
<CRLF>)>)
(T
<DEQUEUE I-SEE-LADDER>)>>
<OBJECT DESK
(IN LOCAL-GLOBALS)
(DESC "desk")
(SYNONYM DESK TABLE)
(ADJECTIVE MESSY)
(FLAGS NDESCBIT SURFACEBIT CONTBIT)
(ACTION PAPERS-F)>
<ROUTINE PAPERS-F ()
<UNIMPORTANT-THING>>
<ROOM ON-LADDER
(IN ROOMS)
(DESC "On the Ladder")
(IN PER LADDER-EXIT)
(NORTH PER LADDER-EXIT)
;(UP PER CLIMBING-LADDER)
(UP PER CLIMBING)
;(DOWN PER CLIMBING-LADDER)
(DOWN PER CLIMBING)
(GLOBAL LADDER SEA OBJ-QUARTERS PSEUD-SKIFF)
(FLAGS ONBIT NARTICLEBIT)
(ACTION ON-LADDER-F)>
<ROUTINE ON-LADDER-F (RARG)
<COND (<EQUAL? .RARG ,M-ENTER>
<MOVE ,LEDGE ,HERE>
<DEQUEUE I-SEE-LADDER>)
(<AND <EQUAL? .RARG ,M-BEG>
<OR <VERB? LEAP LEAP-OFF>
<AND <VERB? DROP>
<PRSO? ,LADDER>>>>
<DO-WALK ,P?DOWN>)
(<EQUAL? .RARG ,M-LOOK>
<TELL
"You are clinging to a slimy ladder,
tied to a rail of the poop deck above you. Not far from your feet,">
<COND (,SKIFF-TIED
<TELL A ,SKIFF " bobs in the water">)
(T
<TELL " waves kiss the stern of the ship">)>
<COND (<NOT <FSET? ,ON-LADDER ,TOUCHBIT>>
<TELL
". The ladder twists under your weight">)>
<TELL ".">)>>
<OBJECT OBJ-QUARTERS
(IN LOCAL-GLOBALS)
(DESC "quarters")
(SYNONYM QUARTE SHIP CABIN)
(ADJECTIVE CAPTAIN)
(GENERIC GEN-BOAT)
;(FLAGS NDESCBIT)
(ACTION OBJ-QUARTERS-F)>
<ROUTINE OBJ-QUARTERS-F ()
<COND (<VERB? EXAMINE>
<COND (<AND <NOUN-USED ,W?QUARTE ,OBJ-QUARTERS>
<EQUAL? ,HERE ,POOP ,LANDING>>
<TELL "Why don't you go there and look?" CR>)
(T
<V-LOOK>)>)
(<VERB? BOARD CLIMB ENTER>
<COND (<EQUAL? ,HERE ,DEUX-DECK ,ON-LADDER>
<DO-WALK ,P?IN>)
(T
<RFALSE>)>)>>
<GLOBAL BLOWING-LADDER-C 0>
<GLOBAL UP-CTR 0>
<GLOBAL SKIFF-TIED T>
;<ROUTINE ;CLIMBING-LADDER () ;"This is an EXIT-FCN"
<COND (<EQUAL? ,P-WALK-DIR ,P?UP>
<COND (<FSET? ,HOOPS ,WORNBIT>
<TELL ,YOU-CANT
"get a foothold because the hoops of
your dress keep pushing away" TR ,LADDER>
<RFALSE>)
(<AND <FSET? ,DRESS ,WORNBIT>
<NOT <FSET? ,HOOPS ,WORNBIT>>>
<TELL
"Every attempt you make to climb the ladder, you
end up tripping on your " D ,DRESS ,PCR>
<RFALSE>)
(<NOT ,LADDER-HANGING>
<TELL "There's no way to go up!" CR>
<RFALSE>)
(<NOT <FSET? ,POOP ,TOUCHBIT>>
<SETG UP-CTR <+ ,UP-CTR 1>>
<COND (<NOT <EQUAL? ,UP-CTR 5>>
<TELL "You climb up" T ,LADDER>
<COND (<EQUAL? ,UP-CTR 3>
<TELL ", passing the halfway point">)>
<TELL ,PCR>
<RFALSE>)
(T
<TELL ,INDENT
"You heave " D ,ME " over the stern rail
and sink breathlessly to the deck of" TR ,SHIP CR>
<DEQUEUE I-LADDER-BLOWS>
<RETURN ,POOP>)>)
(<EQUAL? ,HERE ,BY-SHIP>
<DEBARK-SKIFF>
<RFALSE>)
(T
<TELL
"This time, you find the climb to the deck quite easy" ,PCR CR>
<RETURN ,POOP>)>)
(<EQUAL? ,P-WALK-DIR ,P?DOWN>
<COND (<EQUAL? ,HERE ,POOP>
<TELL
"You scamper down the ladder until you are opposite the ledge" ,PCR CR>
<RETURN ,ON-LADDER>)
(,SKIFF-TIED
<SETG SKIFF-TIED <>>
<TELL
"Freeing your feet from the rungs, you slide down
the wet rope to the skiff, and quickly untie it from the ship" ,PCR CR>
<RETURN ,BY-SHIP>)
(T
<TELL
"Letting loose your grip on your sanity as well
as on the rope ladder, you plummet into the sea. ">
<COND (,BOY-DRESS?
<JIGS-UP
"Flailing about in the water just tires you.">)
(T
<JIGS-UP
"Your skirts, until sodden, hold you above water.
Then they carry you down into the depths.">)>)>)>>
<ROUTINE I-LADDER-BLOWS ()
<SETG BLOWING-LADDER-C <+ ,BLOWING-LADDER-C 1>>
<COND (<L? ,BLOWING-LADDER-C 2>
<RTRUE>)>
<TELL ,INDENT> ;"here to avoid indent in SUPERBRIEF on 2"
<COND (<EQUAL? ,BLOWING-LADDER-C 2 5>
<TELL
"All air is driven out of you as" T ,LADDER " slams into the stern." CR>)
(<EQUAL? ,BLOWING-LADDER-C 3 6>
<TELL
"Rebounding," T ,LADDER " twists you around to face" TR ,SHIP>)
(<EQUAL? ,BLOWING-LADDER-C 4>
<TELL "The ladder swings back towards" TR ,SHIP>)
(<EQUAL? ,BLOWING-LADDER-C 7> ;"used to be 9"
<JIGS-UP
"Your battered hands can take no more. Your grip loosens
and the sea comes up to break your fall.">)>>
;(<EQUAL? ,BLOWING-LADDER-C 2 8>
<TELL "You bang against the stern and bounce away again.">)
;(<EQUAL? ,BLOWING-LADDER-C 4 8>
<TELL
CTHE ,LADDER " swings out to one side,
granting you a brief glimpse of the island">)
;(<EQUAL? ,BLOWING-LADDER-C 5>
<TELL CTHE ,LADDER " bounces out and away from ship again">)
;(<EQUAL? ,BLOWING-LADDER-C 5 10>
<TELL
"You slide back behind the ship, scraping the backs of
" D ,HANDS "s against it as they grip the ladder">)
<ROUTINE LADDER-EXIT ("OPTIONAL" (CRUFTY-KLUDGE <>))
<DEQUEUE I-LADDER-BLOWS>
<TELL
"You pull " D ,ME " over" T ,LEDGE ", tumbling head over heels
into Jamison's " D ,OBJ-QUARTERS ,PCR CR>
<COND (.CRUFTY-KLUDGE
<GOTO ,CAPT-QUARTERS>)
(T
<RETURN ,CAPT-QUARTERS>)>>
<ROUTINE CURTAIN-EXIT ()
<COND (<IN? ,HERO ,HERE>
<TELL ,SINEWY-ARM CR>
<RFALSE>)
(<EQUAL? <LOC ,PROTAGONIST> ,LEDGE>
<RETURN ,CAPT-QUARTERS>)
(T
<COND (<NOT <FSET? ,LANDING ,TOUCHBIT>>
<TELL
CTHE ,CUPBOARD-OBJECT ,ISNT-FLUSH>)>
<TELL "You">
;<COND (<FSET? ,HOOPS ,WORNBIT>
<TELL
"Flattening" T ,HOOPS " from chin to heel, you manage to">)
(T
<TELL "You">)>
<TELL ,SQUEEZE-THRU ,PCR CR>
<COND (<EQUAL? ,P-WALK-DIR ,P?SOUTH>
<COND (,LADDER-HANGING
<QUEUE I-SEE-LADDER -1>)>
<FSET ,PILE-OF-CLOTHES ,NDESCBIT>
<MOVE ,CUPBOARD-OBJECT ,CAPT-QUARTERS>
<RETURN ,CAPT-QUARTERS>)
(T
<FCLEAR ,PILE-OF-CLOTHES ,NDESCBIT>
<MOVE ,CUPBOARD-OBJECT ,LANDING>
<DEQUEUE I-SEE-LADDER>
<RETURN ,LANDING>)>)>>
<ROUTINE WINDOW-EXIT ()
<PERFORM ,V?BOARD ,LEDGE>
<RFALSE>
;<COND (<NOT <FSET? ,LEDGE ,MUNGBIT>>
<TELL CTHE ,WINDOW " blocks your way." CR>
<RFALSE>)
(T
<PERFORM ,V?BOARD ,LEDGE>
<RFALSE>)>>
<OBJECT LEDGE
(IN CAPT-QUARTERS)
(DESC "ledge")
(SYNONYM LEDGE SILL)
(FLAGS NDESCBIT VEHBIT CONTBIT TRANSBIT SEARCHBIT OPENBIT)
(ACTION LEDGE-F)>
<ROUTINE LEDGE-F ("OPTIONAL" (VARG <>))
<COND (<EQUAL? .VARG ,M-BEG>
<COND (<AND <VERB? DISEMBARK CLIMB-DOWN TAKE-OFF>
<NOT <PRSO? ,LADDER ,DRESS ;,HOOPS>>>
<MOVE ,PROTAGONIST ,HERE>
<FSET ,LADDER ,TRYTAKEBIT>
<TELL "You clamber off the sill to safety." CR>)
(<OR <VERB? LEAP LEAP-OFF>
<AND <VERB? ENTER>
<PRSO? ,SEA>>>
<TELL ,SUICIDE>)
(<VERB? WALK>
<COND (<EQUAL? ,P-WALK-DIR ,P?NORTH>
<PERFORM ,V?DISEMBARK ,LEDGE>
<RTRUE>)
(<NOT <EQUAL? ,P-WALK-DIR ,P?UP>>
<DO-FIRST "get off" ,LEDGE>)
(T
<RFALSE>)>)
(T
<RFALSE>)>)
(.VARG
<RFALSE>)
(<VERB? EXAMINE>
<COND (<FSET? ,LEDGE ,MUNGBIT>
<TELL "Glass shards decorate" TR ,LEDGE>)
(T
<TELL
"Tall panes of glass are inset into" TR ,LEDGE>)>)
(<AND <VERB? MUNG>
<NOT ,PRSI>>
<PROPOSE>)
(<VERB? LEAP-OFF>
<COND (<FSET? ,LEDGE ,MUNGBIT>
<DO-FIRST "climb onto" ,LEDGE>)
(T
<TELL ,SUICIDE>)>)
(<VERB? BOARD CLIMB-ON DISEMBARK STAND-ON ENTER>
<COND (<EQUAL? ,HERE ,CAPT-QUARTERS>
<COND (<NOT <FSET? ,LEDGE ,MUNGBIT>>
<TELL
"The available ledge on this side of the window is
hardly deep enough to sit on" ,PCR>)
;(<FSET? ,HOOPS ,WORNBIT>
<TELL "Your hoops will not fit over" TR ,LEDGE>)
(T
<TELL "You climb onto the ledge. ">
;<COND (<ANYTHING-HELD>
<ROB ,PROTAGONIST ,CAPT-BED>
<TELL "lay everything on the bed and ">)>
;<TELL "climb onto the ledge. ">
<COND (<NOT <FSET? ,POOP ,TOUCHBIT>>
<FSET ,LADDER ,TAKEBIT>)>
<COND (,LADDER-HANGING
<QUEUE I-SEE-LADDER 2>
<TELL CTHE ,LADDER " drifts within reach.">)>
<CRLF>
<MOVE ,PROTAGONIST ,LEDGE>)>)
(<EQUAL? ,HERE ,ON-LADDER>
<LADDER-EXIT T>
<RTRUE>)>)>>
<ROUTINE GEN-BED ()
<RETURN ,CAPT-BED>>
<OBJECT CAPT-BED
(IN CAPT-QUARTERS)
(DESC "bed")
(SYNONYM BED)
(FLAGS VEHBIT NDESCBIT CONTBIT SEARCHBIT SURFACEBIT OPENBIT)
(GENERIC GEN-BED)
(CAPACITY 100)
(ACTION BED-F)>
<ROOM LANDING
(IN ROOMS)
(DESC "Landing")
(UP "The door at the top of the stairs won't open.")
(OUT "The door at the top of the stairs won't open.")
(IN PER CUPBOARD-EXIT)
(SOUTH PER CURTAIN-EXIT)
(DOWN TO AFT-HOLD)
(GLOBAL DOOR CURTAIN STAIRS CUPBOARD-OBJECT)
(FLAGS ONBIT RLANDBIT INDOORSBIT NARTICLEBIT)
(ACTION LANDING-F)>
<ROUTINE LANDING-F (RARG)
<COND (<EQUAL? .RARG ,M-LOOK>
<TELL "You are on the landing of a steep stairway
heading up and down. A " D ,CUPBOARD-OBJECT " against the aft wall
blocks the doorway to the captain's " D ,OBJ-QUARTERS ".">)
;(<EQUAL? .RARG ,M-BEG>
<COND (<AND <VERB? TAKE WEAR>
<PRSO? ,SHIRT ,PANTS>
<NOT <FSET? ,PRSO ,TOUCHBIT>>>
<CANT-REACH ,PILE>)
(T
<RFALSE>)>)>>
<ROOM SLEEPING-CUPBOARD
(IN ROOMS)
(DESC "Sleeping Cupboard")
(OUT PER CUPBOARD-EXIT)
(NORTH PER CUPBOARD-EXIT)
(FLAGS ONBIT RLANDBIT INDOORSBIT)
(GLOBAL DOOR)
(ACTION SLEEPING-CUPBOARD-F)>
<ROUTINE SLEEPING-CUPBOARD-F (RARG)
<COND (<EQUAL? .RARG ,M-LOOK>
<TELL
"The bed is softer than it looks, plumped up with fresh straw.
A soft, if somewhat cramped, bunk for the tall bulk of Jamison.
The cupboard opens to the fore.">)
(<EQUAL? .RARG ,M-BEG>
<COND (<AND <VERB? DISEMBARK>
<PRSO? ,CUPBOARD-OBJECT>>
<DO-WALK ,P?OUT>)
(T
<RFALSE>)>)>>
<ROUTINE CUPBOARD-EXIT ()
<COND (<NOT <FSET? ,CUPBOARD-OBJECT ,OPENBIT>>
<COND (<EQUAL? ,P-WALK-DIR ,P?IN>
<DO-FIRST "open" ,CUPBOARD-OBJECT>
<RFALSE>)
(T
<FSET ,CUPBOARD-OBJECT ,OPENBIT>
;<FSET ,SLEEPING-CUPBOARD ,ONBIT>
<TELL
"You open" T ,CUPBOARD-OBJECT " and clamber out" ,PCR CR>
<MOVE ,CUPBOARD-OBJECT ,LANDING>
<RETURN ,LANDING>)>)
(T
<COND (<EQUAL? ,P-WALK-DIR ,P?IN>
<COND (<IN? ,PILE-OF-CLOTHES ,CUPBOARD-OBJECT>
<MOVE ,PILE-OF-CLOTHES ,SLEEPING-CUPBOARD>)>
<MOVE ,CUPBOARD-OBJECT ,SLEEPING-CUPBOARD>
<RETURN ,SLEEPING-CUPBOARD>)
(T
<COND (<IN? ,PILE-OF-CLOTHES ,SLEEPING-CUPBOARD>
<MOVE ,PILE-OF-CLOTHES ,CUPBOARD-OBJECT>)>
<MOVE ,CUPBOARD-OBJECT ,LANDING>
<RETURN ,LANDING>)>)>>
<CONSTANT SQUEEZE-AROUND "You might be able to squeeze past it.|">
<OBJECT CUPBOARD-OBJECT
(IN CAPT-QUARTERS)
(DESC "large cupboard")
(SYNONYM CUPBOARD BED DOOR)
(FLAGS NDESCBIT DOORBIT CONTBIT SEARCHBIT INBIT)
(GENERIC GEN-BED)
(ACTION CUPBOARD-OBJECT-F)>
<ROUTINE CUPBOARD-OBJECT-F ()
<COND (<VERB? PUSH MOVE>
<TELL
CTHE ,CUPBOARD-OBJECT ,ISNT-FLUSH ,SQUEEZE-AROUND
;"It looks like you could squeeze around it.">)
(<AND <VERB? OPEN CLOSE>
<EQUAL? ,HERE ,CAPT-QUARTERS>>
<TELL CTHE ,DOOR " is on the other side of" TR ,CUPBOARD-OBJECT>)
(<VERB? EXAMINE LOOK-INSIDE SEARCH>
<COND (<EQUAL? ,HERE ,SLEEPING-CUPBOARD>
<V-LOOK>)
(<EQUAL? ,HERE ,CAPT-QUARTERS>
<TELL
,YOU-SEE ,THE-BACK T ,CUPBOARD-OBJECT ". " ,SQUEEZE-AROUND>)
(<FSET? ,CUPBOARD-OBJECT ,OPENBIT>
<TELL
"It is a dark messy bed, set entirely within and filling" T ,CUPBOARD-OBJECT
". A cabin boy must sleep here when Jamison isn't using it.">
<COND (<NOT <FSET? ,PILE-OF-CLOTHES ,TOUCHBIT>>
<TELL " " <GETP ,PILE-OF-CLOTHES ,P?FDESC>>)>
<CRLF>)
(T
<TELL "It" ,IS-CLOSED ,PCR>)>)
(<VERB? ENTER BOARD>
<COND (<EQUAL? ,HERE ,SLEEPING-CUPBOARD>
<TELL ,LOOK-AROUND>)
(<EQUAL? ,HERE ,CAPT-QUARTERS>
<TELL ,YOU-CANT-SEE-ANY ,WAY-TO-DO-THAT>)
(T
<DO-WALK ,P?IN>)>)
(<VERB? PUT>
<TELL
,YOULL-HAVE-TO "get in the " D ,CUPBOARD-OBJECT " to do that" ,PCR>)>>
<ROOM AFT-HOLD
(IN ROOMS)
(DESC "Aft Hold")
(LDESC
"This is a gloomy, damp area at the bottom of the Helena Louise. To the
fore there seems to be a little more light, or you can climb up some
steep stairs.")
(UP TO LANDING)
(NORTH TO HOLD)
(GLOBAL STAIRS)
(FLAGS ONBIT RLANDBIT INDOORSBIT NARTICLEBIT)>
<ROOM HOLD
(IN ROOMS)
(DESC "Hold")
(SYNONYM HOLD)
(UP PER HATCH-ENTRANCE)
(OUT PER HATCH-ENTRANCE)
(NORTH TO CREWS-QUARTERS)
(SOUTH TO AFT-HOLD)
(GLOBAL HATCH STAIRS)
(FLAGS ONBIT RLANDBIT NARTICLEBIT INDOORSBIT)
(ACTION HOLD-F)>
<GLOBAL FUSE-LIT <>>
<ROUTINE HOLD-F (RARG)
<COND (<AND <EQUAL? .RARG ,M-ENTER>
<NOT <FSET? ,HERE ,TOUCHBIT>>
<NOT <FSET? ,POOP ,TOUCHBIT>>>
<TELL
"You hear a scuffling noise ahead, and scraping up near the ceiling.
You would think it was caused by rats, but for the definite curse you heard
before all the movement" ,PCR CR>)
(<AND <EQUAL? .RARG ,M-END>
,FUSE-LIT
<NOT <FSET? ,FUSE ,TOUCHBIT>>>
<DEQUEUE I-SMELL-SMOKE>
<I-SMELL-SMOKE>
<RFALSE>)
(<EQUAL? .RARG ,M-LOOK>
<HATCH-DESC>
<TELL
" above. Rats' scratchings counterpoint the lullaby of bilge water sloshing
in the bulkheads, punctuated by footsteps slapping the deck overhead.
You may move fore or aft.|
Behind a high fence, decorated by a sign, are stacked" T ,SUPPLIES ";
casks of rum, water, flour and salt meat interspersed with kegs of
gunpowder and shot. A closed gate is the only way in.">)>>
;"For the sailors unable to read the sign overhead, a high fence
guards the supplies. There is a closed mesh gate in the fence."
<OBJECT HATCH
(IN LOCAL-GLOBALS)
(DESC "canvas hatch")
(SYNONYM HATCH FRAME)
(ADJECTIVE CANVAS COVERED)
(FLAGS DOORBIT)
(ACTION HATCH-F)>
<ROUTINE HATCH-F ()
<COND (<VERB? EXAMINE>
<COND (<EQUAL? ,HERE ,HOLD>
<HATCH-DESC>
<TELL ,PCR>)
(T
<COND (<FSET? ,HATCH ,OPENBIT>
<TELL ,STEEP-STAIRS "into murky darkness." CR>)
(T
<TELL "Canvas stretches across" TR ,HATCH>)>)>)
(<VERB? LOOK-INSIDE>
<COND (<FSET? ,HATCH ,OPENBIT>
<PERFORM ,V?EXAMINE ,HATCH>
<RTRUE>)
(T
<TELL CTHE ,HATCH ,IS-CLOSED ,PCR>)>)
(<AND <VERB? OPEN>
<NOT <FSET? ,HATCH ,OPENBIT>>>
<COND (<EQUAL? ,HERE ,MAIN-DECK>
<FSET ,HATCH ,OPENBIT>
<TELL
"You pull a corner of canvas out of the frame. ">
<PERFORM ,V?EXAMINE ,HATCH>
<RTRUE>)
(T
<TELL ,YOU-CANT-SEE-ANY ,WAY-TO-DO-THAT>)>)>>
<ROUTINE HATCH-DESC ()
<COND (<FSET? ,HATCH ,OPENBIT>
<TELL
"Moonlight shines down the stairs through an open
corner of the canvas hatch">)
(T
<TELL
"Steep stairs lead up in the dimness to a canvas hatch">)>>
<OBJECT FENCE
(IN HOLD)
(DESC "fence")
(SYNONYM FENCE CAGE)
(ADJECTIVE MESH WIRE)
(FLAGS CONTBIT SEARCHBIT TRANSBIT NDESCBIT)
(ACTION FENCE-F)>
<ROUTINE FENCE-F ()
<COND (<VERB? LOOK-BEHIND LOOK-INSIDE>
<TELL
CTHE ,SUPPLIES " are kept locked behind the fence. ">
<COND (,FUSE-LIT
<PERFORM ,V?EXAMINE ,FUSE>
<RTRUE>)
(T
<CRLF>)>)
(<VERB? EXAMINE>
<TELL CTHE ,FENCE
" is made of thick, finely woven wire mesh, uncuttable and unclimbable.
Except for a gap of about 6 inches over the closed gate, the cage is
secure from ceiling to damp floorboards." CR>)
(<VERB? THROW-OVER>
<TELL "You'd best throw" T ,PRSO " over" TR ,GATE>)
(<VERB? CLIMB>
<TELL "You can't get a toehold in" TR ,FENCE>)
(<VERB? OPEN CLOSE>
<TELL
,YOULL-HAVE-TO "do that to the gate in" TR ,FENCE>)>>
<ROUTINE GATE-MADE-SAME (STR)
<TELL
"The gate is made of the same " .STR " wire as" T ,FENCE>>
<OBJECT GATE
(IN HOLD)
(DESC "gate")
(SYNONYM GATE GAP LOCK)
(ADJECTIVE IRON MESH)
(FLAGS LOCKEDBIT DOORBIT NDESCBIT)
(ACTION GATE-F)>
<ROUTINE GATE-F ()
<COND (<VERB? EXAMINE>
<TELL
"It has a huge iron lock. Between" T ,GATE " and the
ceiling, however, is a gap of about 6 inches." CR>)
(<AND <VERB? ENTER>
<NOUN-USED ,W?GAP ,GATE>>
<PERFORM ,V?CLIMB ,GATE>
<RTRUE>)
(<VERB? CLIMB CLIMB-OVER EXIT>
<GATE-MADE-SAME "finely woven">
<TELL ", and you cannot get a foothold" ,PCR>)
(<VERB? CUT>
<GATE-MADE-SAME "thick">
<TELL ,PCR>)
(<VERB? LOOK-BEHIND>
<PERFORM-PRSA ,FENCE>)
(<VERB? THROW-OVER>
;<COND (<PRSO? ,HOOPS>