360 CALL COMMAND
361 IF RESTOR$ = "Y" THEN
362 CALL RESTOREGAME
363 RESTOR$ = " "
364 END IF
365 IF SAVEG$ = "Y" THEN
366 EX = X
367 WHY = Y
368 CALL SAVE
369 SAVEG$ = " "
370 END IF
371 CALL TABLE3
372 ELSEIF KEY$ = "s" OR KEY$ = "S" THEN
373 EX = X
374 WHY = Y
375 CALL SAVE
376 CALL TABLE3
377 ELSEIF KEY$ = "r" OR KEY$ = "R" THEN
378 CALL RESTOREGAME
379 CALL TABLE3
380 ELSEIF KEY$ = "Q" OR KEY$ = "q" THEN
381 CALL QUITTER
382 CALL TABLE3
383 ELSEIF KEY$ = "H" OR KEY$ = "h" THEN
384 CALL HINTS
385 CALL TABLE3
386 ELSEIF KEY$ = "e" OR KEY$ = "E" THEN
387 IF SOUND$ = "N" THEN
388 SOUND$ = "Y"
389 ELSEIF SOUND$ = "Y" THEN
390 SOUND$ = "N"
391 END IF
392 END IF
393
394 IF TELEPORT$ = "YES" THEN
395 DOWN = Y
396 ACROSS = X
397 TELEPORT$ = ""
398 END IF
399
400 DB = ARMOR(YOURA)
401 OB = WEAPON(YOURW)
402 COMPANIONDB = ARMOR(COMPANIONA)
403 COMPANIONOB = WEAPON(COMPANIONW)
404
405
406END$ = ""
407I = -1
408
409DO UNTIL I = 9
410
411 I = I + 1
412 SCREEN 12
413 LINE (ONE(1, I), ONE(2, I))-(ONE(3, I), ONE(4, I)), COLOUR, BF
414 IF END$ <> "END" AND I <> 0 THEN
415
416IF MAZE(ACROSS + ((I - 1) * A), DOWN + ((I - 1) * B)) <> 1 OR I = 0 THEN
417
418 ENDING = I
419 C = I - 1
420 D = I - 1
421
422 LINE (TWO(1, I), TWO(2, I))-(TWO(3, I), TWO(4, I)), 0, BF
423
424 IF I < 7 THEN
425 RYN$ = ""
426 IF DIRECTION = 0 THEN
427 IF MAZE(ACROSS + (A * C), DOWN + 1 + (D * B)) <> 1 THEN RYN$ = "Y"
428 ELSEIF DIRECTION = 180 THEN
429 IF MAZE(ACROSS + (A * C), DOWN - 1 + (B * D)) <> 1 THEN RYN$ = "Y"
430 ELSEIF DIRECTION = 90 THEN
431 IF MAZE(ACROSS + 1 + (C * A), DOWN + (B * D)) <> 1 THEN RYN$ = "Y"
432 ELSEIF DIRECTION = 270 THEN
433 IF MAZE(ACROSS - 1 + (C * A), DOWN + (D * B)) <> 1 THEN RYN$ = "Y"
434 END IF
435
436 IF RYN$ = "Y" THEN
437
438 LINE (r(1, I), r(2, I))-(r(3, I), r(4, I)), 0, BF
439 LINE (r(5, I), r(6, I))-(r(7, I), r(8, I)), 0, BF
440
441 END IF
442
443 LYN$ = ""
444
445 IF DIRECTION = 0 THEN
446 IF MAZE((ACROSS + (C * A)), DOWN - 1 + (D * B)) <> 1 THEN LYN$ = "Y"
447 ELSEIF DIRECTION = 180 THEN
448 IF MAZE((ACROSS + (C * A)), DOWN + 1 + (D * B)) <> 1 THEN LYN$ = "Y"
449 ELSEIF DIRECTION = 90 THEN
450 IF MAZE(ACROSS - 1 - (C * A), DOWN + (B * D)) <> 1 THEN LYN$ = "Y"
451 ELSEIF DIRECTION = 270 THEN
452 IF MAZE(ACROSS + 1 + (C * A), DOWN + (D * B)) <> 1 THEN LYN$ = "Y"
453 END IF
454
455 IF LYN$ = "Y" THEN
456 LINE (L(1, I), L(2, I))-(L(3, I), L(4, I)), 0, BF
457 LINE (L(5, I), L(6, I))-(L(7, I), L(8, I)), 0, BF
458 END IF
459END IF
460ELSE
461 I = 9
462END IF
463END IF
464
465LINE (1, 450)-(LOW(ENDING), HIGH(ENDING)), 0
466LINE (0, 0)-(LOW(ENDING), LOW(ENDING)), 0
467LINE (450, 450)-(HIGH(ENDING), HIGH(ENDING)), 0
468LINE (450, 0)-(HIGH(ENDING), LOW(ENDING)), 0
469
470LOOP
471
472KEY$ = ""
473
474COLOR 14
475LOCATE 2, 63
476PRINT "Heading ";
477
478IF DIRECTION = 0 THEN PRINT "North "
479IF DIRECTION = 180 THEN PRINT "South "
480IF DIRECTION = 90 THEN PRINT "East "
481IF DIRECTION = 270 THEN PRINT "West "
482
483COLOR 15
484CALL PRINTHP
485
486
487IF SOUND$ = "Y" THEN
488 SOUND 37, .25
489 SOUND 37, .75
490END IF
491
492LOOP
493END
494
495DATA 000,000,450,450,090,090,360,360,360,090,450,100,360,360,450,350
496DATA 090,090,000,100,090,360,000,350
497
498DATA 100,100,350,350,143,143,307,307,307,143,350,148,307,307,350,302
499DATA 143,143,100,148,143,307,100,302
500
501DATA 150,150,300,300,170,170,280,280,280,170,300,174,280,280,300,276
502DATA 170,170,148,174,170,280,148,276
503
504DATA 175,175,275,275,185,185,265,265,265,185,275,188,265,265,275,262
505DATA 185,185,174,188,185,265,174,262
506
507DATA 189,189,261,261,195,195,254,254,254,195,261,197,254,254,261,252
508DATA 195,195,185,197,195,254,185,252
509
510DATA 198,198,251,251,202,202,247,247,247,202,251,203,247,247,251,246
511DATA 202,202,195,203,202,247,195,246
512
513DATA 204,204,245,245,207,207,242,242
514DATA 208,208,241,241,210,210,239,239
515DATA 211,211,238,238,212,212,237,237
516DATA 213,213,236,236,214,214,235,235
517
518DATA 214,235
519DATA 212,237
520DATA 210,239
521DATA 207,242
522DATA 202,247
523DATA 195,254
524DATA 185,265
525DATA 170,280
526DATA 143,307
527DATA 090,360
528
529SUB CHEST
530
531CLS
532CALL HEADER
533SCREEN 0
534
535Y$ = ""
536COLOR 15
537PRINT "There is a chest here. You discover..."
538PRINT
539
540GREEN = INT((RND) * 3) + 1
541RED = INT((RND) * 2) + 1
542YELLOW = INT((RND) * 2) + 1
543BLUE = INT((RND) * 2) + 1
544PURPLE = INT((RND) * 2) + 1
545GREY = INT((RND) * 2) + 1
546WHITE = INT((RND) * 2) + 1
547
548IF GREEN = 1 THEN
549 COLOR 2
550 PRINT "A green potion"
551 Y$ = "Y"
552 GREENPOTION = GREENPOTION + 1
553END IF
554
555IF RED = 1 THEN
556 COLOR 4
557 PRINT "A red potion"
558 Y$ = "Y"
559 REDPOTION = REDPOTION + 1
560END IF
561
562IF YELLOW = 1 THEN
563 COLOR 14
564 PRINT "A yellow potion"
565 Y$ = "Y"
566 YELLOWPOTION = YELLOWPOTION + 1
567END IF
568
569IF BLUE = 1 THEN
570 COLOR 9
571 PRINT "A blue potion"
572 Y$ = "Y"
573 BLUEPOTION = BLUEPOTION + 1
574END IF
575
576IF WHITE = 1 THEN
577 COLOR 15
578 PRINT "A white potion"
579 Y$ = "Y"
580 WHITEPOTION = WHITEPOTION + 1
581END IF
582
583IF GREY = 1 THEN
584 COLOR 8
585 PRINT "A grey potion"
586 GREYPOTION = GREYPOTION + 1
587 Y$ = "Y"
588END IF
589
590IF PURPLE = 1 THEN
591 COLOR 13
592 PRINT "A purple potion"
593 PURPLEPOTION = PURPLEPOTION + 1
594 Y$ = "Y"
595END IF
596
597IF Y$ <> "Y" THEN
598 PRINT "There are no potions."
599END IF
600
601CALL DELAY2
602
603PRINT
604
605IF JOB$ = "A Fighter" THEN
606 A = INT((RND) * (YOURA)) + (YOURA - 3)
607 W = INT((RND) * (YOURW)) + (YOURW - 3)
608ELSE
609 A = INT((RND) * (COMPANIONA + 1)) + (COMPANIONA - 2)
610 W = INT((RND) * (COMPANIONW + 1)) + (COMPANIONW - 2)
611END IF
612
613IF W < 1 THEN W = 1
614IF A < 1 THEN A = 1
615
616IF A > 23 THEN
617 DO UNTIL A < 23
618 A = INT((RND) * 23) + 1
619 LOOP
620END IF
621
622
623IF CHECK <> 1 THEN
624 IF W > 26 THEN
625 DO UNTIL W < 26
626 W = INT((RND) * 26) + 1
627 LOOP
628 END IF
629ELSE
630 W = INT((RND) * 20) + 1
631END IF
632
633IF W = 26 THEN
634 CHECK = 1
635END IF
636
637
638
639
640 COLOR 13
360 CALL COMMAND
361 IF RESTOR$ = "Y" THEN
362 CALL RESTOREGAME
363 RESTOR$ = " "
364 END IF
365 IF SAVEG$ = "Y" THEN
366 EX = X
367 WHY = Y
368 CALL SAVE
369 SAVEG$ = " "
370 END IF
371 CALL TABLE3
372 ELSEIF KEY$ = "s" OR KEY$ = "S" THEN
373 EX = X
374 WHY = Y
375 CALL SAVE
376 CALL TABLE3
377 ELSEIF KEY$ = "r" OR KEY$ = "R" THEN
378 CALL RESTOREGAME
379 CALL TABLE3
380 ELSEIF KEY$ = "Q" OR KEY$ = "q" THEN
381 CALL QUITTER
382 CALL TABLE3
383 ELSEIF KEY$ = "H" OR KEY$ = "h" THEN
384 CALL HINTS
385 CALL TABLE3
386 ELSEIF KEY$ = "e" OR KEY$ = "E" THEN
387 IF SOUND$ = "N" THEN
388 SOUND$ = "Y"
389 ELSEIF SOUND$ = "Y" THEN
390 SOUND$ = "N"
391 END IF
392 END IF
393
394 IF TELEPORT$ = "YES" THEN
395 DOWN = Y
396 ACROSS = X
397 TELEPORT$ = ""
398 END IF
399
400 DB = ARMOR(YOURA)
401 OB = WEAPON(YOURW)
402 COMPANIONDB = ARMOR(COMPANIONA)
403 COMPANIONOB = WEAPON(COMPANIONW)
404
405
406END$ = ""
407I = -1
408
409DO UNTIL I = 9
410
411 I = I + 1
412 SCREEN 12
413 LINE (ONE(1, I), ONE(2, I))-(ONE(3, I), ONE(4, I)), COLOUR, BF
414 IF END$ <> "END" AND I <> 0 THEN
415
416IF MAZE(ACROSS + ((I - 1) * A), DOWN + ((I - 1) * B)) <> 1 OR I = 0 THEN
417
418 ENDING = I
419 C = I - 1
420 D = I - 1
421
422 LINE (TWO(1, I), TWO(2, I))-(TWO(3, I), TWO(4, I)), 0, BF
423
424 IF I < 7 THEN
425 RYN$ = ""
426 IF DIRECTION = 0 THEN
427 IF MAZE(ACROSS + (A * C), DOWN + 1 + (D * B)) <> 1 THEN RYN$ = "Y"
428 ELSEIF DIRECTION = 180 THEN
429 IF MAZE(ACROSS + (A * C), DOWN - 1 + (B * D)) <> 1 THEN RYN$ = "Y"
430 ELSEIF DIRECTION = 90 THEN
431 IF MAZE(ACROSS + 1 + (C * A), DOWN + (B * D)) <> 1 THEN RYN$ = "Y"
432 ELSEIF DIRECTION = 270 THEN
433 IF MAZE(ACROSS - 1 + (C * A), DOWN + (D * B)) <> 1 THEN RYN$ = "Y"
434 END IF
435
436 IF RYN$ = "Y" THEN
437
438 LINE (r(1, I), r(2, I))-(r(3, I), r(4, I)), 0, BF
439 LINE (r(5, I), r(6, I))-(r(7, I), r(8, I)), 0, BF
440
441 END IF
442
443 LYN$ = ""
444
445 IF DIRECTION = 0 THEN
446 IF MAZE((ACROSS + (C * A)), DOWN - 1 + (D * B)) <> 1 THEN LYN$ = "Y"
447 ELSEIF DIRECTION = 180 THEN
448 IF MAZE((ACROSS + (C * A)), DOWN + 1 + (D * B)) <> 1 THEN LYN$ = "Y"
449 ELSEIF DIRECTION = 90 THEN
450 IF MAZE(ACROSS - 1 - (C * A), DOWN + (B * D)) <> 1 THEN LYN$ = "Y"
451 ELSEIF DIRECTION = 270 THEN
452 IF MAZE(ACROSS + 1 + (C * A), DOWN + (D * B)) <> 1 THEN LYN$ = "Y"
453 END IF
454
455 IF LYN$ = "Y" THEN
456 LINE (L(1, I), L(2, I))-(L(3, I), L(4, I)), 0, BF
457 LINE (L(5, I), L(6, I))-(L(7, I), L(8, I)), 0, BF
458 END IF
459END IF
460ELSE
461 I = 9
462END IF
463END IF
464
465LINE (1, 450)-(LOW(ENDING), HIGH(ENDING)), 0
466LINE (0, 0)-(LOW(ENDING), LOW(ENDING)), 0
467LINE (450, 450)-(HIGH(ENDING), HIGH(ENDING)), 0
468LINE (450, 0)-(HIGH(ENDING), LOW(ENDING)), 0
469
470LOOP
471
472KEY$ = ""
473
474COLOR 14
475LOCATE 2, 63
476PRINT "Heading ";
477
478IF DIRECTION = 0 THEN PRINT "North "
479IF DIRECTION = 180 THEN PRINT "South "
480IF DIRECTION = 90 THEN PRINT "East "
481IF DIRECTION = 270 THEN PRINT "West "
482
483COLOR 15
484CALL PRINTHP
485
486
487IF SOUND$ = "Y" THEN
488 SOUND 37, .25
489 SOUND 37, .75
490END IF
491
492LOOP
493END
494
495DATA 000,000,450,450,090,090,360,360,360,090,450,100,360,360,450,350
496DATA 090,090,000,100,090,360,000,350
497
498DATA 100,100,350,350,143,143,307,307,307,143,350,148,307,307,350,302
499DATA 143,143,100,148,143,307,100,302
500
501DATA 150,150,300,300,170,170,280,280,280,170,300,174,280,280,300,276
502DATA 170,170,148,174,170,280,148,276
503
504DATA 175,175,275,275,185,185,265,265,265,185,275,188,265,265,275,262
505DATA 185,185,174,188,185,265,174,262
506
507DATA 189,189,261,261,195,195,254,254,254,195,261,197,254,254,261,252
508DATA 195,195,185,197,195,254,185,252
509
510DATA 198,198,251,251,202,202,247,247,247,202,251,203,247,247,251,246
511DATA 202,202,195,203,202,247,195,246
512
513DATA 204,204,245,245,207,207,242,242
514DATA 208,208,241,241,210,210,239,239
515DATA 211,211,238,238,212,212,237,237
516DATA 213,213,236,236,214,214,235,235
517
518DATA 214,235
519DATA 212,237
520DATA 210,239
521DATA 207,242
522DATA 202,247
523DATA 195,254
524DATA 185,265
525DATA 170,280
526DATA 143,307
527DATA 090,360
528
529SUB CHEST
530
531CLS
532CALL HEADER
533SCREEN 0
534
535Y$ = ""
536COLOR 15
537PRINT "There is a chest here. You discover..."
538PRINT
539
540GREEN = INT((RND) * 3) + 1
541RED = INT((RND) * 2) + 1
542YELLOW = INT((RND) * 2) + 1
543BLUE = INT((RND) * 2) + 1
544PURPLE = INT((RND) * 2) + 1
545GREY = INT((RND) * 2) + 1
546WHITE = INT((RND) * 2) + 1
547
548IF GREEN = 1 THEN
549 COLOR 2
550 PRINT "A green potion"
551 Y$ = "Y"
552 GREENPOTION = GREENPOTION + 1
553END IF
554
555IF RED = 1 THEN
556 COLOR 4
557 PRINT "A red potion"
558 Y$ = "Y"
559 REDPOTION = REDPOTION + 1
560END IF
561
562IF YELLOW = 1 THEN
563 COLOR 14
564 PRINT "A yellow potion"
565 Y$ = "Y"
566 YELLOWPOTION = YELLOWPOTION + 1
567END IF
568
569IF BLUE = 1 THEN
570 COLOR 9
571 PRINT "A blue potion"
572 Y$ = "Y"
573 BLUEPOTION = BLUEPOTION + 1
574END IF
575
576IF WHITE = 1 THEN
577 COLOR 15
578 PRINT "A white potion"
579 Y$ = "Y"
580 WHITEPOTION = WHITEPOTION + 1
581END IF
582
583IF GREY = 1 THEN
584 COLOR 8
585 PRINT "A grey potion"
586 GREYPOTION = GREYPOTION + 1
587 Y$ = "Y"
588END IF
589
590IF PURPLE = 1 THEN
591 COLOR 13
592 PRINT "A purple potion"
593 PURPLEPOTION = PURPLEPOTION + 1
594 Y$ = "Y"
595END IF
596
597IF Y$ <> "Y" THEN
598 PRINT "There are no potions."
599END IF
600
601CALL DELAY2
602
603PRINT
604
605IF JOB$ = "A Fighter" THEN
606 A = INT((RND) * (YOURA)) + (YOURA - 3)
607 W = INT((RND) * (YOURW)) + (YOURW - 3)
608ELSE
609 A = INT((RND) * (COMPANIONA + 1)) + (COMPANIONA - 2)
610 W = INT((RND) * (COMPANIONW + 1)) + (COMPANIONW - 2)
611END IF
612
613IF W < 1 THEN W = 1
614IF A < 1 THEN A = 1
615
616IF A > 23 THEN
617 DO UNTIL A < 23
618 A = INT((RND) * 23) + 1
619 LOOP
620END IF
621
622
623IF CHECK <> 1 THEN
624 IF W > 26 THEN
625 DO UNTIL W < 26
626 W = INT((RND) * 26) + 1
627 LOOP
628 END IF
629ELSE
630 W = INT((RND) * 20) + 1
631END IF
632
633IF W = 26 THEN
634 CHECK = 1
635END IF
636
637
638
639
640 COLOR 13