1C LIGHTP- LIGHT PROCESSOR 2C 3C COPYRIGHT 1980, INFOCOM COMPUTERS AND COMMUNICATIONS, CAMBRIDGE MA. 02142 4C ALL RIGHTS RESERVED, COMMERCIAL USAGE STRICTLY PROHIBITED 5C WRITTEN BY R. M. SUPNIK 6C 7C DECLARATIONS 8C 9 LOGICAL FUNCTION LIGHTP(OBJ) 10 IMPLICIT INTEGER (A-Z) 11 LOGICAL QON 12#include "parser.h" 13#include "gamestate.h" 14#include "objects.h" 15#include "oflags.h" 16#include "oindex.h" 17#include "clock.h" 18 19#include "verbs.h" 20#include "flags.h" 21C 22C FUNCTIONS AND DATA 23C 24 QON(R)=and(OFLAG1(R),ONBT).NE.0 25C LIGHTP, PAGE 2 26C 27 LIGHTP=.TRUE. 28C !ASSUME WINS 29 FLOBTS=FLAMBT+LITEBT+ONBT 30 IF(OBJ.NE.CANDL) GO TO 20000 31C !CANDLE? 32 IF(ORCAND.NE.0) GO TO 19100 33C !FIRST REF? 34 ORCAND=1 35C !YES, CANDLES ARE 36 CTICK(CEVCND)=50 37C !BURNING WHEN SEEN. 38C 3919100 IF(PRSI.EQ.CANDL) GO TO 10 40C !IGNORE IND REFS. 41 IF(PRSA.NE.TRNOFW) GO TO 19200 42C !TURN OFF? 43 I=513 44C !ASSUME OFF. 45 IF(QON(CANDL)) I=514 46C !IF ON, DIFFERENT. 47 CFLAG(CEVCND)=.FALSE. 48C !DISABLE COUNTDOWN. 49 OFLAG1(CANDL)=and(OFLAG1(CANDL), not(ONBT)) 50 CALL RSPEAK(I) 51 RETURN 52C 5319200 IF((PRSA.NE.BURNW).AND.(PRSA.NE.TRNONW)) GO TO 10 54 IF(and(OFLAG1(CANDL),LITEBT).NE.0) GO TO 19300 55 CALL RSPEAK(515) 56C !CANDLES TOO SHORT. 57 RETURN 58C 5919300 IF(PRSI.NE.0) GO TO 19400 60C !ANY FLAME? 61 CALL RSPEAK(516) 62C !NO, LOSE. 63 PRSWON=.FALSE. 64 RETURN 65C 6619400 IF((PRSI.NE.MATCH).OR. .NOT.QON(MATCH)) GO TO 19500 67 I=517 68C !ASSUME OFF. 69 IF(QON(CANDL)) I=518 70C !IF ON, JOKE. 71 OFLAG1(CANDL)=or(OFLAG1(CANDL),ONBT) 72 CFLAG(CEVCND)=.TRUE. 73C !RESUME COUNTDOWN. 74 CALL RSPEAK(I) 75 RETURN 76C 7719500 IF((PRSI.NE.TORCH).OR. .NOT.QON(TORCH)) GO TO 19600 78 IF(QON(CANDL)) GO TO 19700 79C !ALREADY ON? 80 CALL NEWSTA(CANDL,521,0,0,0) 81C !NO, VAPORIZE. 82 RETURN 83C 8419600 CALL RSPEAK(519) 85C !CANT LIGHT WITH THAT. 86 RETURN 87C 8819700 CALL RSPEAK(520) 89C !ALREADY ON. 90 RETURN 91C 9220000 IF(OBJ.NE.MATCH) CALL BUG(6,OBJ) 93 IF((PRSA.NE.TRNONW).OR.(PRSO.NE.MATCH)) GO TO 20500 94 IF(ORMTCH.NE.0) GO TO 20100 95C !ANY MATCHES LEFT? 96 CALL RSPEAK(183) 97C !NO, LOSE. 98 RETURN 99C 10020100 ORMTCH=ORMTCH-1 101C !DECREMENT NO MATCHES. 102 OFLAG1(MATCH)=or(OFLAG1(MATCH),FLOBTS) 103 CTICK(CEVMAT)=2 104C !COUNTDOWN. 105 CALL RSPEAK(184) 106 RETURN 107C 10820500 IF((PRSA.NE.TRNOFW).OR.(and(OFLAG1(MATCH),ONBT).EQ.0)) 109& GO TO 10 110 OFLAG1(MATCH)=and(OFLAG1(MATCH), not(FLOBTS)) 111 CTICK(CEVMAT)=0 112 CALL RSPEAK(185) 113 RETURN 114C 115C HERE FOR FALSE RETURN 116C 11710 LIGHTP=.FALSE. 118 RETURN 119 END 120