-
Notifications
You must be signed in to change notification settings - Fork 16
/
cleveland.zap
651 lines (606 loc) · 16.4 KB
/
cleveland.zap
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
.FUNCT CLEVELAND-OBJECT-F
EQUAL? PRSA,V?BOARD,V?WALK-TO,V?ENTER \?ELS5
EQUAL? HERE,CLEVELAND \?ELS10
PRINT LOOK-AROUND
RTRUE
?ELS10: EQUAL? HERE,LAWN \FALSE
CALL DO-WALK,P?NORTH
RSTACK
?ELS5: EQUAL? PRSA,V?DISEMBARK,V?EXIT,V?LEAVE \?ELS14
EQUAL? HERE,CLEVELAND \?ELS19
CALL V-WALK-AROUND
RSTACK
?ELS19: PRINT LOOK-AROUND
RTRUE
?ELS14: EQUAL? PRSA,V?EXAMINE \FALSE
CALL V-LOOK
RSTACK
.FUNCT LAWN-F,RARG
EQUAL? RARG,M-LOOK \?ELS5
PRINTI "Yes, ""Lawn"" is the kindest word for this muddy patch of limp crabgrass. "
FSET? RAKE,TRYTAKEBIT \?CND6
FSET? SACK,TRYTAKEBIT \?CND6
PRINTI "Miraculously, someone actually seems to "
ZERO? NAUGHTY-LEVEL \?ELS13
PRINTI "care"
JUMP ?CND11
?ELS13: PRINTI "give a "
EQUAL? NAUGHTY-LEVEL,1 \?ELS18
PRINTI "damn"
JUMP ?CND11
?ELS18: PRINTI "shit"
?CND11: PRINTI " about this lawn, because there are signs of recent activity:"
CALL APRINT,RAKE
PRINTI " and a large "
PRINTD SACK
PRINTI ". "
?CND6: PRINTI "A fence rings the lawn; through an opening to the north you can see Cleveland."
RTRUE
?ELS5: EQUAL? RARG,M-END \FALSE
FCLEAR RAKE,TRYTAKEBIT
FCLEAR SACK,TRYTAKEBIT
FCLEAR RAKE,NDESCBIT
FCLEAR SACK,NDESCBIT
RTRUE
.FUNCT FENCE-F
EQUAL? PRSA,V?CLIMB-UP,V?CLIMB,V?LOOK-OVER /?THN6
EQUAL? PRSA,V?CLIMB-OVER \?ELS5
?THN6: PRINTR "It's too tall."
?ELS5: EQUAL? PRSA,V?PUT-AGAINST \FALSE
EQUAL? PRSO,TRELLIS \FALSE
CALL PERFORM-PRSA,TRELLIS,HOUSE
RTRUE
.FUNCT LAWN-OBJECT-F
EQUAL? PRSA,V?RAKE \?ELS5
PRINTR "It's already raked."
?ELS5: EQUAL? PRSA,V?CLIMB,V?CLIMB-ON,V?CLIMB-UP /?THN8
EQUAL? PRSA,V?LOOK-UNDER,V?BOARD \?ELS7
?THN8: CALL PERFORM-PRSA,GROUND,PRSI
RTRUE
?ELS7: EQUAL? PRSA,V?PUT-ON \?ELS11
EQUAL? PRSI,PSEUDO-OBJECT \?ELS11
CALL PERFORM,V?DROP,PRSO
RTRUE
?ELS11: EQUAL? PRSA,V?SEARCH \?ELS15
PRINT NOTHING-NEW
RTRUE
?ELS15: EQUAL? PRSA,V?EXAMINE \FALSE
CALL V-LOOK
RSTACK
.FUNCT LEAVES-F
EQUAL? PRSA,V?ENTER \?ELS5
CALL ULTIMATELY-IN?,LEAVES
ZERO? STACK /?ELS10
PRINT HOLDING-IT
RTRUE
?ELS10: CALL WEE
RSTACK
?ELS5: EQUAL? PRSA,V?TAKE \?ELS14
CALL PRE-TOUCH
ZERO? STACK \TRUE
PRINT YOU-CANT
PRINTR "hold so many leaves in your arms!"
?ELS14: EQUAL? PRSA,V?RAKE \?ELS19
PRINTI "They're already in a "
IN? LEAVES,SACK \?ELS22
PRINTD SACK
JUMP ?CND20
?ELS22: PRINTI "pile"
?CND20: PRINT PERIOD-CR
RTRUE
?ELS19: EQUAL? PRSA,V?COUNT \?ELS26
PRINTR "69,105."
?ELS26: EQUAL? PRSA,V?LOOK-INSIDE,V?SEARCH \?ELS28
PRINTR "You find ... more leaves!"
?ELS28: EQUAL? PRSA,V?POUR \?ELS30
EQUAL? PRSO,LEAVES \?ELS30
CALL ULTIMATELY-IN?,LEAVES
ZERO? STACK /?ELS37
EQUAL? PRSI,WINDOW \?ELS42
CALL PERFORM,V?PUT-THROUGH,LEAVES,WINDOW
RTRUE
?ELS42: CALL PERFORM,V?PUT,LEAVES,PRSI
RTRUE
?ELS37: PRINT YNH
CALL TRPRINT,LEAVES
RSTACK
?ELS30: EQUAL? PRSA,V?PUT,V?PUSH \?ELS52
EQUAL? PRSI,SACK /?THN49
?ELS52: EQUAL? PRSA,V?FILL \?ELS48
EQUAL? PRSO,SACK \?ELS48
?THN49: CALL UNTOUCHABLE?,LEAVES
ZERO? STACK /?ELS57
CALL CANT-REACH,LEAVES
RTRUE
?ELS57: IN? LEAVES,SACK /FALSE
?CND55: FCLEAR LEAVES,TRYTAKEBIT
SET 'LEAVES-PLACED,FALSE-VALUE
FSET TREE-HOLE,OPENBIT
FCLEAR LEAVES,NDESCBIT
MOVE LEAVES,SACK
PRINTR "Done."
?ELS48: EQUAL? PRSA,V?MOVE \?ELS61
ZERO? LEAVES-PLACED /?ELS61
FCLEAR LEAVES,TRYTAKEBIT
SET 'LEAVES-PLACED,FALSE-VALUE
FSET TREE-HOLE,OPENBIT
FCLEAR LEAVES,NDESCBIT
MOVE LEAVES,HERE
PRINTR "You uncover the trellis."
?ELS61: EQUAL? PRSA,V?LOOK-UNDER \?ELS65
ZERO? LEAVES-PLACED /?ELS65
CALL TRELLIS-VISIBLE
CRLF
RTRUE
?ELS65: EQUAL? PRSA,V?EMPTY \?ELS69
EQUAL? PRSO,LEAVES \?ELS69
IN? LEAVES,SACK \?ELS69
CALL PERFORM,V?DROP,LEAVES
RTRUE
?ELS69: EQUAL? PRSA,V?BOARD,V?CLIMB-ON,V?STAND-ON \FALSE
ZERO? LEAVES-PLACED /FALSE
CALL PERFORM,V?STAND-ON,TRELLIS
RTRUE
.FUNCT GARDEN-F,RARG
EQUAL? RARG,M-LOOK \FALSE
PRINTI "The house opens onto a fragrant garden! A piece of sod has been "
FSET? SOD,MUNGBIT \?ELS8
PRINTI "rolled aside, revealing"
CALL APRINT,HOLE
JUMP ?CND6
?ELS8: PRINTI "recently planted"
?CND6: PRINTI ", and a clump of yellow, bulbous flowers grows nearby."
FSET? TRELLIS,TRYTAKEBIT \?CND11
PRINTI " The flowers barely reach the trellis which rises behind them."
?CND11: PRINTI " You can re-enter the house to the west."
RTRUE
.FUNCT FLOWERS-F
EQUAL? PRSA,V?SMELL \?ELS5
CALL PERFORM-PRSA,ODOR
RTRUE
?ELS5: EQUAL? PRSA,V?MUNG,V?TAKE,V?PICK \FALSE
PRINTR "That would be the act of a philistine."
.FUNCT SOD-F
EQUAL? PRSA,V?TAKE \?ELS5
CALL EXAMINE-SOD,TRUE-VALUE
RSTACK
?ELS5: EQUAL? PRSA,V?PUSH,V?ROLL,V?MOVE \?ELS7
FSET? SOD,MUNGBIT \?ELS12
PRINT SENILITY-STRIKES
RTRUE
?ELS12: FSET SOD,MUNGBIT
CALL THIS-IS-IT,HOLE
PRINTI "Moving the sod reveals"
CALL ARPRINT,HOLE
RSTACK
?ELS7: EQUAL? PRSA,V?PUT-ON \?ELS20
EQUAL? PRSI,HOLE /?THN17
?ELS20: EQUAL? PRSA,V?UNROLL \?ELS16
?THN17: FSET? SOD,MUNGBIT \?ELS25
FCLEAR SOD,MUNGBIT
PRINTI "You re-cover"
CALL TRPRINT,HOLE
RSTACK
?ELS25: PRINT LOOK-AROUND
RTRUE
?ELS16: EQUAL? PRSA,V?LOOK-UNDER,V?RAISE \?ELS29
FSET? SOD,MUNGBIT /?ELS29
PRINTR "You lift a corner. Before the sod drops back to the ground, you notice something dark."
?ELS29: EQUAL? PRSA,V?EXAMINE \FALSE
CALL EXAMINE-SOD
RSTACK
.FUNCT EXAMINE-SOD,TAKING=0
PRINTI "Although the sod hasn't taken root yet, it"
ZERO? TAKING /?ELS3
PRINTI "'"
JUMP ?CND1
?ELS3: PRINTI " look"
?CND1: PRINTR "s too heavy to carry."
.FUNCT TRELLIS-F,OARG=0
ZERO? OARG /?ELS5
FSET? TRELLIS,MUNGBIT \FALSE
EQUAL? OARG,M-OBJDESC? /TRUE
PRINTI " "
CALL DESCRIBE-TRELLIS-ON-HOLE
RSTACK
?ELS5: FSET? TRELLIS,UNTEEDBIT /FALSE
EQUAL? PRSA,V?PUT,V?PUT-ON \?ELS20
EQUAL? PRSO,LEAVES \?ELS20
FSET? TRELLIS,MUNGBIT \?ELS20
IN? LEAVES,TREE-HOLE \?ELS27
CALL CANT-REACH,LEAVES
RSTACK
?ELS27: SET 'LEAVES-PLACED,TRUE-VALUE
FCLEAR TREE-HOLE,OPENBIT
FSET LEAVES,NDESCBIT
FSET LEAVES,TRYTAKEBIT
MOVE LEAVES,TRELLIS
PRINTR "The leaves cover the trellis."
?ELS20: EQUAL? PRSA,V?PUT-ON \?ELS31
EQUAL? PRSI,TREE-HOLE \?ELS31
FSET? TRELLIS,MUNGBIT \?ELS38
PRINT SENILITY-STRIKES
RTRUE
?ELS38: IN? LEAVES,TRELLIS \?CND41
SET 'LEAVES-PLACED,TRUE-VALUE
FCLEAR TREE-HOLE,OPENBIT
FSET LEAVES,NDESCBIT
FSET LEAVES,TRYTAKEBIT
?CND41: MOVE TRELLIS,HERE
FSET TRELLIS,TRYTAKEBIT
FSET TRELLIS,MUNGBIT
PRINTR "The trellis barely spans the hole."
?ELS31: EQUAL? PRSA,V?TAKE \?ELS45
FSET? TRELLIS,TRYTAKEBIT \?ELS45
CALL UNTOUCHABLE?,TRELLIS
ZERO? STACK \?ELS45
CALL UNDO-TRAP
RFALSE
?ELS45: EQUAL? PRSA,V?CLIMB-ON,V?CLIMB \?ELS49
EQUAL? HERE,GARDEN \?ELS49
FSET? TRELLIS,TRYTAKEBIT \?ELS49
CALL UNDO-TRAP
PRINTR "It falls over."
?ELS49: EQUAL? PRSA,V?REMOVE,V?MOVE \?ELS53
FSET? TRELLIS,MUNGBIT \?ELS53
CALL UNDO-TRAP
PRINTR "You uncover the hole."
?ELS53: EQUAL? PRSA,V?PUT-AGAINST \?ELS57
EQUAL? PRSI,HOUSE \?ELS57
PRINTR "The trellis is too flimsy to climb."
?ELS57: EQUAL? PRSA,V?LOOK-INSIDE \?ELS61
GET P-ITBL,P-PREP1
EQUAL? STACK,PR?THROUGH \?ELS61
CALL V-LOOK
RSTACK
?ELS61: EQUAL? PRSA,V?MEASURE \?ELS65
PRINTR "It's six or seven feet wide."
?ELS65: EQUAL? PRSA,V?EXAMINE \?ELS67
ZERO? LEAVES-PLACED /?ELS67
FCLEAR LEAVES,NDESCBIT
CALL V-EXAMINE
FSET LEAVES,NDESCBIT
RTRUE
?ELS67: EQUAL? PRSA,V?EXAMINE \?ELS71
FIRST? TRELLIS /?ELS71
PRINTR "The trellis is a tight lattice of white wood. Though slightly wider at the top, it is approximately square in shape."
?ELS71: EQUAL? PRSA,V?PUT \?ELS75
EQUAL? PRSI,TREE-HOLE \?ELS75
PRINT TRELLIS-TOO-WIDE
RTRUE
?ELS75: EQUAL? PRSA,V?BOARD,V?STAND-ON \FALSE
FSET? TRELLIS,MUNGBIT \FALSE
CALL ROB,TRELLIS,TREE-HOLE
REMOVE TRELLIS
MOVE PROTAGONIST,TREE-HOLE
PRINTI "Crash! You"
CALL AND-SIDEKICK,TREE-HOLE
CALL UNDO-TRAP
PRINTR " are now in the hole, along with some splinters."
.FUNCT TRELLIS-VISIBLE
PRINTI "The edge of a trellis is just visible under"
CALL APRINT,LEAVES
PRINTI "."
RTRUE
.FUNCT DESCRIBE-TRELLIS-ON-HOLE
ZERO? LEAVES-PLACED /?ELS5
CALL TRELLIS-VISIBLE
RSTACK
?ELS5: PRINTI "A trellis covers the hole."
RTRUE
.FUNCT UNDO-TRAP
ZERO? LEAVES-PLACED /?CND1
SET 'LEAVES-PLACED,FALSE-VALUE
FCLEAR LEAVES,TRYTAKEBIT
FCLEAR LEAVES,NDESCBIT
?CND1: FSET TREE-HOLE,OPENBIT
FCLEAR TRELLIS,TRYTAKEBIT
FCLEAR TRELLIS,MUNGBIT
FCLEAR TRELLIS,NDESCBIT
FSET TRELLIS,OPENBIT
FSET TRELLIS,CONTBIT
FSET TRELLIS,SURFACEBIT
RTRUE
.FUNCT FIRST-FLOOR-F
EQUAL? PRSA,V?BOARD,V?WALK-TO,V?ENTER \?ELS5
EQUAL? HERE,BEDROOM \?ELS10
CALL DO-WALK,P?DOWN
RSTACK
?ELS10: EQUAL? HERE,TEENSY-WEENSY-HOUSE \FALSE
PRINT LOOK-AROUND
RTRUE
?ELS5: EQUAL? PRSA,V?DISEMBARK,V?LEAVE,V?EXIT \?ELS14
EQUAL? HERE,BEDROOM \?ELS19
PRINT LOOK-AROUND
RTRUE
?ELS19: CALL DO-WALK,P?UP
RSTACK
?ELS14: EQUAL? HERE,TEENSY-WEENSY-HOUSE \FALSE
EQUAL? PRSO,PSEUDO-OBJECT \?ELS28
CALL PERFORM-PRSA,GLOBAL-ROOM,PRSI
RTRUE
?ELS28: CALL PERFORM-PRSA,PRSO,GLOBAL-ROOM
RSTACK
.FUNCT SECOND-FLOOR-F
EQUAL? PRSA,V?BOARD,V?WALK-TO,V?ENTER \?ELS5
EQUAL? HERE,TEENSY-WEENSY-HOUSE \?ELS10
CALL DO-WALK,P?UP
RSTACK
?ELS10: EQUAL? HERE,BEDROOM \FALSE
PRINT LOOK-AROUND
RTRUE
?ELS5: EQUAL? PRSA,V?DISEMBARK,V?LEAVE,V?EXIT \?ELS14
EQUAL? HERE,BEDROOM \?ELS19
CALL DO-WALK,P?DOWN
RSTACK
?ELS19: PRINT LOOK-AROUND
RTRUE
?ELS14: EQUAL? HERE,BEDROOM \FALSE
EQUAL? PRSO,PSEUDO-OBJECT \?ELS28
CALL PERFORM-PRSA,GLOBAL-ROOM,PRSI
RTRUE
?ELS28: CALL PERFORM-PRSA,PRSO,GLOBAL-ROOM
RSTACK
.FUNCT BEDROOM-EXIT-F,CALLED-BY-STAIRS-F=0
ZERO? SIDEKICK-TRIP-FLAG /?ELS5
CALL QUEUED?,I-SIDEKICK-OUT-WINDOW
ZERO? STACK /?ELS5
PRINTI "Just as you are about to..."
CRLF
RFALSE
?ELS5: ZERO? SHEET-HANGING /?ELS9
ZERO? CALLED-BY-STAIRS-F \?ELS9
PRINTI "Choice: You could climb down the stairs or the rope."
CRLF
RFALSE
?ELS9: RETURN TEENSY-WEENSY-HOUSE
.FUNCT BED-F
EQUAL? PRSA,V?MAKE \?ELS5
CALL V-CLEAN
RSTACK
?ELS5: EQUAL? PRSA,V?EXAMINE \?ELS7
ZERO? SHEET-TIED \?THN10
FSET? SHEET,TRYTAKEBIT \?ELS7
?THN10: CALL SHEET-F,M-OBJDESC
FIRST? BED \?ELS16
FIRST? BED /?KLU34
?KLU34: EQUAL? STACK,SHEET \?ELS21
NEXT? SHEET /?ELS21
CRLF
RTRUE
?ELS21: PRINTI " "
RFALSE
?ELS16: CRLF
RTRUE
?ELS7: EQUAL? PRSA,V?PUT-ON,V?PUT \?ELS29
EQUAL? PRSO,STOOL,RAFT \?ELS29
CALL WASTES
RSTACK
?ELS29: EQUAL? PRSA,V?PUSH,V?MOVE \FALSE
PRINTR "The bed is too heavy to move."
.FUNCT SHEET-F,OARG=0
ZERO? OARG /?ELS5
ZERO? SHEET-TIED \?THN12
FSET? SHEET,TRYTAKEBIT \FALSE
?THN12: EQUAL? OARG,M-OBJDESC? /TRUE
EQUAL? PRSA,V?EXAMINE /?CND17
PRINTI " "
?CND17: ZERO? SHEET-TIED /?ELS24
PRINTI "A "
CALL DPRINT,SHEET
PRINTI " is tied to the bed"
ZERO? SHEET-HANGING /?CND26
PRINTI ", its other end out the window"
?CND26: PRINTI "."
RTRUE
?ELS24: PRINTI "The bed is unmade, with the sheet lying half on the floor."
RTRUE
?ELS5: EQUAL? PRSA,V?MAKE \?ELS35
CALL NOUN-USED,W?ROPE,SHEET
ZERO? STACK /?ELS35
FSET? SHEET,MUNGBIT \?ELS42
CALL PERFORM,V?TIE-TOGETHER,SHEET
RTRUE
?ELS42: PRINTR "Be less general."
?ELS35: EQUAL? PRSA,V?MAKE-WITH,V?TIE \?ELS46
EQUAL? PRSO,PRSI \?ELS46
CALL PERFORM,V?TIE-TOGETHER,SHEET
RTRUE
?ELS46: EQUAL? PRSA,V?TIE-TOGETHER \?ELS50
FSET? SHEET,MUNGBIT \?ELS55
PRINT SENILITY-STRIKES
RTRUE
?ELS55: FSET? SHEET,NARTICLEBIT \?ELS57
FCLEAR SHEET,NARTICLEBIT
FCLEAR SHEET,PLURALBIT
FSET SHEET,MUNGBIT
PUTP SHEET,P?SDESC,STR?377
PUTP SHEET,P?NO-T-DESC,STR?378
PRINTR "With the expertise of one who has watched countless prison escape movies, you tie the strips into a rope."
?ELS57: PRINTI "Tying the ends of the sheet together"
CALL HO-HUM
RSTACK
?ELS50: CALL NOUN-USED,W?ROPE,SHEET
ZERO? STACK /?ELS61
FSET? SHEET,MUNGBIT /?ELS61
CALL CANT-SEE,SHEET
RSTACK
?ELS61: EQUAL? PRSA,V?TAKE,V?PUT \?ELS65
EQUAL? PRSO,SHEET \?ELS65
FSET? SHEET,TRYTAKEBIT \?ELS65
EQUAL? PRSI,WINDOW /?ELS65
ZERO? SHEET-TIED /?ELS72
CALL DO-FIRST,STR?379
RSTACK
?ELS72: FCLEAR SHEET,TRYTAKEBIT
FCLEAR BED,NDESCBIT
RFALSE
?ELS65: FSET? SHEET,UNTEEDBIT /FALSE
EQUAL? PRSA,V?RIP /?THN80
EQUAL? PRSA,V?CUT \?ELS79
EQUAL? PRSO,SHEET \?ELS79
?THN80: FSET? SHEET,NARTICLEBIT /?THN89
FSET? SHEET,MUNGBIT \?ELS88
?THN89: PRINT SENILITY-STRIKES
RTRUE
?ELS88: SET 'SHEET-TIED,FALSE-VALUE
FSET SHEET,NARTICLEBIT
FCLEAR SHEET,TRYTAKEBIT
FCLEAR BED,NDESCBIT
FSET SHEET,PLURALBIT
PUTP SHEET,P?SDESC,STR?380
PUTP SHEET,P?NO-T-DESC,STR?381
PRINTI "You rip the sheet into"
CALL TRPRINT,SHEET
RSTACK
?ELS79: EQUAL? PRSA,V?TIE \?ELS94
EQUAL? PRSO,SHEET \?ELS94
ZERO? SHEET-TIED /?ELS101
PRINTI "But"
CALL TPRINT,SHEET
PRINTR " is already tied to the bed."
?ELS101: FSET? SHEET,NARTICLEBIT \?ELS104
PRINTI "Unless you want to make a nice decorative fringe for"
CALL TPRINT-PRSI
PRINTI ", that"
CALL HO-HUM
RSTACK
?ELS104: EQUAL? PRSI,BED \?ELS106
SET 'SHEET-TIED,TRUE-VALUE
FSET BED,NDESCBIT
FSET SHEET,TRYTAKEBIT
MOVE SHEET,HERE
CALL NOW-TIED,BED
RSTACK
?ELS106: FSET? PRSI,ACTORBIT \?ELS108
ZERO? NAUGHTY-LEVEL \FALSE
?ELS108: EQUAL? PRSO,BLANKET /FALSE
CALL WASTES
RSTACK
?ELS94: EQUAL? PRSA,V?UNTIE \?ELS114
ZERO? SHEET-TIED /?ELS114
FCLEAR SHEET,TRYTAKEBIT
SET 'SHEET-TIED,FALSE-VALUE
LOC PROTAGONIST
MOVE SHEET,STACK
ZERO? SHEET-HANGING /?ELS121
FCLEAR BED,NDESCBIT
SET 'SHEET-HANGING,FALSE-VALUE
PRINTI "You pull in"
CALL TPRINT-PRSO
PRINTR " and untie it."
?ELS121: PRINTR "Untied."
?ELS114: EQUAL? PRSA,V?PUT,V?PUT-THROUGH \?ELS126
EQUAL? PRSI,WINDOW \?ELS126
ZERO? SHEET-HANGING /?ELS133
PRINT SENILITY-STRIKES
RTRUE
?ELS133: ZERO? SHEET-TIED /FALSE
FSET? SHEET,MUNGBIT /?CND138
PRINTR "The sheet would barely reach the window, let alone the ground below!"
?CND138: MOVE SHEET,HERE
SET 'SHEET-HANGING,TRUE-VALUE
PRINTI "The "
CALL DPRINT,SHEET
PRINTI " hangs almost to the ground."
IN? SIDEKICK,HERE \?THN144
ZERO? SIDEKICK-TRIP-FLAG /?CND141
?THN144: CRLF
RTRUE
?CND141: CALL QUEUE,I-SIDEKICK-OUT-WINDOW,2
PRINTI " "
CALL DPRINT-SIDEKICK
PRINTR " looks awed. ""Super idea! Doesn't look too strong, though. I'm lighter, so I'll go down."""
?ELS126: EQUAL? PRSA,V?MOVE \?ELS147
ZERO? SHEET-HANGING /?ELS152
SET 'SHEET-HANGING,FALSE-VALUE
PRINTI "You pull"
CALL TPRINT,SHEET
PRINTR " back into the room."
?ELS152: ZERO? SHEET-TIED /FALSE
CALL PERFORM-PRSA,BED
RTRUE
?ELS147: EQUAL? PRSA,V?CLIMB-DOWN \?ELS158
ZERO? SHEET-HANGING /?ELS158
PRINTI "The rope rips under your weight. "
CALL PLUMMET-TO-PAVEMENT
RSTACK
?ELS158: EQUAL? PRSA,V?MEASURE \?ELS162
FSET? SHEET,MUNGBIT \?ELS162
PRINTR "Long enough."
?ELS162: EQUAL? PRSA,V?EXAMINE \FALSE
ZERO? SHEET-TIED \?THN169
FSET? SHEET,TRYTAKEBIT \FALSE
?THN169: CALL SHEET-F,M-OBJDESC
CRLF
RTRUE
.FUNCT PLUMMET-TO-PAVEMENT
CALL JIGS-UP,STR?382
RSTACK
.FUNCT I-SIDEKICK-OUT-WINDOW
PRINTI " "
ZERO? SIDEKICK-TRIP-FLAG /?ELS5
FSET BEDROOM,MUNGBIT
MOVE SIDEKICK,HERE
MOVE HEADLIGHT,HERE
CALL INCREMENT-SCORE,14,33,TRUE-VALUE
PRINTI "The ceiling collapses into a cloud of old plaster and startled termites, and out of the middle of it steps "
CALL DPRINT-SIDEKICK
PRINTI ", looking dishevelled but, for the most part, alive!
""That truck explosion knocked me into the basement of some nutty professor, who strapped me into a faster-than-light missile he was about to test! Halfway to Pluto, I was intercepted by slavers looking for asteroid mining laborers. I beat off about thirty of 'em, but they just kept coming and coming. Just then I noticed"
CALL APRINT,HOLE
PRINTI " which led to a spot about four feet above the floor of the attic ... or what used to be the floor of the attic. Anyway, I got the "
PRINTD HEADLIGHT
PRINTI "!"" "
CALL HE-SHE,TRUE-VALUE
PRINTI " points to the battered but usable "
PRINTD HEADLIGHT
PRINTR " on the floor."
?ELS5: EQUAL? HERE,BEDROOM \?THN9
ZERO? SHEET-HANGING \?ELS8
?THN9: CALL DEQUEUE,I-SIDEKICK-OUT-WINDOW
PRINTI """Okay, forget the "
PRINTD HEADLIGHT
PRINTI ","" shrugs "
CALL DPRINT-SIDEKICK
PRINT PERIOD-CR
RTRUE
?ELS8: MOVE FORD,HERE
REMOVE SIDEKICK
REMOVE HEADLIGHT
SET 'FOLLOW-FLAG,1
CALL QUEUE,I-FOLLOW,2
FCLEAR HEADLIGHT,NDESCBIT
FCLEAR HEADLIGHT,TRYTAKEBIT
SET 'SIDEKICK-TRIP-FLAG,TRUE-VALUE
CALL QUEUE,I-SIDEKICK-OUT-WINDOW,1
CALL DPRINT-SIDEKICK
PRINTI " climbs down the rope and unscrews the "
PRINTD HEADLIGHT
PRINTI ". Suddenly, a truck barrels down the street and hits "
CALL DPRINT-SIDEKICK
PRINTI ", carrying "
CALL HIM-HER
PRINTI " out of sight. Moments later, you hear an explosion. As the smoke drifts past the window"
CALL MEMORIAM
RSTACK
.FUNCT HEADLIGHT-F
EQUAL? PRSA,V?EXAMINE \?ELS5
FSET? HEADLIGHT,TRYTAKEBIT \?ELS5
PRINTR "It looks loose."
?ELS5: CALL TOUCHING?,HEADLIGHT
ZERO? STACK /FALSE
FSET? HEADLIGHT,TRYTAKEBIT \FALSE
CALL CANT-REACH,HEADLIGHT
RSTACK
.FUNCT FORD-F
CALL ADJ-USED,A?NUMBER
ZERO? STACK /?ELS5
EQUAL? P-NUMBER,1933 /?ELS5
CALL CANT-SEE,FORD
RSTACK
?ELS5: CALL TOUCHING?,FORD
ZERO? STACK /FALSE
CALL CANT-REACH,FORD
RSTACK
.ENDI