text: /* BALLOP-	BALLOON FUNCTION */
  
  /*COPYRIGHT 1980, INFOCOM COMPUTERS AND COMMUNICATIONS, CAMBRIDGE MA. 02142*/
  /* ALL RIGHTS RESERVED, COMMERCIAL USAGE STRICTLY PROHIBITED */
  /* WRITTEN BY R. M. SUPNIK */
  
  #include "funcs.h"
  #include "vars.h"
  
  logical ballop_(arg)
  integer arg;
  {
      /* System generated locals */
      logical ret_val;
  
      ret_val = TRUE_;
  /* 						!ASSUME WINS. */
      if (arg != 2) {
  	goto L200;
      }
  /* 						!READOUT? */
      if (prsvec_1.prsa != vindex_1.lookw) {
  	goto L10;
      }
  /* 						!ONLY PROCESS LOOK. */
      if (findex_1.binff != 0) {
  	goto L50;
      }
  /* 						!INFLATED? */
      rspeak_(543);
  /* 						!NO. */
      goto L100;
  L50:
      rspsub_(544, objcts_1.odesc2[findex_1.binff - 1]);
  /* 						!YES. */
  L100:
      if (findex_1.btief != 0) {
  	rspeak_(545);
      }
  /* 						!HOOKED? */
      return ret_val;
  
  L200:
      if (arg != 1) {
  	goto L500;
      }
  /* 						!READIN? */
      if (prsvec_1.prsa != vindex_1.walkw) {
  	goto L300;
      }
  /* 						!WALK? */
      if (findxt_(prsvec_1.prso, play_1.here)) {
  	goto L250;
      }
  /* 						!VALID EXIT? */
      rspeak_(546);
  /* 						!NO, JOKE. */
      return ret_val;
  
  L250:
      if (findex_1.btief == 0) {
  	goto L275;
      }
  /* 						!TIED UP? */
      rspeak_(547);
  /* 						!YES, JOKE. */
      return ret_val;
  
  L275:
      if (curxt_1.xtype != xpars_1.xnorm) {
  	goto L10;
      }
  /* 						!NORMAL EXIT? */
      if ((rooms_1.rflag[curxt_1.xroom1 - 1] & RMUNG) == 0) {
  	state_1.bloc = curxt_1.xroom1;
      }
  L10:
      ret_val = FALSE_;
      return ret_val;
  
  L300:
      if (prsvec_1.prsa != vindex_1.takew || prsvec_1.prso != findex_1.binff) {
  	goto L350;
      }
      rspsub_(548, objcts_1.odesc2[findex_1.binff - 1]);
  /* 						!RECEP CONT TOO HOT. */
      return ret_val;
  
  L350:
      if (prsvec_1.prsa != vindex_1.putw || prsvec_1.prsi != oindex_1.recep || 
  	    qempty_(oindex_1.recep)) {
  	goto L10;
      }
      rspeak_(549);
      return ret_val;
  
  L500:
      if (prsvec_1.prsa != vindex_1.unboaw || (rooms_1.rflag[play_1.here - 1] & 
  	    RLAND) == 0) {
  	goto L600;
      }
      if (findex_1.binff != 0) {
  	cevent_1.ctick[cindex_1.cevbal - 1] = 3;
      }
  /* 						!HE GOT OUT, START BALLOON. */
      goto L10;
  
  L600:
      if (prsvec_1.prsa != vindex_1.burnw || objcts_1.ocan[prsvec_1.prso - 1] !=
  	     oindex_1.recep) {
  	goto L700;
      }
      rspsub_(550, objcts_1.odesc2[prsvec_1.prso - 1]);
  /* 						!LIGHT FIRE IN RECEP. */
      cevent_1.ctick[cindex_1.cevbrn - 1] = objcts_1.osize[prsvec_1.prso - 1] * 
  	    20;
      objcts_1.oflag1[prsvec_1.prso - 1] |= ONBT + FLAMBT + 
  	    LITEBT & ~ (TAKEBT + READBT);
      if (findex_1.binff != 0) {
  	return ret_val;
      }
      if (! findex_1.blabf) {
  	newsta_(oindex_1.blabe, 0, 0, oindex_1.ballo, 0);
      }
      findex_1.blabf = TRUE_;
      findex_1.binff = prsvec_1.prso;
      cevent_1.ctick[cindex_1.cevbal - 1] = 3;
      rspeak_(551);
      return ret_val;
  
  L700:
      if (prsvec_1.prsa == vindex_1.unboaw && findex_1.binff != 0 && (
  	    rooms_1.rflag[play_1.here - 1] & RLAND) != 0) {
  	cevent_1.ctick[cindex_1.cevbal - 1] = 3;
      }
      goto L10;
  
  } /* ballop_ */
  