-+-+-+-+-+-+-+-+ START OF PART 11 -+-+-+-+-+-+-+-+
X     for i=1 to noship
X       if t(i)::ship=14 and t(i)::spos=t(t(i)::others(1))::spos  &
X        and (t(t(i)::others(1))::player=0 or (t(t(i)::others(1))::player=1 &
X        and t(i)::others(1)=pr::shipnum)) then gosub 3680
X       end if
X     next i
X     i=i1
X     return
X`20
X3680 ! ----------------- missile hit -------------------
X     get #3%, key #0% eq name$(pr::planet), wait 60
X     t(i)::ship=-1\t(i)::sintent=-1
X     update #3%\free #3%
X     if t(t(i)::others(1))::ship=-1 then
X       a$= "Target lost - missile self-destructing."
X       call display(23,a$)
X       return
X     end if
X     if t(i)::others(1)=pr::shipnum then
X       ! you have taken a missile hit
X       a$= "MISSILE HIT!  The Xionite explosion sends your ship into a spin!
V"
X       call display(23,a$)
X     else
X       a$="You see a blinding flash, as a missile strikes the "+ &
X       edit$(s(t(t(i)::others(1))::ship)::sname,128%)+"."
X       call display(23,a$)
X     end if
X     damage=int(50*rnd)+50
X     tar=t(i)::others(1)
X     if tar=pr::shipnum then
X       pr::energy=pr::energy-damage
X       gosub 1700\gosub damage_report
X       m$="%%mh"
X       gosub 5000
X       if pr::energy<0 then goto 8000 end if
X     end if
X     ! laser hit routine jumps to here
X3690 get #3%, key #0% eq name$(pr::planet), wait 60
X     t(tar)::senergy=t(tar)::senergy-damage
X     if t(tar)::ship=10 then
X       t(tar)::ship=-1
X       update #3%\free #3%
X       return
X     end if
X     if t(tar)::senergy=<0 and t(tar)::player=0 and t(tar)::ship<>-1 then
X         a$="The "+edit$(s(t(tar)::ship)::sname,128%)+&
X         " becomes a huge fireball, instantly vaporizing."
X         call display(23,a$)
X         pr::score=pr::score+s(t(tar)::ship)::menergy
X         if t(tar)::ship<>14 then pr::kills=pr::kills+1 end if
X         t(tar)::ship=-1\t(tar)::sintent=-1\update #3%\free #3%
X         return
X      end if
X      if t(tar)::player=0 and s(t(tar)::ship)::menergy<>0 then`20
X        if t(tar)::senergy/s(t(tar)::ship)::menergy<.27 and rnd>.2 and &
X`09     t(tar)::sintent<>9 and t(tar)::ship<>14 then
X          a$="Escape capsule launch detected from "+ &
X          edit$(s(t(tar)::ship)::sname,128%)+"."
X          call display(23,a$)
X          t(tar)::sintent=9
X        end if
X      end if
X     update #3%\free #3%
X     return
X`20
X3700 ! ------------------- energy bomb ---------------------
X     if pr::equip(9)=0 then`20
X`09call display(33,"Wishful thinking! You don't have one.")
X`09action_combat=action_combat-1
X`09return
X     end if
X     a$="The consequences of this action could be unimmaginable:"
X     call display(23,a$)
X     a$="PROCEED? (Y/N) "\call display(1,a$)
X     if a$<>"y" and a$<>"Y" then`20
X`09a$="Abort sequence initiated - disarm countdown in process."
X        call display(23,a$)
X`09return
X     end if
X     a$="Energy shield created - Antimatter expansion initiated"
X     call display(23,a$)
X     pr::equip(9)=0
X     get #3%, key #0% eq name$(pr::planet), wait 60
X     for i=1 to noship
X      if t(i)::ship=-1 then iterate end if
X      if i=pr::shipnum then iterate end if
X      if t(i)::ship=20 then
X         t(i)::sintent=20
X         if abs(t(i)::spos-pr::rpos)<pr::scanrange then
X           a$= "Energy bomb shield activation detected from Star Base."
X           call display(23,a$)
X         end if
X         iterate
X      end if
X      if abs(t(i)::spos-pr::rpos)<4 then
X        a$= edit$(s(t(i)::ship)::sname,128%)+" VAPORIZED."
X        call display(23,a$)
X        pr::kills=pr::kills+1
X        pr::score=pr::score+int(s(t(i)::ship)::menergy/10)
X        if t(i)::player=0 then
X          t(i)::ship=-1
X          t(i)::senergy=-1
X          t(i)::sintent=-1
X        else`20
X          if (t(i)::player = 1) then
X            m$="%%eb"
X            sender$=pr::username
X            u$=t(i)::username
X            isave=i
X            gosub send_message
X            i=isave
X          end if
X        end if
X      end if
X     next i
X     update #3%\free #3%
X     if pt::zone<>4 and pt::zone<>3 then pr::legal=5 end if
X     if rnd<.12 then
X       a$="You sense something is wrong - the matter/anti-matter chain" &
X`09  +" reaction is running wild!! - It's totally out of control!"
X       call display(23,a$)
X       a$= edit$(pt::pname,128%)+" Vaporized!!!! You just wiped a "&
X`09  +"world off the map."
X       call display(23,a$)
X       a$="Energy expansion stabilizing - Oh no!  Energy recession is"&
X`09  +" out of control!!!"
X       call display(23,a$)
X       call display(23,"")
X       a$="BBBBBBBBOOOOOOOOOMMMMMMMMMMMMMMMM!!!!!!!"
X       call display(23,a$)
X       goto 8000
X     else
X       call display(23,"")
X       a$="Antimatter field receeding - It worked!!!!"
X       call display(23,a$)
X     end if
X     return
X`20
X
X3800 ! ***** escape capsule *****
X     if pr::equip(7)<>1 then`20
X`09a$="You'll have to go down with your ship! - "&
X`09+"You don't have an escape capsule!!!"
X        call display(23,a$)
X        action_move=action_move-1
X`09return
X     end if
X     a$= "Are you sure you want to abandon ship (You'll lose all except" &
X         +" your gold and"
X     call display(23,a$)
X     a$="money, and your replacement ship will have no optional equipment):"
X     call display(23,a$)
X     a$="ABANDON? (Y/N)"\call display(1,a$)
X     if a$="n" or a$="N" then
X`09action_move=action_move-1
X`09return
X     end if
X     get #3%, key #0% eq name$(pr::planet), wait 60
X     t(pr::shipnum)::sintent=9\t(pr::shipnum)::player=0\update #3%\free #3%
X     call display(23,"")
X     a$="Escape sequence initiated."
X     call display(23,"")
X     a$="You are thrown clear of your ship and hurtle towards the planet"
X     call display(23,a$)
X     m$="%%ab"
X     gosub 5000                         ! check if any players in range
X     pr::escapes=pr::escapes+int(pr::time_owned/10)
X     call display(4,)`09`09`09! erase trading window
X     call display(12,)\scanner_on=0
X     a$="Soon you enter the atmosphere, your recovery shutes open,"&
X`09+" and you float down"
X     call display(24,a$)
X     a$= "and land near the spaceport"
X     call display(24,a$)
X     if pt::zone=4 then`20
X`09a$="You are captured by Thargoids and literally " &
X`09+"ripped apart on the spot."
X        call display(24,a$)
X        quit=2\goto 8000
X     end if
X     if pt::zone<>1 then`20
X`09a$="You spend a month on "+edit$(pt::pname,128%)+ &
X`09" while you claim insurance on your ship."
X        call display(24,a$)
X`09goto 3830
X     end if
X     a$="When you try to claim insurance on your ship, the friendly local"&
X`09+" representative"
X     call display(24,a$)
X     a$="of the Galactic Insurance Co. smiles and points to clause C.4 of"&
X`09+" your policy"
X     call display(24,a$)
X     a$="which reads 'Coverage Limitations and Exclusions. We will not pay"&
X`09+" for direct or"
X     call display(24,a$)
X     a$="indirect loss in these cases A) War  B) Nuclear Hazard  C) Sabotage
V"
X     call display(24,a$)
X     if pr::credits>200000 then`20
X`09a$="You'll have to pay for a new ship yourself."`20
X        call display(24,a$)
X`09goto get_new
X     else`20
X`09a$= "You retire."
X        call display(24,a$)
X`09quit=1
X`09goto 8000
X     end if
X3830 a$="The insurance policy will cover replacement cost of your ship.  Not
Ve"
X     call display(24,a$)
X     a$="that equipment is NOT covered."
X     call display(24,a$)
X     pr::credits=pr::credits+s(pr::shiptype)::cost
X     gosub 1700`09`09! update status
Xget_new:
X     a$="You can now choose your next ship."
X     call display(24,a$)
X     call display(17,)
X     for i=1 to 9\pr::cargo(i)=0\next i`09`09!clear all cargo except gold
X     pr::totcargo=pr::cargo(10)
X     pr::energy=0
X     pr::rpos=0
X     pr::on_ground = 1
X     pr::lsj = 0\pr::cloak = 0
X     pr::legal=1
X     pr::shiptype = 0
X     gosub 6000
X     find #2%, key #0% eq pr::username, wait 60\update #2%\free #2%
X     mine=0
X     return
X
X3900 ! -------------------- board abandoned ship --------------------
X     mine=0
X     ! check if you are right above a ship, if yes ==> board
X     get #3%, key #0% eq name$(pr::planet), wait 60
X
X     for i=1 to noship
X       if t(i)::ship<>-1 and abs(t(i)::spos-pr::rpos)=0 and (t(i)::sintent=9
V &
X`09 `09or t(i)::sintent < -1) then
X`09   ! big ships allow more than 1 person to board
X           a$="You board the badly damaged "+edit$(s(t(i)::ship)::sname,128%
V)+ &
X`09      " and check out the cargo hold."
X           call display(23,a$)
X
X`09   if t(i)::sintent > 0 then
X`09     select t(i)::ship
X`09       case 20
X`09`09 t(i)::sintent = -10
X`09       case 17
X`09         t(i)::sintent = -5
X`09       case 21
X`09`09 t(i)::sintent = -3
X`09       case 13,15,16
X`09`09 t(i)::sintent = -2
X`09       case else
X`09`09 t(i)::sintent = -1
X                 pr::score=pr::score+s(t(i)::ship)::menergy
X                 pr::kills=pr::kills+1
X`09`09 t(i)::ship = -1
X`09`09 t(i)::senergy=-1
X`09     end select
X           else
X`09     ! if more than one person on board, up count by one
X`09     if t(i)::sintent < -1 then
X`09`09t(i)::sintent = t(i)::sintent + 1
X                pr::score=pr::score+s(t(i)::ship)::menergy
X                pr::kills=pr::kills+1
X                if t(i)::sintent = -1 then
X`09`09  t(i)::ship = -1
X`09`09  t(i)::senergy=-1
X`09`09end if
X`09     end if
X         end if
X         goto 3910
X       end if
X     next i
X     free #3%
X     ! check if a starbase in docking range
X     for i=1 to noship
X       if t(i)::ship=20 and abs(t(i)::spos-pr::rpos)<2 then goto 3970 end if
X     next i
X     call display(33,"There is no abandoned ship right above you.")
X     action_move=action_move-1
X     return
X
X3910 update #3%\free #3%
X     if rnd>.8 then`20
X        a$="You find that the cargo hold has been totally"&
X`09+" consumed by intense fire."
X        call display(23,a$)
X        goto 3940
X     end if
X      if t(i)::player=1 then
X`09c=t(i)::cargo(1)`09! cargo item
X        b=t(i)::cargo(2)`09! amount carried
X`09goto 3930
X      else
X        a=t(i)::ship
X`09select a
X`09  case 1
X`09    b=int(10*rnd+10)
X`09    if rnd>.5 then c=10 else c=5 end if
X`09  case 2,8,6
X`09    b=int(50*rnd+50)
X`09    c=int(9*rnd+1)
X`09  case 4,5,7
X`09    b=int(20*rnd+1)
X`09    c=int(9*rnd+1)
X`09  case 3
X`09    b=int(200*rnd+100)
X`09    c=int(9*rnd+1)
X`09  case 9
X`09    b=int(50*rnd+5)
X`09    if rnd>.5 then`20
X`09      c=8
X`09    else
X              if rnd>.5 then c=2
X              else c=9
X`09      end if
X`09    end if
X`09  case 11,15
X`09    b=16
X`09    c=-1
X`09  case 12
X`09    b=14
X`09    c=-1`09   `20
X`09  case 13
X`09    b=15
X`09    c=-1
X`09  case 16
X`09    b=19
X`09    c=-1
X`09  case 17
X`09    if rnd>.96 then
X`09      b=17`09
X`09      c=-1
X`09    else`20
X`09      if rnd<.70 then
X`09        b=int(450*rnd+320)
X`09        c=10
X`09      else
X`09        b=20
X`09        c=-1
X`09      end if
X`09    end if
X`09  case 18
X`09    b=int(50*rnd+1)
X`09    c=10
X`09  case 19`09! boa`20
X`09    if rnd>.95 then
X`09      b=21
X`09      c=-1
X            else
X`09      b=int(400*rnd+5)
X`09      c=int(4*rnd+1)
X`09    end if
X`09  case 20`09! starbase
X`09    if rnd> .5 then
X`09      b=int(100*rnd+300)
X`09      c=10
X`09    else
X`09      b=21
X`09      c=-1
X`09    end if
X`09  case 21
X`09    if rnd>.50 then
X`09      b=22
X`09      c=-1
X`09    else
X`09      b=int(400*rnd+100)
X`09      c=int(3*rnd+4)
X`09    end if
X          case else
X `09    b=int(100*rnd+1)
X`09    c=int(10*rnd+1)
X        end select
X     end if
X3930 if c=-1 then goto found_equipment end if
X       a$="You find "+str$(b)+" "+edit$(c(c)::unit,128%)+"s of "+ &
X  `09 edit$(c(c)::trade,128%)+"."
X       call display(23,a$)
X       a$="n"
X       if (pr::totcargo+b)>pr::maxcargo then
X         a$="You won't be able to take it all."
X         call display(23,a$)
X         a$= "FLUSH CARGO HOLD? (Y/N)"
X         call display(1,a$)
X       end if
X       if a$<>"y" and a$<>"Y" then goto 3935 end if
X       a$="Cargo hold flushed.  All cargo except your gold has been discarde
Vd."
X       call display(23,a$)
X       for k=1 to 9\pr::cargo(k)=0\next k
X       pr::totcargo=pr::cargo(10)
X3935   a$="How much do you want to take?"
X       call display(23,a$)
X       a$="QUANTITY> "\call display(1,a$)`20
X       a=abs(val(a$))
X       if (pr::totcargo+a)>pr::maxcargo then`20
X`09 a$="You only have room for "+str$(pr::maxcargo-pr::totcargo)+" tonnes."
X         call display(23,a$)
X`09 goto 3935
X       end if
X3938   if a>b then`20
X `09 call display(33,"There isn't that much here!")
X         goto 3935`20
X       end if
X       pr::cargo(c)=pr::cargo(c)+a\pr::totcargo=pr::totcargo+a
X       a$="You load "+str$(a)+" "+edit$(c(c)::unit,128%)+"s of "+ &
X`09 edit$(c(c)::trade,128%)+" into your hold."
X       call display(23,a$)
X3940   if mine=0 then
X`09 if t(i)::ship = -1 then
X           a$="You return to your ship.  As you uncouple with the wrecked"+
V &
X              " ship, the strain"
X           call display(23,a$)
X           a$="causes the wreck to break up and disintegrate."
X           call display(23,a$)
X`09 else
X`09   a$="While uncoupling, you note that the damaged ship has " + &
X`09      "another docking port."
X`09   call display(23,a$)
X       else
X         ! operation was mining
X         mine=0
X       end if
X       return
X
X3970 ! board starbase
X     if t(i)::sintent<>0 then
X       a$= "STARBASE DOCKING REQUEST DENIED."
X       call display(23,a$)
X       return
X     end if
X     a$="STARBASE DOCKING PROGRAM ACTIVATED - Docking maneouver completed."
X     call display(23,a$)
X     clean=(pr::legal-1)`5E4*1000
X     clean=clean+int(clean*rnd)
X     if clean<>0 and pr::credits>clean then
X       a$= "For "+str$(clean)+" credits, you can be clean again..."
X       call display(23,a$)
X       a$="PAY IT? (Y/N)"\call display (1,a$)
X       if a$="n" then goto 3975 end if
X       pr::credits=pr::credits-clean\pr::legal=1\clean=0
X     end if
X     if clean<>0 then
X       a$= "A junior official throws you off the base, mumbling about how"
X       call display(23,a$)
+-+-+-+-+-+-+-+-  END  OF PART 11 +-+-+-+-+-+-+-+-
