-
Notifications
You must be signed in to change notification settings - Fork 27
/
fenshire.zil
1122 lines (1046 loc) · 33 KB
/
fenshire.zil
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
"FENSHIRE for
ZORK ZERO
(c) Copyright 1988 Infocom, Inc. All Rights Reserved."
<BEGIN-SEGMENT FENSHIRE>
;"the dirigible"
<ROOM DIRIGIBLE-HANGAR
(LOC ROOMS)
(REGION "Flatheadia")
(DESC "Dirigible Hangar")
(LDESC
"Even after becoming accustomed to the oversized scale of the castle,
this hangar seems tremendous. The only exit on foot is to the east.")
(EAST TO WEST-WING)
(OUT TO WEST-WING)
(IN PER DIRIGIBLE-ENTER-F)
(FLAGS RLANDBIT ONBIT)
(SYNONYM HANGAR)
(ADJECTIVE DIRIGIBLE LARGE)
(MAP-LOC <PTABLE MAIN-MAP-NUM MAP-GEN-Y-5 MAP-GEN-X-1>)
(GLOBAL GONDOLA)
(ACTION DIRIGIBLE-HANGAR-F)>
<ROUTINE DIRIGIBLE-ENTER-F ("OPTIONAL" (RARG <>)) ;"called by NEXT-ROOM?"
<COND (<IN? ,DIRIGIBLE ,HERE>
,GONDOLA)
(T
<COND (<NOT .RARG>
<V-WALK-AROUND>)>
<RFALSE>)>>
<ROUTINE DIRIGIBLE-HANGAR-F ("OPT" (RARG <>))
<COND (<AND ,DEMO-VERSION? <EQUAL? .RARG ,M-END>>
<END-DEMO>)>>
<OBJECT DIRIGIBLE
(LOC DIRIGIBLE-HANGAR)
(DESC "dirigible")
(LDESC
"A tremendous dirigible is moored here. The gondola is just a few inches
off the ground.")
(SYNONYM DIRIGIBLE)
(FLAGS VEHBIT) ;"so GET IN finds the dirigible"
(ACTION DIRIGIBLE-F)>
<ROUTINE DIRIGIBLE-F ()
<COND (<AND <VERB? THROW-FROM PUT-THROUGH>
<PRSI? ,DIRIGIBLE>>
<PERFORM-PRSA ,PRSO ,GONDOLA>)
(<VERB? EXAMINE>
<COND (<EQUAL? ,HERE ,GONDOLA>
<V-LOOK>)
(T
<TELL <GETP ,DIRIGIBLE ,P?LDESC> CR>)>)
(<VERB? LOOK-INSIDE>
<COND (<EQUAL? ,HERE ,GONDOLA>
<TELL ,LOOK-AROUND>)
(T
<TELL "You can't see much from out here." CR>)>)
(<VERB? ENTER>
<GOTO ,GONDOLA>)>>
<ROOM GONDOLA
(LOC ROOMS)
(REGION "Flatheadia")
(DESC "Gondola")
(OUT PER GONDOLA-EXIT-F)
(FLAGS RLANDBIT ONBIT)
(SYNONYM GONDOLA)
(GLOBAL WINDOW DIRIGIBLE DIRIGIBLE-HANGAR SMALLER-HANGAR)
(MAP-LOC ;"not a PTABLE because the info changes during dirigible trip"
<TABLE MAIN-MAP-NUM GONDOLA-AT-FLATHEADIA-LOC MAP-GEN-X-1>)
(ICON GONDOLA-ICON)
(ACTION GONDOLA-F)>
<ROUTINE GONDOLA-F ("OPTIONAL" (RARG <>))
<COND (<EQUAL? .RARG ,M-LOOK>
<TELL
"You are in the luxurious gondola of the dirigible. A window wraps completely
around the gondola. " ,GONDOLA-CONTROLS-DESC>)
(.RARG
<RFALSE>)
(<VERB? EXAMINE>
<PERFORM-PRSA ,DIRIGIBLE>)
(<AND <VERB? ENTER>
<NOT <EQUAL? ,HERE ,GONDOLA>>>
<DO-WALK ,P?IN>)
(<AND <VERB? LEAP-OFF EXIT>
<EQUAL? ,HERE ,GONDOLA>>
<DO-WALK ,P?OUT>)
(<VERB? LOOK-INSIDE>
<PERFORM-PRSA ,DIRIGIBLE>)
(<AND <VERB? THROW-FROM PUT-THROUGH>
<PRSI? ,GONDOLA ,GLOBAL-HERE>>
<COND (<OR <IN? ,DIRIGIBLE ,DIRIGIBLE-HANGAR>
<IN? ,DIRIGIBLE ,SMALLER-HANGAR>>
<MOVE ,PRSO <LOC ,DIRIGIBLE>>)
(T
<COND (<OR <PRSO? ,PERCH>
<ULTIMATELY-IN? ,PERCH ,PRSO>>
<SETG REMOVED-PERCH-LOC ,GROUND>)>
<REMOVE ,PRSO>)>
<TELL "You fling" T ,PRSO " out of the gondola." CR>)>>
<CONSTANT GONDOLA-CONTROLS-DESC
"The controls consist of merely two buttons: the left button
is marked \"Flatheadia\" and the right button is marked \"Fenshire.\"">
<OBJECT GONDOLA-CONTROLS
(LOC GONDOLA)
(DESC "controls")
(SYNONYM CONTROL CONTROLS)
(FLAGS NDESCBIT)
(ACTION GONDOLA-CONTROLS-F)>
<ROUTINE GONDOLA-CONTROLS-F ()
<COND (<VERB? EXAMINE>
<TELL ,GONDOLA-CONTROLS-DESC CR>)>>
<OBJECT LEFT-GONDOLA-BUTTON
(LOC GONDOLA)
(DESC "left button")
(SYNONYM BUTTON)
(ADJECTIVE LEFT)
(FLAGS NDESCBIT)
(ACTION GONDOLA-BUTTON-F)>
<OBJECT RIGHT-GONDOLA-BUTTON
(LOC GONDOLA)
(DESC "right button")
(SYNONYM BUTTON)
(ADJECTIVE RIGHT)
(FLAGS NDESCBIT)
(ACTION GONDOLA-BUTTON-F)>
<ROUTINE GONDOLA-BUTTON-F ()
<COND (<VERB? PUSH>
<COND (<OR ,TIME-STOPPED
<FSET? ,OUTER-GATE ,OPENBIT>
<G? ,DIRIGIBLE-COUNTER 0>
<AND <PRSO? ,LEFT-GONDOLA-BUTTON>
<IN? ,DIRIGIBLE ,DIRIGIBLE-HANGAR>>
<AND <PRSO? ,RIGHT-GONDOLA-BUTTON>
<IN? ,DIRIGIBLE ,SMALLER-HANGAR>>>
<TELL ,NOTHING-HAPPENS>)
(T
<QUEUE I-DIRIGIBLE -1>
<SETG DIRIGIBLE-COUNTER 1>
<COND (<AND ,BORDER-ON
<NOT <EQUAL? <LOWCORE INTID> ,DEC-20>>>
<CLEAR-BORDER>
<INIT-STATUS-LINE T>)>
<TELL
"The dirigible rises out of the hangar and sails ">
<COND (<IN? ,DIRIGIBLE ,DIRIGIBLE-HANGAR>
<SETG DESTINATION ,SMALLER-HANGAR>
<TELL "ea">)
(T
<SETG DESTINATION ,DIRIGIBLE-HANGAR>
<TELL "we">)>
<PUTP ,GONDOLA ,P?REGION "In the Air">
<PUT <GETP ,GONDOLA ,P?MAP-LOC> 0 <>>
<FSET ,DIRIGIBLE ,NDESCBIT>
<MOVE ,DIRIGIBLE ,GONDOLA>
<TELL "stward." CR>)>)>>
<ROUTINE GONDOLA-EXIT-F ("OPTIONAL" (RARG <>)) ;"called by NEXT-ROOM?"
<COND (<G? ,DIRIGIBLE-COUNTER 0>
<COND (.RARG
<RFALSE>)
(T
<JIGS-UP
"The experience is exhilarating, but you don't have much time to
enjoy it. Not as much time as you would've had if, for instance,
you'd worn a parachute.">)>)
(T
<RETURN <LOC ,DIRIGIBLE>>)>>
<GLOBAL DESTINATION <>>
<GLOBAL DIRIGIBLE-COUNTER 0>
<ROUTINE I-DIRIGIBLE ("AUX" TBL)
<COND (<EQUAL? ,HERE ,GONDOLA>
<RETURN-FROM-MAP>
<TELL " ">)>
<COND (<EQUAL? ,DIRIGIBLE-COUNTER 5>
<SET TBL <GETP ,GONDOLA ,P?MAP-LOC>>
<COND (<EQUAL? ,DESTINATION ,SMALLER-HANGAR>
<PUT .TBL 0 ,FENSHIRE-MAP-NUM>
<PUT .TBL 1 ,GONDOLA-AT-FENSHIRE-LOC>
<PUT .TBL 2 ,MAP-GEN-X-2>
<PUTP ,GONDOLA ,P?REGION "Fenshire">)
(T
<PUT .TBL 0 ,MAIN-MAP-NUM>
<PUT .TBL 1 ,GONDOLA-AT-FLATHEADIA-LOC>
<PUT .TBL 2 ,MAP-GEN-X-1>
<PUTP ,GONDOLA ,P?REGION "Flatheadia">)>
<MOVE ,DIRIGIBLE ,DESTINATION>
<FCLEAR ,DIRIGIBLE ,NDESCBIT>
<DEQUEUE I-DIRIGIBLE>
<SETG DIRIGIBLE-COUNTER 0>
<COND (<AND ,BORDER-ON
<EQUAL? ,HERE ,GONDOLA>
<NOT <EQUAL? <LOWCORE INTID> ,DEC-20>>>
<CLEAR-BORDER>
<SETG CURRENT-BORDER ,CASTLE-BORDER>
<SCREEN ,S-FULL>
<INIT-STATUS-LINE T>
<SCREEN ,S-TEXT>)>
<COND (<EQUAL? ,HERE ,GONDOLA>
<TELL
"The dirigible descends into a hangar and comes to a stop.">)
(<EQUAL? ,HERE ,DESTINATION>
<RETURN-FROM-MAP>
<TELL " A dirigible descends into the hangar.">)
(T
<RFALSE>)>)
(<NOT <EQUAL? ,HERE ,GONDOLA>>
<SETG DIRIGIBLE-COUNTER <+ ,DIRIGIBLE-COUNTER 1>>
<RFALSE>)
(T
<RETURN-FROM-MAP>
<TELL "The dirigible continues to glide along. ">
<COND (<EQUAL? ,DESTINATION ,DIRIGIBLE-HANGAR>
<TELL
<GET ,DIRIGIBLE-TRIP-DESCS <- 4 ,DIRIGIBLE-COUNTER>>>)
(T
<TELL
<GET ,DIRIGIBLE-TRIP-DESCS <- ,DIRIGIBLE-COUNTER 1>>>)>
<SETG DIRIGIBLE-COUNTER <+ ,DIRIGIBLE-COUNTER 1>>)>
<CRLF>>
<CONSTANT DIRIGIBLE-TRIP-DESCS
<PTABLE
"It is now passing over a thickly tangled woods, stretching for miles in every
direction."
"You are now above the Frigid River. Cliffs crowd the river on both sides. To
the south, you can just make out the spray of Aragain Falls."
"The dirigible rises even higher as it crosses the Flathead Mountains. Jagged,
snow-topped peaks slide by below."
"Below you are vast square bloits of dismal swampland: the endless marshes of
Fenshire.">>
;"the summer castle"
<ROOM SMALLER-HANGAR
(LOC ROOMS)
(REGION "Fenshire")
(DESC "Smaller Hangar")
(LDESC
"This hangar, though still large, is smaller than the one in Flatheadia.
The only exit is south.")
(SOUTH TO DESERTED-CASTLE)
(IN PER DIRIGIBLE-ENTER-F)
(OUT TO DESERTED-CASTLE)
(FLAGS RLANDBIT ONBIT)
(SYNONYM HANGAR)
(ADJECTIVE SMALLER)
(GLOBAL GONDOLA)
(VALUE 6)
(MAP-LOC <PTABLE FENSHIRE-MAP-NUM MAP-GEN-Y-3 MAP-GEN-X-2>)
(ACTION 0) ;"filled in by SLIDE-SHOW">
<ROUTINE SMALLER-HANGAR-F ("OPT" (RARG <>))
<COND (<AND <EQUAL? .RARG ,M-ENTER>
<NOT <FSET? ,SMALLER-HANGAR ,TOUCHBIT>>>
<QUEUE I-FOX -1>)>>
<ROOM DESERTED-CASTLE
(LOC ROOMS)
(REGION "Fenshire")
(DESC "Deserted Castle")
(LDESC
"The summer palace of the Kings of Quendor now lies in ruins, unoccupied
and uncared for, forgotten for many years. What's left of the castle can
be entered to the east, and a hangar lies to the north.")
(NORTH TO SMALLER-HANGAR)
(EAST TO RUINED-HALL)
(FLAGS RLANDBIT ONBIT OUTSIDEBIT)
(GLOBAL SMALLER-HANGAR)
(MAP-LOC <PTABLE FENSHIRE-MAP-NUM MAP-GEN-Y-4 MAP-GEN-X-2>)
(ACTION 0) ;"filled in by SLIDE-SHOW">
<ROUTINE DESERTED-CASTLE-F ("OPT" (RARG <>))
<COND (<AND <EQUAL? .RARG ,M-ENTER>
<NOT <FSET? ,DESERTED-CASTLE ,TOUCHBIT>>>
<QUEUE I-ROOSTER -1>)>>
<ROOM RUINED-HALL
(LOC ROOMS)
(REGION "Fenshire")
(DESC "Ruined Hall")
(NORTH TO MARSH IF ARCHWAY-OPEN ELSE "That archway has crumbled!")
(SOUTH TO HOTHOUSE)
(WEST TO DESERTED-CASTLE)
(EAST TO SECRET-ROOM IF SECRET-ROOM-REVEALED)
(UP SORRY "The stairs have crumbled beyond use.")
(FLAGS RLANDBIT ONBIT)
(GLOBAL STAIRS)
(MAP-LOC <PTABLE FENSHIRE-MAP-NUM MAP-GEN-Y-4 MAP-GEN-X-3>)
(ICON RUINED-HALL-ICON)
(ACTION RUINED-HALL-F)>
<ROUTINE RUINED-HALL-F ("OPT" (RARG <>))
<COND (<EQUAL? .RARG ,M-LOOK>
<TELL
"The entrance hall of the summer castle retains but a shadow of its former
elegance; the ceiling has partially collapsed, and myriad weeds grow amongst
the debris that covers the floor. A fireplace is choked with the rubble of its
collapsed chimney. Above the fireplace is a faded fresco, and next to that,
a tiny vase is mounted on the wall. Arched openings lead ">
<COND (,ARCHWAY-OPEN
<TELL "north, ">)>
<TELL "south and west. ">
<COND (<NOT ,ARCHWAY-OPEN>
<TELL "The archway to the north">
<COND (<NOT <IN? ,HEXAGONAL-BLOCK ,LOCAL-GLOBALS>>
<SETG ARCHWAY-OPEN T>
<TELL
", which had earlier crumbled, seems restored to its
former condition: decayed but passable! ">)
(T
<TELL " has crumbled to rubble. ">)>)>
<COND (,SECRET-ROOM-REVEALED
<TELL "In addition, a dusty passage leads east. ">)>
<TELL
"A stairway once led upwards, but there's little left of it.">)
(<AND <EQUAL? .RARG ,M-END>
<NOT ,ARCHWAY-OPEN>
<NOT <IN? ,HEXAGONAL-BLOCK ,LOCAL-GLOBALS>>>
<SETG ARCHWAY-OPEN T>)>>
<OBJECT FIREPLACE
(LOC RUINED-HALL)
(DESC "fireplace")
(SYNONYM FIREPLACE)
(ADJECTIVE CHOKED)
(FLAGS NDESCBIT)
(ACTION FIREPLACE-F)>
<ROUTINE FIREPLACE-F ()
<COND (<VERB? ENTER>
<DO-FIRST "clear out all the rubble">)
(<VERB? CLEAN>
<TELL
"Not a chance (unless you're actually a team of thirty people,
in disguise)." CR>)
(<VERB? LOOK-INSIDE>
<TELL "Rubble. Lots of rubble." CR>)>>
<OBJECT FRESCO
(LOC RUINED-HALL)
(DESC "fresco")
(SYNONYM FRESCO)
(ADJECTIVE FADED)
(FLAGS NDESCBIT)
(ACTION FRESCO-F)>
<ROUTINE FRESCO-F ()
<COND (<VERB? EXAMINE>
<TELL
"The fresco depicts the death of Duncanthrax. His spirit is ascending to
heaven on a tremendous ladder, surrounded by a host of angels." CR>)>>
<OBJECT VASE
(LOC RUINED-HALL)
(DESC "vase")
(SYNONYM VASE)
(ADJECTIVE SMALL)
(FLAGS NDESCBIT CONTBIT SEARCHBIT OPENBIT TRYTAKEBIT)
(ACTION VASE-F)>
<ROUTINE VASE-F ()
<COND (<VERB? CLOSE OPEN>
<TELL ,HUH>)
(<AND <VERB? TAKE>
<PRSO? ,VASE>>
<TELL "The vase is affixed to the wall." CR>)
(<AND <VERB? PUT>
<PRSO? ,FLOWER>
<NOT ,SECRET-ROOM-REVEALED>>
<SETG SECRET-ROOM-REVEALED T>
<SETG COMPASS-CHANGED T>
<MOVE ,FLOWER ,VASE>
<TELL
"The flower seems to grow fuller, its colors richer. You hear a noise,
and turn to see a passageway opening to the east!" CR>
<INC-SCORE 16>)>>
<GLOBAL SECRET-ROOM-REVEALED <>>
<ROOM SECRET-ROOM
(LOC ROOMS)
(REGION "Fenshire")
(DESC "Secret Room")
(LDESC
"You are the first person to breathe the air of this room in uncounted years.
The only exit is west.")
(WEST TO RUINED-HALL)
(OUT TO RUINED-HALL)
(FLAGS RLANDBIT)
(SYNONYM ROOM)
(ADJECTIVE SECRET)
(MAP-LOC <PTABLE FENSHIRE-MAP-NUM MAP-GEN-Y-4 MAP-GEN-X-4>)
(ICON SECRET-ROOM-ICON)>
;<BEGIN-SEGMENT 0>
<OBJECT LADDER
(LOC SECRET-ROOM)
(DESC "ladder")
(FDESC
"This room was probably intended as a hiding place for the royal family
in the event of a revolution, and may have once been well-stocked with
supplies. Now, however, the only item here is a small stepladder.")
;(LDESC "A small stepladder is standing here.")
(SYNONYM LADDER STEPLADDER)
(ADJECTIVE SMALL)
(CAPACITY 20)
(SIZE 20)
(FLAGS TAKEBIT VEHBIT CONTBIT SEARCHBIT SURFACEBIT)
(ACTION LADDER-F)>
<BEGIN-SEGMENT 0>
<ROUTINE LADDER-F ("OPTIONAL" (VARG <>))
<COND (.VARG
<RFALSE>)
(<VERB? OPEN CLOSE EXAMINE>
<TELL
"The stepladder seems to be stuck in the open position." CR>)
(<AND <VERB? PUT-UNDER>
<PRSO? ,MEGABOZ-TRAP-DOOR>>
<TELL "The ladder is now standing beneath the trap door." CR>)
(<VERB? STAND-ON CLIMB CLIMB-ON>
<PERFORM ,V?ENTER ,LADDER>
<RTRUE>)>>
<END-SEGMENT>
<BEGIN-SEGMENT FENSHIRE>
<GLOBAL ARCHWAY-OPEN T>
<GLOBAL STEPPING-STONES-VISIBLE <>>
<ROOM MARSH
(LOC ROOMS)
(REGION "Fenshire")
(DESC "Marsh")
(SOUTH TO RUINED-HALL IF ARCHWAY-OPEN ELSE
"The archway has collapsed; that way is now impassable.")
(NORTH PER STEPPING-STONES-F)
(FLAGS RLANDBIT ONBIT OUTSIDEBIT)
(GLOBAL SWAMP ARCH)
(ICON MARSH-ICON)
(MAP-LOC <PTABLE FENSHIRE-MAP-NUM MAP-GEN-Y-3 MAP-GEN-X-3>)
(ACTION MARSH-F)>
<ROUTINE MARSH-F ("OPT" (RARG <>))
<COND (<EQUAL? .RARG ,M-LOOK>
<TELL
"The swamps of Fenshire have encroached on this once-beautiful garden. The
garden wall is now just a pile of mossy stones, and the garden terraces are
ankle-deep with squishy mud. A c">
<COND (,ARCHWAY-OPEN
<TELL "rumbling archway leads">)
(T
<TELL "ollapsed archway blocks the exit to the">)>
<TELL " south. To the north">
<COND (,STEPPING-STONES-VISIBLE
<TELL
", stepping stones lead across a field of quicksand.">)
(T
<TELL " is a wide expanse of fetid quicksand.">)>)
(<EQUAL? .RARG ,M-END>
<COND (<AND <IN? ,JESTER ,HERE>
<VISIBLE? ,ROOSTER>
<FSET? ,ROOSTER ,ANIMATEDBIT>
<VISIBLE? ,FOX>
<FSET? ,FOX ,ANIMATEDBIT>
<VISIBLE? ,WORM>
<FSET? ,WORM ,ANIMATEDBIT>>
<MOVE ,JESTER ,NICE-LUNCH-SPOT>
<MOVE ,COOKPOT ,NICE-LUNCH-SPOT>
<MOVE ,COOKFIRE ,NICE-LUNCH-SPOT>
<SETG ARCHWAY-OPEN <>>
<SETG STEPPING-STONES-VISIBLE T>
<SETG COMPASS-CHANGED T>
<FSET ,RUINED-HALL ,REDESCBIT>
<RETURN-FROM-MAP>
<TELL
" The jester looks delighted. \"Sacre bleu! At last! All zee ingredients for
Borphbelly Stew! But zee ambience here eesn't quite right.\" He picks up his
cookpot AND his cookfire, and dashes across the quicksand to the north, using
a series of stepping stones which you'd swear weren't there a minute ago. This
flurry of activity seems to have been too much for the archway behind you; it
crumbles into a pile of rubble, blocking the exit to the south.|
The jester, out of sight amongst the reeds to the north, shouts, \"Yoo hoo!
I've found a lovely spot for lunch! Bring over zee ingredients!\"" CR>)
(<AND <NOT <IN? ,JESTER ,HERE>>
<IN? ,HEXAGONAL-BLOCK ,LOCAL-GLOBALS>
,ARCHWAY-OPEN>
<DEQUEUE I-JESTER>
<THIS-IS-IT ,JESTER>
<MOVE ,JESTER ,HERE>
<MOVE ,COOKPOT ,HERE>
<MOVE ,COOKFIRE ,HERE>
<TELL
" A string of eloquent cursing in a foreign tongue assaults you, and you spy
the jester " ,COOK-DESC " He is stirring a cookpot which sits upon a roaring
cookfire. \"Impossible!\" he shrieks, switching to a more familiar language.
\"Eet is impossible to cook a Borphbelly Stew weethout zee proper ingredients!
Impossible, impossible, impossible!\"" CR>)>)>>
<ROUTINE STEPPING-STONES-F ("OPTIONAL" (RARG <>)) ;"called by NEXT-ROOM?"
<COND (<NOT ,STEPPING-STONES-VISIBLE>
<COND (<NOT .RARG>
<TELL "You'd be sucked into the quicksand!" CR>)>
<RFALSE>)
(<G? <CCOUNT ,PROTAGONIST> 1>
<COND (<NOT .RARG>
<TELL
"It's difficult to balance on the stepping stones with all you're carrying.
You try, but after almost falling into the quicksand, you give up." CR>)>
<RFALSE>)
(<EQUAL? ,HERE ,MARSH>
,NICE-LUNCH-SPOT)
(T
,MARSH)>>
<ROOM NICE-LUNCH-SPOT
(LOC ROOMS)
(REGION "Fenshire")
(DESC "Nice Lunch Spot")
(LDESC
"Maybe the jester likes the ambience here, but to you it just looks like
a slightly drier spot amidst a reedy marsh. The reeds are impassably thick
in every direction, except to the south where a series of stepping stones
offers a way to cross a malodorous patch of quicksand.")
(SOUTH TO MARSH)
(FLAGS RLANDBIT ONBIT OUTSIDEBIT)
(MAP-LOC <PTABLE FENSHIRE-MAP-NUM MAP-GEN-Y-2 MAP-GEN-X-3>)
(ACTION NICE-LUNCH-SPOT-F)>
<ROUTINE NICE-LUNCH-SPOT-F ("OPT" (RARG <>))
<COND (<AND <EQUAL? .RARG ,M-END>
<VISIBLE? ,ROOSTER>
<FSET? ,ROOSTER ,ANIMATEDBIT>
<VISIBLE? ,FOX>
<FSET? ,FOX ,ANIMATEDBIT>
<VISIBLE? ,WORM>
<FSET? ,WORM ,ANIMATEDBIT>>
<MOVE ,HEXAGONAL-BLOCK ,SMALLER-HANGAR>
<FSET ,SMALLER-HANGAR ,REDESCBIT>
<FSET ,RUINED-HALL ,REDESCBIT>
<REMOVE ,WORM>
<REMOVE ,FOX>
<REMOVE ,ROOSTER>
<REMOVE ,COOKPOT>
<REMOVE ,COOKFIRE>
<DEQUEUE I-FOX>
<DEQUEUE I-ROOSTER>
<RETURN-FROM-MAP>
<TELL
" The jester says, \"Excellent! Zee ingredients for Borphbelly Stew and a "
D ,HERE " to enjoy eet!\" He tosses the animals into the cookpot, and begins
dishing out two generous portions of stew. Before you can eat it, a tremendous
weariness comes over you. The last thing you hear is the jester saying,
\"Waiter? Check, please!\"|
|
You awake from a deep sleep and struggle to your feet. As your head clears
you realize that you're not where you were when you fell asleep" ,ELLIPSIS>
<GOTO ,SMALLER-HANGAR>
<INC-SCORE 9>)>>
<BEGIN-SEGMENT 0>
<OBJECT HEXAGONAL-BLOCK
(LOC LOCAL-GLOBALS)
(DESC "hexagonal block")
(SYNONYM BLOCK ROCK)
(ADJECTIVE SMALL ELONGATED HEXAGONAL HEXAGON-SHAPED)
(FLAGS TAKEBIT)
(SIZE 3)
(ACTION HEXAGONAL-BLOCK-F)>
<ROUTINE HEXAGONAL-BLOCK-F ()
<COND (<VERB? EXAMINE>
<TELL
"It's just a small rock which has been neatly carved into the shape of an
elongated hexagon." CR>)>>
<END-SEGMENT>
<BEGIN-SEGMENT FENSHIRE>
<ROOM HOTHOUSE
(LOC ROOMS)
(REGION "Fenshire")
(DESC "Hothouse")
(LDESC
"This enclosed arboretum must have been a breathtaking room at one time. Now,
much of the glass is broken and the foliage has run wild, nearly obscuring the
exit to the north. Despite the broken glass, it's stiflingly hot in here.")
(NORTH TO RUINED-HALL)
(OUT TO RUINED-HALL)
(FLAGS RLANDBIT ONBIT)
(SYNONYM HOTHOUSE GREENHOUSE ARBORETUM)
(GLOBAL WINDOW)
(MAP-LOC <PTABLE FENSHIRE-MAP-NUM MAP-GEN-Y-5 MAP-GEN-X-3>)
(ICON HOTHOUSE-ICON)
(ACTION HOTHOUSE-F)>
<ROUTINE HOTHOUSE-F ("OPT" (RARG <>))
<COND (<AND <EQUAL? .RARG ,M-ENTER>
<FSET? ,FAN ,TRYTAKEBIT>>
<QUEUE I-SN 1>)>>
<CONSTANT SN-PICSET-TBL
<TABLE BOX-1
BOX-2
BOX-3
BOX-4
BOX-5
BOX-6
BOX-7
BOX-8
BOX-9
DIM-BOX-1
DIM-BOX-2
DIM-BOX-3
DIM-BOX-4
DIM-BOX-5
DIM-BOX-6
DIM-BOX-7
DIM-BOX-8
DIM-BOX-9
PILE-OF-0
PILE-OF-1
PILE-OF-2
PILE-OF-3
PILE-OF-4
PILE-OF-5
PILE-OF-6
PILE-OF-7
PILE-OF-8
PILE-OF-9
R-FLOWERS-0
R-FLOWERS-1
R-FLOWERS-2
R-FLOWERS-3
R-FLOWERS-4
R-FLOWERS-5
R-FLOWERS-6
R-FLOWERS-7
R-FLOWERS-8
R-FLOWERS-9
L-FLOWERS-0
L-FLOWERS-1
L-FLOWERS-2
L-FLOWERS-3
L-FLOWERS-4
0>>
<ROUTINE I-SN ()
<COND (<NOT <EQUAL? ,HERE ,HOTHOUSE>>
<RFALSE>)
(,ALLIGATOR
<QUEUE I-SN 1>
<RFALSE>)>
<RETURN-FROM-MAP>
<UPDATE-STATUS-LINE>
<TELL
" The jester steps out from behind some tropical vines, fanning himself with
a dainty paper fan. \"Hot enough for you? I know just the thing to take your
mind off this heat! It's one of my favorite games, Snarfem.|
\"The rules: I'll produce four piles of pebbles. Each of us, starting with
you, will remove as many pebbles as we feel like -- as long as they come from
the same pile. You must take at least one pebble each turn. The player who
takes the last pebble wins. It's that simple!\"" CR CR>
<HIT-ANY-KEY "Snarfem">
<SPLIT-BY-PICTURE ,SN-SPLIT T>
<ADJUST-TEXT-WINDOW ,SN-BOTTOM>
<REPEAT ()
;"All four piles should contain different numbers of pebbles,
such as 1-4-5-9 rather than 1-4-4-9. Also, the opening
position can't be a 'safe' position, or you can't win."
<PUT ,PILE-TABLE 1 <RANDOM 9>>
<REPEAT ()
<PUT ,PILE-TABLE 2 <RANDOM 9>>
<COND (<EQUAL? <GET ,PILE-TABLE 2>
<GET ,PILE-TABLE 1>>
<PUT ,PILE-TABLE 2 <+ <GET ,PILE-TABLE 2> 1>>
<COND (<EQUAL? <GET ,PILE-TABLE 2> 10>
<PUT ,PILE-TABLE 2 1>)>)
(T
<RETURN>)>>
<REPEAT ()
<PUT ,PILE-TABLE 3 <RANDOM 9>>
<COND (<EQUAL? <GET ,PILE-TABLE 3>
<GET ,PILE-TABLE 2>
<GET ,PILE-TABLE 1>>
<PUT ,PILE-TABLE 3 <+ <GET ,PILE-TABLE 3> 1>>
<COND (<EQUAL? <GET ,PILE-TABLE 3> 10>
<PUT ,PILE-TABLE 3 1>)>)
(T
<RETURN>)>>
<REPEAT ()
<PUT ,PILE-TABLE 4 <RANDOM 9>>
<COND (<EQUAL? <GET ,PILE-TABLE 4>
<GET ,PILE-TABLE 3>
<GET ,PILE-TABLE 2>
<GET ,PILE-TABLE 1>>
<PUT ,PILE-TABLE 4 <+ <GET ,PILE-TABLE 4> 1>>
<COND (<EQUAL? <GET ,PILE-TABLE 4> 10>
<PUT ,PILE-TABLE 4 1>)>)
(T
<RETURN>)>>
<COND (<NOT <SAFE-NUMBER? ,PILE-TABLE>>
<RETURN>)>>
<SETUP-SN>
<CRLF>
<SNARFEM>
<INIT-SL-WITH-SPLIT ,TEXT-WINDOW-PIC-LOC>
<COND (<FSET? ,FAN ,TRYTAKEBIT>
<TELL
"The jester claps you on the back and says, \"He who wins and
runs away, returns to let you win another day!\"">
<J-EXITS>)
(T
<MOVE ,FAN ,HERE>
<REMOVE-J>
<TELL
"\"You're undoubtedly not a flash in the pan; you've turned me into your
biggest fan!\" The jester is suddenly wearing a cap and sweater bearing your
initials, and waving a pennant with your name on it. Still chanting a cheer,
he vanishes, and you notice a delicate paper fan lying at your feet." CR>
<INC-SCORE 12>)>>
<ROUTINE SETUP-SN ()
<SCREEN ,S-FULL>
<DISPLAY ,SN-BORDER 1 1>
<SCREEN ,S-WINDOW>
<PICSET ,SN-PICSET-TBL>
<DRAW-PILE 1>
<DRAW-PILE 2>
<DRAW-PILE 3>
<DRAW-PILE 4>
<DRAW-FLOWERS>>
<ROUTINE DRAW-SN-BOXES ("OPTIONAL" (PILE <>) "AUX" X Y SPACE (CNT 1) TBL)
<SCREEN ,S-WINDOW>
<PICINF-PLUS-ONE ,BOX-1-LOC>
<SET Y <GET ,PICINF-TBL 0>>
<SET X <GET ,PICINF-TBL 1>>
<PICINF ,SN-BOX-SPACE ,PICINF-TBL>
<SET SPACE <GET ,PICINF-TBL 1>>
<REPEAT ()
<SET TBL <COND (<NOT .PILE>
<COND (<G? .CNT 4> ,DIM-BOX-TBL)
(<EQUAL? <GET ,PILE-TABLE .CNT> 0>
,DIM-BOX-TBL)
(T ,BOX-TBL)>)
(<G? .CNT <GET ,PILE-TABLE .PILE>> ,DIM-BOX-TBL)
(T ,BOX-TBL)>>
<DISPLAY <GET .TBL .CNT> .Y .X>
<COND (<EQUAL? .CNT 9>
<RETURN>)
(T
<SET X <+ .X .SPACE>>
<SET CNT <+ .CNT 1>>)>>
<SCREEN ,S-TEXT>>
<CONSTANT BOX-TBL
<PTABLE 0 BOX-1 BOX-2 BOX-3 BOX-4 BOX-5 BOX-6 BOX-7 BOX-8 BOX-9>>
<CONSTANT DIM-BOX-TBL
<PTABLE 0 DIM-BOX-1 DIM-BOX-2 DIM-BOX-3 DIM-BOX-4 DIM-BOX-5
DIM-BOX-6 DIM-BOX-7 DIM-BOX-8 DIM-BOX-9>>
<CONSTANT PILE-TABLE
<TABLE 0 0 0 0 0> ;"first element not used">
<ROUTINE DRAW-PILE (PILE "AUX" NUM PIC)
<SCREEN ,S-WINDOW>
<SET NUM <GET ,PILE-TABLE .PILE>>
<PICINF-PLUS-ONE <COND (<EQUAL? .PILE 1> ,PILE-1-PIC-LOC)
(<EQUAL? .PILE 2> ,PILE-2-PIC-LOC)
(<EQUAL? .PILE 3> ,PILE-3-PIC-LOC)
(T ,PILE-4-PIC-LOC)>>
<SET PIC <COND (<EQUAL? .NUM 0> ,PILE-OF-0)
(<EQUAL? .NUM 1> ,PILE-OF-1)
(<EQUAL? .NUM 2> ,PILE-OF-2)
(<EQUAL? .NUM 3> ,PILE-OF-3)
(<EQUAL? .NUM 4> ,PILE-OF-4)
(<EQUAL? .NUM 5> ,PILE-OF-5)
(<EQUAL? .NUM 6> ,PILE-OF-6)
(<EQUAL? .NUM 7> ,PILE-OF-7)
(<EQUAL? .NUM 8> ,PILE-OF-8)
(T ,PILE-OF-9)>>
<DISPLAY .PIC <GET ,PICINF-TBL 0> <GET ,PICINF-TBL 1>>
<SCREEN ,S-TEXT>>
<ROUTINE DRAW-FLOWERS ("AUX" (PILE 1) (NUM 1) LEFT RIGHT)
<COND (<SAFE-NUMBER? ,PILE-TABLE>
<SET LEFT ,L-FLOWERS-0>
<SET RIGHT ,R-FLOWERS-0>)
(T
<REPEAT ()
<COPYT <REST ,PILE-TABLE 2> <REST ,TEMP-TABLE 2> 8>
<COND (<EQUAL? <GET ,PILE-TABLE .PILE> 0>
<SET PILE <+ .PILE 1>>)
(<EQUAL? <+ <GET ,PILE-TABLE 1> <GET ,PILE-TABLE 2>
<GET ,PILE-TABLE 3> <GET ,PILE-TABLE 4>>
<GET ,PILE-TABLE .PILE>>
;"case where three piles are empty"
<SET NUM <GET ,PILE-TABLE .PILE>>
<RETURN>)
(T
<PUT ,TEMP-TABLE .PILE
<- <GET ,TEMP-TABLE .PILE> .NUM>>
<COND (<SAFE-NUMBER? ,TEMP-TABLE>
<RETURN>)
(<EQUAL? <- <GET ,PILE-TABLE .PILE> .NUM> 0>
<SET NUM 1>
<SET PILE <+ .PILE 1>>)
(T
<SET NUM <+ .NUM 1>>)>)>>
<SET LEFT <COND (<EQUAL? .PILE 1> ,L-FLOWERS-1)
(<EQUAL? .PILE 2> ,L-FLOWERS-2)
(<EQUAL? .PILE 3> ,L-FLOWERS-3)
(<EQUAL? .PILE 4> ,L-FLOWERS-4)>>
<SET RIGHT <COND (<EQUAL? .NUM 1> ,R-FLOWERS-1)
(<EQUAL? .NUM 2> ,R-FLOWERS-2)
(<EQUAL? .NUM 3> ,R-FLOWERS-3)
(<EQUAL? .NUM 4> ,R-FLOWERS-4)
(<EQUAL? .NUM 5> ,R-FLOWERS-5)
(<EQUAL? .NUM 6> ,R-FLOWERS-6)
(<EQUAL? .NUM 7> ,R-FLOWERS-7)
(<EQUAL? .NUM 8> ,R-FLOWERS-8)
(<EQUAL? .NUM 9> ,R-FLOWERS-9)>>)>
<SCREEN ,S-WINDOW>
<PICINF-PLUS-ONE ,L-FLOWERS-PIC-LOC>
<DISPLAY .LEFT <GET ,PICINF-TBL 0> <GET ,PICINF-TBL 1>>
<PICINF-PLUS-ONE ,R-FLOWERS-PIC-LOC>
<DISPLAY .RIGHT <GET ,PICINF-TBL 0> <GET ,PICINF-TBL 1>>
<SCREEN ,S-TEXT>>
<ROUTINE SNARFEM ("AUX" X NUM (PILE <>) (STOP-SN <>))
<REPEAT ()
<COND (.STOP-SN
<RETURN>)
(.PILE
<CLEAR ,S-TEXT>
<COND (,ACTIVE-MOUSE
<DRAW-SN-BOXES .PILE>)>
<TELL "Type a number ">
<COND (,ACTIVE-MOUSE
<TELL
"(or click on one of the numbered boxes with your mouse) ">)>
<TELL
"to indicate how many pebbles you want to remove from Pile #" N .PILE ".">
<REPEAT ()
<SET X <INPUT X>>
<MOUSE-INPUT?>
<COND (<EQUAL? .X ,CLICK1 ,CLICK2>
<SET X <SN-CLICK T>>)
(<AND <G? .X 144>
<L? .X 155>>
;"numeric keypad, 0=145, 1=146, etc."
<SET .X <- .X 145>>)
(T
;"normal # keys, 1 = 49, 2 = 50, etc."
<SET X <- .X 48>>)>
<COND (<OR <G? .X 9>
<L? .X 1>>
<CLEAR ,S-TEXT>
<TELL ,TYPE-A-NUMBER "9">
<COND (,ACTIVE-MOUSE
<TELL
" (or click on one of the numbered boxes with your mouse)">)>
<TELL ".">)
(<G? .X .NUM>
<CLEAR ,S-TEXT>
<TELL "There ">
<COND (<EQUAL? .NUM 1>
<TELL "is">)
(T
<TELL "are">)>
<TELL " only " N .NUM " pebble">
<COND (<NOT <EQUAL? .NUM 1>>
<TELL "s">)>
<TELL " in Pile #" N .PILE ".">)
(T
<CLEAR ,S-TEXT>
<TELL "You remove " N .X " pebble">
<COND (<NOT <EQUAL? .X 1>>
<TELL "s">)>
<TELL " from Pile #" N .PILE ".">
<COUNTDOWN-PILE .PILE .NUM .X>
<DRAW-FLOWERS>
<SET PILE <>>
<COND (<END-SN?>
<SET STOP-SN T>
<FCLEAR ,FAN ,TRYTAKEBIT>
<CRLF> <CRLF>
<HIT-ANY-KEY>
<RETURN>)
(T
<TELL CR " ">)>
<J-MOVE>
<COND (<END-SN?>
<SET STOP-SN T>
<CRLF> <CRLF>
<HIT-ANY-KEY>)
(T
<TELL CR " ">)>
<RETURN>)>>)
(T
<COND (,ACTIVE-MOUSE
<DRAW-SN-BOXES>)>
<TELL "Type a number ">
<COND (,ACTIVE-MOUSE
<TELL
"(or click on one of the numbered boxes with your mouse) ">)>
<TELL
"to select the pile from which you'd like to remove a pebble or pebbles.">
<REPEAT ()
<SET X <INPUT X>>
<MOUSE-INPUT?>
<COND (<EQUAL? .X ,CLICK1 ,CLICK2>
<SET X <SN-CLICK>>)
(<AND <G? .X 144>
<L? .X 155>>
;"numeric keypad, 0=145, 1=146, etc."
<SET .X <- .X 145>>)
(T
;"normal # keys, 1 = 49, 2 = 50, etc."
<SET X <- .X 48>>)>
<COND (<OR <G? .X 4>
<L? .X 1>>
<CLEAR ,S-TEXT>
<TELL ,TYPE-A-NUMBER "4">
<COND (,ACTIVE-MOUSE
<TELL
" (or click on one of the numbered boxes with your mouse)">)>
<TELL ".">)
(<EQUAL? <GET ,PILE-TABLE .X> 0>
<CLEAR ,S-TEXT>
<TELL
"There are no longer any pebbles in Pile #" N .X ".">)
(T
<SET PILE .X>
<SET NUM <GET ,PILE-TABLE .PILE>>
<RETURN>)>>)>>>
<ROUTINE SN-CLICK ("OPT" (ALREADY-PICKED-PILE <>)
"AUX" TL-X TL-Y BR-X BR-Y BOX-WIDTH BOX-HEIGHT (CNT 1) (HIT-SPOT <>))
<PICINF ,BOX-1 ,PICINF-TBL>
<SET BOX-WIDTH <GET ,PICINF-TBL 1>>
<SET BOX-HEIGHT <GET ,PICINF-TBL 0>>
<PICINF-PLUS-ONE ,BOX-1-LOC>
<SET TL-X <GET ,PICINF-TBL 1>>
<SET TL-Y <GET ,PICINF-TBL 0>>
<SET BR-Y <+ .TL-Y .BOX-HEIGHT>>
<PICINF ,SN-BOX-SPACE ,PICINF-TBL>
<REPEAT ()
<SET BR-X <+ .TL-X .BOX-WIDTH>>
<COND (<WITHIN? .TL-X .TL-Y .BR-X .BR-Y>
<SET HIT-SPOT T>
<RETURN>)
(<EQUAL? .CNT 9>
<RETURN>)
(T
<SET CNT <+ .CNT 1>>
<SET TL-X <+ .TL-X <GET ,PICINF-TBL 1>>>)>>
<COND (.HIT-SPOT
<RETURN .CNT>)
(.ALREADY-PICKED-PILE
<RFALSE>)>
<PICINF-PLUS-ONE ,PILE-OF-1>
<SET BOX-WIDTH <GET ,PICINF-TBL 1>>
<SET BOX-HEIGHT <GET ,PICINF-TBL 0>>
<PICINF-PLUS-ONE ,PILE-1-PIC-LOC>
<SET TL-X <GET ,PICINF-TBL 1>>
<SET TL-Y <GET ,PICINF-TBL 0>>
<SET BR-X <+ .TL-X .BOX-WIDTH>>
<SET BR-Y <+ .TL-Y .BOX-HEIGHT>>
<COND (<WITHIN? .TL-X .TL-Y .BR-X .BR-Y>
<SET CNT 1>
<SET HIT-SPOT T>)>
<COND (<NOT .HIT-SPOT>
<PICINF-PLUS-ONE ,PILE-2-PIC-LOC>
<SET TL-X <GET ,PICINF-TBL 1>>
<SET TL-Y <GET ,PICINF-TBL 0>>