|
|
1.1 ! root 1: C MOVETO- MOVE PLAYER TO NEW ROOM ! 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 MOVETO(NR,WHO) ! 10: IMPLICIT INTEGER (A-Z) ! 11: LOGICAL NLV,LHR,LNR ! 12: #include "gamestate.h" ! 13: #include "rooms.h" ! 14: #include "rflag.h" ! 15: #include "objects.h" ! 16: #include "oindex.h" ! 17: #include "advers.h" ! 18: C MOVETO, PAGE 2 ! 19: C ! 20: MOVETO=.FALSE. ! 21: C !ASSUME FAILS. ! 22: LHR=and(RFLAG(HERE),RLAND).NE.0 ! 23: LNR=and(RFLAG(NR),RLAND).NE.0 ! 24: J=AVEHIC(WHO) ! 25: C !HIS VEHICLE ! 26: C ! 27: IF(J.NE.0) GO TO 100 ! 28: C !IN VEHICLE? ! 29: IF(LNR) GO TO 500 ! 30: C !NO, GOING TO LAND? ! 31: CALL RSPEAK(427) ! 32: C !CAN'T GO WITHOUT VEHICLE. ! 33: RETURN ! 34: C ! 35: 100 BITS=0 ! 36: C !ASSUME NOWHERE. ! 37: IF(J.EQ.RBOAT) BITS=RWATER ! 38: C !IN BOAT? ! 39: IF(J.EQ.BALLO) BITS=RAIR ! 40: C !IN BALLOON? ! 41: IF(J.EQ.BUCKE) BITS=RBUCK ! 42: C !IN BUCKET? ! 43: NLV=and(RFLAG(NR),BITS).EQ.0 ! 44: IF((.NOT.LNR .AND.NLV) .OR. ! 45: & (LNR.AND.LHR.AND.NLV.AND.(BITS.NE.RLAND))) ! 46: & GO TO 800 ! 47: C ! 48: 500 MOVETO=.TRUE. ! 49: C !MOVE SHOULD SUCCEED. ! 50: IF(and(RFLAG(NR),RMUNG).EQ.0) GO TO 600 ! 51: CALL RSPEAK(RRAND(NR)) ! 52: C !YES, TELL HOW. ! 53: RETURN ! 54: C ! 55: 600 IF(WHO.NE.PLAYER) CALL NEWSTA(AOBJ(WHO),0,NR,0,0) ! 56: IF(J.NE.0) CALL NEWSTA(J,0,NR,0,0) ! 57: HERE=NR ! 58: AROOM(WHO)=HERE ! 59: CALL SCRUPD(RVAL(NR)) ! 60: C !SCORE ROOM ! 61: RVAL(NR)=0 ! 62: RETURN ! 63: C ! 64: 800 CALL RSPSUB(428,ODESC2(J)) ! 65: C !WRONG VEHICLE. ! 66: RETURN ! 67: END ! 68: C SCORE-- PRINT OUT CURRENT SCORE ! 69: C ! 70: C DECLARATIONS ! 71: C ! 72: SUBROUTINE SCORE(FLG) ! 73: IMPLICIT INTEGER (A-Z) ! 74: LOGICAL FLG ! 75: INTEGER RANK(10),ERANK(5) ! 76: #include "gamestate.h" ! 77: #include "state.h" ! 78: C ! 79: COMMON /CHAN/ INPCH,OUTCH,DBCH ! 80: #include "advers.h" ! 81: #include "flags.h" ! 82: C ! 83: C FUNCTIONS AND DATA ! 84: C ! 85: DATA RANK/20,19,18,16,12,8,4,2,1,0/ ! 86: DATA ERANK/20,15,10,5,0/ ! 87: C SCORE, PAGE 2 ! 88: C ! 89: AS=ASCORE(WINNER) ! 90: C ! 91: IF(ENDGMF) GO TO 60 ! 92: C !ENDGAME? ! 93: #ifdef PDP ! 94: call pscore(AS,MXSCOR,MOVES) ! 95: #else ! 96: #ifdef NOCC ! 97: IF(FLG.AND.MOVES.NE.1) WRITE(OUTCH,100) AS,MXSCOR,MOVES ! 98: IF(FLG.AND.MOVES.EQ.1) WRITE(OUTCH,120) AS,MXSCOR,MOVES ! 99: IF(.NOT.FLG.AND.MOVES.NE.1) WRITE(OUTCH,110) AS,MXSCOR,MOVES ! 100: IF(.NOT.FLG.AND.MOVES.EQ.1) WRITE(OUTCH,130) AS,MXSCOR,MOVES ! 101: #else NOCC ! 102: IF(FLG) WRITE(OUTCH,100) ! 103: IF(.NOT.FLG) WRITE(OUTCH,110) ! 104: IF(MOVES.NE.1) WRITE(OUTCH,120) AS,MXSCOR,MOVES ! 105: IF(MOVES.EQ.1) WRITE(OUTCH,130) AS,MXSCOR,MOVES ! 106: #endif NOCC ! 107: #endif PDP ! 108: C ! 109: DO 10 I=1,10 ! 110: IF((AS*20/MXSCOR).GE.RANK(I)) GO TO 50 ! 111: 10 CONTINUE ! 112: 50 CALL RSPEAK(484+I) ! 113: RETURN ! 114: C ! 115: #ifdef PDP ! 116: 60 continue ! 117: call pscore(EGSCOR,EGMXSC,MOVES) ! 118: #else ! 119: #ifdef NOCC ! 120: 60 IF(FLG) WRITE(OUTCH,140) EGSCOR,EGMXSC,MOVES ! 121: IF(.NOT.FLG) WRITE(OUTCH,150) EGSCOR,EGMXSC,MOVES ! 122: #else NOCC ! 123: 60 IF(FLG) WRITE(OUTCH,140) ! 124: IF(.NOT.FLG) WRITE(OUTCH,150) ! 125: WRITE(OUTCH,120) EGSCOR,EGMXSC,MOVES ! 126: #endif NOCC ! 127: #endif PDP ! 128: DO 70 I=1,5 ! 129: IF((EGSCOR*20/EGMXSC).GE.ERANK(I)) GO TO 80 ! 130: 70 CONTINUE ! 131: 80 CALL RSPEAK(786+I) ! 132: RETURN ! 133: ! 134: #ifndef PDP ! 135: #ifdef NOCC ! 136: 100 FORMAT('Your score would be',I4,' [total of',I4,' points], in', ! 137: & I5,' moves.') ! 138: 110 FORMAT('Your score is',I4,' [total of',I4,' points], in', ! 139: & I5,' moves.') ! 140: 120 FORMAT('Your score would be',I4,' [total of',I4,' points], in', ! 141: & I5,' move.') ! 142: 130 FORMAT('Your score is',I4,' [total of',I4,' points], in', ! 143: & I5,' move.') ! 144: 140 FORMAT('Your score in the endgame would be',I4,' [total of', ! 145: & I4,' points], in',I5,' moves.') ! 146: 150 FORMAT('Your score in the endgame is',I4,' [total of', ! 147: & I4,' points], in',I5,' moves.') ! 148: #else NOCC ! 149: 100 FORMAT(' Your score would be',$) ! 150: 110 FORMAT(' Your score is',$) ! 151: 120 FORMAT('+',I4,' [total of',I4,' points], in',I5,' moves.') ! 152: 130 FORMAT('+',I4,' [total of',I4,' points], in',I5,' move.') ! 153: 140 FORMAT(' Your score in the endgame would be',$) ! 154: 150 FORMAT(' Your score in the endgame is',$) ! 155: #endif NOCC ! 156: #endif PDP ! 157: C ! 158: END ! 159: C SCRUPD- UPDATE WINNER'S SCORE ! 160: C ! 161: C DECLARATIONS ! 162: C ! 163: SUBROUTINE SCRUPD(N) ! 164: IMPLICIT INTEGER (A-Z) ! 165: #include "gamestate.h" ! 166: #include "state.h" ! 167: #include "clock.h" ! 168: #include "advers.h" ! 169: #include "flags.h" ! 170: C ! 171: IF(ENDGMF) GO TO 100 ! 172: C !ENDGAME? ! 173: ASCORE(WINNER)=ASCORE(WINNER)+N ! 174: C !UPDATE SCORE ! 175: RWSCOR=RWSCOR+N ! 176: C !UPDATE RAW SCORE ! 177: IF(ASCORE(WINNER).LT.(MXSCOR-(10*DEATHS))) RETURN ! 178: CFLAG(CEVEGH)=.TRUE. ! 179: C !TURN ON END GAME ! 180: CTICK(CEVEGH)=15 ! 181: RETURN ! 182: C ! 183: 100 EGSCOR=EGSCOR+N ! 184: C !UPDATE EG SCORE. ! 185: RETURN ! 186: END
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.