[comp.sources.games] v09i047: ctrek - Star Trek game written in COBOL, Part02/02

billr@saab.CNA.TEK.COM (Bill Randle) (05/04/90)

Submitted-by: Chris Rende <rphroy!trux!car@uunet.uu.net>
Posting-number: Volume 9, Issue 47
Archive-name: ctrek/Part02


#! /bin/sh
# This is a shell archive.  Remove anything before this line, then unpack
# it by saving it into a file and typing "sh file".  To overwrite existing
# files, type "sh file -c".  You can also feed this as standard input via
# unshar, or by typing "sh <file", e.g..  If this archive is complete, you
# will see the following message at the end:
#		"End of archive 2 (of 2)."
# Contents:  ctrek.p2
# Wrapped by billr@saab on Thu May  3 15:21:23 1990
PATH=/bin:/usr/bin:/usr/ucb ; export PATH
if test -f 'ctrek.p2' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'ctrek.p2'\"
else
echo shar: Extracting \"'ctrek.p2'\" \(30263 characters\)
sed "s/^X//" >'ctrek.p2' <<'END_OF_FILE'
X
X      ********************************************
X      * 7100-nav thru 7800-int execute various   *
X      * commands from the user, and present the  *
X      * results and consequences of each command *
X      *                                          *
X      * Called from 2000-process or 3000-com-fun *
X      ********************************************
X
X       7100-nav.
X           perform 8340-ck-fl thru 8340-exit.
X           compute fuel-count = fuel-count - (200 * warp-a).
X           if warp-a > 0
X               move warp-a to rx-s
X           else
X               compute rx-s rounded = warp-b / 100.
X           move mrctr to srctr.
X           move mkctr to skctr.
X           compute warp1 rounded = (warp-a * 5) + (warp-b * .05).
X           compute warp2 rounded = (warp-a * 8) + (warp-b * .08).
X           compute warp3 rounded = (course-b * .05) * rx-s.
X           compute warp4 rounded = (course-b * .03) * rx-s.
X           go to
X               7110-nav
X               7120-nav
X               7130-nav
X               7140-nav
X               7150-nav
X               7160-nav
X               7170-nav
X               7180-nav
X                   depending on course-a.
X           display "INVALID COURSE".
X           go to 7100-exit.
X       7110-nav.
X           compute srctr = srctr - warp2 + warp4.
X           compute skctr = skctr + warp3.
X           perform 7000-nav-ck thru 7000-exit.
X           go to 7100-exit.
X       7120-nav.
X           compute srctr = srctr - warp1 + warp3.
X           compute skctr = skctr + warp1 + warp4.
X           perform 7000-nav-ck thru 7000-exit.
X           go to 7100-exit.
X       7130-nav.
X           compute srctr = srctr + warp3.
X           compute skctr = skctr + warp2 - warp4.
X           perform 7000-nav-ck thru 7000-exit.
X           go to 7100-exit.
X       7140-nav.
X           compute srctr = srctr + warp1 + warp4.
X           compute skctr = skctr + warp1 - warp3.
X           perform 7000-nav-ck thru 7000-exit.
X           go to 7100-exit.
X       7150-nav.
X           compute srctr = srctr + warp2 - warp4.
X           compute skctr = skctr - warp3.
X           perform 7000-nav-ck thru 7000-exit.
X           go to 7100-exit.
X       7160-nav.
X           compute srctr = srctr + warp1 - warp3.
X           compute skctr = skctr - warp1 - warp4.
X           perform 7000-nav-ck thru 7000-exit.
X           go to 7100-exit.
X       7170-nav.
X           compute srctr = srctr - warp3.
X           compute skctr = skctr - warp2 + warp4.
X           perform 7000-nav-ck thru 7000-exit.
X           go to 7100-exit.
X       7180-nav.
X           compute srctr = srctr - warp1 - warp4.
X           compute skctr = skctr - warp1 + warp3.
X           perform 7000-nav-ck thru 7000-exit.
X           go to 7100-exit.
X       7100-exit.  exit.
X
X       7200-pha.
X           if klgns < 1 and romulons < 1
X               display "Science Officer Spock reports no enemy "
X               display "vessels in this quadrant, " name-x
X               go to 7200-exit.
X           perform 8340-ck-fl thru 8340-exit.
X           if fuel-count < 9999
X               move fuel-count to fuel-co
X               display "Maximum of " fuel-co " units available to phasers ".
X           display "How many units to phaser banks? ".
X           accept var4-an.
X           perform 7210-rep-bl thru 7210-exit.
X           perform 7220-compute-dist thru 7220-exit.
X           compute var2 = 450000 / (shield-cnt + 100).
X           perform 8150-test-agn thru 8150-exit.
X           if klgns > 1 and trap-vec
X               display "*ENTERPRISE DESTROYED* "
X               display "Direct hits from " klgns " klingons "
X               move 1 to indicate-x.
X               perform 8200-ck-done thru 8200-exit.
X           compute dm-var4 = var4 - (damage-cnt / 15).
X           compute var3 = var2 / 2.
X           if romulons > 0
X               display "*ROMULON VESSELS PRESENT IN QUADRANT* "
X               display "Do you want to fire on Romulons? "
X               accept lst-reply
X               if yes-lst
X                   perform 7250-romulon-ck thru 7250-exit
X                   go to 7200-exit.
X           if klgns > 0
X               compute var2 = var2 / (dist-x / 10)
X               subtract var4 from fuel-count
X               move dm-var4 to var4
X               add kh-tl to var4
X               if var4 < 400
X                   perform 4700-disp-hit thru 4700-exit
X                   display "*KLINGON DISABLED* "
X                   perform 4500-disp-hit thru 4500-exit
X                   compute var4 = .75 * var4
X                   add var4 to kh-tl
X                   add var2 to damage-cnt
X                   subtract var3 from shield-cnt
X               else
X                   perform 7201-replace thru 7201-exit
X                       varying rep-ctr from 1 by 1 until rep-ctr > rx
X                   inspect mini-table replacing first "K" by " "
X                   inspect mini-table replacing all "x" by "K"
X                   compute var4 = var4 / (dist-x ** .224)
X                   perform 4700-disp-hit thru 4700-exit
X                   display "*KLINGON DESTROYED* "
X                   move 0 to kh-tl
X                   subtract 1 from klgns
X                   subtract 1 from klingons
X                   perform 5400-trans-back thru 5400-exit
X                   if klgns > 0
X                       perform 4500-disp-hit thru 4500-exit
X                       add var2 to damage-cnt
X                       compute var2 = .75 * var2
X                       subtract var2 from shield-cnt
X                   else
X                       move var3 to var2
X                       perform 4500-disp-hit thru 4500-exit
X                       add var3 to damage-cnt
X                       subtract var3 from shield-cnt
X           else
X               display "There are 0 Klingons in this quadrant, " name-x.
X           perform 8120-dam-com thru 8120-exit.
X           perform 8300-ck-fuel-damage thru 8300-exit.
X           perform 8200-ck-done thru 8200-exit.
X       7200-exit.  exit.
X
X       7201-replace.
X           inspect mini-table replacing first "K" by "x".
X       7201-exit.  exit.
X
X       7202-replace.
X           inspect mini-table replacing first "R" by "x".
X       7202-exit.  exit.
X
X       7210-rep-bl.
X           move 0 to tal4.
X           inspect var4-an tallying tal4 for all " ".
X           if tal4 > 0
X               inspect var4-an replacing all " " by zeros
X               if var4-an numeric
X                   move var4-an to var4
X                   compute var4 = var4 / (10 ** tal4)
X               else
X                   move 300 to var4
X           else
X               if var4-an numeric
X                   move var4-an to var4
X               else
X                   move 300 to var4.
X           if var4 < 300
X               move 300 to var4.
X       7210-exit.  exit.
X
X       7220-compute-dist.
X           move 30 to dist-b.
X           move 30 to dist-x.
X           move 30 to dist-r.
X           move 0 to ct-k.
X           move 0 to ct-r.
X           perform 7225-find-e thru 7225-exit
X               varying rcntr from 1 by 1 until rcntr > 14
X               after kcntr from 1 by 1 until kcntr > 14.
X           perform 7230-compute thru 7230-exit
X               varying rcntr from 1 by 1 until rcntr > 14
X               after kcntr from 1 by 1 until kcntr > 14.
X           perform 7247-est-nbr thru 7247-exit.
X       7220-exit.  exit.
X
X       7225-find-e.
X           if mcol (rcntr , kcntr) = "E"
X               move rcntr to e1
X               move kcntr to e2.
X       7225-exit.  exit.
X
X       7230-compute.
X           if mcol (rcntr , kcntr) = "K"
X               move rcntr to k1
X               move kcntr to k2
X               add 1 to ct-k
X               move dist-x to str-a
X               perform 7240-dist-k thru 7240-exit
X               if dist-x > str-a
X                   move str-a to dist-x.
X           if mcol (rcntr , kcntr) = "R"
X               move rcntr to r1
X               move kcntr to r2
X               add 1 to ct-r
X               move dist-r to str-r
X               perform 7243-dist-r thru 7243-exit
X               if dist-r > str-r
X                   move str-r to dist-r.
X           if mcol (rcntr , kcntr) = "B"
X               move rcntr to b1
X               move kcntr to b2
X               move dist-b to str-x
X               perform 7245-dist-b thru 7245-exit
X               if dist-b > str-x
X                   move str-x to dist-b.
X       7230-exit.  exit.
X
X       7240-dist-k.
X           if k1 > e1
X               compute k1 = k1 - e1
X           else
X               compute k1 = e1 - k1.
X           if k2 > e2
X               compute k2 = k2 - e2
X           else
X               compute k2 = e2 - k2.
X           compute dist-x rounded = ((k1 ** 2) + (k2 ** 2)) ** .5.
X           move dist-x to dkc (ct-k).
X       7240-exit.  exit.
X
X       7243-dist-r.
X           if r1 > e1
X               compute r1 = r1 - e1
X           else
X               compute r1 = e1 - r1.
X           if r2 > e2
X               compute r2 = r2 - e2
X           else
X               compute r2 = e2 - r2.
X           compute dist-r rounded = ((r1 ** 2) + (r2 ** 2)) ** .5.
X           move dist-r to drc (ct-r).
X       7243-exit.  exit.
X
X       7245-dist-b.
X           if b1 > e1
X               compute b1 = b1 - e1
X           else
X               compute b1 = e1 - b1.
X           if b2 > e2
X               compute b2 = b2 - e2
X           else
X               compute b2 = e2 - b2.
X           compute dist-b rounded = ((b1 ** 2) + (b2 ** 2)) ** .5.
X       7245-exit.  exit.
X
X       7247-est-nbr.
X           move 30 to str-x.
X           perform 7248-est-k thru 7248-exit
X         
X           varying rt from 1 by 1 until rt > ct-k.
X           perform 7249-est-r thru 7249-exit
X               varying qt from 1 by 1 until qt > ct-r.
X       7247-exit.  exit.
X
X       7248-est-k.
X           if dkc (rt) < str-x
X               move dkc (rt) to str-x
X               compute rx = rt - 1.
X       7248-exit.  exit.
X
X       7249-est-r.
X           if drc (qt) < str-r
X               move drc (qt) to str-r
X               compute qx = qt - 1.
X       7249-exit.  exit.
X
X       7250-romulon-ck.
X           if romulons > 2 and no-way
X               display "*ENTERPRISE FIRING ON ROMULONS*"
X               display "*ROMULONS RETURNING FIRE* "
X               display "Simultaneous hits from " romulons " Romulons "
X               display "*ENTERPRISE DESTROYED*"
X               move 1 to indicate-x
X               perform 8200-ck-done thru 8200-exit
X           else
X               perform 8400-generate thru 8400-exit
X               display "*ENTERPRISE FIRING ON ROMULONS* "
X               subtract var4 from fuel-count
X               if no-way or var4 < 447
X                   compute var4 = var4 / (dist-r ** .224)
X                   move var4 to var5
X                   display var5 " unit hit on Romulon "
X                   display "*ROMULON RETURNING FIRE*"
X                   perform 8400-generate thru 8400-exit
X                   if no-way
X                       display "*ENTERPRISE DESTROYED BY ROMULON TORPEDO* "
X                       move 1 to indicate-x
X                       perform 8200-ck-done thru 8200-exit
X                   else
X                       compute var2 = 3 * var2 / (dist-r / 10)
X                       perform 4500-disp-hit thru 4500-exit
X                       add var2 to damage-cnt
X                       compute var3 = var2 / 2
X                       if var3 < 9999
X                           subtract var3 from shield-cnt
X                       else
X                           move 0 to shield-cnt
X
X               else
X                   compute var4 = var4 / (dist-x ** .125)
X                   move var4 to var5
X                   display var5 " unit hit on Romulon "
X                   display "*ROMULON DESTROYED*"
X                   perform 7202-replace thru 7202-exit
X                       varying rep-ctr from 1 by 1 until rep-ctr > qx
X                   inspect mini-table replacing first "R" by " "
X                   inspect mini-table replacing all "x" by "R"
X                   subtract 1 from romulons
X                   perform 5400-trans-back thru 5400-exit.
X           perform 8100-dmg-com thru 8100-exit.
X           perform 8300-ck-fuel-damage thru 8300-exit.
X           perform 8200-ck-done thru 8200-exit.
X       7250-exit.  exit.
X
X       7300-tor.
X           if klgns < 1 and romulons < 1
X               display "There are 0 enemy vessels in this quadrant, " name-x
X               go to 7300-exit.
X           perform 8400-generate thru 8400-exit.
X           compute var2 = 250000 / (shield-cnt + 100).
X           perform 8150-test-agn thru 8150-exit.
X           perform 7220-compute-dist thru 7220-exit.
X           if klgns > 2
X               compute var2 = var2 * (klgns + 1) / 2.
X           compute var3 = .75 * var2.
X           if romulons > 0 and torps > 0
X               display "*ROMULONS PRESENT IN QUADRANT*"
X               display "Do you want to fire on them? "
X               accept lst-reply
X               if yes-lst
X                   perform 7350-romulon-ck thru 7350-exit
X                   go to 7300-exit.
X           if torps > 0
X               if klgns > 0
X                   if shield-cnt < 475 and no-way
X                       display "*ENTERPRISE DESTROYED*"
X                       display "Low shields at time of enemy attack "
X                       move 1 to indicate-x
X                       perform 8200-ck-done thru 8200-exit
X                   else
X                       if no-way and dist-x > 4
X                           compute var2 = var2 / (dist-x / 10)
X                           display "torpedo missed "
X                           perform 4500-disp-hit thru 4500-exit
X                           add var2 to damage-cnt
X                           subtract 1 from torps
X                           subtract var3 from shield-cnt
X                           perform 8120-dam-com thru 8120-exit
X                       else
X                           display "*KLINGON DESTROYED*"
X                           subtract var3 from damage-cnt
X                           perform 7201-replace thru 7201-exit
X                               varying rep-ctr from 1 by 1 until rep-ctr > rx
X                           inspect mini-table replacing first "K" by " "
X                           inspect mini-table replacing all "x" by "K"
X                           subtract 1 from torps
X                           subtract 1 from klgns
X                           subtract 1 from klingons
X                           perform 5400-trans-back thru 5400-exit
X                           if klgns > 0
X                               perform 4500-disp-hit thru 4500-exit
X                               add var2 to damage-cnt
X                               subtract var3 from shield-cnt
X                               perform 8120-dam-com thru 8120-exit
X                           else
X                               perform 8120-dam-com thru 8120-exit
X               else
X                   display "There are 0 Klingon vessels in this quadrant, " name-x
X           else
X               display "0 torpedoes remaining, " name-x.
X           perform 8300-ck-fuel-damage thru 8300-exit.
X           perform 8200-ck-done thru 8200-exit.
X       7300-exit.  exit.
X
X       7350-romulon-ck.
X           if romulons > 1 and no-way
X               display "*ENTERPRISE FIRING ON ROMULONS*"
X               display "*ROMULONS RETURNING FIRE*"
X               display "Simultaneous hits from " romulons " Romulons "
X               display "*ENTERPRISE DESTROYED*"
X               move 1 to indicate-x
X               perform 8200-ck-done thru 8200-exit
X           else
X               display "*ENTERPRISE FIRING ON ROMULONS*"
X               subtract 1 from torps
X               if no-way and dist-r > 4
X                   display "torpedo missed "
X                   display "*ROMULONS RETURNING FIRE*"
X                   perform 8400-generate thru 8400-exit
X                   if no-way and shield-cnt < 4000
X                       display "*ENTERPRISE DESTROYED BY ROMULON TORPEDO*"
X                       move 1 to indicate-x
X                       perform 8200-ck-done thru 8200-exit
X                   else
X                       compute var2 = 3 * var2 / (dist-r / 10)
X                       perform 4500-disp-hit thru 4500-exit
X                       add var2 to damage-cnt
X                       compute var3 = var2 / 2
X                       subtract var3 from shield-cnt
X               else
X                   display "*ROMULON DESTROYED*"
X                   perform 7202-replace thru 7202-exit
X                       varying rep-ctr from 1 by 1 until rep-ctr > qx
X                   inspect mini-table replacing first "R" by " "
X                   inspect mini-table replacing all "x" by "R"
X                   subtract 1 from romulons
X                   perform 5400-trans-back thru 5400-exit.
X           perform 8300-ck-fuel-damage thru 8300-exit.
X           perform 8200-ck-done thru 8200-exit.
X       7350-exit.  exit.
X
X       7400-sta.
X           compute var3 = (damage-cnt / 60).
X           move var3 to var6.
X           move fuel-count to fuel-co.
X           move shield-cnt to shield-co.
X           display "      ".
X           display "FUEL UNITS   DAMAGE ".
X           display "REMAINING    LEVEL  ".
X           display "      ".
X           display "   " fuel-co "  " var6 "%".
X           display "      ".
X           display "===================".
X           display "      ".
X           display " PHOTON      SHIELD ".
X           display "TORPEDOES    LEVEL ".
X           display "      ".
X           display "    " torps "         " shield-co.
X           display "      ".
X           perform 8100-dmg-com thru 8100-exit.
X           perform 8300-ck-fuel-damage thru 8300-exit.
X           perform 8200-ck-done thru 8200-exit.
X       7400-exit.  exit.
X
X       7500-def.
X           add shield-cnt to fuel-count.
X           display "How many units to shields (0 - 9999)? ".
X           perform 7520-asc thru 7520-exit.
X           if shield-cnt < fuel-count
X               subtract shield-cnt from fuel-count
X           else
X               move fuel-count to fuel-co
X               display "Maximum amount to shields: " fuel-co
X               display "How many units to shields? "
X               perform 7520-asc thru 7520-exit
X               subtract shield-cnt from fuel-count.
X           move shield-cnt to shield-co.
X           display "Shields at " shield-co " per your command ".
X       7500-exit.  exit.
X
X       7520-asc.
X           accept shield-cnt-an.
X           move 0 to sbl.
X           inspect shield-cnt-an tallying sbl for all " ".
X           inspect shield-cnt-an replacing all " " by zeros.
X           if shield-cnt-an not numeric
X               move 0 to sbl
X               display "INVALID - Entry must be numeric "
X               display "How many units to shields? "
X               accept shield-cnt-an
X               inspect shield-cnt-an tallying sbl for all " "
X               inspect shield-cnt-an replacing all " " by zeros
X               if shield-cnt-an not numeric
X                   move 0 to shield-cnt
X                   go to 7520-exit.
X           move shield-cnt-an to shield-cnt.
X           if sbl > 0
X               compute shield-cnt = shield-cnt / (10 ** sbl).
X       7520-exit.  exit.
X
X       7600-doc.
X           perform 8400-generate thru 8400-exit.
X           if base-cnt > 0
X               perform 7220-compute-dist thru 7220-exit
X               if dist-b < 7
X                   if no-way
X                       display "*UNSUCCESSFUL DOCKING ATTEMPT* "
X                       display "Star base reports all bays in use "
X                       perform 8100-dmg-com thru 8100-exit
X                   else
X                       move 5 to torps
X                       move 25000 to fuel-count
X                       move 0 to damage-cnt
X                       move 0 to shield-cnt
X                       display "Shields dropped to dock at star base "
X                       display "*DOCK SUCCESSFUL* "
X               else
X                   display "The nearest star base is " dist-b " parsecs "
X                   display "You must maneuver to within 6 parsecs to dock "
X           else
X               display "There are 0 star bases in this quadrant, " name-x.
X           perform 8300-ck-fuel-damage thru 8300-exit.
X           perform 8200-ck-done thru 8200-exit.
X       7600-exit.  exit.
X
X       7650-trans-star.
X           if q1 = 1
X               move 2 to q9
X           else
X               if q1 = 9
X                   move 8 to q9
X               else
X                   move q1 to q9.
X           if q2 = 1
X               move 2 to r9
X           else
X               if q2 = 9
X                   move 8 to r9
X               else
X                   move q2 to r9.
X           compute w = (q9 - 2) * 14.
X           compute z = (r9 - 2) * 14.
X           perform 7670-strans thru 7670-exit
X               varying rctr from 1 by 1 until rctr > 42
X               after kctr from 1 by 1 until kctr > 42.
X       7650-exit.  exit.
X
X       7670-strans.
X           compute a = z + rctr.
X           compute b = w + kctr.
X           move macol (a , b) to kolumn (rctr , kctr).
X       7670-exit.  exit.
X
X       7700-lrs.
X           perform 7650-trans-star thru 7650-exit.
X           move zeros to scan-keep.
X           move 0 to scan-ctr.
X           if q1 = 1
X               move 1 to qt1
X               move 3 to qt3
X           else
X               if q1 = 9
X                   move 7 to qt1
X                   move 9 to qt3
X               else
X                   compute qt1 = q1 - 1
X                   compute qt3 = q1 + 1.
X           if q2 = 1
X               move 1 to qt2
X               move 3 to qt4
X           else
X               if q2 = 9
X                   move 7 to qt2
X                   move 9 to qt4
X               else
X                   compute qt2 = q2 - 1
X                   compute qt4 = q2 + 1.
X           perform 7730-trade-tbl thru 7730-exit
X               varying tr2 from 0 by 1 until tr2 > 2
X               after tr1 from 0 by 1 until tr1 > 2.
X           display "      ".
X           display "=========================".
X           display "=       =       =       =".
X           display "= " cv (1) "," cv (2) " = " cv (3) "," cv (4) " = " cv (5) "," cv (6) " = ".
X           display "=       =       =       =".
X           display "=========================".
X           display "=       =       =       =".
X           display "= " cv (7) "," cv (8) " = " cv (9) "," cv (10) " = " cv (11) "," cv (12) " =".
X           display "=       =       =       =".
X           display "=========================".
X           display "=       =       =       =".
X           display "= " cv (13) "," cv (14) " = " cv (15) "," cv (16) " = " cv (17) "," cv (18) " =".
X           display "=       =       =       =".
X           display "=========================".
X           display "KEY: ".
X           display "Quadrants " qt1 "," qt2 " thru " qt3 "," qt4.
X           display "Format - KLINGONS,STAR BASES ".
X           if q1 = 1 or q1 = 9 or q2 = 1 or q2 = 9
X               display "*ENTERPRISE ON GALACTIC BOUNDARY*".
X           display "Enterprise in quadrant " q1 "," q2.
X           display "      ".
X           perform 8100-dmg-com thru 8100-exit.
X           perform 8300-ck-fuel-damage thru 8300-exit.
X           perform 8200-ck-done thru 8200-exit.
X       7700-exit.  exit.
X
X       7730-trade-tbl.
X           compute qt = (tr1 * 14).
X           compute rt = (tr2 * 14).
X           perform 7750-trade-act thru 7750-exit
X               varying ktctr from 1 by 1 until ktctr > 14
X               after rtctr from 1 by 1 until rtctr > 14.
X           perform 7770-inspect-scan thru 7770-exit.
X       7730-exit.  exit.
X
X       7750-trade-act.
X           compute qx = qt + ktctr.
X           compute rx = rt + rtctr.
X           move kolumn (rx , qx) to scan-col (rtctr , ktctr).
X       7750-exit.  exit.
X
X       7770-inspect-scan.
X           add 1 to scan-ctr.
X           inspect scan-table tallying cv (scan-ctr) for all "K".
X           add 1 to scan-ctr.
X           inspect scan-table tallying cv (scan-ctr) for all "B".
X       7770-exit.  exit.
X
X       7800-int.
X           if klingons > 0
X               move 1 to cx
X               move 1 to dx
X               perform 7850-search thru 7850-exit
X                   until macol (cx , dx) = "K" or dx > 126
X               compute cx-1 = (dx - 1) / 14 + 1
X               compute dx-1 = (cx - 1) / 14 + 1
X               display " "
X               display "Latest intelligence gathering reports "
X               display "indicate 1 or more Klingon vessels "
X               display "in the vicinity of quadrant " cx-1 "," dx-1
X               display " "
X               display "Enterprise in quadrant " q1 "," q2
X               display " ".
X       7800-exit.  exit.
X
X       7850-search.
X           add 1 to cx.
X           if cx > 126
X               add 1 to dx
X               move 1 to cx.
X       7850-exit.  exit.
X
X       8000-bomb.
X           if macol (mrctr , mkctr) = "K"
X               display "*ENTERPRISE DESTROYED IN COLLISION WITH KLINGON*"
X           else
X               if macol (mrctr , mkctr) = "R"
X                   display "*ENTERPRISE DESTROYED IN COLLISION WITH ROMULON*"
X               else
X                   display "*ENTERPRISE DESTROYED IN COLLISION WITH STAR BASE*".
X           move 1 to indicate-x.
X           perform 8200-ck-done thru 8200-exit.
X       8000-exit.  exit.
X
X      ****************************************************
X      * 8100-dmg-com and 8120-dam-com calculate and dis- *
X      * play hits on the enterprise from enemy vessels   *
X      * in quadrant.  --  Called following possible con- *
X      * tact with enemy vessels.                         *
X      ****************************************************
X
X       8100-dmg-com.
X           if klgns > 0
X               compute var2 = (k-or - klingons) * klgns * fuel-count / (shield-cnt + 21)
X               perform 8150-test-agn thru 8150-exit
X               compute var3 = .75 * var2
X               display "*ENTERPRISE ENCOUNTERING KLINGON FIRE*"
X               perform 4500-disp-hit thru 4500-exit
X               add var2 to damage-cnt
X               subtract var3 from shield-cnt.
X       8100-exit.  exit.
X
X       8120-dam-com.
X           if romulons > 0
X               compute var2 = romulons * fuel-count / (shield-cnt + 7)
X               perform 8160-test-agn thru 8160-exit
X               compute var3 = .75 * var2
X               display "*ENTERPRISE ENCOUNTERING ROMULON FIRE*"
X               perform 4500-disp-hit thru 4500-exit
X               add var2 to damage-cnt
X               subtract var3 from shield-cnt.
X       8120-exit.  exit.
X
X       8150-test-agn.
X           if var2 < 325 and klgns > 0
X               add 177 to var2
X               compute var2 = (klgns * var2 / 2.7) + (var2 * damage-cnt / 980).
X       8150-exit.  exit.
X
X       8160-test-agn.
X           if var2 < 525 and romulons > 0
X               add 254 to var2
X               compute var2 = (romulons * var2 / 4.7) + (var2 * damage-cnt / 365).
X       8160-exit.  exit.
X
X       8200-ck-done.
X           if bye-bye
X               go to 2000-exit.
X       8200-exit.  exit.
X
X      *************************************************
X      * 8300-ck-fuel-damage checks and notifies the   *
X      * user of low shields, low fuel reserves, or    *
X      * high damage to the ship, in order that he may *
X      * attempt to dock before the enterprise is      *
X      * disabled.   --  Called following possible     *
X      * contact with enemy vessels.                   *
X      *************************************************
X
X       8300-ck-fuel-damage.
X           if fuel-count < 4500 and fuel-count > 0
X               display "Lt. Scott reports fuel is running low, " name-x
X           else
X               if fuel-count not > 0
X                   display "Fuel reserves depleted "
X                   display "the Enterprise is drifting in space "
X                   perform 8350-ck-shift thru 8350-exit.
X           if damage-cnt > 6000
X               display "Enterprise stranded because of heavy damage "
X               move 1 to indicate-x
X               perform 8200-ck-done thru 8200-exit.
X           if damage-cnt > 4500
X               display "Damage Control reports heavy damage to Enterprise, " name-x.
X           if shield-cnt < 800 and (klgns > 0 or romulons > 0)
X               display "Lt. Sulu reports shields dangerously low, " name-x.
X       8300-exit.  exit.
X
X       8340-ck-fl.
X           if fuel-count not > 180
X               display "*INSUFFICIENT FUEL TO CONTINUE*"
X               perform 8350-ck-shift thru 8350-exit
X               go to 2000-exit.
X       8340-exit.  exit.
X
X       8350-ck-shift.
X           if shield-cnt > 200
X               display "Lt. Sulu advises you lower shields "
X               display "to increase fuel supply, " name-x
X           else
X               move 1 to indicate-x
X               perform 8200-ck-done thru 8200-exit.
X       8350-exit.  exit.
X
X       8400-generate.
X           if nx > 24
X               move 0 to nx.
X           add 1 to nx.
Xnote. used to be if char (nx) numeric
X           if nx equal nx
X               move 1 to genrte-result
X           else
X               move 0 to indicate-y
X               move 0 to genrte-result
X               if char (nx) = "f"
X                   move 1 to indicate-y.
X       8400-exit.  exit.
X
X       8500-finish-game.
X           display "      ".
X           if bye-bye
X               if s-date > ds-date
X                   move klingons to vae1
X                   move ws-date to ds-date
X                   display "It is now star date " s-date
X                   display "STAR DATE " ds-date " Star Fleet HQ"
X                   display "was destroyed by " vae1 " klingon vessels"
X                   display name-x " COURT MARTIALED"
X               else
X                   display name-x " COURT MARTIALED"
X           else
X               display "Congratulations on a job well done. "
X               display "The Federation is proud of you, " name-x.
X           display "      ".
X       8500-exit.  exit.
X
X       9000-end-of-job-section section.
X       9000-end-of-job.
X           display "      ".
X       9000-exit.  exit.
END_OF_FILE
if test 30263 -ne `wc -c <'ctrek.p2'`; then
    echo shar: \"'ctrek.p2'\" unpacked with wrong size!
fi
# end of 'ctrek.p2'
fi
echo shar: End of archive 2 \(of 2\).
cp /dev/null ark2isdone
MISSING=""
for I in 1 2 ; do
    if test ! -f ark${I}isdone ; then
	MISSING="${MISSING} ${I}"
    fi
done
if test "${MISSING}" = "" ; then
    echo You have unpacked both archives.
    echo Building source file
    cat ctrek.p1 ctrek.p2 >ctrek.cob
    rm -f ctrek.p1 ctrek.p2
    rm -f ark[1-9]isdone
else
    echo You still need to unpack the following archives:
    echo "        " ${MISSING}
fi
##  End of shell archive.
exit 0