# 2.11BSD#431 - /usr/src/new/PORT/dungeon/ballop.F

       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

Last modified: 1988-10-21 Generated: 2016-12-26 | Generated by src2html V0.67 page hit count: 629 |