SUBROUTINE MYSTER(MX,MISS,IFIRE,ISCORE) COMMON /BLK0/MYS,MYSX,I3,I4 COMMON /BLK4/IDIRN D TYPE *,' MYSTER' IF (MYS.EQ.1) GOTO 20 !Already one on the go IDIRN=1-2*INT(RAN(I3,I4)+.5) IF (RAN(I3,I4).LT.0.995) GOTO 20 !.5% chance of mystery MYS=1 !Let it go MYSX=76 IF (IDIRN.EQ.-1) MYSX=4 20 IF (MYS.EQ.0) GOTO 30 !No mystery MYSX=MYSX-IDIRN !Move it across CALL POSITN(MYSX,22) !Set position IF (MYSX.LT.4.OR.MYSX.GT.76) GOTO 40 !Reached LHS WRITE(5,10) !Draw craft IF (IFIRE.EQ.0) GOTO 30 !No missile go back STL=ABS(FLOAT(MX-MYSX)) IF (STL.LE.3.5) GOTO 60 !HIT GOTO 30 !No 60 IF (MISS+1.EQ.22) GOTO 61 IF (MISS-1.EQ.22) GOTO 61 IF (MISS.EQ.22) GOTO 61 IF (MISS.NE.22) GOTO 30 CALL POSITN(MX,MISS+1) WRITE(5,102) 102 FORMAT('$ ') 61 CALL POSITN(MYSX,22) !We've got it WRITE(5,50) !rub it out CALL EXPLOD(MYSX+IDIRN,22) !Blow it up X=RAN(I3,I4) !get random score IX=25*INT(X*10)+50 DO 100 I=1,50 !Flash Score on & off CALL POSITN(MYSX,22) WRITE(5,70)IX CALL POSITN(MYSX,22) WRITE(5,50) 100 CONTINUE ISCORE=ISCORE+IX !Increase Score MYS=0 !End of craft GOTO 30 40 WRITE(5,50) !at edge so erase it MYS=0 30 RETURN C C Format for Mystery C 10 FORMAT('$ <=> ') 50 FORMAT('$ ') 70 FORMAT('$ ',I3) END