|
|
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
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.