-
Notifications
You must be signed in to change notification settings - Fork 5
Expand file tree
/
Copy pathvoyage.zil
More file actions
2057 lines (1970 loc) · 64.2 KB
/
Copy pathvoyage.zil
File metadata and controls
2057 lines (1970 loc) · 64.2 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
"VOYAGE for
SHOGUN
(c) Copyright 1988 Infocom, Inc. All Rights Reserved."
<FILE-FLAGS SENTENCE-ENDS?>
<BEGIN-SEGMENT VOYAGE>
<CONSTANT J-PILING 60>
<ROUTINE HIRO-MATSU-REFUSES ()
<TELL
"\""I"Iye!""\" Hiro-matsu shakes his head, and speaks at length clearly
refusing permission because of the danger." CR>>
<ROUTINE YABU-BOARDS-SKIFF ()
<QUEUE I-SKIFF -1>
<MOVE ,HIRO-MATSU ,GENERIC-OBJECTS>
<MOVE ,YABU ,SKIFF>
<MOVE ,SEARCH-PARTY ,SKIFF>
<MOVE ,OARS ,SKIFF>
<FSET ,OARS ,TAKEBIT>
<TELL
"This time the old man points his sword at the skiff and shakes his
head. He and Yabu begin an animated discussion in Japanese, motioning
the mate over to join them. Hiro-matsu studies the coast for a
while. Finally, he beckons a samurai, points to you, and gives some apparent
instructions. The samurai and six other warriors clamber nimbly into
the skiff, and to your surprise, so does Yabu!|
|
Hiro-matsu points to the skiff, bows politely to you, and then goes
below." CR>
<SCORE-OBJECT ,SKIFF>>
<ROUTINE I-SKIFF ()
<ZLINES ,SKIFF-CNT
(DELAY
<COND (<NOT <IN? ,BLACKTHORNE ,SKIFF>>
<COND (<G? ,DELAY-CNT 2>
<MOVE ,BLACKTHORNE ,SKIFF>
<TELL CR
"Yabu barks orders, and you are pitched headlong into the skiff." CR>)
(ELSE
<TELL CR
"Yabu motions for you to get in the skiff." CR>)>)>)
(<DEQUEUE I-SKIFF>
<RFALSE>)>>
<ROOM IN-THE-SEA
(LOC ROOMS)
(DESC "In the Sea")
(SYNONYM SEA)
(LDESC
"You are in the raging sea between the galley and the rocky,
wave-tormented shore.")
(FLAGS ONBIT OUTSIDE)
(GLOBAL LG-SEA LG-LAND LG-BAY LG-RODRIGUES)
(GENERIC GENERIC-SEA-F)
(ACTION IN-THE-SEA-F)>
<ROUTINE IN-THE-SEA-F (RARG)
<COND (<RARG? ENTER>
<COND (<NOT <IN? ,WINNER ,SKIFF>>
<QUEUE I-DROWN 5>
<TELL
"You execute a perfect dive into the sea." CR CR>)
(ELSE
<COND (<IN? ,YABU ,SKIFF> <FSET ,YABU ,NDESCBIT>)>
<COND (<IN? ,SEARCH-PARTY ,SKIFF>
<FSET ,SEARCH-PARTY ,NDESCBIT>)>
<RFALSE>)>)
(<RARG? LEAVE>
<COND (<IN? ,YABU ,SKIFF> <FCLEAR ,YABU ,NDESCBIT>)>
<COND (<IN? ,SEARCH-PARTY ,SKIFF>
<FCLEAR ,SEARCH-PARTY ,NDESCBIT>)>
<RFALSE>)
(<RARG? BEG>
<COND (<AND <P? (HELLO ASK-ABOUT TELL) RODRIGUES>
<IN? ,RODRIGUES ,HERE>>
<COND (<IN? ,OAR ,RODRIGUES>
<TELL
"\"Are you crazy, Ingeles?\"" CR>)
(ELSE
<TELL "He's drowning!" CR>)>
<COND (<VERB? TELL> <END-QUOTE> <RFATAL>)
(ELSE <RTRUE>)>)
(<VERB? DIVE>
<TELL
"You dive beneath the surface, but find nothing of interest." CR>)
(<AND <VERB? DROP>
<HELD? ,PRSO>>
<REMOVE ,PRSO>
<TELL "Gone forever, beneath the waves." CR>)
(<VERB? SWIM DANCE HIDE-BEHIND HIDE-UNDER>
<TELL "You try desperately to stay afloat." CR>)
(<P? (THROUGH WALK-TO) LG-LAND>
<TELL
"That would be suicide. You would be pulped on the rocks!" CR>)
(<AND <OR <P? (WALK-TO BOARD CLIMB-ON CLIMB-FOO)
(LG-GALLEY ROOMS)>
<P? (DROP EXIT) LG-SEA>>
<NOT <IN? ,WINNER ,SKIFF>>>
<TELL
"The storm has carried you further towards the rocks, and you fight
the current, trying to get back, but it's hopeless. They'll have to
fend for themselves." CR>)
(<AND <P? (HELP TAKE WALK-TO) (LG-RODRIGUES RODRIGUES)>
<IN? ,RODRIGUES ,HERE>>
<TELL
"Here among the waves it's not as obvious where Rodrigues is, but
you swim toward where you last saw him. ">
<COND (<NOT <FSET? ,OAR ,SCOREBIT>>
<FCLEAR ,RODRIGUES ,INVISIBLE>
<TELL
"There he is! He's clinging to a broken oar! You stroke towards him
and at last, fighting the sea, you reach him. He's wet but alive. \"By
the Virgin, Ingeles!\" he chokes. \"Who's conning the galley!\"" CR>)
(ELSE
<TELL
"You search for as long as your strength holds, but you find no sign
of him." CR>)>)>)>>
<ROUTINE I-DROWN ()
<TELL CR
"At last, your strength gives out. You are still not fully recovered
from the voyage to Japan. You can swim but not forever. You sink beneath
the waves." CR>
<JIGS-UP>>
<OBJECT LG-GALLEY
(LOC IN-THE-SEA)
(DESC "galley")
(OWNER TORANAGA)
(SYNONYM GALLEY BOAT SHIP)
(FLAGS VEHBIT)
(DESCFCN LG-GALLEY-DESC)
(GENERIC GENERIC-GALLEY-F)
(ACTION LG-GALLEY-F)>
<ROUTINE LG-GALLEY-DESC (RARG OBJ)
<COND (<RARG? OBJDESC?> <RTRUE>)
(ELSE
<COND (,GALLEY-IN-BAY?
<TELL
"The galley rides heavily ">
<COND (<NOT <FSET? ,ANCHOR ,SCOREBIT>>
<TELL "at anchor ">)>
<TELL "on the relatively gentle swells
of the bay.">)
(ELSE
<TELL
"Riding the waves like a fat-bellied pig, the overladen galley appears
and disappears in the troughs of the waves.">)>)>>
<ROUTINE LG-GALLEY-F ()
<COND (<VERB? ENTER BOARD CLIMB-FOO CLIMB-ON>
<COND (<HERE? ,WHARF>
<DO-WALK ,P?EAST>)
(<HERE? ,GALLEY ,MAIN-DECK ,MAIN-DECK-2>
<TELL G"You already are." CR>)
(ELSE
<TELL
"The galley isn't here." CR>)>)
(<VERB? TURN>
<COND (<HERE? ,GALLEY>
<PERFORM ,V?TURN ,WHEEL ,PRSI>
<RTRUE>)
(<HERE? ,MAIN-DECK>
<ARENT-WHERE-PRSO-IS>
<COND (<IN? ,RODRIGUES ,GALLEY>
<FRUSTRATED ,RODRIGUES>)>
<CRLF>)
(ELSE
<TELL "You aren't on the galley." CR>)>)>>
<ROUTINE FRUSTRATED (WHO)
<TELL "Frustrated, you yell
the command to " D .WHO ", but realize that he can't hear you above the
storm." CR>>
<ROUTINE DRESS-BLACKTHORNE ("OPT" (EUROPEAN? <>))
<COND (.EUROPEAN?
<MOVE ,CLOTHES ,BLACKTHORNE>
<FSET ,CLOTHES ,WEARBIT>
<MOVE ,BOOTS ,BLACKTHORNE>
<FSET ,BOOTS ,WEARBIT>)
(ELSE
<COND (<AND <G? ,SCENE ,S-JOURNEY>
<LOC ,DICTIONARY>>
<MOVE ,DICTIONARY ,BLACKTHORNE>)>
<MOVE ,SOCKS ,BLACKTHORNE>
<FSET ,SOCKS ,WEARBIT>
<MOVE ,SANDALS ,BLACKTHORNE>
<FSET ,SANDALS ,WEARBIT>
<MOVE ,KIMONO ,BLACKTHORNE>
<FSET ,KIMONO ,WEARBIT>)>>
<ROOM GALLEY
(LOC ROOMS)
(SCENE S-VOYAGE)
(DESC "Toranaga's Galley")
(SYNONYM GALLEY)
(OWNER TORANAGA)
(SCORE 11)
(FDESC
"It is near noon and you are standing on the quarterdeck of the galley
under an overcast sky. During the first night the galley had sped
southward down the east coast of the Izu peninsula. When it came abreast
of the southmost cape, Cape Ito, Rodrigues had set the course West South
West and had left the safety of the coast for the open sea, heading for
a landfall at Cape Shinto two hundred miles away.|
|
\"What do you think, Ingeles?\" asks Rodrigues.|
\"I think there'll be a storm,\" you reply.|
\"When?\"|
\"Before sunset\" you answer.|
|
The storm comes before sunset and catches you out to sea. Land is
ten miles away.")
(AFTER VOYAGE-AFTER-F)
(FORE TO MAIN-DECK)
(DOWN TO MAIN-DECK)
(FLAGS ONBIT OUTSIDE)
(GLOBAL LG-GALLEY CREWMEN LG-RODRIGUES LG-SEA
LG-LAND LG-BAY ANCHOR)
(GENERIC GENERIC-GALLEY-F)
(ACTION GALLEY-F)>
<ROUTINE GALLEY-F (RARG)
<COND (<RARG? SCENE-SETUP>
<DRESS-BLACKTHORNE T>
<PUTP ,BLACKTHORNE ,P?HEALTH 4>
<PUT-ON ,SLIPPERS ,YABU>
<PUT-ON ,YABU-KIMONO ,YABU>
<PUT-ON ,YABU-SWORDS ,YABU>
<MOVE ,SAFETY-LINE ,BLACKTHORNE>
<FSET ,SAFETY-LINE ,WEARBIT>
<MOVE ,RODRIGUES ,HERE>
<NEW-SDESC ,RODRIGUES "Rodrigues">
<QUEUE I-RODRIGUES -1>)
(<RARG? LOOK>
<TELL
"You are standing on the quarterdeck of Toranaga's galley, with a good
view forward to the oar deck." CR>)
(<RARG? LEAVE>
<FCLEAR ,GALLEY-WHEEL ,ONBIT>)
(<RARG? BEG>
<COND (<VERB? WALK>
<COND (<FSET? ,SAFETY-LINE ,WEARBIT>
<TELL
,YOU-HAVE-TO G"untie your safety line first"", even though you know that
without it you could easily be carried overboard." CR>)>)
(<P? UNTIE ME>
<PERFORM ,V?UNTIE ,SAFETY-LINE>
<RTRUE>)
(<P? ROW <>>
<TELL "The oars aren't here. They're forward on
the main deck." CR>)
(<P? TURN INTDIR>
<PERFORM ,V?TURN ,GALLEY-WHEEL ,INTDIR>
<RTRUE>)
(<AND <VERB? TURN-TOWARD TURN-AWAY>
<NOT <PRSO? ,GALLEY-WHEEL>>>
<PERFORM ,PRSA ,GALLEY-WHEEL ,PRSO>
<RTRUE>)
(<P? POINT (LG-BAY LG-LAND)>
<SETG WINNER ,OARSMEN>
<PERFORM ,V?POINT ,PRSO>
<SETG WINNER ,PLAYER>
<RTRUE>)
(<P? BOARD LG-SEA>
<COND (<FSET? ,SAFETY-LINE ,WEARBIT>
<TELL
,YOU-HAVE-TO G"untie your safety line first""." CR>)
(<NOT <FSET? ,LIFE-RING ,WEARBIT>>
<TELL
G"You would surely drown." CR>)>)>)>>
<OBJECT GALLEY-WHEEL
(LOC GALLEY)
(SCENE S-VOYAGE)
(OWNER GALLEY)
(DESC "helm")
(SYNONYM WHEEL RUDDER HELM TILLER)
(FLAGS CANT-HOLD)
(DESCFCN GALLEY-WHEEL-DESC)
(ACTION GALLEY-WHEEL-F)>
<ROUTINE GALLEY-WHEEL-DESC (RARG OBJ)
<COND (<RARG? OBJDESC?> <RTRUE>)
(<RARG? OBJDESC>
<TELL "The helm is here, turned ">
<COND (<EQUAL? ,SHIP-COURSE ,P?PORT> <TELL "to port">)
(<EQUAL? ,SHIP-COURSE ,P?STARBOARD>
<TELL "to starboard">)
(ELSE <TELL "straight">)>
<TELL " now.">
<COND (<OR <FSET? ,SAFETY-LINE ,WEARBIT>
<FSET? ,GALLEY-WHEEL ,ONBIT>>
<COND (<FSET? ,GALLEY-WHEEL ,ONBIT>
<TELL "You have the helm">
<COND (<FSET? ,SAFETY-LINE ,WEARBIT>
<TELL " and a ">)>)
(<FSET? ,SAFETY-LINE ,WEARBIT>
<TELL "The ">)>
<COND (<FSET? ,SAFETY-LINE ,WEARBIT>
<TELL
"life line secures you as the deck pitches and rolls.">)
(ELSE
<TELL
". There is a life line lashed to the binnacle.">)>)>)>>
<ROUTINE GALLEY-WHEEL-F ()
<COND (<VERB? EXAMINE>
<TELL
"The helm steers the ship. The galley is steering ">
<COND (<EQUAL? ,SHIP-COURSE ,P?PORT>
<TELL "south toward the open sea." CR>)
(ELSE <TELL "toward the bay." CR>)>)
(<VERB? TAKE>
<COND (<FSET? ,GALLEY-WHEEL ,ONBIT>
<TELL "You already have it!" CR>)
(ELSE
<FSET ,GALLEY-WHEEL ,ONBIT>
<TELL
"You take the helm." CR>)>)
(<VERB? DROP>
<COND (<NOT <FSET? ,GALLEY-WHEEL ,ONBIT>>
<YOU-ARENT-HOLDING>)
(ELSE
<FCLEAR ,GALLEY-WHEEL ,ONBIT>
<TELL
"You release the helm.">
<COND (<IN? ,RODRIGUES ,HERE>
<TELL
"Rodrigues takes it.">)>
<CRLF>)>)
(<P? STRAIGHTEN GALLEY-WHEEL>
<SETG P-DIRECTION ,P?FORE>
<PERFORM ,V?TURN ,GALLEY-WHEEL ,INTDIR>
<RTRUE>)
(<P? TURN-TOWARD GALLEY-WHEEL>
<COND (<PRSI? ,LG-BAY ,LG-LAND>
<SETG P-DIRECTION ,P?STARBOARD>
<PERFORM ,V?TURN ,PRSO ,INTDIR>
<RTRUE>)
(<PRSI? ,LG-SEA>
<SETG P-DIRECTION ,P?PORT>
<PERFORM ,V?TURN ,PRSO ,INTDIR>
<RTRUE>)>)
(<P? TURN-AWAY GALLEY-WHEEL>
<COND (<PRSI? ,LG-BAY ,LG-LAND>
<SETG P-DIRECTION ,P?PORT>
<PERFORM ,V?TURN ,PRSO ,INTDIR>
<RTRUE>)
(<PRSI? ,LG-SEA>
<SETG P-DIRECTION ,P?STARBOARD>
<PERFORM ,V?TURN ,PRSO ,INTDIR>
<RTRUE>)>)
(<P? TURN GALLEY-WHEEL>
<COND (<NOT <FSET? ,ANCHOR ,SCOREBIT>>
<TELL
"The galley is anchored safely in the bay. Turning the wheel is a
waste of time." CR>)
(<NOT <FSET? ,GALLEY-WHEEL ,ONBIT>>
<YOU-ARENT-HOLDING>)
(<PRSI? ,INTDIR>
<COND (<EQUAL? ,P-DIRECTION ,P?PORT ,P?SOUTH>
<SETG SHIP-COURSE ,P?PORT>
<SETG SHIP-DIRECTION ,P?SOUTH>
<TELL
"You turn to wheel to port, steering the galley out to sea, running
with the wind." CR>)
(<EQUAL? ,P-DIRECTION ,P?STARBOARD ,P?WEST>
<SETG SHIP-COURSE ,P?STARBOARD>
<SETG SHIP-DIRECTION ,P?WEST>
<TELL
"You turn the wheel to starboard, steering for the bay." CR>)
(<EQUAL? ,P-DIRECTION ,P?FORE ,P?IN>
<SETG SHIP-COURSE ,P?FORE>
<TELL
"You try to hold a steady course." CR>)
(ELSE
<TELL
"You can't steer the galley in that direction!" CR>)>)
(ELSE
<TELL G"You must specify a direction!" CR>)>)>>
<OBJECT SAFETY-LINE
(LOC GALLEY)
(SCENE S-VOYAGE)
(DESC "safety line")
(SYNONYM LINE LIFELINE ROPE)
(ADJECTIVE SAFETY LIFE)
(FLAGS OPENABLE WEARABLE)
(ACTION SAFETY-LINE-F)>
<ROUTINE SAFETY-LINE-F ()
<COND (<OR <P? (THROW GIVE) * LG-RODRIGUES>
<P? TURN * LG-RODRIGUES>
<P? REACH-FOR LG-RODRIGUES>>
<TELL
"It's much too short." CR>)
(<AND <P? TIE * SAFETY-LINE>
<NOT <PRSO? ,SAFETY-LINE>>>
<PERFORM ,PRSA ,SAFETY-LINE ,PRSO>
<RTRUE>)
(<AND <P? TIE SAFETY-LINE>
<NOT <PRSI? <> ,ME ,BLACKTHORNE>>>
<COND (<PRSI? ,RODRIGUES>
<TELL
"\"Lifelines, Ingeles? Have you no "I"cojones""?\"" CR>)
(<PRSI? ,SAFETY-LINE>
<TELL
"Tying the safety line to itself would be foolish." CR>)
(ELSE
<TELL
"You can't tie the safety line to that." CR>)>)
(<VERB? UNTIE TAKE-OFF DROP>
<COND (<FSET? ,SAFETY-LINE ,WEARBIT>
<MOVE ,SAFETY-LINE ,GALLEY>
<FCLEAR ,SAFETY-LINE ,WEARBIT>
<TELL
"You untie the line.">
<COND (<FSET? ,ANCHOR ,SCOREBIT>
<TELL
"You know that without your lifeline you can easily be carried overboard.">
<COND (<FSET? ,OARSMEN ,SCOREBIT>
<TELL
"But the oars have to be shipped or you are lost.">)>)>
<CRLF>)
(ELSE
<TELL
"You're already untied!" CR>)>)
(<VERB? TIE WEAR TAKE>
<COND (<NOT <FSET? ,SAFETY-LINE ,WEARBIT>>
<MOVE ,SAFETY-LINE ,WINNER>
<FSET ,SAFETY-LINE ,WEARBIT>
<TELL
"You gratefully return to the safety of the line." CR>)
(ELSE
<TELL
"You're already tied as securely as possible." CR>)>)>>
<ROOM MAIN-DECK
(SCENE S-VOYAGE)
(LOC ROOMS)
(DESC "Main Deck")
(SYNONYM DECK)
(ADJECTIVE MAIN)
(AFT TO GALLEY)
(UP TO GALLEY)
(DOWN SORRY "There's nothing of interest below decks.")
(FLAGS ONBIT OUTSIDE SCOREBIT)
(GLOBAL LG-GALLEY LG-SEA LG-LAND LG-BAY LG-RODRIGUES)
(GENERIC GENERIC-DECK-F)
(ACTION MAIN-DECK-F)>
<ROUTINE MAIN-DECK-F (RARG)
<COND (<RARG? LOOK>
<TELL
G"This is the oar deck of the galley, forward of the quarterdeck. ">
<COND (<NOT <FSET? ,ANCHOR ,SCOREBIT>>
<TELL
"The rowers are resting after their ordeal, exhausted but proud of
their victory over the sea." CR>)
(<NOT <FSET? ,MAIN-DECK ,SCOREBIT>>
<TELL
"Banks of twenty rowers are to each side, disciplined, trained samurai. ">
<COND (<NOT <FSET? ,OARSMEN ,SCOREBIT>>
<TELL "They row steadily, urged on by the
beat of a drum." CR>)
(ELSE
<TELL
"They wait patiently for their next order." CR>)>)
(ELSE
<TELL "The chaos here is incredible. Half the
oars are flailing in the air, some of the oarsmen have been washed
overboard, and some have slipped their safety lines to try to fight
order into their oars." CR>)>)
(<RARG? ENTER>
<COND (<NOT <FSET? ,ANCHOR ,SCOREBIT>>
<TELL
"You make your way forward">)
(ELSE
<TELL
"You fight your way forward along the heaving, greasy deck,">)>
<TELL " down the short gangway to the main deck.">
<CRLF> <CRLF>)
(<RARG? BEG>
<COND (<P? (CLIMB-FOO HOLD-ON) ROOMS>
<COND (<NOT ,GOT-GUNWALE?>
<PERFORM ,V?TAKE ,GUNWALE>
<RTRUE>)
(ELSE
<TELL
"You have returned to the relative security of the deck." CR>)>)
(<AND <FSET? ,GUNWALE ,RMUNGBIT>
<NOT ,GOT-GUNWALE?>>
<COND (<VERB? WALK WALK-TO>
<TELL
"You can't walk while being swept overboard!" CR>)
(<AND <NOT <GAME-VERB?>>
<NOT <VERB? TAKE BOARD SWIM HOLD HOLD-ON>>>
<TELL
"Your preoccupations are unusual for someone who is being swept
overboard in the middle of the ocean." CR>)>)
(<P? TAKE-OFF LG-GALLEY>
<DO-WALK ,P?DOWN>)
(<AND <P? WALK DOWN>
<FSET? ,SKIFF ,RMUNGBIT>>
<PERFORM ,V?BOARD ,SKIFF>
<RTRUE>)
(<P? BOARD LG-SEA>
<TELL
G"You would surely drown." CR>)
(<P? (ROW WALK-TO) <>>
<COND (<FSET? ,MAIN-DECK ,SCOREBIT>
<PERFORM ,V?HELP ,OARSMEN>
<RTRUE>)
(ELSE
<SETG WINNER ,OARSMEN>
<PERFORM ,PRSA ,PRSO ,PRSI>
<SETG WINNER ,PLAYER>
<RTRUE>)>)>)>>
<OBJECT SKIFF
(LOC MAIN-DECK)
(SCENE S-VOYAGE)
(DESC "skiff")
(SYNONYM SKIFF BOAT)
(FLAGS TAKEBIT VEHBIT OPENBIT CONTBIT SEARCHBIT SCOREBIT)
(COUNT 0)
(SIZE 200)
(CAPACITY 200)
(DESCFCN SKIFF-DESC)
(ACTION SKIFF-F)>
<ROUTINE SKIFF-DESC (RARG OBJ)
<COND (<RARG? OBJDESC?> <RTRUE>)
(<RARG? OBJDESC>
<COND (<FSET? ,SKIFF ,RMUNGBIT>
<TELL "The skiff ">
<COND (<HERE? ,PEBBLED-BEACH>
<TELL
"has been pulled up onto the rocky beach.">)
(ELSE
<TELL
"rides lightly beside the galley.">)>)
(<HERE? ,PEBBLED-BEACH>
<TELL
"The skiff rests on its side on the rocky beach.">)
(ELSE
<TELL
"A skiff is tied to the deck near the centerline of the galley.">)>
<RFATAL>)>>
<ROUTINE SKIFF-F ("OPT" (RARG <>) "AUX" TRIES)
<COND (<RARG? LOOK>
<COND (<HERE? ,IN-THE-SEA>
<TELL
"The skiff rides lightly in the relatively gentle swells of the bay.">
<COND (<AND <IN? ,YABU ,SKIFF>
<IN? ,SEARCH-PARTY ,SKIFF>>
<TELL
"Yabu sits imperiously in the bow, and the search party mans the oars.">)>
<CRLF>
<RTRUE>)>)
(<RARG? BEG>
<COND (<HERE? IN-THE-SEA>
<COND (<AND <VERB? BOARD WALK-TO CLIMB-FOO>
<PRSO? ,GALLEY>>
<MOVE ,WINNER ,HERE>
<GOTO ,MAIN-DECK>)
(<VERB? DISEMBARK>
<PERFORM ,V?LEAP ,LG-SEA>
<RTRUE>)
(<OR <VERB? WALK>
<P? WALK-TO (LG-LAND LG-BAY LG-GALLEY)>>
<COND (<OR <P? WALK ,P?EAST>
<P? WALK-TO ,LG-LAND>>
<TELL
"The rowers look to Yabu for confirmation, and he nods impatiently.">)
(ELSE
<TELL
"Yabu points to the shore instead, indicating the direction for the
rowers to go.">)>
<CRLF>
<CRLF>
<GOTO ,PEBBLED-BEACH>)>)
(<HERE? PEBBLED-BEACH>
<COND (<OR <VERB? DISEMBARK>
<P? WALK P?OUT>>
<COND (<NOT ,SEARCHED?>
<SETG SEARCHED? T>
<MOVE ,BLACKTHORNE ,HERE>
<MOVE ,YABU ,HERE>
<TELL
"You disembark quickly, intending to lead the search party, but Yabu
usurps that position and will not yield it." CR>)
(ELSE
<TELL
"The samurai hold you back; it's apparent that Yabu feels you've had
your chance to find Rodrigues, and now it's time to head back to the
galley." CR>)>)
(<OR <P? WALK ,P?WEST>
<P? WALK-TO (GALLEY LG-GALLEY)>>
<TELL
"You are rowed back to the galley, having failed to find Rodrigues." CR>
<FAILED-SCENE>)
(<VERB? WALK WALK-TO>
<PERFORM ,V?DISEMBARK>
<RTRUE>)>)>)
(<RARG? <>>
<COND (<VERB? EXAMINE>
<TELL
"It's a wooden skiff, pointed at bow and stern. ">
<COND (<IN? ,SEARCH-PARTY ,SKIFF>
<TELL "In the skiff are ">
<WHAT-CONTENTS>)
(ELSE
<TELL "It's big enough to
hold quite a few men." CR>)>)
(<VERB? TAKE>
<TELL
"It's much to heavy for you to carry." CR>)
(<VERB? BOARD>
<COND (<HERE? ,PEBBLED-BEACH>
<MOVE ,YABU ,SKIFF>
<MOVE ,SEARCH-PARTY ,SKIFF>
<MOVE ,PLAYER ,SKIFF>
<TELL
"You board the skiff, and the rest of the shore party follows." CR>)
(<FSET? ,SKIFF ,RMUNGBIT>
<SET TRIES <GETP ,SKIFF ,P?COUNT>>
<PUTP ,SKIFF ,P?COUNT <+ .TRIES 1>>
<COND (<ZERO? .TRIES>
<TELL
"You go to the gunwale and begin to scale down the side but a harsh
voice stops you. Hiro-matsu is here, with Yabu beside him. ">
<HIRO-MATSU-REFUSES>)
(<EQUAL? .TRIES 1>
<YABU-BOARDS-SKIFF>)
(ELSE
<MOVE ,BLACKTHORNE ,SKIFF>
<TELL
"You climb down the side of the galley, joining the others in the
skiff." CR CR>
<GOTO ,IN-THE-SEA>)>)
(ELSE
<TELL
G"It would be a good trick, and somewhat amusing, to get into a boat
while it's still on deck, but not a good idea." CR>)>)
(<VERB? LOOK-INSIDE>
<COND (<AND <IN? ,YABU ,SKIFF>
<IN? ,SEARCH-PARTY ,SKIFF>>
<TELL
"In the skiff is the search party of seven samurai, ready at the oars, and
Yabu, who looks very pleased with himself." CR>)>)
(<VERB? UNTIE>
<COND (<NOT <FSET? ,ANCHOR ,SCOREBIT>>
<COND (<NOT <FSET? ,SKIFF ,RMUNGBIT>>
<FSET ,SKIFF ,RMUNGBIT>
<MOVE ,BOAT-OAR ,SKIFF>
<TELL
"You untie the skiff, preparing to launch it." CR>)
(ELSE
<TELL
"It's already untied." CR>)>)
(ELSE
<TELL
"In this gale, any object that isn't tied down is a deadly
missile." CR>)>)
(<VERB? LAUNCH LOWER>
<COND (,GALLEY-IN-BAY?
<COND (<FSET? ,ANCHOR ,SCOREBIT>
<TELL
"The galley is still being washed to and fro. It's too dangerous." CR>)
(<NOT <FSET? ,SKIFF ,RMUNGBIT>>
<FSET ,SKIFF ,RMUNGBIT>
<MOVE ,BOAT-OAR ,SKIFF>
<TELL "The skiff is ">
<COND (<HERE? ,MAIN-DECK ,GALLEY>
<TELL
"lowered into the water." CR>)
(ELSE
<TELL
"pushed out into the surf." CR>)>)
(ELSE
<TELL "It's already ">
<COND (<HERE? ,MAIN-DECK ,GALLEY>
<TELL
"riding the waves beside the galley." CR>)
(ELSE
<TELL
"waiting in the nearby surf." CR>)>)>)
(ELSE
<TELL
"You can't launch it alone, and in this gale, no one is going to
help you." CR>)>)>)>>
<GLOBAL SEARCHED? <>>
<OBJECT ANCHOR
(LOC MAIN-DECK)
(SCENE S-VOYAGE)
(DESC "anchor")
(SYNONYM ANCHOR)
(SIZE 200)
(FLAGS AN TAKEBIT SCOREBIT)
(ACTION ANCHOR-F)>
<ROUTINE ANCHOR-F ()
<COND (<AND <VERB? TAKE>
<FSET? ,GUNWALE ,RMUNGBIT>>
<TELL "It's too far away." CR>)
(<VERB? DROP THROW THROW-OFF PUT LOWER PUSH MOVE>
<COND (<NOT ,GALLEY-IN-BAY?>
<TELL
"You can't drop anchor until you are safely in the bay!" CR>)
(<FSET? ,ANCHOR ,SCOREBIT>
<FSET ,ANCHOR ,NDESCBIT>
<QUEUE I-ALL-ON-DECK 1>
<TELL
"\"Let go the anchor!\" No one understands your words but they all know
what you want. The anchor splashes over the side. You let the ship fall
off the wind slightly to test the firmness of the seabed. The ship is
safe." CR>
<SCORE-OBJECT ,ANCHOR>)
(ELSE
<TELL G"It already is." CR>)>)
(<VERB? RAISE>
<COND (<FSET? ,ANCHOR ,SCOREBIT>
<TELL G"It already is." CR>)
(<FSET? ,ANCHOR ,NDESCBIT>
<TELL
"What a dangerous idea! You would be swept onto the rocks." CR>)>)>>
<ROUTINE I-ALL-ON-DECK ()
<MOVE ,HIRO-MATSU ,MAIN-DECK>
<MOVE ,YABU ,MAIN-DECK>
<TELL CR
"Hiro-matsu and Yabu climb shakily up from below decks, both somewhat
seasick, but once there, both "I"daimyos"" stand erect." CR>>
<OBJECT OARS
(LOC MAIN-DECK)
(DESC "oars")
(SYNONYM OARS OAR)
(FLAGS NDESCBIT)
(ACTION OARS-F)>
<ROUTINE OARS-F ()
<COND (<AND <VERB? SHIP SORT POINT TAKE ROW WALK-TO>
<NOT <IN? ,WINNER ,SKIFF>>>
<PERFORM ,V?HELP ,OARSMEN>
<RTRUE>)>>
<OBJECT OARSMEN
(SCENE S-VOYAGE)
(LOC MAIN-DECK)
(DESC "oarsmen")
(SYNONYM OARSMEN OARSMAN MEN MAN ROWER ROWERS CREW CREWMEN)
(ADJECTIVE OARS)
(FLAGS NDESCBIT PERSON JAPANESEBIT PLURAL OPENBIT SEARCHBIT
CONTBIT ;SCOREBIT)
(ACTION OARSMEN-F)>
<ROUTINE OARSMEN-F ("OPT" (RARG <>))
<COND (<RARG? SUBJ>
<RFALSE>)
(<RARG? WINNER>
<COND (<P? PUT OARS (GLOBAL-WATER LG-SEA)>
<PERFORM ,V?ROW>
<RTRUE>)
(<AND <FSET? ,MAIN-DECK ,SCOREBIT>
<P? (SHIP SORT POINT TAKE ROW WALK-TO)
(<> OARSMEN OARS LG-BAY LG-LAND)>>
<SETG WINNER ,PLAYER>
<PERFORM ,V?HELP ,OARSMEN>
<RTRUE>)
(<P? (POINT TAKE ROW WALK-TO)
(<> OARS OARSMEN LG-BAY LG-LAND)>
<COND (<NOT <FSET? ,ANCHOR ,SCOREBIT>>
<TELL
"The galley is anchored. There's no reason to row." CR>)
(ELSE
<TELL "The oarsmen don't understand you, but they ">
<COND (<FSET? ,OARSMEN ,SCOREBIT>
<TELL "get the idea, and begin rowing again." CR>
<SCORE-OBJECT ,OARSMEN>)
(ELSE
<TELL "try to row faster." CR>)>)>)
(<P? (DROP THROW THROW-OFF PUT LOWER PUSH MOVE) ANCHOR>
<RFALSE>)
(ELSE
<TELL
"They don't seem to understand what you want." CR>)>)
(<VERB? EXAMINE>
<COND (<FSET? ,MAIN-DECK ,SCOREBIT>
<TELL
"The oarsmen are in a state of confusion." CR>)
(<FSET? ,OARSMEN ,SCOREBIT>
<TELL
"The oarsmen are settled again at their benches, but not yet rowing
again." CR>)
(ELSE
<TELL
"The oarsmen, unlike those you have seen in Europe, aren't slaves. Each
is a samurai warrior, and what they lack in deep water sailing
ability they make up in strength and stamina." CR>)>)
(<VERB? BOW>
<COND (<NOT <FSET? ,OARSMEN ,SCOREBIT>>
<TELL
"The oarsmen acknowledge your gesture of respect." CR>)
(ELSE
<TELL
"The oarsmen are taken aback by your formality, given the
circumstances." CR>)>)
(<P? THROW LIFE-RING>
<REMOVE ,LIFE-RING>
<TELL
"You heave the life ring to the rower, who tries to reach it, but the surge
of the sea is too strong and he's swept away." CR>)
(<VERB? HELP SORT>
<COND (<FSET? ,MAIN-DECK ,SCOREBIT>
<TELL
"You hurl yourself into the work of resorting the rowers. All rowing
has stopped except for the two oars most forward, which are keeping the
galley tidily into the wind. With signs and yelling, you get the oars
shipped, double up the men on the working ones, and generally restore
order." CR>
<SCORE-OBJECT ,MAIN-DECK>)
(ELSE
<TELL
"The oars are already back in some sort of order." CR>)>)>>
<OBJECT GUNWALE
(LOC MAIN-DECK)
(DESC "gunwale")
(SYNONYM GUNWALE GUNWALES RAIL RAILS)
(FLAGS NDESCBIT TAKEBIT SCOREBIT)
(ACTION GUNWALE-F)>
<GLOBAL GOT-GUNWALE? <>>
<ROUTINE GUNWALE-F ()
<COND (<VERB? EXAMINE>
<TELL
"The gunwales are nearly awash, as the galley is heavily laden and
low in the water. In the "I"Erasmus"" you would ride out a storm
like this easily, but this galley isn't built and rigged for weather." CR>)
(<VERB? TAKE HOLD HOLD-ON>
<COND (<FSET? ,GUNWALE ,RMUNGBIT>
<FCLEAR ,GUNWALE ,RMUNGBIT>
<SETG GOT-GUNWALE? T>
<TELL
"You grab desperately for the gunwale, and you catch it, your tendons
stretching but your grip holds! Then your other hand reaches the rail
and, choking, you pull yourself back." CR>
<SCORE-OBJECT ,GUNWALE>)
(ELSE
<TELL
"You hang onto the gunwales as you go forward." CR>)>)>>
<GLOBAL GALLEY-IN-BAY? <>>
<ROUTINE I-RODRIGUES ()
<COND (<AND <HERE? IN-THE-SEA>
<NOT <IN? ,RODRIGUES ,IN-THE-SEA>>>
<RFALSE>)>
<ZLINES ,RODRIGUES-CNT
(;1
<SETG SHIP-COURSE ,P?PORT>
<SETG SHIP-DIRECTION ,P?SOUTH>
<COND (<NOT <MARGINAL-PIC ,P-CONFUSION <>>>
<CRLF>)>
<TELL
"\"Watch out forward!\" Rodrigues shouts. The galley rolls sickeningly,
twenty oars pulling at air instead of sea and there is chaos aboard. The
first comber has struck and the port gunwale is awash. The galley
is floundering." CR>)
(;2
<THIS-IS-IT ,OARSMEN>
<FSET ,OARSMEN ,SCOREBIT>
<COND (<HERE? ,GALLEY>
<TELL CR
"\"Go forward,\" Rodrigues orders. ">)
(ELSE
<TELL CR
"Rodrigues yells to you. ">)>
<TELL "\"Get 'em to ship the oars, get 'em back
in order, and then
get 'em rowing again before we all drown! Hurry, hurry, hurry!\"" CR>)
(DELAY
<COND (<IN? ,BLACKTHORNE ,GALLEY>
<COND (<G? ,DELAY-CNT 2>
<CRLF>
<JIGS-UP
"\"Filthy heretic pig! You're no pilot, you're the son of a motherless
sow!\" Rodrigues smashes you in the head for your cowardice.">
<RFATAL>)
(ELSE
<TELL CR
"\"Hurry, Ingeles! Where are your "I"cojones""?\" curses Rodrigues." CR>
<RTRUE>)>)>)
(;3
<MOVE ,OAR ,GALLEY>
<FSET ,GUNWALE ,RMUNGBIT>
<THIS-IS-IT ,GUNWALE>
<TELL CR
"Abruptly the galley swerves and you are carried to the down side, tripped
by the flailing bodies of rowers who have lost their own footing.|
|
The gunwale is under water and one man goes overboard! You feel the rush
of water carrying you over the gunwale as well!" CR>)
(;4
<COND (,GOT-GUNWALE?
<THIS-IS-IT ,OARSMEN>
<TELL CR
"A man is at your feet and he drags you from the grip of the sea." CR>)
(ELSE
<CRLF>
<TELL
"You are swept into the raging torrent of the sea, and although you ">
<COND (<IN? ,LIFE-RING ,PLAYER>
<TELL "are wearing a life ring">)
(ELSE <TELL "can swim">)>
<TELL ", there is no hope." CR>
<JIGS-UP>)>)
(DELAY
<COND (<OR <FSET? ,MAIN-DECK ,SCOREBIT>
<FSET? ,OARSMEN ,SCOREBIT>>
<THIS-IS-IT ,OARSMEN>
<COND (<G? ,DELAY-CNT 6>
<CRLF>
<JIGS-UP
"The galley is smashed against the rocks of the headland.">
<RFATAL>)
(ELSE
<COND (<FSET? ,MAIN-DECK ,SCOREBIT>
<TELL CR
"The chaos continues, the oarsmen inexperienced with storms so far out
to sea, and they can't seem to get sorted out on their own.">
<COND (<IN? ,RODRIGUES ,HERE>
<TELL
G" Rodrigues yells at you, \"Ingeles, ""I told you to help the
oarsmen! Are you afraid just because you got a little wet?\"">)>
<CRLF>)
(<FSET? ,OARSMEN ,SCOREBIT>
<TELL CR
"The oarsmen, spent by their fight against the waves, and unsure what
to do next, wait for the next order.">
<COND (<IN? ,RODRIGUES ,HERE>
<TELL
G" Rodrigues yells at you, \"Ingeles, ""get those bastard-sans rowing
again! They don't know what to do so far from shore.\"">)>
<CRLF>)>
<TELL CR
"The storm continues to rage, and the galley is getting no closer to the
bay." CR>
<RTRUE>)>)>)
(;5
<MOVE ,RODRIGUES ,MAIN-DECK>
<CRLF>
<COND (<HERE? ,MAIN-DECK>
<TELL
"Rodrigues picks his way forward and claps you on the shoulder. He points
aft.">)
(ELSE
<TELL
"Rodrigues says,">)>
<TELL
"\"You take the helm. When I signal, steer west
for that point. You see it? I'm going">
<COND (<HERE? ,GALLEY> <TELL " forward">)>
<TELL " to help the captain with the oarsmen.\"">
<COND (<HERE? ,GALLEY>
<TELL "He unties his lifeline and goes forward.">)>
<CRLF>)
(DELAY
<COND (<NOT <FSET? ,GALLEY-WHEEL ,ONBIT>>
<COND (<G? ,DELAY-CNT 1>
<TELL CR
"Rodrigues curses, \"By your mother, Ingeles! Take the helm!\"" CR>
<RTRUE>)
(ELSE <RFALSE>)>)>)
(;6
<TELL CR
"The wind and tide are carrying you close to the rocks. Rodrigues stares,
terrified, at the approaching shore." CR>)
(;7
<TELL CR
"Rodrigues stares in horror at the jagged rocks of the headland. It's
clear he's lost his nerve. \"">
<COND (<EQUAL? ,SHIP-COURSE ,P?PORT>
<TELL "That's right, Pilot! ">)>
<TELL "Steer south for the open sea!\" Rodrigues
screams. \"Turn and run