Annotation of 43BSDReno/games/dungeon/dso5.F, revision 1.1

1.1     ! root        1: C
        !             2: C COPYRIGHT 1980, INFOCOM COMPUTERS AND COMMUNICATIONS, CAMBRIDGE MA. 02142
        !             3: C ALL RIGHTS RESERVED, COMMERCIAL USAGE STRICTLY PROHIBITED
        !             4: C WRITTEN BY R. M. SUPNIK
        !             5: C
        !             6: #ifndef PDP    /* replaced by C function for pdp */
        !             7: C GTTIME-- GET TOTAL TIME PLAYED
        !             8: C
        !             9: C DECLARATIONS
        !            10: C
        !            11:        SUBROUTINE GTTIME(T)
        !            12:        IMPLICIT INTEGER(A-Z)
        !            13: C
        !            14:        COMMON /TIME/ PLTIME,SHOUR,SMIN,SSEC
        !            15: C
        !            16:        CALL ITIME(H,M,S)
        !            17:        T=((H*60)+M)-((SHOUR*60)+SMIN)
        !            18:        IF(T.LT.0) T=T+1440
        !            19:        T=T+PLTIME
        !            20:        RETURN
        !            21:        END
        !            22: #endif PDP
        !            23: C OPNCLS-- PROCESS OPEN/CLOSE FOR DOORS
        !            24: C
        !            25: C DECLARATIONS
        !            26: C
        !            27:        LOGICAL FUNCTION OPNCLS(OBJ,SO,SC)
        !            28:        IMPLICIT INTEGER (A-Z)
        !            29:        LOGICAL QOPEN
        !            30: #include "parser.h"
        !            31: #include "objects.h"
        !            32: #include "oflags.h"
        !            33: #include "verbs.h"
        !            34: C
        !            35: C FUNCTIONS AND DATA
        !            36: C
        !            37:        QOPEN(O)=and(OFLAG2(O),OPENBT).NE.0
        !            38: C
        !            39:        OPNCLS=.TRUE.
        !            40: C                                              !ASSUME WINS.
        !            41:        IF(PRSA.EQ.CLOSEW) GO TO 100
        !            42: C                                              !CLOSE?
        !            43:        IF(PRSA.EQ.OPENW) GO TO 50
        !            44: C                                              !OPEN?
        !            45:        OPNCLS=.FALSE.
        !            46: C                                              !LOSE
        !            47:        RETURN
        !            48: C
        !            49: 50     IF(QOPEN(OBJ)) GO TO 200
        !            50: C                                              !OPEN... IS IT?
        !            51:        CALL RSPEAK(SO)
        !            52:        OFLAG2(OBJ)=or(OFLAG2(OBJ),OPENBT)
        !            53:        RETURN
        !            54: C
        !            55: 100    IF(.NOT.QOPEN(OBJ)) GO TO 200
        !            56: C                                              !CLOSE... IS IT?
        !            57:        CALL RSPEAK(SC)
        !            58:        OFLAG2(OBJ)=and(OFLAG2(OBJ),not(OPENBT))
        !            59:        RETURN
        !            60: C
        !            61: 200    CALL RSPEAK(125+RND(3))
        !            62: C                                              !DUMMY.
        !            63:        RETURN
        !            64:        END
        !            65: C LIT-- IS ROOM LIT?
        !            66: C
        !            67: C DECLARATIONS
        !            68: C
        !            69:        LOGICAL FUNCTION LIT(RM)
        !            70:        IMPLICIT INTEGER (A-Z)
        !            71:        LOGICAL QHERE
        !            72: #include "rooms.h"
        !            73: #include "rflag.h"
        !            74: #include "objects.h"
        !            75: #include "oflags.h"
        !            76: #include "advers.h"
        !            77: C
        !            78:        LIT=.TRUE.
        !            79: C                                              !ASSUME WINS
        !            80:        IF(and(RFLAG(RM),RLIGHT).NE.0) RETURN
        !            81: C
        !            82:        DO 1000 I=1,OLNT
        !            83: C                                              !LOOK FOR LIT OBJ
        !            84:          IF(QHERE(I,RM)) GO TO 100
        !            85: C                                              !IN ROOM?
        !            86:          OA=OADV(I)
        !            87: C                                              !NO
        !            88:          IF(OA.LE.0) GO TO 1000
        !            89: C                                              !ON ADV?
        !            90:          IF(AROOM(OA).NE.RM) GO TO 1000
        !            91: C                                              !ADV IN ROOM?
        !            92: C
        !            93: C OBJ IN ROOM OR ON ADV IN ROOM
        !            94: C
        !            95: 100      IF(and(OFLAG1(I),ONBT).NE.0) RETURN
        !            96:          IF((and(OFLAG1(I),VISIBT).EQ.0).OR.
        !            97: &              ((and(OFLAG1(I),TRANBT).EQ.0).AND.
        !            98: &              (and(OFLAG2(I),OPENBT).EQ.0))) GO TO 1000
        !            99: C
        !           100: C OBJ IS VISIBLE AND OPEN OR TRANSPARENT
        !           101: C
        !           102:          DO 500 J=1,OLNT
        !           103:            IF((OCAN(J).EQ.I).AND.(and(OFLAG1(J),ONBT).NE.0))
        !           104: &              RETURN
        !           105: 500      CONTINUE
        !           106: 1000   CONTINUE
        !           107:        LIT=.FALSE.
        !           108:        RETURN
        !           109:        END
        !           110: C WEIGHT- RETURNS SUM OF WEIGHT OF QUALIFYING OBJECTS
        !           111: C
        !           112: C DECLARATIONS
        !           113: C
        !           114:        INTEGER FUNCTION WEIGHT(RM,CN,AD)
        !           115:        IMPLICIT INTEGER (A-Z)
        !           116:        LOGICAL QHERE
        !           117: #include "objects.h"
        !           118: C
        !           119:        WEIGHT=0
        !           120:        DO 100 I=1,OLNT
        !           121: C                                              !OMIT BIG FIXED ITEMS.
        !           122:          IF(OSIZE(I).GE.10000) GO TO 100
        !           123: C                                              !IF FIXED, FORGET IT.
        !           124:          IF((QHERE(I,RM).AND.(RM.NE.0)).OR.
        !           125: &              ((OADV(I).EQ.AD).AND.(AD.NE.0))) GO TO 50
        !           126:          J=I
        !           127: C                                              !SEE IF CONTAINED.
        !           128: 25       J=OCAN(J)
        !           129: C                                              !GET NEXT LEVEL UP.
        !           130:          IF(J.EQ.0) GO TO 100
        !           131: C                                              !END OF LIST?
        !           132:          IF(J.NE.CN) GO TO 25
        !           133: 50       WEIGHT=WEIGHT+OSIZE(I)
        !           134: 100    CONTINUE
        !           135:        RETURN
        !           136:        END

unix.superglobalmegacorp.com

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