Romulan

Started by Blacklord, August 13, 2007, 09:08 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

Blacklord

A Star Trek style game, not sure what BASIc it's written in, but looks like it requires little modification :

00001 PRINT TAB(1)">>>>>>>> R O M U L A N <<<<<<<"
00002 PRINT
00003 PRINT TAB(10)"DO YOU NEED INSTRUCTION";
00004 INPUT Z$
00005 IF SUBSTR(Z$,1,1)<>"Y" THEN 00100
00006 PRINT
00007 PRINT TAB(10)"IMPORTANT MESSAGE RECIEVED FROM THE ROMULAN HIGH"
00008 PRINT TAB(10)"COMMAND, CAPTAIN."
00009 PRINT
00010 PRINT TAB(10)"     AS COMMANDER OF RSS VINDICTAE, YOU WILL BE"
00011 PRINT TAB(10)"IN MORTAL COMBAT WITH THE IMPERIALISTIC UNITED"
00012 PRINT TAB(10)"FEDERATION OF PLANETS, WHO WISH TO SUBVERT OUR"
00013 PRINT TAB(10)"EMPIRE WHILE AT THE SAME TIME CLAIMING TO BE"
00014 PRINT TAB(10)"CHAMPIONS OF THE CAUSE OF PEACE AND PEACEFUL"
00015 PRINT TAB(10)"COEXISTANCE.  THEY HAVE ALREADY TAKEN THREE "
00016 PRINT TAB(10)"PLANETS IN THE PRILOTIAN QUADRANTS.  YOU MISSION"
00017 PRINT TAB(10)"IS TO PROTECT THE EMPIRE FROM THEIR ADVANCE."
00018 PRINT
00019 PRINT TAB(10)"TO DO THIS, YOU HAVE UNDER YOUR COMMAND THE MOST"
00020 PRINT TAB(10)"POTENT FORCE AT THE EMPIRE'S DISPOSAL--THE"
00021 PRINT TAB(10)"STARSHIP VINDICTAE.  UNFORTUNATELY NO INSTRUCTIONS"
00022 PRINT TAB(10)"CAME WITH THE SHIP SO ALL WE CAN SAY IS YOU'RE ON"
00023 PRINT TAB(10)"YOUR OWN AND.....................GOOD LUCK."
00024 PRINT
00025 PRINT TAB(40)"THE ROMULAN HIGH COMMAND"
00026 PRINT
00027 PRINT
00028 PRINT
00100 BASE(0)
00110 PRINT"ENTER A NUMBER BETWEEN 0 AND 1"
00120 INPUT K
00130 LET I0(1)=TAN(Z9)*I0(0)+Y
00140 DIM S(4),T(4),Z(8,2),I0(1)
00150 LET S(4)=0
00160 LET S(0)=10
00170 LET S(1)=INT(RND(K)*360)
00180 LET N9=20
00190 LET D6=S(2)=S(3)=0
00200 LET E=.5
00210 LET C=S(1)
00220 LET B9=20
00230 LET B8=0
00240 LET G=1
00250 GO TO 02060
00260 PRINT
00270 LET D7=G=H=0
00280 PRINT "STARSHIP SIGHTED"
00290 LET H0=INT(RND(0)-.5)**3*7+2.5
00300 LET P=0
00310 LET T(4)=INT((RND(0)*2))
00320 LET T0=(1+T(4))*6+INT(RND(0)*7)
00330 LET T(0)=T0
00340 LET T(1)=90+INT((RND(0)-.5)*120)
00350 LET T4=T(1)
00360 LET T(2)=-7000+(RND(0)-.5)*5000
00370 LET T(3)=(RND(0)-.5)*10000
00380 GOSUB 00430
00390 PRINT "HEADING:";T(1),"SPEED:";T(0),"RANGE:";R,"BEARING:";
00400 GOSUB 00590
00410 LET T7=75-T(4)*25
00420 GO TO 01430
00430 REM TARGET RANGE, BEARING
00440 LET X=T(2)-S(2)
00450 LET Y=T(3)-S(3)
00460 LET R=SQR(X**2+Y**2)
00470 LET K=100
00480 IF R>2000 THEN 00500
00490 LET K=10
00500 LET R=INT(R/K)*K
00510 IF X<>0 THEN 00540
00520 LET B=90-SGN(Y)*90
00530 GO TO 00580
00540 LET B=90-ATN(Y/ABS(X))/3.14159*180
00550 IF X>0 THEN 00570
00560 LET B=INT(360-ABS(B))
00570 B=INT(B)
00580 RETURN
00590 REM RELATIVE BEARING
00600 LET A=B-S(1)
00610 IF A>=0 THEN 00630
00620 LET A=A+360
00630 IF INT(A/180)=A/180 THEN 00690
00640 IF A>180 THEN 00670
00650 PRINT " STBD";
00660 GO TO 00690
00670 PRINT " PORT";
00680 LET A=360-A
00690 PRINT A
00700 REM TIME-TO-TARGET
00710 LET T9=(90-T(1))/180*3.14159
00720 LET Z9=(90-Z(I,2))/180*3.14159
00730 IF TAN(T9)<>TAN(Z9) THEN 00800
00740 LET A=SGN(ABS(ABS(Z(I,2)-T(1))-180)-90)
00750 LET Z0=SQR((Z(I,0)-T(2))**2+(Z(I,1)-T(3))**2)-P*2000
00760 LET Z0=(Z0+A*Z0/2000*T(0)*33.78)/2000+P
00770 LET I0(0)=Z(I,0)+2000*COS(Z9)*Z0
00780 LET I0(1)=Z(I,1)+2000*SIN(Z9)*Z0
00790 GO TO 00860
00800 LET X=T(3)-TAN(T9)*T(2)
00810 LET Y=Z(I,1)-TAN(Z9)*Z(I,0)
00820 LET I0(0)=(Y-X)/(TAN(T9)-TAN(Z9))
00830 LET Z0=SQR((I0(1)-Z(I,1))**2+(I0(0)-Z(I,0))**2)/2000
00840 IF Z0>R/1000 THEN 00740
00850 IF Z000860 LET X=T(2)+T(0)*33.78*COS(T9)*(Z0-P)
00870 LET Y=T(3)+T(0)*33.78*SIN(T9)*(Z0-P)
00880 LET R3=SQR((X-I0(0))**2+(Y-I0(1))**2)
00890 RETURN
00900 REM DETECTION
00910 LET K=60/(60+S(4)*2)*(500/(R*3+500))*(1+T(4)+ABS(E))
00920 IF RND(0)>K*(D7+1)**2 THEN 01050
00930 PRINT "YOU ARE DETECTED"
00940 IF T(0)=0 THEN 01020
00950 LET T(1)=B+180*T(4)
00960 IF T(1)<360 THEN 00980
00970 LET T(1)=T(1)-360
00980 LET T(0)=T0*(3+T(4))/2
00990 IF T(4)=0 THEN 01020
01000 IF R>1000 THEN 01020
01010 LET T(0)=ABS(S(0))+5
01020 LET D7=1
01030 LET D8=0
01040 RETURN
01050 IF D7=0 THEN 01120
01060 LET D8=D8+RND(0)
01070 IF D8<2 THEN 01120
01080 LET D7=0
01090 PRINT "STARSHIP RETURNS TO ORIGINAL COURSE"
01100 LET T(0)=T0
01110 LET T(1)=T4
01120 RETURN
01130 REM ATTACKING/FLEEING
01140 IF R>1500*(2+T(4)) THEN 01420
01150 IF S(4)<=60 THEN 01250
01160 IF R>400*T(4) THEN 01420
01170 LET R1=INT(RND(0)*R)
01180 LET R2=S(4)+INT((RND(0)-.5)*120)
01190 IF R2<60 THEN 01180
01200 LET R1=SQR(R1**2+(R2-S(4))**2/9)
01210 PRINT "CLOAK DEV.-CHARGE PATTERN";INT(R1);"METERS AWAY AT";R2;"FEET"
01220 IF R1>100 THEN 01410
01230 LET K=(100-R1)/50*(500-S(4))/300
01240 GO TO 01290
01250 LET R1=(RND(0)*R/20+S(4)/3)*(25+S(0))/25
01260 PRINT "PHOTON TORPEDOS FIRED --- LANDS";INT(R1);"METERS AWAY"
01270 IF R1>50 THEN 01410
01280 LET K=(50-R1)/25*60/(30+S(4))*(T(4)+1)/2
01290 LET D6=D6+K
01300 IF K>.5 THEN 01330
01310 PRINT "MINOR ";
01320 GO TO 01340
01330 PRINT "MAJOR ";
01340 PRINT "DAMAGE";
01350 IF D6>1 THEN 01380
01360 PRINT
01370 RETURN
01380 PRINT " --- ";
01390 GOSUB 03680
01400 RETURN
01410 PRINT "NO DAMAGE"
01420 RETURN
01430 REM MAIN INPUT
01440 PRINT
01450 PRINT "COURSE(DEGREES),ENGINES(0-.99),CLOAK DEV.,FIRE(0)/TIME(1-10)";
01460 INPUT C,E,D,F
01470 IF C>359 THEN 01450
01480 IF C<0 THEN 01450
01490 IF ABS(E)>1 THEN 01450
01500 IF D>400 THEN 01450
01510 IF D<0 THEN 01450
01520 LET F=INT(F)
01530 IF F<-1 THEN 01450
01540 IF F>10 THEN 01450
01550 IF F0=0 THEN 01630
01560 IF P<5 THEN 01590
01570 PRINT "PHOTON TORPEDOS LOSE DESTRUCTIVE POWER"
01580 GO TO 02950
01590 IF Z1<1 THEN 02580
01600 IF F<1 THEN 02060
01610 IF F<=Z1+1 THEN 01630
01620 LET F=INT(Z1+1)
01630 IF F<>-1 THEN 01700
01640 IF T(4)=0 THEN 01680
01650 IF D7=0 THEN 01680
01660 PRINT "MUST GET AWAY"
01670 GO TO 02060
01680 LET G=1
01690 GO TO 02060
01700 IF F>0 THEN 02070
01710 IF N9=0 THEN 01450
01720 IF (S(4)-60)/R<.24 THEN 01750
01730 PRINT "CLOAKING DEVICE DRAINING ALL AVALIABLE ENERGY."
01740 GO TO 01450
01750 PRINT "NUMBER (";N9;"LEFT ) AND SPREAD(0-10)";
01760 INPUT N,K
01770 IF N>N9 THEN 01750
01780 IF N>6 THEN 01750
01790 IF N<1 THEN 01450
01800 IF N=1 THEN 01840
01810 IF K<0 THEN 01750
01820 IF K>10 THEN 01750
01830 GO TO 01850
01840 LET K=O
01850 PRINT
01860 LET I=1
01870 PRINT "PHOTON TORPEDO";I;"FIRED"
01880 LET Z(I,0)=S(2)
01890 LET Z(I,1)=S(3)
01900 LET Z(I,2)=S(1)-(N-1)*K/2+(I-1)*K
01910 IF ABS(180-B)>90 THEN 01950
01920 LET Z(I,2)=Z(I,2)+180
01930 IF Z(I,2)<360 THEN 01950
01940 LET Z(I,2)=Z(I,2)-360
01950 LET I=I+1
01960 IF I<=N THEN 01870
01970 LET F0=1
01980 LET N9=N9-N
01990 LET I=P=0
02000 GOSUB 00700
02010 LET Z1=INT(Z0*100)/100
02020 PRINT
02030 IF Z1<10 THEN 02050
02040 LET Z1=10
02050 PRINT "TIME-TO-TARGET:";Z1
02060 LET F=1
02070 LET J=1
02080 IF F0*Z102090 PRINT
02100 GOSUB 03010
02110PRINT"ROMULAN HEADING:";S(1);TAB(27)"SPEED";S(0);TAB(39);
02120PRINT"CLOAK DEV.:";S(4)
02130 IF S(4)<=300 THEN 02170
02140 LET K=(S(4)-300)/50*RND(0)
02150 PRINT "CLOAK DEV. DAMAGE TO PRESSURE HULL --- ";
02160 GOSUB 01290
02170 IF G=1 THEN 00260
02180 IF T(0)=0 THEN 02290
02190 GOSUB 00900
02200 LET T(1)=T(1)+INT((RND(0)-.5)*20)
02210 IF T(1)<360 THEN 02230
02220 LET T(1)=T(1)-360
02230 IF T(1)>=0 THEN 02250
02240 LET T(1)=T(1)+360
02250 LET A=(90-T(1))/180*3.14159
02260 LET K=T(0)*33.78
02270 LET T(2)=T(2)+K*COS(A)
02280 LET T(3)=T(3)+K*SIN(A)
02290 GOSUB 00430
02300 LET F1=0
02310 IF T(4)=1 THEN 02340
02320 PRINT "SCOUT SHIP ";
02330 GO TO 02350
02340 PRINT "HEAVY CRUISER ";
02350 IF R>5000 THEN 02370
02360 PRINT "HEADING:";T(1);TAB(27);"SPEED:";T(0);TAB(39);
02370 PRINT "RANGE:";R;"   ";"BEARING:";
02380 LET I=0
02390 GOSUB 00590
02400 IF D7=0 THEN 02420
02410 GOSUB 01130
02420 IF R>5000 THEN 02480
02430 IF R3>T7*(1+R/2000) THEN 02480
02440 IF R3>T7 THEN 02460
02450 PRINT "VERY ";
02460 PRINT "GOOD FIRING POSITION"
02470 LET F1=1
02480 IF F0=0 THEN 02520
02490 LET Z1=Z1-1
02500 LET P=P+1
02510 PRINT "TIME-TO-TARGET:";Z1
02520 IF D7-D8=1 THEN 02570
02530 IF F1=1 THEN 02560
02540 LET J=J+1
02550 IF J<=F THEN 02080
02560 LET F1=0
02570 GO TO 01430
02580 REM PHOTON TORPEDO RESULTS
02590 PRINT
02600 LET I=1
02610 PRINT "PHOTON TORPEDO";I;
02620 GOSUB 00700
02630 IF Z0>4 THEN 02800
02640 IF R3>T7 THEN 02710
02650 PRINT "HIT";
02660 LET H=H+1
02670 IF R3>10 THEN 02800
02680 LET H=H+1
02690 PRINT " DEAD CENTER"
02700 GO TO 02810
02710 LET X2=X+50*COS(T9)
02720 LET Y2=Y+50*SIN(T9)
02730 LET R2=SQR((X2-I0(0))**2+(Y2-I0(1))**2)
02740 IF R2>R3 THEN 02770
02750 PRINT "PASSED AHEAD ";
02760 GO TO 02780
02770 PRINT "PASSED BEHIND ";
02780 PRINT "BY";INT(R3-T7);"METERS"
02790 GO TO 02810
02800 PRINT
02810 LET I=I+1
02820 IF I<=N THEN 02610
02830 LET F0=P=0
02840 IF H=0 THEN 02960
02850 IF H>=H0 THEN 02920
02860 PRINT "STARSHIP DISABLED"
02870 LET T(0) = 0
02880 IF N9=0 THEN 03800
02890 LET T(2)=X
02900 LET T(3)=Y
02910 GO TO 02280
02920 PRINT "STARSHIP IMPLODED"
02930 IF N9=0 THEN 03800
02940 GO TO 01680
02950 LET F0=0
02960 IF N9+T(4)=0 THEN 03800
02970 PRINT "PHOTON TORPEDOS ARE SEEN --- ";
02980 GOSUB 00930
02990 LET D8=.1
03000 GO TO 02060
03010 REM ANTI-MATTER PODS
03020 IF S(4)>0 THEN 03060
03030 IF B9>=20 THEN 03180
03040 LET B9=B9+SQR(20.5-B9)*ABS(E)
03050 GO TO 03080
03060 LET B9=B9-ABS(E)
03070 IF B9<=0 THEN 03130
03080 IF INT(B9/2)<>INT(B9)/2 THEN 03170
03090 IF B8=1 THEN 03180
03100 PRINT "ANTI-MATTER PODS";INT(B9)*5;"PERCENT CHARGED"
03110 LET B8=1
03120 GO TO 03180
03130 IF B8=1 THEN 03150
03140 PRINT "ANTI-MATTER PODS DEAD"
03150 LET E=B9=0
03160 GO TO 03180
03170 LET B8=0
03180 REM SUB SPEED
03190 LET S8=S(0)
03200 LET Y=(2*S(4)+D)/3
03210 IF E>=0 THEN 03240
03220 LET S9=E*5*(400-Y)/300
03230 GO TO 03250
03240 LET S9=(2*E-E**2)*(25-10*SGN(Y))*(400-Y)/400
03250 IF INT(S9)=S(0) THEN 03310
03260 LET X=SGN(S9-S8)
03270 LET A=(2-X*(Y+100)/400)*X
03280 LET K=S8+A*(1+ABS(S9-S8)/5)
03290 IF X*K>=X*S9 THEN 03310
03300 LET S9=K
03310 LET S(0)=INT(S9)
03320 REM CLOAK DEV.
03330 IF ABS(S8)+S(4)<>0 THEN 03360
03340 IF D6<=0 THEN 03360
03350 LET D6=D6-.5
03360 IF D=S(4) THEN 03430
03370 LET X=SGN(D-S(4))
03380 LET A=10+ABS(D-S(4))/10
03390 LET K=S(4)+X*A*(1+ABS(S8+S(0))/10)
03400 IF X*K03410 LET K=D
03420 LET S(4)=INT(K)
03430 REM COURSE
03440 IF C=S(1) THEN 03600
03450 LET X=C-S(1)
03460 IF ABS(X)<=180 THEN 03480
03470 LET X=-SGN(X)*(360-ABS(X))
03480 LET A=(10+ABS(X/10))*ABS(S8+S(0))/10
03490 LET K=S(1)+SGN(X)*A
03500 LET C9=S(1)+X
03510 IF SGN(X)*K>=SGN(X)*C9 THEN 03590
03520 LET K=INT(K)
03530 IF K<360 THEN 03550
03540 LET K=K-360
03550 IF K>=0 THEN 03570
03560 LET K=K+360
03570 LET S(1)=K
03580 GO TO 03600
03590 LET S(1)=C
03600 REM POSITION
03610 LET A=(90-S(1))/180*3.14159
03620 LET S(2)=S(2)+S(0)*33.78*COS(A)
03630 LET S(3)=S(3)+S(0)*33.78*SIN(A)
03640 LET Z(0,0)=S(2)
03650 LET Z(0,1)=S(3)
03660 LET Z(0,2)=S(1)
03670 RETURN
03680 REM DAMAGE ASSESSMENT
03690 IF D6>2 THEN 03720
03700 PRINT "HULL LEAKING OXYGEN --- CREW SUFFICATING"
03710 RETURN
03720 IF D6>4 THEN 03750
03730 PRINT INT(D6-.5);"COMPARTMENTS DEPRESSURIZED"
03740 RETURN
03750 IF D6>5 THEN 03780
03760 PRINT "STARSHIP CLOSE TO IMPLODING"
03770 RETURN
03780 PRINT
03790 PRINT "> > >Z>O>03800 PRINT "                   YOUR STARSHIP HAS IMPLODED."
03810 END