SUBROUTINE DSTROY(INDX) # # THIS SUBROUTINE IS CALLED WHEN A BOMB REACHES THE 21ST ROW. # IT DETERMINES THE STATE OF THE SITE AT THAT LOCATION, AND # DESTROYS IT IF STILL ALIVE. DESTRUCTION IS DISPLAYED IN TWO PHASES. # THE FIRST IS AN EXPLOSION, AND THE SECOND IS THE DESTROYED SITE. # IMPLICIT INTEGER (A-Z) INCLUDE SY:MISSIL.CMN INCLUDE SY:UVT100.DAT BYTE INDX DIMENSION SITEY(9) DATA SITEY / 2,7,11,15,19,24,28,32,36 / CALL UVT100(CUP,21,SITEY(INDX)) # # IF THE SITE IS 'ALIVE', SET IT TO 'EXPLODE', AND SET A COUNTER TO # TELL WHEN TO SET IT TO 'DESTROYED'. DISPLAY THE EXPLOSION. # IF (STATE(INDX) == 1) [ #SITE IS ALIVE STATE(INDX) = 2 #SET IT TO 'EXPLODE' IF (INDX == 1 .OR. INDX == 5 .OR. INDX == 9) [ #SITE IS MISSILE BASE DSTIME(INDX) = TIMER + 1 #SET 'DESTROY' DISPLAY TIME OUTBUF(LEN+1) = SPACE OUTBUF(LEN+2) = DIMOND OUTBUF(LEN+3) = DIMOND OUTBUF(LEN+4) = SPACE LEN = LEN + 4 CALL UVT100(CUP,22,SITEY(INDX)) #DISPLAY EXPLOSION OUTBUF(LEN+1) = ULCOR OUTBUF(LEN+2) = HORIZ OUTBUF(LEN+3) = HORIZ OUTBUF(LEN+4) = URCOR LEN = LEN + 4 CALL UVT100(CUP,23,SITEY(INDX)) OUTBUF(LEN+1) = TUP OUTBUF(LEN+2) = HORIZ OUTBUF(LEN+3) = HORIZ OUTBUF(LEN+4) = TUP LEN = LEN + 4 IF (INDX == 1) [ #DELETE REMAINING MISSILES LMSLCT = 0 #AT THIS MISSILE BASE DO I = 2,11 LN24(I) = SPACE ] ELSE IF (INDX == 5) [ CMSLCT = 0 DO I = 36,45 LN24(I) = SPACE ] ELSE [ RMSLCT = 0 DO I = 70,79 LN24(I) = SPACE ] CALL UVT100(CUP,24,1) DO I = 1,80 OUTBUF(LEN+I) = LN24(I) LEN = LEN + 80 ] ELSE [ #SITE IS A CITY DSTIME(INDX) = TIMER + 3 #SET 'DESTROY' DISPLAY TIME OUTBUF(LEN+1) = SPACE OUTBUF(LEN+2) = DIMOND OUTBUF(LEN+3) = SPACE #DISPLAY EXPLOSION LEN = LEN + 3 DO I = 0,2 LN21(SITEY(INDX)+I) = SPACE CALL UVT100(CUP,22,SITEY(INDX)) DO I = 1,3 OUTBUF(LEN+I) = DIMOND LEN = LEN + 3 DO I = 0,2 LN22(SITEY(INDX)+I) = SPACE CALL UVT100(CUP,23,SITEY(INDX)) OUTBUF(LEN+1) = HORIZ OUTBUF(LEN+2) = TUP OUTBUF(LEN+3) = HORIZ LEN = LEN + 3 DO I = 0,2 LN23(SITEY(INDX)+I) = TUP ] ] ELSE IF (STATE(INDX) == 2) [ #STATE IS 'EXPLODE' STATE(INDX) = 3 #SET STATE TO 'DESTROYED' DSTIME(INDX) = 0 #CLEAR 'DESTROY DISPLAY TIME IF (INDX == 1 .OR. INDX == 5 .OR. INDX == 9) [ #SITE IS MISSILE BASE DO I = 1,4 OUTBUF(LEN+I) = SPACE LEN = LEN + 4 CALL UVT100(CUP,22,SITEY(INDX)) #DISPLAY DESTROYED OUTBUF(LEN+1) = ULCOR OUTBUF(LEN+2) = HORIZ OUTBUF(LEN+3) = HORIZ OUTBUF(LEN+4) = URCOR LEN = LEN + 4 CALL UVT100(CUP,23,SITEY(INDX)) OUTBUF(LEN+1) = TUP OUTBUF(LEN+2) = HORIZ OUTBUF(LEN+3) = HORIZ OUTBUF(LEN+4) = TUP LEN = LEN + 4 ] ELSE [ #SITE IS A CITY DO I = 1,3 OUTBUF(LEN+I) = SPACE #DISPLAY DESTROYED LEN = LEN + 3 CALL UVT100(CUP,22,SITEY(INDX)) DO I = 1,3 OUTBUF(LEN+I) = SPACE LEN = LEN + 3 CALL UVT100(CUP,23,SITEY(INDX)) DO I = 1,3 OUTBUF(LEN+I) = TUP LEN = LEN + 3 ] ] RETURN END