Annotation of 43BSDReno/games/dungeon/lightp.F, revision 1.1.1.1

1.1       root        1: C LIGHTP-      LIGHT PROCESSOR
                      2: C
                      3: C COPYRIGHT 1980, INFOCOM COMPUTERS AND COMMUNICATIONS, CAMBRIDGE MA. 02142
                      4: C ALL RIGHTS RESERVED, COMMERCIAL USAGE STRICTLY PROHIBITED
                      5: C WRITTEN BY R. M. SUPNIK
                      6: C
                      7: C DECLARATIONS
                      8: C
                      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"
                     21: C
                     22: C FUNCTIONS AND DATA
                     23: C
                     24:        QON(R)=and(OFLAG1(R),ONBT).NE.0
                     25: C LIGHTP, PAGE 2
                     26: C
                     27:        LIGHTP=.TRUE.
                     28: C                                              !ASSUME WINS
                     29:        FLOBTS=FLAMBT+LITEBT+ONBT
                     30:        IF(OBJ.NE.CANDL) GO TO 20000
                     31: C                                              !CANDLE?
                     32:        IF(ORCAND.NE.0) GO TO 19100
                     33: C                                              !FIRST REF?
                     34:        ORCAND=1
                     35: C                                              !YES, CANDLES ARE
                     36:        CTICK(CEVCND)=50
                     37: C                                              !BURNING WHEN SEEN.
                     38: C
                     39: 19100  IF(PRSI.EQ.CANDL) GO TO 10
                     40: C                                              !IGNORE IND REFS.
                     41:        IF(PRSA.NE.TRNOFW) GO TO 19200
                     42: C                                              !TURN OFF?
                     43:        I=513
                     44: C                                              !ASSUME OFF.
                     45:        IF(QON(CANDL)) I=514
                     46: C                                              !IF ON, DIFFERENT.
                     47:        CFLAG(CEVCND)=.FALSE.
                     48: C                                              !DISABLE COUNTDOWN.
                     49:        OFLAG1(CANDL)=and(OFLAG1(CANDL), not(ONBT))
                     50:        CALL RSPEAK(I)
                     51:        RETURN
                     52: C
                     53: 19200  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)
                     56: C                                              !CANDLES TOO SHORT.
                     57:        RETURN
                     58: C
                     59: 19300  IF(PRSI.NE.0) GO TO 19400
                     60: C                                              !ANY FLAME?
                     61:        CALL RSPEAK(516)
                     62: C                                              !NO, LOSE.
                     63:        PRSWON=.FALSE.
                     64:        RETURN
                     65: C
                     66: 19400  IF((PRSI.NE.MATCH).OR. .NOT.QON(MATCH)) GO TO 19500
                     67:        I=517
                     68: C                                              !ASSUME OFF.
                     69:        IF(QON(CANDL)) I=518
                     70: C                                              !IF ON, JOKE.
                     71:        OFLAG1(CANDL)=or(OFLAG1(CANDL),ONBT)
                     72:        CFLAG(CEVCND)=.TRUE.
                     73: C                                              !RESUME COUNTDOWN.
                     74:        CALL RSPEAK(I)
                     75:        RETURN
                     76: C
                     77: 19500  IF((PRSI.NE.TORCH).OR. .NOT.QON(TORCH)) GO TO 19600
                     78:        IF(QON(CANDL)) GO TO 19700
                     79: C                                              !ALREADY ON?
                     80:        CALL NEWSTA(CANDL,521,0,0,0)
                     81: C                                              !NO, VAPORIZE.
                     82:        RETURN
                     83: C
                     84: 19600  CALL RSPEAK(519)
                     85: C                                              !CANT LIGHT WITH THAT.
                     86:        RETURN
                     87: C
                     88: 19700  CALL RSPEAK(520)
                     89: C                                              !ALREADY ON.
                     90:        RETURN
                     91: C
                     92: 20000  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
                     95: C                                              !ANY MATCHES LEFT?
                     96:        CALL RSPEAK(183)
                     97: C                                              !NO, LOSE.
                     98:        RETURN
                     99: C
                    100: 20100  ORMTCH=ORMTCH-1
                    101: C                                              !DECREMENT NO MATCHES.
                    102:        OFLAG1(MATCH)=or(OFLAG1(MATCH),FLOBTS)
                    103:        CTICK(CEVMAT)=2
                    104: C                                              !COUNTDOWN.
                    105:        CALL RSPEAK(184)
                    106:        RETURN
                    107: C
                    108: 20500  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
                    114: C
                    115: C HERE FOR FALSE RETURN
                    116: C
                    117: 10     LIGHTP=.FALSE.
                    118:        RETURN
                    119:        END

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.