C COPYRIGHT 1980, INFOCOM COMPUTERS AND COMMUNICATIONS, CAMBRIDGE MA. 02142
C ALL RIGHTS RESERVED, COMMERCIAL USAGE STRICTLY PROHIBITED
C WRITTEN BY R. M. SUPNIK
LOGICAL FUNCTION TROLLP(ARG)
IF(PRSA.NE.FIGHTW) GO TO 1100
IF(OCAN(AXE).EQ.TROLL) GO TO 10
IF(.NOT.QHERE(AXE,HERE)) GO TO 1050
CALL NEWSTA(AXE,0,0,TROLL,0)
1050 IF(QHERE(TROLL,HERE)) CALL RSPEAK(I)
1100 IF(PRSA.NE.DEADXW) GO TO 1200
1200 IF(PRSA.NE.OUTXW) GO TO 1300
OFLAG1(AXE)=and(OFLAG1(AXE), not(VISIBT))
1300 IF(PRSA.NE.INXW) GO TO 1400
OFLAG1(AXE)=or(OFLAG1(AXE),VISIBT)
IF(QHERE(TROLL,HERE)) CALL RSPEAK(437)
1400 IF(PRSA.NE.FRSTQW) GO TO 1500
C !33% TRUE UNLESS BADLK.
1500 IF((PRSA.NE.MOVEW).AND.(PRSA.NE.TAKEW).AND.(PRSA.NE.MUNGW)
& .AND.(PRSA.NE.THROWW).AND.(PRSA.NE.GIVEW)) GO TO 2000
IF(OCAPAC(TROLL).GE.0) GO TO 1550
OCAPAC(TROLL)=-OCAPAC(TROLL)
OFLAG1(AXE)=or(OFLAG1(AXE),VISIBT)
1550 IF((PRSA.NE.TAKEW).AND.(PRSA.NE.MOVEW)) GO TO 1600
1600 IF(PRSA.NE.MUNGW) GO TO 1700
1700 IF(PRSO.EQ.0) GO TO 10
CALL RSPSUB(I,ODESC2(PRSO))
IF(PRSO.EQ.KNIFE) GO TO 1900
CALL NEWSTA(PRSO,442,0,0,0)
OFLAG2(TROLL)=or(OFLAG2(TROLL),FITEBT)
2000 IF(.NOT.TROLLF.OR.(PRSA.NE.HELLOW)) GO TO 10
C CYCLOP- CYCLOPS FUNCTION
LOGICAL FUNCTION CYCLOP(ARG)
IF(.NOT.CYCLOF) GO TO 100
IF((PRSA.NE.ALARMW).AND.(PRSA.NE.MUNGW).AND.(PRSA.NE.HELLOW).AND.
& (PRSA.NE.BURNW).AND.(PRSA.NE.KILLW).AND.(PRSA.NE.ATTACW))
OFLAG2(CYCLO)=and(or(OFLAG2(CYCLO),FITEBT),not(SLEPBT))
100 IF((PRSA.EQ.FIGHTW).OR.(PRSA.EQ.FRSTQW)) GO TO 10
IF(IABS(RVCYC).LE.5) GO TO 200
200 IF(PRSA.NE.GIVEW) GO TO 500
IF((PRSO.NE.FOOD).OR.(RVCYC.LT.0)) GO TO 300
CALL NEWSTA(FOOD,189,0,0,0)
300 IF(PRSO.NE.WATER) GO TO 400
CALL NEWSTA(PRSO,190,0,0,0)
OFLAG2(CYCLO)=and(or(OFLAG2(CYCLO),SLEPBT),not(FITEBT))
IF(RVCYC.LT.0) RVCYC=RVCYC-1
IF(RVCYC.GE.0) RVCYC=RVCYC+1
IF(.NOT.CYCLOF) CALL RSPEAK(193+IABS(RVCYC))
IF(PRSA.EQ.HELLOW) GO TO 450
IF((PRSA.EQ.THROWW).OR.(PRSA.EQ.MUNGW)) I=200+RND(2)
LOGICAL FUNCTION THIEFP(ARG)
IF(PRSA.NE.FIGHTW) GO TO 100
IF(OCAN(STILL).EQ.THIEF) GO TO 10
IF(QHERE(STILL,THFPOS)) GO TO 50
CALL NEWSTA(THIEF,0,0,0,0)
IF(QHERE(THIEF,HERE)) CALL RSPEAK(498)
50 CALL NEWSTA(STILL,0,0,THIEF,0)
IF(QHERE(THIEF,HERE)) CALL RSPEAK(499)
100 IF(PRSA.NE.DEADXW) GO TO 200
OFLAG1(CHALI)=or(OFLAG1(CHALI),TAKEBT)
125 IF(OADV(I).EQ.-THIEF) J=500
C !TELL IF BOOTY REAPPEARS.
IF((I.EQ.CHALI).OR.(I.EQ.THIEF).OR.(HERE.NE.TREAS)
& .OR. .NOT.QHERE(I,HERE)) GO TO 135
OFLAG1(I)=or(OFLAG1(I),VISIBT)
135 IF(OADV(I).EQ.-THIEF) CALL NEWSTA(I,0,HERE,0,0)
200 IF(PRSA.NE.FRSTQW) GO TO 250
250 IF((PRSA.NE.HELLOW).OR.(ODESC1(THIEF).NE.504))
300 IF(PRSA.NE.OUTXW) GO TO 400
OFLAG1(STILL)=and(OFLAG1(STILL),not(VISIBT))
OFLAG1(CHALI)=or(OFLAG1(CHALI),TAKEBT)
400 IF(PRSA.NE.INXW) GO TO 500
IF(QHERE(THIEF,HERE)) CALL RSPEAK(505)
OFLAG1(STILL)=or(OFLAG1(STILL),VISIBT)
IF((HERE.EQ.TREAS).AND.QHERE(CHALI,HERE))
& OFLAG1(CHALI)=and(OFLAG1(CHALI),not(TAKEBT))
500 IF(PRSA.NE.TAKEW) GO TO 600
600 IF((PRSA.NE.THROWW).OR.(PRSO.NE.KNIFE).OR.
& (and(OFLAG2(THIEF),FITEBT).NE.0)) GO TO 700
OFLAG2(THIEF)=or(OFLAG2(THIEF),FITEBT)
IF(OADV(I).NE.-THIEF) GO TO 675
CALL NEWSTA(I,0,HERE,0,0)
CALL NEWSTA(THIEF,J,0,0,0)
700 IF(((PRSA.NE.THROWW).AND.(PRSA.NE.GIVEW)).OR.(PRSO.EQ.0).OR.
& (PRSO.EQ.THIEF)) GO TO 10
IF(OCAPAC(THIEF).GE.0) GO TO 750
OCAPAC(THIEF)=-OCAPAC(THIEF)
OFLAG1(STILL)=or(OFLAG1(STILL),VISIBT)
750 IF((PRSO.NE.BRICK).OR.(OCAN(FUSE).NE.BRICK).OR.
& (CTICK(CEVFUS).EQ.0)) GO TO 800
800 CALL NEWSTA(PRSO,0,0,0,-THIEF)
IF(OTVAL(PRSO).GT.0) GO TO 900
CALL RSPSUB(512,ODESC2(PRSO))
900 CALL RSPSUB(627,ODESC2(PRSO))