'=========================================================================== ' Subject: SOLAR STRIKE V1.0 Date: 06-01-99 (09:35) ' Author: Paul Crosland Code: QB, QBasic, PDS ' Origin: xflare@hotmail.com Packet: GAMES.ABC '=========================================================================== 'Solar Strike V1.0 'Copyright (c) 1998 XFlareSoft 'This game was designed and programmed by Paul Crosland DECLARE SUB DELAY () DECLARE SUB BOSSLASER () DECLARE SUB DRAWFLAME () DECLARE SUB ENEMYSHOT () DECLARE SUB FIRELASER () DECLARE SUB HITESHIP () DECLARE SUB HITPSHIP () DECLARE SUB INTRO () DECLARE SUB NPMOVEMENT () DECLARE SUB PODEFFECTS () DECLARE SUB ACTENEMY () DECLARE SUB ACTPOD () DECLARE SUB BEGINPLAY () DECLARE SUB BOSSLASER () DECLARE SUB BOSSPWR () DECLARE SUB CLEARKEYS () DECLARE SUB DRAWFLAME () DECLARE SUB ENDGAME () DECLARE SUB ENEMYSHOT () DECLARE SUB FIRELASER () DECLARE SUB GAMESET () DECLARE SUB HITESHIP () DECLARE SUB HITPSHIP () DECLARE SUB INTRO () DECLARE SUB LEVELSET () DECLARE SUB MASKFONT () DECLARE SUB NPMOVEMENT () DECLARE SUB PLACEOBJECTS () DECLARE SUB PLAYCHANGES () DECLARE SUB PLAYERCOMMAND () DECLARE SUB PODEFFECTS () DECLARE SUB SCORE () DECLARE SUB STARS () DECLARE SUB STARTLEVEL () DECLARE SUB STATISTICS () DECLARE SUB SOUNDEFFECTS () DECLARE SUB TITLESCREEN () DECLARE SUB VICTORY () DEFINT A-Z DIM SHARED pship(500), mpship(500), warship(800), mwarship(800), eship(500) DIM SHARED meship(500), flare(400), mflare(400) DIM SHARED lifepod(50), pointpod(50), nukepod(50), sppod(50), weaponpod(50) DIM SHARED fieldpod(50), mpod(50), podtype$(5), xpodmove(5), ypodmove(5) DIM SHARED tpod(5), bkpod(5), fpod(5), bpod(5) DIM SHARED marrow(50), arrow(50), xlv(5), ylv(5) DIM SHARED xstar(50), ystar(50), starsp(50), starlook(50) DIM SHARED xeshot(300), yeshot(300), efiring$(300), teshot(300) DIM SHARED bkeshot(300), feshot(300), beshot(300), yeshotmove(300) DIM SHARED xbfire(7), ybfire(7), bkblw(7), fblw(7) DIM SHARED blwstatus$(7), firing$(10), firestart$(10), xfire(10), yfire(10) DIM SHARED fshot(10), bkshot(10), tshot(10), bshot(10) DIM SHARED yeplmove(300), xeplmove(300), eshipstatus$(300), teship(300) DIM SHARED beship(300), feship(300), bkeship(300), etime(300) DIM SHARED xflaremove(200), ftime(200), yflaremove(200), flarestatus$(200) DIM SHARED fflare(200), tflare(200), bkflare(200), bflare(200) DIM SHARED xstflaremove(200), fdir(200) DIM SHARED xtline1(138), xtline2(138), ytline1(138), ytline2(138) DIM SHARED xmline1(41), ymline1(41), xmline2(41), ymline2(41) DIM SHARED sdigit(6), hsdigit(6), shipdigit(2) DIM SHARED lC(50), lE(50), lH(50), lI(50), lO(50), lP(50), lR(50), lS(50) DIM SHARED lX(50), mlC(50), mlE(50), mlH(50), mlI(50), mlO(50), mlP(50) DIM SHARED mlR(50), mlS(50), mlX(50) DIM SHARED n1(50), n2(50), n3(50), n4(50), n5(50), n6(50), n7(50), n8(50) DIM SHARED n9(50), n0(50), mn1(50), mn2(50), mn3(50), mn4(50), mn5(50) DIM SHARED mn6(50), mn7(50), mn8(50), mn9(50), mn0(50) COMMON SHARED xpplmove, ypplmove, bkpwing, bpwing, tpwing COMMON SHARED fpwing, bphead, fphead, tphead, bkphead COMMON SHARED plstat$, pshipsp COMMON SHARED shotnum, lasertype$, fieldstatus, fieldenergy, fieldtime# COMMON SHARED firedelay, losedelay, infodelay, time, gamestatus$ COMMON SHARED levnum, wintime, starttime, showmission$ COMMON SHARED tflame#, bflame#, starplacement$, startype$ COMMON SHARED escr1, escr2, maxenum, minenum, enumtotal1, enumtotal2 COMMON SHARED enumtotal3, enum, ehit$ COMMON SHARED fscr1, fscr2, maxfnum, minfnum, flnumtotal1, flnumtotal2 COMMON SHARED flnumtotal3, fboss, bkboss, tboss, bboss, bfiring$ COMMON SHARED bfirestart$, bossenergy, bosshit$, bossstatus$, xbossmove COMMON SHARED ybossmove, clearallkeys$, select1$, snumtotal, pnumtotal COMMON SHARED effect$, gamesound$, code$, special$, c1, c2, dif$, exsp COMMON SHARED startime, stardir, lcolor, pcolor RANDOMIZE TIMER SCREEN 7, 0, 2, 0: CLS : COLOR 15, 0 enumtotal1 = 98: enumtotal2 = 235: enumtotal3 = 271 flnumtotal1 = 40: flnumtotal2 = 158: flnumtotal3 = 196 snumtotal = 10: pnumtotal = 5 FOR find = 1 TO 180 READ X, y PSET (X, y), 13 NEXT find PAINT (1, 20), 5, 13 FOR find = 1 TO 37 READ X, y PSET (X, y), 13 NEXT find FOR find = 1 TO 11 READ X1, Y1, X2, Y2 LINE (X1, Y1)-(X2, Y2), 13 NEXT find FOR find = 1 TO 8 READ X1, Y1, X2, Y2 LINE (X1, Y1)-(X2, Y2), 15 NEXT find GET (0, 0)-(31, 40), warship: CLS FOR find = 1 TO 84 READ X, y PSET (X, y), 15 NEXT find FOR find = 1 TO 21 READ X1, Y1, X2, Y2 LINE (X1, Y1)-(X2, Y2), 15 NEXT find GET (0, 0)-(31, 40), mwarship: CLS FOR find = 1 TO 22 READ X, y PSET (X, y), 8 NEXT find PAINT (1, 1), 7, 8 FOR find = 1 TO 3 READ X, y PSET (X, y), 15 NEXT find GET (0, 0)-(7, 7), arrow: CLS FOR find = 1 TO 18 READ X, y PSET (X, y), 15 NEXT find GET (0, 0)-(7, 7), marrow: CLS FOR find = 1 TO 78 READ X, y PSET (X, y), 8 NEXT find PAINT (2, 1), 7, 8 PAINT (3, 6), 7, 8 PAINT (11, 6), 7, 8 FOR find = 1 TO 30 READ X, y PSET (X, y), 15 NEXT find GET (0, 0)-(19, 14), pship: CLS FOR find = 1 TO 109 READ X, y PSET (X, y), 15 NEXT find GET (0, 0)-(19, 14), mpship: CLS FOR find = 1 TO 58 READ X, y PSET (X, y), 8 NEXT find PAINT (2, 1), 7, 8 FOR find = 1 TO 10 READ X, y PSET (X, y), 15 NEXT find GET (0, 0)-(9, 14), eship: CLS FOR find = 1 TO 44 READ X, y PSET (X, y), 15 NEXT find GET (0, 0)-(9, 14), meship: CLS FOR find = 1 TO 56 READ X, y PSET (X, y), 14 NEXT find PAINT (1, 2), 15, 14 GET (0, 0)-(9, 19), flare: CLS FOR find = 1 TO 58 READ X, y PSET (X, y), 15 NEXT find GET (0, 0)-(9, 19), mflare: CLS FOR find = 1 TO 24 READ X, y PSET (X, y), 5 NEXT find FOR find = 1 TO 28 READ X, y PSET (X, y), 13 NEXT find FOR find = 1 TO 16 READ X, y PSET (X, y), 5 NEXT find GET (0, 0)-(9, 9), lifepod: CLS FOR find = 1 TO 24 READ X, y PSET (X, y), 5 NEXT find FOR find = 1 TO 24 READ X, y PSET (X, y), 13 NEXT find FOR find = 1 TO 20 READ X, y PSET (X, y), 5 NEXT find GET (0, 0)-(9, 9), pointpod: CLS FOR find = 1 TO 24 READ X, y PSET (X, y), 5 NEXT find FOR find = 1 TO 24 READ X, y PSET (X, y), 13 NEXT find FOR find = 1 TO 20 READ X, y PSET (X, y), 5 NEXT find GET (0, 0)-(9, 9), nukepod: CLS FOR find = 1 TO 24 READ X, y PSET (X, y), 5 NEXT find FOR find = 1 TO 27 READ X, y PSET (X, y), 13 NEXT find FOR find = 1 TO 17 READ X, y PSET (X, y), 5 NEXT find GET (0, 0)-(9, 9), sppod: CLS FOR find = 1 TO 24 READ X, y PSET (X, y), 5 NEXT find FOR find = 1 TO 28 READ X, y PSET (X, y), 13 NEXT find FOR find = 1 TO 16 READ X, y PSET (X, y), 5 NEXT find GET (0, 0)-(9, 9), weaponpod: CLS FOR find = 1 TO 24 READ X, y PSET (X, y), 5 NEXT find FOR find = 1 TO 28 READ X, y PSET (X, y), 13 NEXT find FOR find = 1 TO 16 READ X, y PSET (X, y), 5 NEXT find GET (0, 0)-(9, 9), fieldpod: CLS FOR find = 1 TO 32 READ X, y PSET (X, y), 15 NEXT find GET (0, 0)-(9, 9), mpod: CLS FOR enum = 1 TO enumtotal3 READ etime, yeplmove etime(enum) = etime yeplmove(enum) = yeplmove NEXT enum FOR flnum = 1 TO flnumtotal1 READ ftime, xstflaremove ftime(flnum) = ftime xstflaremove(flnum) = xstflaremove fdir(flnum) = -5 NEXT flnum FOR flnum = flnumtotal1 + 1 TO flnumtotal3 READ ftime, xstflaremove, fdir ftime(flnum) = ftime xstflaremove(flnum) = xstflaremove fdir(flnum) = fdir NEXT flnum FOR find = 1 TO 138 READ X1, Y1, X2, Y2 xtline1(find) = X1 ytline1(find) = Y1 xtline2(find) = X2 ytline2(find) = Y2 NEXT find FOR lnum = 1 TO 41 READ X1, Y1, X2, Y2 xmline1(lnum) = X1: xmline2(lnum) = X2 ymline1(lnum) = Y1: ymline2(lnum) = Y2 NEXT lnum CALL MASKFONT gamestatus$ = "noplay" gamesound$ = "active" startime = 0: stardir = 1 FOR num = 1 TO 6 hsdigit(num) = 0 NEXT num DO WHILE gamestatus$ <> "startplay" IF gamestatus$ = "noplay" THEN CALL TITLESCREEN: CALL GAMESET IF gamestatus$ = "intro" THEN CALL INTRO IF gamestatus$ = "exit" THEN SCREEN 7, 0, 0, 0: CLS : END WEND CALL LEVELSET: CALL STARTLEVEL DO time1# = TIMER SCREEN 7, 0, 1, 0: CLS CALL CLEARKEYS: CALL STARS IF gamestatus$ = "play" THEN CALL ACTENEMY: CALL NPMOVEMENT IF plstat$ = "active" THEN CALL PLAYERCOMMAND bpwing = ypplmove + 14 fpwing = xpplmove + 14 tpwing = ypplmove bkpwing = xpplmove fphead = xpplmove + 19 bkphead = xpplmove + 15 bphead = ypplmove + 9 tphead = ypplmove + 5 CALL HITPSHIP CALL PODEFFECTS END IF CALL FIRELASER IF bossstatus$ <> "nonactive" THEN CALL BOSSLASER ehit$ = "sunflare": CALL HITESHIP: CALL ENEMYSHOT CALL PLACEOBJECTS IF plstat$ = "destroyed" THEN losedelay = losedelay + 1 IF firedelay < 4 AND firedelay > 0 THEN firedelay = firedelay + 1 ELSEIF firedelay = 4 THEN firedelay = 0 END IF CALL PLAYCHANGES time = time + 1 IF bosshit$ = "yes" THEN bosshit$ = "no" ELSEIF gamestatus$ = "startplay" AND select1$ = CHR$(32) THEN gamestatus$ = "play" ELSEIF gamestatus$ = "startplay" THEN CALL BEGINPLAY END IF CALL DRAWFLAME: CALL STATISTICS IF bossstatus$ = "active1" OR bossstatus$ = "active2" THEN CALL BOSSPWR PCOPY 1, 0 IF losedelay = 25 OR gamestatus$ = "leveldone" THEN EXIT DO IF gamestatus$ = "noplay" THEN EXIT DO DO: LOOP UNTIL TIMER - time1# > .02 LOOP IF startype$ = "nomove" THEN startype$ = "normal" IF plstat$ = "destroyed" THEN shipdigit(1) = shipdigit(1) - 1 IF INSTR(code$, "forever") > 0 THEN lasertype$ = "super" pshipsp = 5 fieldstatus = 1: fieldenergy = 6: fieldtime# = 0 gamestatus$ = "startplay" losedelay = 0 ELSE pshipsp = 2 fieldenergy = 0: fieldstatus = 0 gamestatus$ = "startplay" lasertype$ = "standard" losedelay = 0 END IF IF shipdigit(1) < 0 AND shipdigit(2) = 0 THEN CALL ENDGAME ELSEIF shipdigit(1) < 0 THEN shipdigit(1) = 9 AND shipdigit(2) = shipdigit(2) - 1 END IF END IF IF gamestatus$ = "leveldone" THEN levnum = levnum + 1: gamestatus$ = "startplay" showmission$ = "yes": starttime = 0 IF levnum = 4 THEN CALL VICTORY: gamestatus$ = "noplay" END IF LOOP DATA 0,0, 0,4, 0,17, 0,20, 0,23, 0,36, 0,40, 1,1, 1,2, 1,4, 1,18, 1,19, 1,21 DATA 1,22, 1,36, 1,38, 1,39, 2,1, 2,3, 2,4, 2,8, 2,18, 2,22, 2,32, 2,36, 2,37 DATA 2,39, 3,0, 3,5, 3,6, 3,8, 3,16, 3,17, 3,23, 3,24, 3,32, 3,34, 3,35, 3,40 DATA 4,1, 4,7, 4,8, 4,12, 4,15, 4,25, 4,28, 4,32, 4,33, 4,39, 5,1, 5,9, 5,10 DATA 5,12, 5,15, 5,25, 5,28, 5,30, 5,31, 5,39, 6,0, 6,11, 6,12, 6,15, 6,25 DATA 6,28, 6,29, 6,40, 7,1, 7,13, 7,14, 7,26, 7,27, 7,39, 8,1, 8,39, 9,0 DATA 9,40, 10,1, 10,39, 11,1, 11,39, 12,0, 12,40, 13,1, 13,39, 14,1, 14,39 DATA 15,0, 15,40, 16,0, 16,40, 17,1, 17,39, 18,1, 18,39, 19,0, 19,40, 20,1 DATA 20,39, 21,1, 21,39, 22,0, 22,40, 23,1, 23,39, 24,1, 24,13, 24,14, 24,26 DATA 24,27, 24,39, 25,0, 25,11, 25,12, 25,15, 25,25, 25,28, 25,29, 25,40 DATA 26,1, 26,9, 26,10, 26,16, 26,24, 26,30, 26,31, 26,39 DATA 27,1, 27,7, 27,8, 27,17, 27,23, 27,32, 27,33, 27,39, 28,0, 28,5, 28,6 DATA 28,16, 28,24, 28,34, 28,35, 28,40, 29,1, 29,3, 29,4, 29,13, 29,14, 29,15 DATA 29,25, 29,26, 29,27, 29,36, 29,37, 29,39, 30,1, 30,2, 30,14, 30,18 DATA 30,19, 30,20, 30,21, 30,22, 30,26, 30,38, 30,39, 31,0, 31,15, 31,16 DATA 31,17, 31,23, 31,24, 31,25,31,40, 8,14,23,14, 5,20,18,20, 8,26,23,26 DATA 3,19, 3,20, 3,21, 4,18, 4,22, 5,17, 5,23, 6,19, 6,21, 7,18, 7,22, 8,17 DATA 8,23, 9,16, 9,24, 10,15, 10,25, 19,19, 19,21, 20,18, 20,22, 21,17, 21,23 DATA 22,16, 22,19, 22,21, 22,24, 23,15, 23,20, 23,25, 24,20, 25,18, 25,22 DATA 26,19, 26,21, 27,20, 28,20, 5,4,26,4, 7,7,24,7, 9,11,22,11, 8,14,23,14 DATA 11,17,18,17, 6,20,18,20, 11,23,19,23, 8,26,23,26, 9,29,22,29, 7,33,24,33 DATA 5,36,26,36, 7,3,24,3, 9,6,22,6, 11,10,20,10, 13,16,16,16, 13,24,16,24 DATA 11,30,20,30, 9,34,22,34, 7,37,24,37, 0,1, 0,2, 0,3, 0,18, 0,19, 0,21 DATA 0,22, 0,37, 0,38, 0,39, 1,0, 1,3, 1,37, 1,40, 2,0, 2,5, 2,6, 2,7, 2,33 DATA 2,34, 2,35, 2,40, 3,7, 3,33, 4,0, 4,9, 4,10, 4,11, 4,13, 4,14, 4,26 DATA 4,27, 4,29, 4,30, 4,31, 4,40, 5,0, 5,11, 5,13, 5,14, 5,26, 5,27, 5,29 DATA 5,40, 6,13, 6,14, 6,26, 6,27, 7,0, 7,40, 8,0, 8,40, 10,0, 10,40, 11,0 DATA 11,40, 13,0, 13,40, 14,0, 14,40, 17,0, 17,40, 18,0, 18,40, 20,0, 20,40 DATA 21,0, 21,40, 23,0, 23,40, 24,0, 24,40, 25,13, 25,14, 25,26, 25,27, 26,0 DATA 26,40, 27,0, 27,40, 29,0, 29,40, 30,0, 30,40, 0,5,0,16, 0,24,0,35 DATA 1,5,1,17, 1,23,1,35, 2,9,2,17, 2,23,2,31, 3,9,3,15, 3,25,3,31 DATA 26,11,26,15, 26,25,26,29, 27,9,27,16, 27,24,27,31, 28,7,28,15 DATA 28,25,28,33, 29,5,29,12, 29,28,29,35, 30,3,30,13, 30,27,30,37 DATA 31,1,31,14, 31,18,31,22, 31,26,31,39 DATA 0,0, 0,1, 0,2, 0,3, 0,4, 0,5, 0,6, 0,7, 1,0, 1,7, 2,0, 2,7, 3,1, 3,6 DATA 4,1, 4,6, 5,2, 5,5, 6,2, 6,5, 7,3, 7,4, 2,5, 3,4, 4,3 DATA 3,0, 3,7, 4,0, 4,7, 5,0, 5,1, 5,6, 5,7, 6,0, 6,1, 6,6, 6,7, 7,0, 7,1 DATA 7,2, 7,5, 7,6, 7,7 DATA 0,0, 0,4, 0,10, 0,14, 1,0, 1,1, 1,4, 1,5, 1,9, 1,10, 1,13, 1,14, 2,0 DATA 2,2, 2,5, 2,6, 2,8, 2,9, 2,12, 2,14 DATA 3,0, 3,3, 3,5, 3,7, 3,9, 3,11, 3,14, 4,0, 4,4, 4,10, 4,14, 5,1, 5,5 DATA 5,9, 5,13, 6,2, 6,6, 6,7, 6,8, 6,12, 7,2, 7,12, 8,1, 8,13, 9,0, 9,14 DATA 10,0, 10,6, 10,7, 10,8, 10,14 DATA 11,0, 11,5, 11,9, 11,14, 12,1, 12,4, 12,10, 12,13, 13,1, 13,3, 13,5 DATA 13,9, 13,11, 13,13, 14,2, 14,5, 14,9, 14,12, 15,5, 15,9, 16,5, 16,9 DATA 17,6, 17,8, 18,6, 18,8, 19,7, 4,2, 4,6, 4,8, 4,12, 5,3, 5,7, 5,11, 6,4 DATA 6,10, 7,5, 7,9, 8,5, 8,7, 8,9, 9,4, 9,6, 9,8, 9,10, 10,3, 10,11, 11,2 DATA 11,7, 11,12, 12,6, 12,7, 12,8, 13,7, 14,7, 15,7, 16,7 DATA 0,1, 0,2, 0,3, 0,5, 0,6, 0,7, 0,8, 0,9, 0,11, 0,12, 0,13, 1,2, 1,3 DATA 1,6, 1,7, 1,8, 1,11, 1,12, 2,3, 2,4, 2,7, 2,10, 2,11, 3,4, 3,10, 5,0 DATA 5,14, 6,0, 6,1, 6,13, 6,14, 7,0, 7,1, 7,13, 7,14, 8,0, 8,14 DATA 12,0, 12,14, 13,0, 13,4, 13,10, 13,14, 14,0, 14,1, 14,3, 14,4, 14,10 DATA 14,11, 14,13, 14,14, 15,0, 15,1, 15,2, 15,3, 15,4, 15,10, 15,11, 15,12 DATA 15,13, 15,14, 16,0, 16,1, 16,2, 16,3, 16,4, 16,10, 16,11, 16,12, 16,13 DATA 16,14, 17,0, 17,1, 17,2, 17,3, 17,4, 17,5, 17,9, 17,10, 17,11, 17,12 DATA 17,13, 17,14, 18,0, 18,1, 18,2, 18,3, 18,4, 18,5, 18,9, 18,10, 18,11 DATA 18,12, 18,13, 18,14, 19,0, 19,1, 19,2, 19,3, 19,4, 19,5, 19,6, 19,8 DATA 19,9, 19,10, 19,11, 19,12, 19,13, 19,14, 0,0, 0,7, 0,14, 1,0, 1,1, 1,7 DATA 1,13, 1,14, 2,0, 2,2, 2,3, 2,6, 2,7, 2,8, 2,11, 2,12, 2,14, 3,0, 3,4 DATA 3,6, 3,8, 3,10, 3,14, 4,0, 4,5, 4,9, 4,14, 5,0, 5,14, 6,0, 6,4, 6,5 DATA 6,9, 6,10, 6,14, 7,0, 7,2, 7,3, 7,6, 7,8, 7,11, 7,12, 7,14, 8,0, 8,1 DATA 8,5, 8,9, 8,13, 8,14, 9,0, 9,4, 9,5, 9,6, 9,7, 9,8, 9,9, 9,10, 9,14 DATA 4,2, 4,7, 4,12, 5,2, 5,7, 5,12, 6,7, 7,7, 8,6, 8,8 DATA 0,2, 0,2, 0,3, 0,4, 0,5, 0,6, 0,8 ,0,9, 0,10, 0,11, 0,12, 0,13, 1,2 DATA 1,3, 1,4, 1,5, 1,6, 1,8, 1,9, 1,10, 1,11, 1,12, 2,4, 2,5, 2,9, 2,10 DATA 3,5, 3,9, 7,4, 7,5, 7,9, 7,10, 8,2, 8,3, 8,4, 8,10, 8,11, 8,12, 9,1 DATA 9,2, 9,3, 9,11, 9,12, 9,13, 0,2, 0,3, 0,11, 0,17, 1,1, 1,4, 1,5, 1,10 DATA 1,12, 1,17, 1,18, 2,2, 2,6, 2,9, 2,12, 2,16, 2,19, 3,1, 3,2, 3,7, 3,8 DATA 3,13, 3,16, 3,19, 4,0, 4,13, 4,15, 4,18, 5,0, 5,14, 5,18, 6,1, 6,19 DATA 7,0, 7,3, 7,9, 7,10, 7,17, 7,18, 8,0, 8,2, 8,4, 8,5, 8,8, 8,10, 8,13 DATA 8,14, 8,16, 9,0, 9,1, 9,6, 9,7, 9,11, 9,12, 9,15, 9,16 DATA 0,0, 0,1, 0,4, 0,5, 0,6, 0,7, 0,8, 0,9, 0,10, 0,12, 0,13, 0,14, 0,15 DATA 0,16, 0,18, 0,19, 1,0, 1,6, 1,7, 1,8, 1,9, 1,13, 1,14, 1,15, 1,16 DATA 1,19, 2,0, 2,1, 2,7, 2,8, 2,13, 2,14, 2,15, 3,0, 3,14, 3,15, 4,14 DATA 4,19, 5,19, 6,0, 7,19, 8,3, 8,9, 8,17, 8,18, 8,19, 9,2, 9,3, 9,4, 9,5 DATA 9,8, 9,9, 9,10, 9,13, 9,14, 9,17, 9,18, 9,19, 0,4, 0,5, 1,2, 1,3, 1,6 DATA 1,7, 2,1, 2,8, 3,1, 3,8, 4,0, 4,9, 5,0, 5,9, 6,1, 6,8, 7,1, 7,8, 8,2 DATA 8,3, 8,6, 8,7, 9,4, 9,5, 1,4, 1,5, 2,2, 2,3, 2,4, 2,5, 2,6, 2,7, 4,1 DATA 4,8, 5,1, 5,2, 5,3, 5,4, 5,5, 5,8, 6,2, 6,3, 6,4, 6,5, 7,2, 7,3, 7,4 DATA 7,5, 8,4, 8,5, 7,6, 7,7, 3,2, 3,3, 3,4, 3,5, 3,6, 3,7, 4,2, 4,3, 4,4 DATA 4,5, 4,6, 4,7, 5,6, 5,7, 6,6, 6,7, 0,4, 0,5, 1,2, 1,3, 1,6, 1,7, 2,1 DATA 2,8, 3,1, 3,8, 4,0, 4,9, 5,0, 5,9, 6,1, 6,8, 7,1, 7,8, 8,2, 8,3, 8,6 DATA 8,7, 9,4, 9,5, 1,4, 1,5, 2,2, 2,3, 2,4, 2,5, 2,6, 2,7, 3,2, 4,1, 4,8 DATA 5,1, 5,4, 5,6, 5,7, 5,8, 6,6, 6,7, 7,2, 7,5, 7,6, 7,7, 8,4, 8,5 DATA 3,3, 3,4, 3,5, 3,6, 3,7, 4,2, 4,3, 4,4, 4,5, 4,6, 4,7, 5,2, 5,3, 5,5 DATA 6,2, 6,3, 6,4, 6,5, 7,3, 7,4, 0,4, 0,5, 1,2, 1,3, 1,6, 1,7, 2,1, 2,8 DATA 3,1, 3,8, 4,0, 4,9, 5,0, 5,9, 6,1, 6,8, 7,1, 7,8, 8,2, 8,3, 8,6, 8,7 DATA 9,4, 9,5, 1,4, 1,5, 2,2, 2,7, 3,2, 3,7, 4,1, 4,2, 4,5, 4,6, 4,7, 4,8 DATA 5,1, 5,2, 5,3, 5,6, 5,7, 5,8, 6,2, 6,7, 7,2, 7,7, 8,4, 8,5 DATA 2,3, 2,4, 2,5, 2,6, 3,3, 3,4, 3,5, 3,6, 4,3, 4,4, 5,4, 5,5, 6,3, 6,4 DATA 6,5, 6,6, 7,3, 7,4, 7,5, 7,6, 0,4, 0,5, 1,2, 1,3, 1,6, 1,7, 2,1, 2,8 DATA 3,1, 3,8, 4,0, 4,9, 5,0, 5,9, 6,1, 6,8, 7,1, 7,8, 8,2, 8,3, 8,6, 8,7 DATA 9,4, 9,5, 1,4, 1,5, 2,2, 2,3, 2,4, 2,5, 2,6, 2,7, 3,4, 3,5, 4,1, 4,6 DATA 4,8, 5,1, 5,3, 5,8, 6,2, 6,4, 6,7, 7,2, 7,3, 7,4, 7,5, 7,6, 7,7, 8,4 DATA 8,5, 3,2, 3,3, 3,6, 3,7, 4,2, 4,3, 4,4, 4,5, 4,7, 5,2, 5,4, 5,5, 5,6 DATA 5,7, 6,3, 6,5, 6,6, 0,4, 0,5, 1,2, 1,3, 1,6, 1,7, 2,1, 2,8, 3,1, 3,8 DATA 4,0, 4,9, 5,0, 5,9, 6,1, 6,8, 7,1, 7,8, 8,2, 8,3, 8,6, 8,7, 9,4, 9,5 DATA 1,4, 1,5, 2,2, 2,6, 2,7, 3,2, 3,3, 3,4, 3,7, 4,1, 4,2, 4,6, 4,7, 4,8 DATA 5,1, 5,2, 5,6, 5,7, 5,8, 6,2, 6,3, 6,4, 6,7, 7,2, 7,6, 7,7, 8,4, 8,5 DATA 2,3, 2,4, 2,5, 3,5, 3,6, 4,3, 4,4, 4,5, 5,3, 5,4, 5,5, 6,5, 6,6, 7,3 DATA 7,4, 7,5, 0,4, 0,5, 1,2, 1,3, 1,6, 1,7, 2,1, 2,8, 3,1, 3,8, 4,0, 4,9 DATA 5,0, 5,9, 6,1, 6,8, 7,1, 7,8, 8,2, 8,3, 8,6, 8,7, 9,4, 9,5 DATA 1,4, 1,5, 2,2, 2,3, 2,4, 2,5, 2,6, 2,7, 4,1, 4,8, 5,1, 5,3, 5,5, 5,6 DATA 5,7, 5,8, 6,3, 6,5, 6,6, 6,7, 7,2, 7,3, 7,4, 7,5, 7,6, 7,7, 8,4, 8,5 DATA 3,2, 3,3, 3,4, 3,5, 3,6, 3,7, 4,2, 4,3, 4,4, 4,5, 4,6, 4,7, 5,2, 5,4 DATA 6,2, 6,4, 0,0, 0,1, 0,2, 0,3, 0,6, 0,7, 0,8, 0,9, 1,0, 1,1, 1,8, 1,9 DATA 2,0, 2,9, 3,0, 3,9, 6,0, 6,9, 7,0, 7,9, 8,0, 8,1, 8,8, 8,9, 9,0, 9,1 DATA 9,2, 9,3, 9,6, 9,7, 9,8, 9,9 DATA 160,73, 210,33, 260,113, 300,93, 400,133, 410,133, 420,133, 470,33 DATA 480,33, 490,33, 590,73, 600,53, 600,93, 650,13, 660,33, 670,53, 720,133 DATA 730,133, 740,133, 790,33, 840,73, 840,93, 840,113, 890,13, 910,53 DATA 930,73, 940,73, 950,73, 970,33, 990,133 DATA 1040,33, 1050,33, 1070,93, 1080,93, 1100,73, 1110,73, 1130,13, 1140,13 DATA 1190,53, 1190,73, 1190,93 DATA 1230,133, 1250,13, 1300,53, 1300,93, 1310,73, 1360,53, 1360,93, 1370,73 DATA 1410,33, 1430,133, 1450,73 DATA 1820,93, 1820,53, 1830,73, 1850,33, 1870,133, 1880,113, 1890,93 DATA 1980,53, 1990,73, 2000,33 DATA 2020,73, 2030,73, 2040,73, 2060,13, 2070,13, 2080,13, 2100,133 DATA 2110,133, 2120,133 DATA 2170,53, 2170,93, 2180,73, 2220,73, 2280,13, 2280,33, 2280,53, 2280,73 DATA 2280,93, 2280,113, 2280,133 DATA 2510,53, 2510,93, 2520,73, 2540,133, 2550,133, 2570,13, 2580,13 DATA 2600,73, 2610,73, 2630,113, 2640,113, 2660,33, 2670,33, 2700,73 DATA 2750,53, 2800,93 DATA 270,93, 280,73, 280,113, 290,53, 290,133, 360,33, 360,153, 370,53 DATA 370,133, 380,113, 380,73 DATA 430,33, 430,93, 430,153, 440,33, 440,93, 440,153, 450,33, 450,93 DATA 450,153, 500,73, 500,113, 510,73, 510,113, 520,73, 520,113 DATA 570,53, 570,133, 580,33, 580,153, 620,93, 630,93, 650,33, 650,153 DATA 660,33, 660,153 DATA 700,153, 710,153, 720,153, 880,133, 890,113, 890,133, 890,153, 940,133 DATA 950,113, 950,133, 950,153, 1000,133, 1010,113, 1010,133, 1010,153 DATA 1310,53, 1320,53, 1330,53, 1350,33, 1350,73, 1360,33, 1360,73, 1440,53 DATA 1450,53, 1460,53, 1760,93, 1770,93, 1820,133, 1830,133, 1840,133 DATA 1860,53, 1870,53, 1880,53, 1900,133, 1910,133, 1920,133 DATA 1970,93, 1980,73, 1980,113, 1990,53, 1990,133, 2040,93, 2050,73 DATA 2050,113, 2060,53, 2060,133, 2110,93, 2120,73, 2120,113, 2130,53 DATA 2130,133, 2180,93, 2190,93, 2200,93, 2220,53, 2230,53, 2240,53 DATA 2510,53, 2520,53, 2530,53, 2580,33, 2580,73, 2590,33, 2590,73, 2600,33 DATA 2600,73, 2940,93, 2950,93, 2970,73, 2980,73, 3000,113, 3010,113 DATA 3030,93, 3040,93, 3090,53, 3090,133, 3100,73, 3100,113, 3110,93 DATA 3160,53, 3160,133, 3170,73, 3170,113, 3180,93, 3230,53, 3230,133 DATA 3240,73, 3240,113, 3250,93 DATA 3300,93, 3310,93, 3330,73, 3340,73, 3360,53, 3370,53, 3390,153 DATA 3400,153, 3420,133, 3430,133, 3450,113, 3460,113 DATA 160,73, 160,93, 160,113, 180,73, 180,93, 180,113, 200,73, 200,93 DATA 200,113, 220,93, 230,93, 240,93, 260,93, 270,93, 280,93, 300,93 DATA 310,93, 320,93 DATA 340,73, 340,113, 350,73, 350,113, 360,73, 360,113, 380,73, 380,113 DATA 390,73, 390,113, 400,73, 400,113, 420,73, 420,113, 430,73, 430,113 DATA 440,73, 440,113 DATA 1610,288, 1630,256, 1650,224, 1670,192, 1690,160, 1710,128, 1730,96 DATA 1750,64, 1770,32, 1940,192, 1960,128, 2130,224, 2130,96, 2150,160 DATA 2200,256, 2200,64, 2240,292, 2260,96 DATA 2330,192, 2330,64, 2350,224, 2350,96, 2370,160, 2380,256, 2390,128 DATA 2410,32, 2410,224, 2410,160, 2430,256, 2450,128 DATA 2450,160, 2450,64, 2470,192, 2490,256, 2490,32, 2540,128, 2540,92 DATA 2600,160, 2600,128, 2610,128 DATA 160,288,-5, 160,288,5, 180,224,-5, 180,224,5, 200,160,-5, 200,160,5 DATA 220,96,-5, 220,96,5, 240,32,-5, 240,32,5 DATA 340,256,-5, 340,256,5, 340,192,-5, 340,192,5, 340,128,-5, 340,128,5 DATA 40,64,-5, 340,64,5 DATA 450,224,-5, 450,96,-5, 450,160,-5, 630,288,-5, 640,224,-5, 650,160,-5 DATA 660,96,-5, 670,32,-5, 680,288,5, 690,224,5, 700,160,5, 710,96,5 DATA 720,32,5 DATA 1050,160,-5, 1050,160,5, 1090,224,5, 1090,96,-5, 1140,256,5 DATA 1140,160,-5, 1140,64,5 DATA 1170,160,-5, 1170,160,5, 1200,224,-5, 1200,96,5, 1230,192,5 DATA 1230,128,5, 1260,256,-5, 1260,64,-5, 1260,160,-5, 1290,256,5 DATA 1290,256,-5, 1290,160,-5, 1290,160,5, 1290,64,-5, 1290,64,5 DATA 1520,160,5, 1540,224,-5, 1540,96,-5, 1560,288,5, 1560,32,5 DATA 1600,256,-5, 1600,192,5, 1600,128,-5, 1620,160,-5, 1640,64,5 DATA 1660,256,-5, 1680,160,-5 DATA 2300,192,5, 2300,192,-5, 2300,128,5, 2300,128,-5, 2350,256,5 DATA 2350,256,-5, 2350,160,5, 2350,160,-5, 2350,64,5, 2350,64,-5 DATA 2400,288,-5, 2400,256,-5, 2420,224,-5, 2420,192,-5, 2440,160,-5 DATA 2440,128,-5, 2460,96,-5, 2460,64,-5 DATA 2600,160,5, 2620,224,5, 2620,96,-5, 2640,256,-5, 2650,128,5 DATA 2650,96,5, 2670,32,-5, 2670,192,5, 2690,224,-5, 2710,128,5 DATA 2710,288,5, 2710,288,-5, 2730,96,5, 2750,160,-5, 2770,256,5 DATA 2770,256,-5, 2790,64,-5, 2790,288,-5, 2810,160,-5, 2810,32,-5 DATA 2830,256,5, 2830,128,-5, 2850,32,-5, 2870,96,-5, 2870,224,5 DATA 2890,256,5, 2890,160,5 DATA 3510,160,-5, 3510,160,5, 3560,256,-5, 3560,256,5, 3560,64,-5 DATA 3560,64,5, 3560,160,-5, 3560,160,5 DATA 600,288,5, 600,288,-5, 620,256,5, 620,256,-5, 640,224,5, 640,224,-5 DATA 660,192,5, 660,192,-5, 680,160,5, 680,160,-5, 700,128,5, 700,128,-5 DATA 720,96,5, 720,96,-5, 740,64,5, 740,64,-5, 760,32,5, 760,32,-5 DATA 820,160,5, 900,128,-5, 900,192,-5, 1050,64,5, 1080,224,-5, 1180,96,5 DATA 1180,160,5, 1190,192,-5, 1260,32,-5, 1300,128,5, 1350,160,-5 DATA 1370,128,5, 1440,160,-5, 1440,96,5, 1470,224,-5, 1480,64,5, 1490,128,5 DATA 1560,160,-5, 1580,192,5, 1600,224,-5 DATA 55,61,55,69, 55,69,72,69, 72,69,72,48, 72,48,61,48, 61,48,61,36 DATA 61,36,66,36, 66,36,66,40, 66,40,72,40, 72,40,72,31, 72,31,55,31 DATA 55,31,55,53, 55,53,66,53, 66,53,66,64, 66,64,61,64, 61,64,61,61 DATA 61,61,55,61 DATA 74,69,91,69, 91,69,91,48, 91,48,74,48, 74,48,74,69, 80,64,85,64 DATA 85,64,85,53, 85,53,80,53, 80,53,80,64 DATA 93,69,110,69, 110,69,110,64, 110,64,99,64, 99,64,99,48, 99,48,93,48 DATA 93,48,93,69 DATA 112,69,118,69, 118,69,118,62, 118,62,123,62, 123,62,123,69 DATA 123,69,129,69, 129,69,129,48, 129,48,112,48, 112,48,112,69 DATA 118,57,123,57, 123,57,123,53, 123,53,118,53, 118,53,118,57 DATA 131,69,137,69, 137,69,137,62, 137,62,139,62, 139,62,139,69 DATA 139,69,148,69, 148,69,148,64, 148,64,145,64, 145,64,145,62 DATA 145,62,148,62, 148,62,148,48, 148,48,131,48, 131,48,131,69 DATA 137,57,142,57, 142,57,142,53, 142,53,137,53, 137,53,137,57 DATA 150,61,150,69, 150,69,167,69, 167,69,167,48, 167,48,156,48 DATA 156,48,156,36, 156,36,161,36, 161,36,161,40, 161,40,167,40 DATA 167,40,167,31, 167,31,150,31, 150,31,150,53, 150,53,161,53 DATA 161,53,161,64, 161,64,156,64, 156,64,156,61, 156,61,150,61 DATA 175,69,181,69, 181,69,181,53, 181,53,186,53, 186,53,186,48 DATA 186,48,169,48, 169,48,169,53, 169,53,175,53, 175,53,175,69 DATA 188,69,194,69, 194,69,194,62, 194,62,196,62, 196,62,196,69 DATA 196,69,205,69, 205,69,205,64, 205,64,202,64, 202,64,202,62 DATA 202,62,205,62, 205,62,205,48, 205,48,188,48, 188,48,188,69 DATA 194,57,199,57, 199,57,199,53, 199,53,194,53, 194,53,194,57 DATA 207,69,224,69, 224,69,224,64, 224,64,218,64, 218,64,218,53 DATA 218,53,224,53, 224,53,224,48, 224,48,207,48, 207,48,207,53 DATA 207,53,212,53, 212,53,212,64, 212,64,207,64, 207,64,207,69 DATA 226,69,232,69, 232,69,232,62, 232,62,234,62, 234,62,234,69 DATA 234,69,243,69, 243,69,243,64, 243,64,240,64, 240,64,240,53 DATA 240,53,243,53, 243,53,243,48, 243,48,234,48, 234,48,234,56 DATA 234,56,232,56, 232,56,232,48, 232,48,226,48, 226,48,226,69 DATA 245,69,262,69, 262,69,262,64, 262,64,250,64, 250,64,250,61 DATA 250,61,256,61, 256,61,256,56, 256,56,250,56, 250,56,250,53 DATA 250,53,262,53, 262,53,262,48, 262,48,245,48, 245,48,245,69 DATA 52,90,175,80, 175,80,180,83, 180,83,186,90, 186,90,184,96 DATA 184,96,195,110, 195,110,192,115,192,115,210,125, 210,125,212,130 DATA 212,130,220,135, 220,135,235,148 DATA 267,75,195,80, 195,80,193,82, 193,82,196,90, 196,90,206,93 DATA 206,93,214,98, 214,98,232,103, 232,103,229,98, 229,98,232,96 DATA 232,96,238,101, 238,101,244,99 DATA 244,99,250,103, 250,103,246,107, 246,107,238,108, 238,108,231,110 DATA 231,110,225,108, 225,108,216,106, 216,106,210,104, 210,104,202,99 DATA 202,99,199,98, 199,98,195,97 DATA 195,97,203,104, 203,104,207,110, 207,110,206,114, 206,114,216,120 DATA 216,120,219,125, 219,125,225,127, 225,127,232,131, 232,131,238,136 DATA 238,136,249,134, 249,134,256,137, 256,137,267,139 DEFSNG A-Z SUB ACTENEMY DEFINT A-Z check$ = "yes" FOR enum = minenum TO maxenum IF etime(enum) > time THEN EXIT FOR IF etime(enum) = time AND eshipstatus$(enum) = "nonactive" THEN escr2 = enum: eshipstatus$(enum) = "active" END IF IF etime(enum) + 155 > time AND check$ = "yes" THEN escr1 = enum: check$ = "no" END IF NEXT enum check$ = "yes" FOR flnum = minfnum TO maxfnum IF ftime(flnum) > time THEN EXIT FOR IF ftime(flnum) = time AND flarestatus$(flnum) = "nonactive" THEN fscr2 = flnum: flarestatus$(flnum) = "active" END IF IF ftime(flnum) + 36 > time AND check$ = "yes" THEN fscr1 = flnum: check$ = "no" END IF NEXT flnum END SUB DEFSNG A-Z SUB ACTPOD DEFINT A-Z IF dif$ <> "insane" THEN SELECT CASE dif$ CASE "easy" comm = 100 CASE "normal" comm = 200 CASE "hard" comm = 450 END SELECT item = INT(RND * comm) + 1 FOR pnum = 1 TO pnumtotal IF podtype$(pnum) = "none" THEN SELECT CASE item CASE 1 podtype$(pnum) = "life" CASE 2 TO 16 podtype$(pnum) = "point" CASE 17 TO 21 podtype$(pnum) = "nuke" CASE 22 TO 28 podtype$(pnum) = "sp" CASE 28 TO 32 podtype$(pnum) = "weapon" CASE 33 TO 35 podtype$(pnum) = "field" END SELECT IF podtype$(pnum) <> "none" THEN xpodmove(pnum) = xeplmove(enum): ypodmove(pnum) = yeplmove(enum) + 3 EXIT FOR END IF END IF NEXT pnum END IF END SUB DEFSNG A-Z SUB BEGINPLAY DEFINT A-Z SELECT CASE infodelay CASE 1 TO 5 COLOR 15: LOCATE 13, 14: PRINT "PRESS" LOCATE 13, 20: PRINT "SPACEBAR" infodelay = infodelay + 1 CASE 6 TO 9 infodelay = infodelay + 1 CASE 10 infodelay = 1 END SELECT END SUB DEFSNG A-Z SUB BOSSLASER DEFINT A-Z IF bfiring$ = "yes" THEN IF bfirestart$ = "yes" THEN effect$ = "bosslaser": CALL SOUNDEFFECTS ybfire(1) = ybossmove + 4 ybfire(2) = ybossmove + 8 ybfire(3) = ybossmove + 12 ybfire(4) = ybossmove + 28 ybfire(5) = ybossmove + 32 ybfire(6) = ybossmove + 36 ybfire(7) = ybossmove + 20 xbfire(1) = xbossmove - 2 xbfire(2) = xbossmove xbfire(3) = xbossmove + 2 xbfire(4) = xbossmove + 2 xbfire(5) = xbossmove xbfire(6) = xbossmove - 2 xbfire(7) = xbossmove - 2 FOR shotnum = 1 TO 7: blwstatus$(shotnum) = "active": NEXT shotnum bfirestart$ = "no" END IF bfiring$ = "no" FOR shotnum = 1 TO 7 IF blwstatus$(shotnum) = "active" THEN bkblw(shotnum) = xbfire(shotnum) fblw(shotnum) = xbfire(shotnum) - 5 doso$ = "no" IF plstat$ = "active" THEN IF fpwing >= fblw(shotnum) AND bkpwing <= bkblw(shotnum) THEN IF tpwing <= ybfire(shotnum) AND bpwing >= ybfire(shotnum) THEN doso$ = "yes" END IF END IF IF fphead >= fblw(shotnum) AND bkphead <= bkblw(shotnum) THEN IF tphead <= ybfire(shotnum) AND bphead >= ybfire(shotnum) THEN doso$ = "yes" END IF END IF END IF IF doso$ = "yes" THEN IF fieldenergy > 0 THEN effect$ = "hitfield": CALL SOUNDEFFECTS IF INSTR(code$, "forever") = 0 THEN fieldenergy = fieldenergy - 2: fieldtime# = 0 IF fieldenergy <= 0 THEN fieldstatus = 0 END IF blwstatus$(shotnum) = "nonactive" ELSE effect$ = "hitship": CALL SOUNDEFFECTS plstat$ = "destroyed" EXIT FOR END IF END IF END IF NEXT shotnum FOR shotnum = 1 TO 7 IF blwstatus$(shotnum) = "active" THEN LINE (bkblw(shotnum), ybfire(shotnum))-(fblw(shotnum), ybfire(shotnum)), 13 xbfire(shotnum) = xbfire(shotnum) - 6 * exsp IF bkblw(shotnum) < 0 THEN blwstatus$(shotnum) = "nonactive" bfiring$ = "yes" END IF NEXT shotnum END IF END SUB DEFSNG A-Z SUB BOSSPWR DEFINT A-Z LINE (109, 186)-(211, 195), 14, B IF bossenergy < 100 THEN LINE (110 + bossenergy, 186)-(110 + bossenergy, 194), 14 PAINT (210, 194), 14, 14 END IF IF bossenergy > 0 THEN PAINT (110, 194), 2, 14 LINE (109, 186)-(211, 195), 1, B END SUB DEFSNG A-Z SUB CLEARKEYS DEFINT A-Z select1$ = INKEY$ IF clearallkeys$ = "yes" THEN select1$ = "0": clearallkeys$ = "no" END IF FOR times = 1 TO 14 select2$ = INKEY$ NEXT times END SUB DEFSNG A-Z SUB DRAWFLAME DEFINT A-Z flamestatus$ = "drawing" yline1 = INT(RND * 8) xline1 = 0 DO IF flamestatus$ = "drawing" THEN yline2 = INT(RND * 8) xline2 = INT(RND * 10) + 5 + xline1 IF xline2 > 319 THEN xline2 = 319 IF tflame# > 0 THEN LINE (xline1, yline1 + tflame#)-(xline2, yline2 + tflame#), c1 END IF IF bflame# > 0 THEN LINE (xline1, yline1 + 192 - bflame#)-(xline2, yline2 + 192 - bflame#), c1 END IF yline1 = yline2 xline1 = xline2 END IF IF xline2 = 319 THEN flamestatus$ = "finished" LOOP UNTIL flamestatus$ = "finished" IF bflame# > 0 THEN PAINT (0, 199), c2, c1 IF tflame# > 0 THEN PAINT (0, 0), c2, c1 END SUB DEFSNG A-Z SUB ENDGAME DEFINT A-Z DO time1# = TIMER SCREEN 7, 0, 1, 0: CLS clearallkeys$ = "yes": CALL CLEARKEYS: CALL STARS LOCATE 13, 16: PRINT "GAME": LOCATE 13, 21: PRINT "OVER" PCOPY 1, 0 enddelay = enddelay + 1 DO: LOOP UNTIL TIMER - time1# > .02 LOOP UNTIL enddelay = 150 enddelay = 0 gamestatus$ = "noplay" END SUB DEFSNG A-Z SUB ENEMYSHOT DEFINT A-Z FOR enum = escr1 TO escr2 IF eshipstatus$(enum) = "active" AND efiring$(enum) = "no" THEN SELECT CASE dif$ CASE "easy" comm = 70 CASE "normal" comm = 30 CASE "hard", "insane" comm = 10 END SELECT efire = (RND * comm) IF efire = 0 THEN efiring$(enum) = "yes" yeshotmove(enum) = (RND * 3) - 1 xeshot(enum) = feship(enum) - 2 yeshot(enum) = teship(enum) + 7 effect$ = "projectile": CALL SOUNDEFFECTS END IF END IF IF efiring$(enum) = "yes" THEN feshot(enum) = xeshot(enum) - 1 bkeshot(enum) = xeshot(enum) + 1 teshot(enum) = yeshot(enum) - 1 beshot(enum) = yeshot(enum) + 1 END IF IF feshot(enum) < 0 THEN efiring$(enum) = "no" doso$ = "no" IF plstat$ = "active" AND efiring$(enum) = "yes" THEN IF fpwing >= feshot(enum) AND bkpwing <= bkeshot(enum) THEN IF tpwing <= beshot(enum) AND bpwing >= teshot(enum) THEN doso$ = "yes" END IF END IF END IF IF plstat$ = "active" AND efiring$(enum) = "yes" THEN IF fphead >= feshot(enum) AND bkphead <= bkeshot(enum) THEN IF tphead <= beshot(enum) AND bphead >= teshot(enum) THEN doso$ = "yes" END IF END IF END IF IF doso$ = "yes" THEN IF fieldstatus = 0 THEN effect$ = "hitship": CALL SOUNDEFFECTS plstat$ = "destroyed" ELSE effect$ = "hitfield": CALL SOUNDEFFECTS IF INSTR(code$, "forever") = 0 THEN fieldenergy = fieldenergy - 1: fieldtime# = 0 IF fieldenergy = 0 THEN fieldstatus = 0 END IF efiring$(enum) = "no" END IF IF efiring$(enum) = "yes" THEN CIRCLE (xeshot(enum), yeshot(enum)), 1, 10 PSET (xeshot(enum), yeshot(enum)), 10 xeshot(enum) = xeshot(enum) - 3 * exsp yeshot(enum) = yeshot(enum) + yeshotmove(enum) END IF NEXT enum END SUB DEFSNG A-Z SUB FIRELASER DEFINT A-Z FOR shotnum = 1 TO snumtotal IF firing$(shotnum) = "yes" THEN IF firestart$(shotnum) = "yes" THEN effect$ = "yourlaser": CALL SOUNDEFFECTS yfire(shotnum) = ypplmove + 7 xfire(shotnum) = fphead + 2 firestart$(shotnum) = "no" END IF SELECT CASE lasertype$ CASE "standard" bkshot(shotnum) = xfire(shotnum): fshot(shotnum) = xfire(shotnum) + 5 bshot(shotnum) = yfire(shotnum): tshot(shotnum) = yfire(shotnum) CASE "double" bkshot(shotnum) = xfire(shotnum): fshot(shotnum) = xfire(shotnum) + 5 bshot(shotnum) = yfire(shotnum) + 1: tshot(shotnum) = yfire(shotnum) - 1 CASE "pulse" bkshot(shotnum) = xfire(shotnum): fshot(shotnum) = xfire(shotnum) + 5 bshot(shotnum) = yfire(shotnum) + 2: tshot(shotnum) = yfire(shotnum) - 2 CASE "super" bkshot(shotnum) = xfire(shotnum): fshot(shotnum) = xfire(shotnum) + 5 bshot(shotnum) = yfire(shotnum) + 6: tshot(shotnum) = yfire(shotnum) - 6 END SELECT ehit$ = "laser": CALL HITESHIP IF bossstatus$ = "active1" OR bossstatus$ = "active2" THEN doso$ = "no" IF fshot(shotnum) >= fboss AND bkshot(shotnum) <= bkboss THEN IF bshot(shotnum) >= tboss AND tshot(shotnum) <= bboss THEN doso$ = "yes" END IF END IF IF doso$ = "yes" THEN IF bosshit$ = "no" THEN bosshit$ = "yes": bossenergy = bossenergy - 1 IF bossenergy > 0 THEN effect$ = "hitobject": CALL SOUNDEFFECTS ELSEIF bossenergy = 0 THEN bossstatus$ = "destroyed": wintime = time + 50 effect$ = "hitship": CALL SOUNDEFFECTS sdigit(4) = sdigit(4) + 7: CALL SCORE END IF firing$(shotnum) = "no" firestart$(shotnum) = "yes" END IF END IF END IF IF firing$(shotnum) = "yes" THEN SELECT CASE lasertype$ CASE "standard" LINE (bkshot(shotnum), tshot(shotnum))-(fshot(shotnum), tshot(shotnum)), 11 CASE "double" LINE (bkshot(shotnum), tshot(shotnum))-(fshot(shotnum), tshot(shotnum)), 11 LINE (bkshot(shotnum), bshot(shotnum))-(fshot(shotnum), bshot(shotnum)), 11 CASE "pulse" CIRCLE (xfire(shotnum) + 2, yfire(shotnum)), 2, 11 PAINT (xfire(shotnum) + 2, yfire(shotnum)), 11, 11 CASE "super" CIRCLE (bkshot(shotnum) + 3, tshot(shotnum) + 3), 2, 11 PAINT (bkshot(shotnum) + 3, tshot(shotnum) + 3), 11, 11 CIRCLE (bkshot(shotnum) + 3, bshot(shotnum) - 3), 2, 11 PAINT (bkshot(shotnum) + 3, bshot(shotnum) - 3), 11, 11 END SELECT xfire(shotnum) = xfire(shotnum) + 6 IF bkshot(shotnum) > 319 THEN firing$(shotnum) = "no": firestart$(shotnum) = "yes" END IF END IF END IF NEXT shotnum END SUB DEFSNG A-Z SUB GAMESET DEFINT A-Z starttime = 0 starplacement$ = "yes" showmission$ = "yes" special$ = "yes" IF dif$ = "insane" THEN exsp = 1.5 ELSE exsp = 1 END IF IF INSTR(code$, "finale") > 0 THEN levnum = 3 special$ = "no" ELSE levnum = 1 END IF IF INSTR(code$, "fleet") > 0 THEN shipdigit(1) = 9: shipdigit(2) = 9 special$ = "no" ELSE shipdigit(1) = 3: shipdigit(2) = 0 END IF IF INSTR(code$, "forever") > 0 THEN lasertype$ = "super" pshipsp = 5 fieldstatus = 1: fieldenergy = 6: fieldtime# = 0 special$ = "no" ELSE lasertype$ = "standard" pshipsp = 2 fieldstatus = 0 END IF IF INSTR(code$, "oceanstar") > 0 THEN c1 = 3: c2 = 9 ELSE c1 = 4: c2 = 12 END IF FOR num = 1 TO 6 sdigit(num) = 0 NEXT num END SUB DEFSNG A-Z SUB HITESHIP DEFINT A-Z FOR enum = escr1 TO escr2 IF ehit$ = "laser" THEN doso$ = "no" IF eshipstatus$(enum) = "active" AND fshot(shotnum) >= feship(enum) THEN IF bkshot(shotnum) <= bkeship(enum) AND bshot(shotnum) >= teship(enum) THEN IF tshot(shotnum) <= beship(enum) THEN doso$ = "yes" END IF END IF END IF IF doso$ = "yes" THEN effect$ = "hitobject": CALL SOUNDEFFECTS IF lasertype$ <> "pulse" AND lasertype$ <> "super" THEN firing$(shotnum) = "no": firestart$(shotnum) = "yes" END IF eshipstatus$(enum) = "destroyed" sdigit(3) = sdigit(3) + 1 CALL SCORE: CALL ACTPOD END IF END IF IF ehit$ = "sunflare" THEN FOR flnum = fscr1 TO fscr2 doso$ = "no" IF eshipstatus$(enum) = "active" AND flarestatus$(flnum) = "active" THEN IF fflare(flnum) <= bkeship(enum) AND bkflare(flnum) >= feship(enum) THEN IF bflare(flnum) >= teship(enum) AND tflare(flnum) <= beship(enum) THEN doso$ = "yes" END IF END IF END IF IF doso$ = "yes" THEN effect$ = "hitobject": CALL SOUNDEFFECTS eshipstatus$(enum) = "destroyed" END IF NEXT flnum END IF NEXT enum END SUB DEFSNG A-Z SUB HITPSHIP DEFINT A-Z FOR enum = escr1 TO escr2 doso$ = "no" IF plstat$ = "active" AND eshipstatus$(enum) = "active" THEN IF fpwing >= feship(enum) AND bkpwing <= bkeship(enum) THEN IF tpwing <= beship(enum) AND bpwing >= teship(enum) THEN doso$ = "yes" END IF END IF END IF IF plstat$ = "active" AND eshipstatus$(enum) = "active" THEN IF fphead >= feship(enum) AND bkphead <= bkeship(enum) THEN IF tphead <= beship(enum) AND bphead >= teship(enum) THEN doso$ = "yes" END IF END IF END IF IF doso$ = "yes" THEN IF fieldenergy > 0 THEN effect$ = "hitobject": CALL SOUNDEFFECTS IF INSTR(code$, "forever") = 0 THEN fieldenergy = fieldenergy - 2: fieldtime# = 0 IF fieldenergy <= 0 THEN fieldstatus = 0 eshipstatus$(enum) = "destroyed" sdigit(3) = sdigit(3) + 1 CALL SCORE ELSE effect$ = "hitship": CALL SOUNDEFFECTS plstat$ = "destroyed" END IF END IF NEXT enum FOR flnum = fscr1 TO fscr2 doso$ = "no" IF plstat$ = "active" AND flarestatus$(flnum) = "active" THEN IF fpwing >= fflare(flnum) AND bkpwing <= bkflare(flnum) THEN IF tpwing <= bflare(flnum) AND bpwing >= tflare(flnum) THEN doso$ = "yes" END IF END IF END IF IF plstat$ = "active" AND flarestatus$(flnum) = "active" THEN IF fphead >= fflare(flnum) AND bkphead <= bkflare(flnum) THEN IF tphead <= bflare(flnum) AND bphead >= tflare(flnum) THEN doso$ = "yes" END IF END IF END IF IF doso$ = "yes" THEN IF fieldenergy > 0 THEN effect$ = "hitobject": CALL SOUNDEFFECTS IF INSTR(code$, "forever") = 0 THEN fieldenergy = fieldenergy - 2: fieldtime# = 0 IF fieldenergy <= 0 THEN fieldstatus = 0 flarestatus$(flnum) = "destroyed" sdigit(3) = sdigit(3) + 5 CALL SCORE ELSE effect$ = "hitship": CALL SOUNDEFFECTS plstat$ = "destroyed" END IF END IF NEXT flnum doso$ = "no" IF plstat$ = "active" AND bflame# > 0 AND bpwing >= 192 - bflame# THEN doso$ = "yes" END IF IF plstat$ = "active" AND tflame# > 0 AND tpwing <= 7 + tflame# THEN doso$ = "yes" END IF IF doso$ = "yes" THEN effect$ = "hitship": CALL SOUNDEFFECTS plstat$ = "destroyed" END IF IF bossstatus$ = "active1" OR bossstatus$ = "active2" THEN doso$ = "no" IF plstat$ = "active" AND fpwing >= fboss AND bkpwing <= bkboss THEN IF tpwing <= bboss AND bpwing >= tboss THEN doso$ = "yes" END IF END IF IF plstat$ = "active" AND fphead >= fboss AND bkphead <= bkboss THEN IF tphead <= bboss AND bphead >= tboss THEN doso$ = "yes" END IF END IF IF doso$ = "yes" THEN effect$ = "hitship": CALL SOUNDEFFECTS plstat$ = "destroyed" END IF END IF END SUB DEFSNG A-Z SUB INTRO DEFINT A-Z display = 1 clearallkeys$ = "yes" starplacement$ = "yes": startype$ = "warpsp" DO time1# = TIMER SCREEN 7, 0, 1, 0: CLS CALL CLEARKEYS: CALL STARS yship1 = 13 + INT(RND * 3) - 1: yship2 = 73 + INT(RND * 3) - 1 yship3 = 113 + INT(RND * 3) - 1: yship4 = 33 + INT(RND * 3) - 1 IF display < 8 THEN xship1 = 60: xship2 = 120: xship3 = 180: xship4 = 240 IF display > 7 THEN xship1 = xship1 + 2: xship2 = xship2 + 2 xship3 = xship3 + 2: xship4 = xship4 + 2 IF xship1 < 302 THEN PUT (xship1, yship1), mpship, AND: PUT (xship1, yship1), pship, XOR END IF IF xship2 < 302 THEN PUT (xship2, yship2), mpship, AND: PUT (xship2, yship2), pship, XOR END IF IF xship3 < 302 THEN PUT (xship3, yship3), mpship, AND: PUT (xship3, yship3), pship, XOR END IF IF xship4 < 302 THEN PUT (xship4, yship4), mpship, AND: PUT (xship4, yship4), pship, XOR END IF LOCATE 20, 1: COLOR 10 SELECT CASE display CASE 1 PRINT "In a far away galaxy, violence cripples "; PRINT "two advanced civilizations. The "; PRINT "Celcians, intent on destroying their "; PRINT "peaceful rivals, the Tenacians, have "; PRINT "constructed the most powerful warship "; LOCATE 25, 1: PRINT "since the dawn of time... "; CASE 2 PRINT "Taking nearly thirty years to complete, "; PRINT "it has been sent to Octain, a large red "; PRINT "giant, located several light years from "; PRINT "the Tenacian homeworld of Marudian. If "; PRINT "the ship succeeds in exploding the star,"; LOCATE 25, 1: PRINT "the resulting wave of energy would "; CASE 3 PRINT "easily reach the Tenacian solar system, "; PRINT "eliminating all life in that region. "; PRINT "To accomplish this task, the enemy must "; PRINT "actually enter the star, to reach its "; PRINT "core. Narrow passageways of only several"; LOCATE 25, 1: PRINT "hundred feet in width are the only means"; CASE 4 PRINT "of doing so. It is thought however, that"; PRINT "the ship's shields can withstand the "; PRINT "extreme temperatures of the star itself."; PRINT "You must lead a team of four prototype "; PRINT "fighters through theses fiery tunnels, "; LOCATE 25, 1: PRINT "to find and destroy the enemy ship "; CASE 5 PRINT "before it is too late. Celcian Tri-wings"; PRINT "are thought to be in the area, so expect"; PRINT "to encounter a lot of resistence. As "; PRINT "your squadron races through space to "; PRINT "intercept the enemy, hope of survival "; LOCATE 25, 1: PRINT "bk on your planet diminishes for each "; CASE 6 PRINT "passing second. Only you can change the "; PRINT "almost certain fate of your race, to "; PRINT "complete your mission, and return home. "; PRINT "Succeed, and you will be honoured with "; PRINT "everything your people have to offer. "; LOCATE 25, 1: PRINT "Die, and your battered remains will "; CASE 7 PRINT "drift away into space, to be quickly "; PRINT "absorbed by intense heat and fire, as "; PRINT "your civilization vanishes in less than "; PRINT "a breath. You are the last, and only "; PRINT "hope for the continual existence of our "; LOCATE 25, 1: PRINT "species. The only hope for our lives... "; END SELECT textdelay = textdelay + 1 IF textdelay = 200 THEN display = display + 1: textdelay = 0 PCOPY 1, 0 DO: LOOP UNTIL TIMER - time1# > .02 LOOP UNTIL display = 9 OR select1$ = CHR$(13) IF select1$ = CHR$(13) THEN effect$ = "select": CALL SOUNDEFFECTS gamestatus$ = "noplay" startype$ = "normal" END SUB DEFSNG A-Z SUB LEVELSET DEFINT A-Z time = starttime escr1 = 0: escr2 = 0 fscr1 = 0: fscr2 = 0 IF INSTR(code$, "fullstop") > 0 THEN startype$ = "nomove": special$ = "no" SELECT CASE levnum CASE 1 tflame# = 0: bflame# = 40 minenum = 1: maxenum = enumtotal1 minfnum = 1: maxfnum = flnumtotal1 CASE 2 IF time = 0 THEN tflame# = 1: bflame# = 1 IF time = 1700 THEN tflame# = 41: bflame# = 41 minenum = enumtotal1 + 1: maxenum = enumtotal2 minfnum = flnumtotal1 + 1: maxfnum = flnumtotal2 CASE 3 IF time = 0 THEN tflame# = 41: bflame# = 41 minenum = enumtotal2 + 1: maxenum = enumtotal3 minfnum = flnumtotal2 + 1: maxfnum = flnumtotal3 END SELECT xpplmove = 140: ypplmove = 93 ybossmove = 0: xbossmove = 250 bfiring$ = "no": bosshit$ = "no" bossstatus$ = "nonactive": bossenergy = 100 plstat$ = "active" FOR enum = minenum TO maxenum eshipstatus$(enum) = "nonactive" xeplmove(enum) = 310 efiring$(enum) = "no" NEXT enum FOR flnum = minfnum TO maxfnum flarestatus$(flnum) = "nonactive" IF fdir(flnum) = -5 THEN yflaremove(flnum) = 180 ELSEIF fdir(flnum) = 5 THEN yflaremove(flnum) = 0 END IF xflaremove(flnum) = xstflaremove(flnum) NEXT flnum FOR shotnum = 1 TO snumtotal firestart$(shotnum) = "yes" firing$(shotnum) = "no" NEXT shotnum FOR starnum = 1 TO 50 xstar(starnum) = 319 NEXT starnum FOR pnum = 1 TO pnumtotal podtype$(pnum) = "none" NEXT pnum END SUB DEFSNG A-Z SUB MASKFONT DEFINT A-Z SCREEN 7, 0, 2, 0: CLS : COLOR , 0 COLOR 15: PRINT "C": GET (0, 0)-(7, 7), lC: CLS COLOR 7: PRINT "C" PAINT (0, 0), 15, 7 PAINT (0, 7), 15, 7 PAINT (0, 4), 0, 15 GET (0, 0)-(7, 7), mlC: CLS COLOR 15: PRINT "E": GET (0, 0)-(7, 7), lE: CLS COLOR 7: PRINT "E" PAINT (0, 1), 15, 7 PAINT (0, 7), 15, 7 PAINT (1, 0), 0, 15 GET (0, 0)-(7, 7), mlE: CLS COLOR 15: PRINT "H": GET (0, 0)-(7, 7), lH: CLS COLOR 7: PRINT "H" PAINT (2, 0), 15, 7 PAINT (0, 7), 15, 7 PAINT (0, 0), 0, 15 GET (0, 0)-(7, 7), mlH: CLS COLOR 15: PRINT "I": GET (0, 0)-(7, 7), lI: CLS COLOR 7: PRINT "I" PAINT (0, 0), 15, 7 PAINT (2, 0), 0, 15 GET (0, 0)-(7, 7), mlI: CLS COLOR 15: PRINT "O": GET (0, 0)-(7, 7), lO: CLS COLOR 7: PRINT "O" PAINT (0, 0), 15, 7 PAINT (0, 7), 15, 7 PAINT (3, 3), 15, 7 PAINT (3, 0), 0, 15 GET (0, 0)-(7, 7), mlO: CLS COLOR 15: PRINT "P": GET (0, 0)-(7, 7), lP: CLS COLOR 7: PRINT "P" PAINT (0, 1), 15, 7 PAINT (0, 7), 15, 7 PAINT (3, 1), 15, 7 PAINT (0, 0), 0, 15 GET (0, 0)-(7, 7), mlP: CLS COLOR 15: PRINT "R": GET (0, 0)-(7, 7), lR: CLS COLOR 7: PRINT "R" PAINT (0, 1), 15, 7 PAINT (0, 7), 15, 7 PAINT (3, 1), 15, 7 PAINT (0, 0), 0, 15 GET (0, 0)-(7, 7), mlR: CLS COLOR 15: PRINT "S": GET (0, 0)-(7, 7), lS: CLS COLOR 7: PRINT "S" PAINT (0, 0), 15, 7 PAINT (0, 7), 15, 7 PAINT (0, 4), 15, 7 PAINT (1, 0), 0, 15 GET (0, 0)-(7, 7), mlS: CLS COLOR 15: PRINT "X": GET (0, 0)-(7, 7), lX: CLS COLOR 7: PRINT "X" PAINT (2, 1), 15, 7 PAINT (0, 2), 15, 7 PAINT (7, 2), 15, 7 PAINT (0, 0), 0, 15 GET (0, 0)-(7, 7), mlX: CLS COLOR 15: PRINT "1": GET (0, 0)-(7, 7), n1: CLS COLOR 7: PRINT "1" PAINT (0, 0), 15, 7 PAINT (0, 7), 15, 7 PAINT (3, 0), 0, 15 GET (0, 0)-(7, 7), mn1: CLS COLOR 15: PRINT "2": GET (0, 0)-(7, 7), n2: CLS COLOR 7: PRINT "2" PAINT (0, 0), 15, 7 PAINT (0, 7), 15, 7 PAINT (0, 3), 15, 7 PAINT (3, 0), 0, 15 GET (0, 0)-(7, 7), mn2: CLS COLOR 15: PRINT "3": GET (0, 0)-(7, 7), n3: CLS COLOR 7: PRINT "3" PAINT (0, 0), 15, 7 PAINT (0, 7), 15, 7 PAINT (0, 3), 15, 7 PAINT (2, 0), 0, 15 GET (0, 0)-(7, 7), mn3: CLS COLOR 15: PRINT "4": GET (0, 0)-(7, 7), n4: CLS COLOR 7: PRINT "4" PAINT (0, 0), 15, 7 PAINT (0, 7), 15, 7 PAINT (3, 3), 15, 7 PAINT (3, 1), 0, 15 GET (0, 0)-(7, 7), mn4: CLS COLOR 15: PRINT "5": GET (0, 0)-(7, 7), n5: CLS COLOR 7: PRINT "5" PAINT (0, 4), 15, 7 PAINT (0, 7), 15, 7 PAINT (0, 0), 0, 15 GET (0, 0)-(7, 7), mn5: CLS COLOR 15: PRINT "6": GET (0, 0)-(7, 7), n6: CLS COLOR 7: PRINT "6" PAINT (0, 0), 15, 7 PAINT (0, 7), 15, 7 PAINT (3, 4), 15, 7 PAINT (3, 0), 0, 15 GET (0, 0)-(7, 7), mn6: CLS COLOR 15: PRINT "7": GET (0, 0)-(7, 7), n7: CLS COLOR 7: PRINT "7" PAINT (0, 7), 15, 7 PAINT (0, 0), 0, 15 GET (0, 0)-(7, 7), mn7: CLS COLOR 15: PRINT "8": GET (0, 0)-(7, 7), n8: CLS COLOR 7: PRINT "8" PAINT (0, 0), 15, 7 PAINT (0, 3), 15, 7 PAINT (0, 7), 15, 7 PAINT (3, 1), 15, 7 PAINT (3, 5), 15, 7 PAINT (1, 0), 0, 15 GET (0, 0)-(7, 7), mn8: CLS COLOR 15: PRINT "9": GET (0, 0)-(7, 7), n9: CLS COLOR 7: PRINT "9" PAINT (0, 0), 15, 7 PAINT (0, 7), 15, 7 PAINT (3, 2), 15, 7 PAINT (1, 0), 0, 15 GET (0, 0)-(7, 7), mn9: CLS COLOR 15: PRINT "0": GET (0, 0)-(7, 7), n0: CLS COLOR 7: PRINT "0" PAINT (0, 0), 15, 7 PAINT (0, 7), 15, 7 PAINT (2, 2), 15, 7 PAINT (3, 5), 15, 7 PAINT (1, 0), 0, 15 GET (0, 0)-(7, 7), mn0: CLS END SUB DEFSNG A-Z SUB NPMOVEMENT DEFINT A-Z FOR enum = escr1 TO escr2 IF xeplmove(enum) - 2 < 0 AND eshipstatus$(enum) = "active" THEN eshipstatus$(enum) = "nonactive" END IF IF eshipstatus$(enum) = "active" THEN feship(enum) = xeplmove(enum) bkeship(enum) = xeplmove(enum) + 9 teship(enum) = yeplmove(enum) beship(enum) = yeplmove(enum) + 14 END IF NEXT enum FOR flnum = minfnum TO maxfnum IF flarestatus$(flnum) = "active" THEN fflare(flnum) = xflaremove(flnum) bkflare(flnum) = xflaremove(flnum) + 9 tflare(flnum) = yflaremove(flnum) bflare(flnum) = yflaremove(flnum) + 19 END IF doso$ = "no" IF flarestatus$(flnum) = "active" AND tflare(flnum) + fdir(flnum) < 0 THEN doso$ = "yes" END IF IF flarestatus$(flnum) = "active" AND bflare(flnum) + fdir(flnum) > 199 THEN doso$ = "yes" END IF IF fflare(flnum) - 1 < 0 THEN doso$ = "yes" END IF IF doso$ = "yes" THEN flarestatus$(flnum) = "nonactive" NEXT flnum FOR pnum = 1 TO pnumtotal IF podtype$(pnum) <> "none" THEN tpod(pnum) = ypodmove(pnum) bkpod(pnum) = xpodmove(pnum) + 9 fpod(pnum) = xpodmove(pnum) bpod(pnum) = ypodmove(pnum) + 9 IF xpodmove(pnum) < 0 THEN podtype$(pnum) = "none" END IF NEXT pnum SELECT CASE bossstatus$ CASE "active1" ybossmove = ybossmove + 1 IF ybossmove = 81 THEN bossstatus$ = "active2" CASE "active2" SELECT CASE dif$ CASE "easy" bossaction = 15 CASE "normal" bossaction = 10 CASE "hard", "insane" bossaction = 7 END SELECT action = INT(RND * bossaction) IF ypplmove + 7 >= ybossmove + 20 AND action < 4 THEN ybossmove = ybossmove + 1 ELSEIF ypplmove + 7 <= ybossmove + 20 AND action < 4 THEN ybossmove = ybossmove - 1 ELSEIF action < 5 AND bfiring$ = "no" THEN bfiring$ = "yes" bfirestart$ = "yes" ELSEIF action < 7 AND action > 4 THEN bdir = INT(RND * 2) IF bdir = 0 THEN bdir = -1 ybossmove = ybossmove + bdir END IF END SELECT IF bossstatus$ = "active1" OR bossstatus$ = "active2" THEN fboss = xbossmove bkboss = xbossmove + 31 tboss = ybossmove bboss = ybossmove + 40 END IF END SUB DEFSNG A-Z SUB PLACEOBJECTS DEFINT A-Z FOR pnum = 1 TO pnumtotal IF podtype$(pnum) <> "none" THEN PUT (xpodmove(pnum), ypodmove(pnum)), mpod, AND SELECT CASE podtype$(pnum) CASE "life" PUT (xpodmove(pnum), ypodmove(pnum)), lifepod, XOR CASE "point" PUT (xpodmove(pnum), ypodmove(pnum)), pointpod, XOR CASE "nuke" PUT (xpodmove(pnum), ypodmove(pnum)), nukepod, XOR CASE "sp" PUT (xpodmove(pnum), ypodmove(pnum)), sppod, XOR CASE "weapon" PUT (xpodmove(pnum), ypodmove(pnum)), weaponpod, XOR CASE "field" PUT (xpodmove(pnum), ypodmove(pnum)), fieldpod, XOR END SELECT xpodmove(pnum) = xpodmove(pnum) - 1 END IF NEXT pnum FOR enum = escr1 TO escr2 IF eshipstatus$(enum) = "active" THEN PUT (xeplmove(enum), yeplmove(enum)), meship, AND PUT (xeplmove(enum), yeplmove(enum)), eship, XOR xeplmove(enum) = xeplmove(enum) - 2 END IF NEXT enum FOR flnum = fscr1 TO fscr2 IF flarestatus$(flnum) = "active" THEN PUT (xflaremove(flnum), yflaremove(flnum)), mflare, AND PUT (xflaremove(flnum), yflaremove(flnum)), flare, XOR yflaremove(flnum) = yflaremove(flnum) + fdir(flnum) xflaremove(flnum) = xflaremove(flnum) - 1 END IF NEXT flnum IF plstat$ = "active" THEN IF fieldstatus > 0 THEN SELECT CASE fieldenergy CASE 5 TO 6 fieldtime# = fieldtime# + .5 CASE 3 TO 4 fieldtime# = fieldtime# + 1 CASE 1 TO 2 fieldtime# = fieldtime# + 2 END SELECT CIRCLE (xpplmove + 8, ypplmove + 7), 12 + fieldstatus, 2, , , .78 PAINT (xpplmove + 7, ypplmove + 6), 10, 2 IF fieldtime# = 2 THEN fieldstatus = fieldstatus + 1 IF fieldstatus = 3 THEN fieldstatus = 1 fieldtime# = 0 END IF END IF PUT (xpplmove, ypplmove), mpship, AND PUT (xpplmove, ypplmove), pship, XOR END IF IF bossstatus$ <> "nonactive" AND bossstatus$ <> "destroyed" THEN IF bosshit$ = "no" THEN PUT (xbossmove, ybossmove), mwarship, AND PUT (xbossmove, ybossmove), warship, XOR END IF END IF END SUB DEFSNG A-Z SUB PLAYCHANGES DEFINT A-Z SELECT CASE levnum CASE 1 SELECT CASE time CASE 1530 starttime = 1530 CASE 2980 gamestatus$ = "leveldone" END SELECT CASE 2 SELECT CASE time CASE 1 TO 100 tflame# = tflame# + .2: bflame# = bflame# + .2 CASE 820 TO 860 tflame# = tflame# + 2 CASE 1170 TO 1210 tflame# = tflame# - .5 CASE 1210 TO 1330 tflame# = tflame# - .5: bflame# = bflame# + .5 CASE 1330 TO 1370 bflame# = bflame# + .5 CASE 1500 TO 1540 bflame# = bflame# - .5: tflame# = tflame# + .5 CASE 1540 TO 1620 bflame# = bflame# - .5 CASE 1700 starttime = 1700 CASE 2350 TO 2430 bflame# = bflame# + .5 CASE 2430 TO 2470 bflame# = bflame# + .5: tflame# = tflame# - .5 CASE 2760 TO 2960 bflame# = bflame# - .2: tflame# = tflame# + .2 CASE 2960 TO 3120 bflame# = bflame# - .25: tflame# = tflame# - .25 CASE 3670 gamestatus$ = "leveldone" END SELECT CASE 3 SELECT CASE time CASE wintime IF bossstatus$ = "destroyed" THEN gamestatus$ = "leveldone" CASE 50 TO 150 tflame# = tflame# + .2 bflame# = bflame# + .2 CASE 450 TO 550 tflame# = tflame# - .2 bflame# = bflame# - .2 CASE 810 bossstatus$ = "active1" CASE 810 TO 1010 tflame# = tflame# - .2 bflame# = bflame# + .2 CASE 1010 TO 1410 tflame# = tflame# + .2 bflame# = bflame# - .2 CASE 1410 TO 1610 tflame# = tflame# - .2 bflame# = bflame# + .2 CASE IS > 1610 IF bossstatus$ = "active2" THEN tflame# = tflame# + .1 bflame# = bflame# + .1 END IF END SELECT END SELECT END SUB DEFSNG A-Z SUB PLAYERCOMMAND DEFINT A-Z SELECT CASE select1$ CASE CHR$(0) + CHR$(72) IF tpwing - pshipsp > 9 THEN ypplmove = ypplmove - pshipsp CASE CHR$(0) + CHR$(80) IF bpwing + pshipsp < 190 THEN ypplmove = ypplmove + pshipsp CASE CHR$(0) + CHR$(75) IF bkpwing - pshipsp > 9 THEN xpplmove = xpplmove - pshipsp CASE CHR$(0) + CHR$(77) IF fphead + pshipsp < 310 THEN xpplmove = xpplmove + pshipsp CASE CHR$(32) IF firedelay = 0 THEN FOR shotnum = 1 TO snumtotal IF firing$(shotnum) = "no" THEN firing$(shotnum) = "yes" firedelay = 1 EXIT FOR END IF NEXT shotnum END IF CASE "p", "P" DO: LOOP UNTIL INKEY$ <> "" CASE "S", "s" IF gamesound$ = "active" THEN gamesound$ = "nonactive" ELSEIF gamesound$ = "nonactive" THEN gamesound$ = "active" END IF CASE "Q", "q" gamestatus$ = "noplay" END SELECT END SUB DEFSNG A-Z SUB PODEFFECTS DEFINT A-Z FOR pnum = 1 TO pnumtotal doso$ = "no" IF podtype$(pnum) <> "none" AND fpwing >= fpod(pnum) THEN IF bkpwing <= bkpod(pnum) AND tpwing <= bpod(pnum) THEN IF bpwing >= tpod(pnum) THEN doso$ = "yes" END IF END IF END IF IF podtype$(pnum) <> "none" AND fphead >= fpod(pnum) THEN IF bkphead <= bkpod(pnum) AND tphead <= bpod(pnum) THEN IF bphead >= tpod(pnum) THEN doso$ = "yes" END IF END IF END IF IF doso$ = "yes" THEN effect$ = "pod": CALL SOUNDEFFECTS SELECT CASE podtype$(pnum) CASE "life" effect$ = "life": CALL SOUNDEFFECTS shipdigit(1) = shipdigit(1) + 1 IF shipdigit(1) = 10 THEN shipdigit(1) = 0: shipdigit(2) = shipdigit(2) + 1 END IF IF shipdigit(2) = 10 THEN shipdigit(1) = 9: shipdigit(2) = 9 CASE "point" sdigit(4) = sdigit(4) + 1 CALL SCORE CASE "nuke" FOR enum = escr1 TO escr2 efiring$(enum) = "no" IF eshipstatus$(enum) = "active" THEN eshipstatus$(enum) = "destroyed" sdigit(3) = sdigit(3) + 1 CALL SCORE CALL ACTPOD END IF NEXT enum FOR flnum = fscr1 TO fscr2 IF flarestatus$(flnum) = "active" THEN flarestatus$(flnum) = "destroyed" sdigit(3) = sdigit(3) + 5 CALL SCORE END IF NEXT flnum CASE "sp" pshipsp = pshipsp + 1 IF pshipsp = 6 THEN pshipsp = 5 CASE "weapon" SELECT CASE lasertype$ CASE "standard" lasertype$ = "double" CASE "double" lasertype$ = "pulse" CASE "pulse" lasertype$ = "super" CASE "super" lasertype$ = "super" END SELECT CASE "field" fieldstatus = 1 IF INSTR(code$, "forever") = 0 THEN fieldenergy = 6 ELSE fieldenergy = 400 END IF fieldtime# = 0 END SELECT podtype$(pnum) = "none" END IF NEXT pnum END SUB DEFSNG A-Z SUB SCORE DEFINT A-Z IF sdigit(3) >= 10 THEN sdigit(3) = sdigit(3) - 10: sdigit(4) = sdigit(4) + 1 END IF IF sdigit(4) >= 10 THEN sdigit(4) = sdigit(4) - 10: sdigit(5) = sdigit(5) + 1 effect$ = "life": CALL SOUNDEFFECTS shipdigit(1) = shipdigit(1) + 1 IF shipdigit(1) = 10 THEN shipdigit(1) = 0: shipdigit(2) = shipdigit(2) + 1 END IF IF shipdigit(2) = 10 THEN shipdigit(1) = 9: shipdigit(2) = 9 END IF IF sdigit(5) >= 10 THEN sdigit(5) = sdigit(5) - 10: sdigit(6) = sdigit(6) + 1 END IF IF sdigit(6) >= 10 THEN sdigit(6) = 9: sdigit(5) = 9: sdigit(4) = 9: sdigit(3) = 9 END IF change$ = "no" FOR dnum = 6 TO 3 STEP -1 IF change$ = "no" THEN IF sdigit(dnum) < hsdigit(dnum) THEN EXIT FOR IF sdigit(dnum) > hsdigit(dnum) THEN change$ = "yes" END IF IF change$ = "yes" THEN hsdigit(dnum) = sdigit(dnum) NEXT dnum END SUB DEFSNG A-Z SUB SOUNDEFFECTS DEFINT A-Z IF gamesound$ = "active" THEN SELECT CASE effect$ CASE "yourlaser" PLAY "MB ML L60 O4 C#DE" CASE "projectile" PLAY "MB O3 ML L35 AG" CASE "bosslaser" PLAY "MB O3 ML L35 DEF" CASE "hitobject" PLAY "MB O3 ML L35 FEDG" CASE "hitship" PLAY "MB ML L40 O4 GECA O3 L25 FDB" CASE "life" PLAY "MB O3 L20 GCG" CASE "pod" PLAY "MB O3 L30 CFC" CASE "select" PLAY "MB O5 L50 G" CASE "hitfield" PLAY "MB ML L30 O2 C#DB" END SELECT END IF END SUB DEFSNG A-Z SUB STARS DEFINT A-Z IF stardir = 1 THEN ystarstart = 199: xstarstart = 319 ELSEIF stardir = -1 THEN ystarstart = 0: xstarstart = 319 END IF FOR starnum = 1 TO 50 doso$ = "no" IF starplacement$ = "yes" THEN doso$ = "yes" IF xstar(starnum) - starsp(starnum) * stardir < 0 THEN doso$ = "yes" IF ystar(starnum) - starsp * stardir < 0 THEN doso$ = "yes" IF ystar(starnum) - starsp(starnum) * stardir > 199 THEN doso$ = "yes" IF doso$ = "yes" THEN IF starplacement$ = "yes" THEN start = 3 ELSE start = INT(RND * 3) END IF IF start = 1 OR start = 2 THEN ystar(starnum) = ystarstart: xstar(starnum) = INT(RND * 320) ELSEIF start = 0 THEN ystar(starnum) = INT(RND * 200): xstar(starnum) = xstarstart ELSEIF start = 3 THEN ystar(starnum) = INT(RND * 200): xstar(starnum) = INT(RND * 319) END IF IF startype$ = "warpsp" THEN starsp(starnum) = INT(RND * 3) + 3 IF starsp(starnum) < 4 THEN starlook(starnum) = 1 IF starsp(starnum) > 3 THEN starlook(starnum) = 9 ELSE starsp(starnum) = INT(RND * 3) + 1 IF starsp(starnum) < 2 THEN starlook(starnum) = 1 IF starsp(starnum) > 1 THEN starlook(starnum) = 9 END IF ELSE IF startype$ <> "nomove" THEN xstar(starnum) = xstar(starnum) - starsp(starnum) ystar(starnum) = ystar(starnum) - starsp(starnum) * stardir END IF END IF PSET (xstar(starnum), ystar(starnum)), starlook(starnum) NEXT starnum startime = startime + 1 IF startime = 200 THEN IF stardir = -1 THEN stardir = 1 ELSEIF stardir = 1 THEN stardir = -1 END IF startime = 0 END IF starplacement$ = "no" END SUB DEFSNG A-Z SUB STARTLEVEL DEFINT A-Z starplacement$ = "yes" clearallkeys$ = "yes" infodelay = 1 xlv(1) = 75: ylv(1) = 82: xlv(2) = 184: ylv(2) = 75: xlv(3) = 200: ylv(3) = 114: xlv(4) = 240: ylv(4) = 143 IF showmission$ = "yes" THEN DO time1# = TIMER SCREEN 7, 0, 1, 0: CLS : COLOR 15 CALL CLEARKEYS LOCATE 2, 17: PRINT "STAGE"; levnum LINE (51, 36)-(268, 149), c1, B FOR lnum = 1 TO 41 LINE (xmline1(lnum), ymline1(lnum))-(xmline2(lnum), ymline2(lnum)), c1 NEXT lnum PAINT (267, 138), c2, c1: PAINT (52, 148), c2, c1 LINE (49, 34)-(270, 151), 10, B: LINE (50, 35)-(269, 150), 15, B LINE (51, 36)-(268, 149), 10, B SELECT CASE levnum CASE 1 LOCATE 4, 15: PRINT "SURFACE AREA" COLOR 10: LOCATE 21, 1 PRINT "The surface of Octain is very unstable. "; PRINT "To reach the tunnels, you must lead your"; PRINT "team of fighters some distance across "; PRINT "the star. Good luck! "; CASE 2 LOCATE 4, 13: PRINT "CAVERNS OF FIRE" COLOR 10: LOCATE 21, 1 PRINT "These dangerous passageways must be "; PRINT "travelled along in order to reach the "; PRINT "star's core. Scanners show that the "; PRINT "enemy will soon reach its destination. "; CASE 3 LOCATE 4, 14: PRINT "OCTAIN'S CORE" COLOR 10: LOCATE 21, 1 PRINT "You are nearing the heart of the red "; PRINT "giant. To destroy the star, the enemy "; PRINT "ship will try to detonate an antiproton"; PRINT "bomb. You must intercept it! "; END SELECT FOR num = 1 TO levnum lnum = num - 1 CIRCLE (xlv(num), ylv(num)), 4, 2: PAINT (xlv(num) - 1, ylv(num) - 1), 2, 2 IF num >= 2 THEN LINE (xlv(lnum), ylv(lnum))-(xlv(num), ylv(num)), 2 END IF NEXT num SELECT CASE infodelay CASE 1 TO 10 LINE (xlv(levnum), ylv(levnum))-(xlv(levnum + 1), ylv(levnum + 1)), 2 CIRCLE (xlv(levnum + 1), ylv(levnum + 1)), 4, 2: PAINT (xlv(levnum + 1) - 1, ylv(levnum + 1) - 1), 2, 2 infodelay = infodelay + 1 CASE 11 TO 19 infodelay = infodelay + 1 CASE 20 infodelay = 1 END SELECT PCOPY 1, 0 DO: LOOP UNTIL TIMER - time1# > .02 LOOP UNTIL select1$ = CHR$(13) effect$ = "select": CALL SOUNDEFFECTS END IF showmission$ = "no" infodelay = 1 END SUB DEFSNG A-Z SUB STATISTICS DEFINT A-Z PUT (2, 2), mlS, AND: PUT (2, 2), lS, XOR PUT (10, 2), mlC, AND: PUT (10, 2), lC, XOR PUT (18, 2), mlO, AND: PUT (18, 2), lO, XOR PUT (26, 2), mlR, AND: PUT (26, 2), lR, XOR PUT (34, 2), mlE, AND: PUT (34, 2), lE, XOR PUT (130, 2), mlH, AND: PUT (130, 2), lH, XOR PUT (138, 2), mlI, AND: PUT (138, 2), lI, XOR PUT (239, 2), mlS, AND: PUT (239, 2), lS, XOR PUT (247, 2), mlH, AND: PUT (247, 2), lH, XOR PUT (255, 2), mlI, AND: PUT (255, 2), lI, XOR PUT (263, 2), mlP, AND: PUT (263, 2), lP, XOR PUT (271, 2), mlS, AND: PUT (271, 2), lS, XOR PUT (287, 2), mlX, AND: PUT (287, 2), lX, XOR change$ = "none" DO IF change$ = "hiscore" THEN change$ = "ships": len1 = 1: len2 = 2 IF change$ = "score" THEN change$ = "hiscore": len1 = 1: len2 = 6 IF change$ = "none" THEN change$ = "score": len1 = 1: len2 = 6 FOR length = len2 TO len1 STEP -1 IF change$ = "score" THEN scorechange = sdigit(length): xcoord = 98 - length * 8 END IF IF change$ = "hiscore" THEN scorechange = hsdigit(length): xcoord = 202 - length * 8 END IF IF change$ = "ships" THEN scorechange = shipdigit(length): xcoord = 319 - length * 8 END IF SELECT CASE scorechange CASE 0 PUT (xcoord, 2), mn0, AND: PUT (xcoord, 2), n0, XOR CASE 1 PUT (xcoord, 2), mn1, AND: PUT (xcoord, 2), n1, XOR CASE 2 PUT (xcoord, 2), mn2, AND: PUT (xcoord, 2), n2, XOR CASE 3 PUT (xcoord, 2), mn3, AND: PUT (xcoord, 2), n3, XOR CASE 4 PUT (xcoord, 2), mn4, AND: PUT (xcoord, 2), n4, XOR CASE 5 PUT (xcoord, 2), mn5, AND: PUT (xcoord, 2), n5, XOR CASE 6 PUT (xcoord, 2), mn6, AND: PUT (xcoord, 2), n6, XOR CASE 7 PUT (xcoord, 2), mn7, AND: PUT (xcoord, 2), n7, XOR CASE 8 PUT (xcoord, 2), mn8, AND: PUT (xcoord, 2), n8, XOR CASE 9 PUT (xcoord, 2), mn9, AND: PUT (xcoord, 2), n9, XOR END SELECT NEXT length LOOP UNTIL change$ = "ships" END SUB DEFSNG A-Z SUB TITLESCREEN DEFINT A-Z lcolor = 10 highlight = 1 selection$ = "no" code$ = "" dif$ = "normal" clearallkeys$ = "yes" starplacement$ = "yes" DO time1# = TIMER SCREEN 7, 0, 1, 0: CLS CALL CLEARKEYS: CALL STARS LINE (50, 27)-(267, 73), 15, BF FOR lnum = 1 TO 138 LINE (xtline1(lnum), ytline1(lnum))-(xtline2(lnum), ytline2(lnum)), lcolor NEXT lnum LINE (49, 26)-(268, 74), lcolor, B LINE (48, 25)-(269, 75), 15, B LINE (47, 24)-(270, 76), 10, B PAINT (51, 28), 2, lcolor PAINT (81, 54), 2, lcolor PAINT (119, 54), 2, lcolor PAINT (138, 54), 2, lcolor PAINT (195, 54), 2, lcolor LINE (49, 26)-(268, 74), 10, B SELECT CASE select1$ CASE CHR$(0) + CHR$(72) effect$ = "select": CALL SOUNDEFFECTS highlight = highlight - 1 IF highlight < 1 THEN highlight = 5 CASE CHR$(0) + CHR$(80) effect$ = "select": CALL SOUNDEFFECTS highlight = highlight + 1 IF highlight > 5 THEN highlight = 1 CASE CHR$(13), CHR$(0) + CHR$(77), CHR$(0) + CHR$(75) IF highlight = 3 THEN IF select1$ = CHR$(0) + CHR$(77) OR select1$ = CHR$(13) THEN IF dif$ = "easy" THEN dif$ = "normal" ELSEIF dif$ = "normal" THEN dif$ = "hard" ELSEIF dif$ = "hard" THEN IF INSTR(code$, "oceanstar") > 0 THEN dif$ = "insane" ELSE dif$ = "easy" END IF ELSEIF dif$ = "insane" THEN dif$ = "easy" END IF ELSEIF select1$ = CHR$(0) + CHR$(75) THEN IF dif$ = "easy" THEN IF INSTR(code$, "oceanstar") > 0 THEN dif$ = "insane" ELSE dif$ = "hard" END IF ELSEIF dif$ = "normal" THEN dif$ = "easy" ELSEIF dif$ = "hard" THEN dif$ = "normal" ELSEIF dif$ = "insane" THEN dif$ = "hard" END IF END IF effect$ = "select": CALL SOUNDEFFECTS ELSEIF highlight = 4 THEN IF gamesound$ = "active" THEN gamesound$ = "nonactive" ELSEIF gamesound$ = "nonactive" THEN gamesound$ = "active" END IF effect$ = "select": CALL SOUNDEFFECTS ELSE IF select1$ = CHR$(13) THEN selection$ = "yes": effect$ = "select": CALL SOUNDEFFECTS END IF END IF CASE "A" TO "Z", "a" TO "z" code$ = code$ + LCASE$(select1$) IF LEN(code$) > 30 THEN code$ = RIGHT$(code$, 30) END SELECT COLOR 15 IF highlight = 1 THEN COLOR 10 LOCATE 13, 15: PRINT "START": LOCATE 13, 21: PRINT "GAME": COLOR 15 IF highlight = 2 THEN COLOR 10 LOCATE 15, 15: PRINT "PLAY": LOCATE 15, 20: PRINT "INTRO": COLOR 15 IF highlight = 3 THEN COLOR 10 LOCATE 17, 15: PRINT "<"; UCASE$(dif$) LOCATE 17, LEN(dif$) + 17: PRINT "MODE>": COLOR 15 IF gamesound$ = "active" THEN stext$ = "ON" ELSEIF gamesound$ = "nonactive" THEN stext$ = "OFF" END IF IF highlight = 4 THEN COLOR 10 LOCATE 19, 15: PRINT "": COLOR 15 IF highlight = 5 THEN COLOR 10 LOCATE 21, 15: PRINT "EXIT": COLOR 15 SELECT CASE highlight CASE 1 yarrow = 96: gamestatus$ = "startplay" CASE 2 yarrow = 112: gamestatus$ = "intro" CASE 3 yarrow = 128 CASE 4 yarrow = 144 CASE 5 yarrow = 160: gamestatus$ = "exit" END SELECT PUT (96, yarrow), marrow, AND: PUT (96, yarrow), arrow, XOR COLOR 11 LOCATE 24, 3: PRINT "COPYRIGHT"; LOCATE 24, 13: PRINT "1998"; LOCATE 24, 18: PRINT "XFLARE"; LOCATE 24, 25: PRINT "ENTERTAINMENT"; PCOPY 1, 0 IF lcolor = 10 THEN lcolor = 2 ELSEIF lcolor = 2 THEN lcolor = 10 END IF DO: LOOP UNTIL TIMER - time1# > .02 LOOP UNTIL selection$ = "yes" END SUB DEFSNG A-Z SUB VICTORY DEFINT A-Z display = 1 clearallkeys$ = "yes" cchange = 0 pcolor = 7 starplacement$ = "yes": startype$ = "nomove" xship = 50: yship = 23 sunlook = c2 totalscore = sdigit(3) + sdigit(4) * 10 + sdigit(5) * 100 + sdigit(6) * 1000 hiscore = hsdigit(3) + hsdigit(4) * 10 + hsdigit(5) * 100 + hsdigit(6) * 1000 SELECT CASE totalscore CASE IS < 10 drawscore1$ = "000#00" CASE IS < 100 drawscore1$ = "00##00" CASE IS < 1000 drawscore1$ = "0###00" CASE ELSE drawscore1$ = "####00" END SELECT SELECT CASE hiscore CASE IS < 10 drawscore2$ = "000#00" CASE IS < 100 drawscore2$ = "00##00" CASE IS < 1000 drawscore2$ = "0###00" CASE ELSE drawscore2$ = "####00" END SELECT DO time1# = TIMER SCREEN 7, 0, 1, 0: CLS CALL CLEARKEYS: CALL STARS PSET (xship, yship), 8 LINE (0, 120)-(320, 100), 11: PAINT (0, 121), pcolor, 11 CIRCLE (50, 20), 1, c1: PAINT (50, 20), c2, c1 LOCATE 20, 1: COLOR 10 SELECT CASE display CASE 1 PRINT "Cries of victory, and sobs of salvation "; PRINT "surround you and your crew as the doors "; PRINT "of your ship open to a long red carpet, "; PRINT "lined by the Planetary High Guard. "; PRINT "Spectators toss flowers in your path as "; LOCATE 25, 1: PRINT "you make your way into the building at "; CASE 2 PRINT "its end, to await a ceremony by which "; PRINT "you shall be awarded medals of honour, "; PRINT "to forever remember the person who "; PRINT "brought peace to a race on the verge of "; PRINT "extinction. Fireworks light the night "; LOCATE 25, 1: PRINT "outside, as you celebrate until the "; CASE 3 PRINT "early hours of next morning. You meet "; PRINT "someone the following day who makes a "; PRINT "sudden proposal, and you decide to get "; PRINT "married and have children. Your name has"; PRINT "been recorded in Tenacian hisory, and "; LOCATE 25, 1: PRINT "will never be forgotten. Until the end. "; CASE 4 PRINT STRING$(40, " "); PRINT STRING$(40, " "); PRINT " TOTAL SCORE: "; PRINT USING drawscore1$; totalscore; : PRINT STRING$(11, " "); PRINT STRING$(40, " "); PRINT " HI SCORE: "; PRINT USING drawscore2$; hiscore; : PRINT STRING$(11, " "); LOCATE 25, 1: PRINT STRING$(40, " "); CASE 5 IF dif$ = "hard" AND special$ = "yes" THEN PRINT STRING$(40, " "); PRINT "Congratulations, you have truly won the "; PRINT "battle against the Celcians. Type in the"; PRINT "word OCEANSTAR on the title screen for "; PRINT "a top secret special mode of play, and a"; LOCATE 25, 1: PRINT "whole new appearance!"; PRINT STRING$(19, " "); ELSEIF dif$ = "insane" AND special$ = "yes" THEN PRINT STRING$(40, " "); PRINT "You have done what few may even hope of "; PRINT "accomplishing... Therefore, the game is "; PRINT "now in your command. Type in FOREVER on "; PRINT "the title screen, and go for a high "; LOCATE 25, 1: PRINT "score!"; : PRINT STRING$(34, " "); ELSEIF dif$ = "normal" AND special$ = "yes" THEN PRINT STRING$(40, " "); PRINT STRING$(40, " "); PRINT "Good going! Type in FULLSTOP on the "; PRINT "title screen for something special. Now "; PRINT "try beating the game on the Hard Mode..."; LOCATE 25, 1: PRINT STRING$(40, " "); ELSEIF dif$ = "easy" AND special$ = "yes" THEN PRINT STRING$(40, " "); PRINT STRING$(40, " "); PRINT STRING$(40, " "); PRINT " Good Job! Now try the Normal Mode... "; PRINT STRING$(40, " "); LOCATE 25, 1: PRINT STRING$(40, " "); ELSE PRINT STRING$(40, " "); PRINT STRING$(40, " "); PRINT STRING$(40, " "); PRINT " Cheater! Cheater! Cheater! Cheater! "; PRINT STRING$(40, " "); LOCATE 25, 1: PRINT STRING$(40, " "); END IF END SELECT textdelay = textdelay + 1 IF textdelay = 200 AND display < 5 THEN display = display + 1: textdelay = 0 plmove = plmove + 1: IF plmove = 6 THEN plmove = 1 IF plmove = 5 THEN xship = xship + 2: yship = yship + 1 SELECT CASE c2 CASE 12 c2 = 4 CASE 4 c2 = 12 CASE 9 c2 = 3 CASE 3 c2 = 9 END SELECT IF cchange = 3 THEN IF pcolor = 7 THEN pcolor = 3 ELSEIF pcolor = 3 THEN pcolor = 7 END IF cchange = 0 END IF PCOPY 1, 0 cchange = cchange + 1 DO: LOOP UNTIL TIMER - time1# > .02 LOOP UNTIL select1$ = CHR$(13) AND display = 5 gamestatus$ = "noplay" startype$ = "normal" END SUB