1: C BALLOP- BALLOON FUNCTION 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 BALLOP(ARG) 10: IMPLICIT INTEGER (A-Z) 11: LOGICAL FINDXT,QEMPTY 12: #include "parser.h" 13: #include "gamestate.h" 14: #include "state.h" 15: #include "rooms.h" 16: #include "rflag.h" 17: #include "curxt.h" 18: #include "xpars.h" 19: #include "objects.h" 20: #include "oflags.h" 21: #include "oindex.h" 22: #include "clock.h" 23: 24: #include "verbs.h" 25: #include "flags.h" 26: C BALLOP, PAGE 2 27: C 28: BALLOP=.TRUE. 29: C !ASSUME WINS. 30: IF(ARG.NE.2) GO TO 200 31: C !READOUT? 32: IF(PRSA.NE.LOOKW) GO TO 10 33: C !ONLY PROCESS LOOK. 34: IF(BINFF.NE.0) GO TO 50 35: C !INFLATED? 36: CALL RSPEAK(543) 37: C !NO. 38: GO TO 100 39: 50 CALL RSPSUB(544,ODESC2(BINFF)) 40: C !YES. 41: 100 IF(BTIEF.NE.0) CALL RSPEAK(545) 42: C !HOOKED? 43: RETURN 44: C 45: 200 IF(ARG.NE.1) GO TO 500 46: C !READIN? 47: IF(PRSA.NE.WALKW) GO TO 300 48: C !WALK? 49: IF(FINDXT(PRSO,HERE)) GO TO 250 50: C !VALID EXIT? 51: CALL RSPEAK(546) 52: C !NO, JOKE. 53: RETURN 54: C 55: 250 IF(BTIEF.EQ.0) GO TO 275 56: C !TIED UP? 57: CALL RSPEAK(547) 58: C !YES, JOKE. 59: RETURN 60: C 61: 275 IF(XTYPE.NE.XNORM) GO TO 10 62: C !NORMAL EXIT? 63: IF(and(RFLAG(XROOM1),RMUNG).EQ.0) BLOC=XROOM1 64: 10 BALLOP=.FALSE. 65: RETURN 66: C 67: 300 IF((PRSA.NE.TAKEW).OR.(PRSO.NE.BINFF)) GO TO 350 68: CALL RSPSUB(548,ODESC2(BINFF)) 69: C !RECEP CONT TOO HOT. 70: RETURN 71: C 72: 350 IF((PRSA.NE.PUTW).OR.(PRSI.NE.RECEP).OR.QEMPTY(RECEP)) 73: & GO TO 10 74: CALL RSPEAK(549) 75: RETURN 76: C 77: 500 IF((PRSA.NE.UNBOAW).OR.(and(RFLAG(HERE),RLAND).EQ.0)) 78: & GO TO 600 79: IF(BINFF.NE.0) CTICK(CEVBAL)=3 80: C !HE GOT OUT, START BALLOON. 81: GO TO 10 82: C 83: 600 IF((PRSA.NE.BURNW).OR.(OCAN(PRSO).NE.RECEP)) GO TO 700 84: CALL RSPSUB(550,ODESC2(PRSO)) 85: C !LIGHT FIRE IN RECEP. 86: CTICK(CEVBRN)=OSIZE(PRSO)*20 87: OFLAG1(PRSO)=or(OFLAG1(PRSO), 88: & and((ONBT+FLAMBT+LITEBT), not(TAKEBT+READBT))) 89: IF(BINFF.NE.0) RETURN 90: IF(.NOT.BLABF) CALL NEWSTA(BLABE,0,0,BALLO,0) 91: BLABF=.TRUE. 92: BINFF=PRSO 93: CTICK(CEVBAL)=3 94: CALL RSPEAK(551) 95: RETURN 96: C 97: 700 IF((PRSA.EQ.UNBOAW).AND.(BINFF.NE.0).AND. 98: & (and(RFLAG(HERE),RLAND).NE.0)) 99: & CTICK(CEVBAL)=3 100: GO TO 10 101: C 102: END