10 REM Space Commander 20 REM by A. Jackson 30 REM (c) 1990 Bazzasoft 40 ON ERROR GOTO 2310 50 MODE1:VDU23;8202;0;0;0; 60 DIMG$(4) 70 REPEAT 80 won%=0 90 IW%=0:ND%=0:EI%=1:E%=100:S%=0:S$="AAD":PROCstat 100 PROCscreen 110 REPEAT 120 PROCicons 130 *FX15,1 140 IF (S$="XXX") OR (FS%=5 AND RND(5)=1) OR (FS%=4 AND RND(10)=1) PROCatt 150 IF E%=0 OR won% GOTO 220 160 PROCinput 170 IF O%=0 PROCint 180 IF O%=1 PROCattack 190 IF O%=2 PROCcommunicate 200 IF O%=3 PROCmove 210 IF O%=4 PROCfile 220 UNTIL E%=0 OR won% 230 IF won% PROCwon ELSE PROCdead 240 UNTIL0 250 DEFPROCscreen 260 VDU19,1,4,0;0;0; 270 COLOUR129 280 CLS 290 MOVE4,920:DRAW1272,920:DRAW1272,4:DRAW4,4:DRAW4,920:MOVE12,912:DRAW1264,912:DRAW1264,12:DRAW12,12:DRAW12,912 300 ENDPROC 310 DEFPROCicons 320 PROCicon(0,2,0,1,3) 330 IF E%>10 PROCicon(1,12,0,1,3) ELSE PROCicon(1,12,0,1,2) 340 PROCicon(2,24,0,1,3) 350 PROCicon(3,35,0,1,3) 360 ENDPROC 370 DEFPROCicon(I%,X%,Y%,A%,B%) 380 VDU26 390 M%=0:COLOUR128+A%:COLOURB% 400 CALL&90A,I%,X%,Y%,M% 410 VDU28,1,30,38,4 420 ENDPROC 430 DEFPROCinput 440 COLOUR129:CLS 450 COLOUR128:COLOUR3:PRINTTAB(11,6);"SPACE COMMANDER" 460 COLOUR129:COLOUR2:PRINT'''SPC11;"1 - Intelligence" 470 PRINT'SPC10;"2 - Combat Systems" 480 PRINT'SPC10;"3 - Communications" 490 PRINT'SPC12;"4 - Navigation" 500 PRINT'SPC14;"5 - Filing" 510 O%=GET-49 520 IF O%<0 OR O%>4 GOTO 510 530 CLS:ENDPROC 540 DEFPROCint 550 PROCicon(0,2,0,3,1) 560 COLOUR129:COLOUR3 570 MOVE100,100:DRAW100,824:DRAW1180,824:DRAW1180,100:DRAW100,100 580 MOVE150,150:DRAW150,774:DRAW1030,774:DRAW1030,150:DRAW150,150 590 VDU28,5,26,31,8 600 COLOUR128:CLS:COLOUR2 610 SOUND1,-15,100,1 620 PRINT'''"SYSTEM - ";S$' 630 PRINT"WARP GATES" 640 PRINT"==========" 650 PRINT"NUMBER - ";NG% 660 FOR GN%=1 TO NG% 670 PRINT"GATE ";GN%;" - SYSTEM ";G$(GN%-1) 680 NEXT 690 PRINT'"ENERGY LEVEL - ";E% 700 PRINT'SPC(8);"PRESS SPACE" 710 REPEAT UNTIL INKEY-99 720 SOUND1,-15,100,1 730 ENDPROC 740 DEFPROCstat 750 L1%=ASC(MID$(S$,1,1))-64 760 L2%=ASC(MID$(S$,2,1))-64 770 L3%=ASC(MID$(S$,3,1))-64 780 Z%=L1%+27*L2%+729*L3%:Z%=-Z% 790 NG%=RND(Z%):NG%=RND(5) 800 FOR GN%=1 TO NG% 810 L1%=RND(26)+64:L2%=RND(26)+64:L3%=RND(26)+64:G$(GN%-1)=CHR$L1%+CHR$L2%+CHR$L3% 820 NEXT 830 FS%=RND(5):DUMMY=RND(-TIME) 840 IFS$="AAA" FS%=45 ELSE IF S$="XXX" FS%=43 850 ENDPROC 860 DEFPROCattack 870 PROCicon(1,12,0,3,1) 880 COLOUR129:COLOUR3 890 SOUND1,-15,100,1 900 IFFS%=0 PRINT"Planet devastated, Sir."''"PRESS SPACE":REPEAT UNTIL INKEY-99:ENDPROC 910 IF E%<11 PRINT"We don't have enough energy, Sir."''"PRESS SPACE":REPEAT UNTIL INKEY-99:ENDPROC 920 IF E%<31 PRINT"We're short on energy, Sir."'"I wouldn't recommend an attack." 930 IF E%<51 AND E%>30 PRINT"If you think we can do it, Sir." 940 IF E%>50 AND E%<90 PRINT"Phasers locked on, Sir." 950 IF E%>89 PRINT"All systems go, Sir." 960 PRINT'"Do you wish to attack system ";S$;"?" 970 REPEAT:G$=GET$:UNTIL INSTR("YyNn",G$)>0 980 IF INSTR("nN",G$) PRINT'"Disengaging systems, Sir."''"PRESS SPACE":REPEAT UNTIL INKEY-99:ENDPROC 990 COLOUR2:PRINT'"ALL WEAPONS SYSTEMS ARE NOW ACTIVE" 1000 PRINT"PRESS SPACE BAR TO ABORT COUNTDOWN" 1010 SOUND1,-15,10,5:SOUND1,-15,20,5:SOUND1,-15,10,5:SOUND1,-15,20,5 1020 J=0 1030 FOR I=10 TO 1 STEP -1 1040 PRINTTAB(0,7);"T MINUS ";I;" " 1050 IF J<>32 J=INKEY(100) 1060 IF J=32:I=1 1070 NEXT 1080 FORI=1 TO 1000:NEXT 1090 *FX15,1 1100 IF J=32 PRINT'"COUNTDOWN ABORTED"''"PRESS SPACE":REPEAT UNTIL INKEY-99:ENDPROC 1110 PRINTTAB(0,7);"WEAPONS CHECK:" 1120 FORJ=1 TO 1000:NEXT:PRINT"PHASERS ACTIVE" 1130 FORJ=1 TO 1000:NEXT:PRINT"MISSILES ACTIVE" 1140 FORJ=1 TO 1000:NEXT:PRINT"NEUTRON GUNS ACTIVE" 1150 IF IW%=1 FORJ=1 TO 1000:NEXT:PRINT"PHOTON RAM ACTIVE" 1160 PRINT'"OPENING FIRE" 1170 FOR I=1 TO 15:SOUND1,-15,I,1:NEXT:SOUND0,-15,4,10 1180 PRINT'"ENEMY RETALIATING" 1190 FOR I=15 TO 1 STEP -1:SOUND1,-15,I,1:NEXT:SOUND0,-15,4,10 1200 N%=70+(10*FS%) 1210 REPEAT 1220 EA%=RND(E%)+20:NA%=RND(N%) 1230 IF IW%=1 EA%=EA%+20 1240 IF ND%=1 AND FS%=43 PRINT'"Nuclear device launched, Sir.":ND%=0:N%=275 1250 IF EA%>NA% N%=N%-1 1260 IF NA%>EA% E%=E%-1 1270 IF NA%=EA% N%=N%-1:E%=E%-1 1280 IF E%=70 PRINT'"Energy loss increasing, Sir" 1290 IF E%=50 PRINT'"Minor systems failure, Sir." 1300 IF E%=30 PRINT'"Loosing power fast, Sir." 1310 IF E%=10 PRINT'"Primary systems failing, Sir." 1320 IF N%=50 PRINT'"Enemy looking weak, Sir." 1330 IF N%=30 PRINT'"Enemy sustaining damage, Sir." 1340 IF N%=10 PRINT'"Enemy going down, Sir." 1350 UNTIL N%=0 OR E%=0 1360 IF E%=0 PRINT'"Life support systems failing, Sir!":GOTO1440 1370 PRINT'"We did it, Sir!":IF FS%=1 S%=S%-3 1380 IF S$="XXX" PRINT'"We got them! We did it! Hooray!":won%=1 1390 IF FS%=2 S%=S%-2 1400 IF FS%=3 S%=S%-1 1410 IF FS%=4 S%=S%+2 1420 IF FS%=5 S%=S%+3 1430 FS%=0 1440 PRINT'"PRESS SPACE":REPEAT UNTIL INKEY-99:ENDPROC 1450 DEFPROCcommunicate 1460 PROCicon(2,24,0,3,1) 1470 COLOUR129:COLOUR3 1480 PRINT"Radio systems active, Sir."'"Which message shall I send?"''"1 - Identify yourself"'"2 - Request permission to make repairs" 1490 REPEAT:G=GET-48:UNTIL G>0 AND G<3 1500 IF G=2 GOTO 1590 1510 IF FS%=0 PRINT "No answer, Sir." 1520 IF FS%=1 PRINT "We are allies of Star Fleet. Welcome." 1530 IF FS%=2 PRINT "We wish you greetings, friends." 1540 IF FS%=3 PRINT "We do not wish to be involved." 1550 IF FS%=4 PRINT "Leave here, now!" 1560 IF FS%=5 PRINT "Die, minions of Star Fleet!" 1570 IF FS%=45 PRINT "Welcome to Star Fleet HQ!" 1580 PRINT'"PRESS SPACE":REPEAT UNTIL INKEY-99:ENDPROC 1590 IF FS%=0 PRINT"No answer, Sir." 1600 IF FS%=1 PRINT"Repairs complete, Sir.":E%=100*EI% 1610 IF FS%=2 PRINT"We've done all we can.":IF E%<70*EI% E%=70*EI% 1620 IF FS%=3 PRINT"Request denied." 1630 IF FS%=45 PROChq:GOTO1650 1640 IF FS%>3 PRINT"They're attacking us, Sir!":GOTO1160 1650 PRINT'"PRESS SPACE":REPEAT UNTIL INKEY-99:ENDPROC 1660 DEFPROCmove 1670 PROCicon(3,35,0,3,1) 1680 COLOUR129:COLOUR0 1690 PRINT"Navigation systems activated, Sir." 1700 IF NG%=1 PRINT"There is 1 gate from here." ELSE PRINT"There are ";NG%;" gates from here." 1710 FOR GN%=1 TO NG% 1720 PRINT"GATE NUMBER ";GN%;" - SYSTEM ";G$(GN%-1) 1730 NEXT 1740 PRINT'"Choose a gate, Sir." 1750 PRINT"Press 0 to abort." 1760 REPEAT:GN%=GET-48:UNTIL GN%>-1 AND GN%49 PRINT"You're doing well. We have great"'"confidence in you. Well done.":ENDPROC 1920 IF S%>75 AND EI%=1 PRINT"We have installed your ship with new"'"energy systems.":EI%=2 1930 IF S%>100 AND IW%=0 PRINT"We have fitted you with a new weapon.":IW%=1 1940 IF S%>200 AND ND%=0 PRINT"We have fitted your ship with a small thermonuclear device, which will be"'"launched upon entry into the enemy"'"base-system. All our hopes go with"'"you and your crew.":ND%=1 1950 ENDPROC 1960 DEFPROCdead 1970 PRINT'''''"Oh dear. You seem to have failed in"'"your mission. You haven't actually"'"saved the universe. What a pity. Oh"'"well, that's life for you."'"You did, however score ";S% 1980 PRINT'SPC6"PRESS SPACE TO PLAY AGAIN":REPEAT UNTIL INKEY-99:ENDPROC 1990 DEFPROCwon 2000 PRINT'''''"Well done! You've battled against all"'"odds to save the universe. You have"'"single-handedly defeated the Quork"'"base planet. Your score is so immense that it wouldn't fit on the screen."'"You are promoted to Star Fleet Chief." 2010 GOTO1980 2020 DEFPROCfile 2030 CLS 2040 COLOUR129:COLOUR2:PRINT'''''"FILING SYSTEM"'"=============" 2050 INPUT'"Filename - "F$ 2060 PRINT'"Load or Save?" 2070 PRINT'"L - Load"'"S - Save"'"A - Abort" 2080 REPEAT:G$=GET$:UNTIL INSTR("AaLlSs",G$):IF INSTR("Aa",G$) ENDPROC 2090 IF INSTR("Ll",G$) GOTO 2200 2100 F=OPENOUT(F$) 2110 PRINT #F,S$ 2120 PRINT #F,S% 2130 PRINT #F,E% 2140 PRINT #F,EI% 2150 PRINT #F,IW% 2160 PRINT #F,ND% 2170 PRINT #F,FS% 2180 CLOSE #F 2190 ENDPROC 2200 F=OPENIN(F$) 2210 INPUT #F,S$ 2220 INPUT #F,S% 2230 INPUT #F,E% 2240 INPUT #F,EI% 2250 INPUT #F,IW% 2260 INPUT #F,ND% 2270 PROCstat 2280 INPUT #F,FS% 2290 CLOSE #F 2300 ENDPROC 2310 CLEAR:GOTO 50