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 WRITE (5,100) SPACE,DIMOND,DIMOND,SPACE CALL UVT100(CUP,22,SITEY(INDX)) #DISPLAY EXPLOSION WRITE (5,100) ULCOR,HORIZ,HORIZ,URCOR CALL UVT100(CUP,23,SITEY(INDX)) WRITE (5,100) TUP,HORIZ,HORIZ,TUP 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) WRITE (5,100) LN24 ] ELSE [ #SITE IS A CITY DSTIME(INDX) = TIMER + 3 #SET 'DESTROY' DISPLAY TIME WRITE (5,100) SPACE,DIMOND,SPACE #DISPLAY EXPLOSION DO I = 0,2 LN21(SITEY(INDX)+I) = SPACE CALL UVT100(CUP,22,SITEY(INDX)) WRITE (5,100) DIMOND,DIMOND,DIMOND DO I = 0,2 LN22(SITEY(INDX)+I) = SPACE CALL UVT100(CUP,23,SITEY(INDX)) WRITE (5,100) HORIZ,TUP,HORIZ 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 WRITE (5,100) SPACE,SPACE,SPACE,SPACE CALL UVT100(CUP,22,SITEY(INDX)) #DISPLAY DESTROYED WRITE (5,100) ULCOR,HORIZ,HORIZ,URCOR CALL UVT100(CUP,23,SITEY(INDX)) WRITE (5,100) TUP,HORIZ,HORIZ,TUP ] ELSE [ #SITE IS A CITY WRITE (5,100) SPACE,SPACE,SPACE #DISPLAY DESTROYED CALL UVT100(CUP,22,SITEY(INDX)) WRITE (5,100) SPACE,SPACE,SPACE CALL UVT100(CUP,23,SITEY(INDX)) WRITE (5,100) TUP,TUP,TUP ] ] RETURN 100 FORMAT (80A1) END