Annotation of 43BSDReno/games/dungeon/lightp.F, revision 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.