• ; Long and complicated close enemy code.
  •  
  • 2:
  • if damage is < 89 then discharge energy  -- explain
  • scan perimeter  -- explain
  • if value #cur_fuel > 1 then if value #scan = 2 then if damage is > 51 then if value #cur_life >= #enemy_d then gosub backherup_ #cur_head  -- explain
  • if value #cur_fuel > 1 then if value #scan <> 2 then if value #scan <> 5 then goto reaper  -- explain
  • math vl = #enemy_d / #cur_life
  • if value #cur_fuel > 1 then if value #scan = 2 then if value #enemy_d <= 7 then if value ~vl >= 2 then if value #cur_life <= 5 then if shield is down then goto reaper3  -- explain
  • if value #scan = 2 then if damage is < 89 then if value #enemy_d < 10 then goto 2  -- explain
  • if value #scan = 2 then if damage is > 89 then if value #cur_life = #enemy_d then self destruct  -- explain
  • if shield is up then lower shield
  • scan perimeter  -- explain
  • if scan found barrier then goto start_ #cur_head  -- explain
  • goto #scan
  • move forward
  • if value #inbound = 0 then if value #enemy_y <> #y_pos then if value #x_pos <> #enemy_x then if not bump barrier then goto start_ #cur_head  -- explain
  • if value #x_pos = #enemy_x then goto same_x_ #cur_head  -- explain
  • if value #y_pos = #enemy_y then goto same_y_ #cur_head  -- explain
  • if value #inbound >= 1 then goto locked_ #cur_head #inbound  -- explain
  • goto barrier  -- explain
  •  
  • ; Enemy hadn't discharged back, so raise your shields.
  • ; Might lug missile at point blank or start shooting you.
  •  
  • reaper3:  -- explain
  • raise shield
  • scan perimeter  -- explain
  • if value #cur_fuel > 1 then if value #scan = 2 then if damage is > 51 then if value #cur_life >= #enemy_d then gosub backherup_ #cur_head  -- explain
  • if value #cur_fuel > 1 then if value #scan <> 2 then if value #scan <> 5 then goto reaper  -- explain
  • if value #scan = 2 then if damage is > 89 then if value #cur_life = #enemy_d then self destruct  -- explain
  • if value #scan = 2 then if damage is < 89 then if value #enemy_d < 10 then goto 2  -- explain
  • if value #scan = 2 then if damage is > 89 then if value #cur_life = #enemy_d then self destruct  -- explain
  • lower shield
  • if value #inbound = 0 then if value #enemy_x <> #x_pos then if value #enemy_y <> #y_pos then goto start_ #cur_head  -- explain
  • if value #x_pos = #enemy_x then goto same_x_ #cur_head  -- explain
  • if value #y_pos = #enemy_y then goto same_y_ #cur_head  -- explain
  • if value #inbound >= 1 then goto locked_ #cur_head #inbound  -- explain
  •  
  • ; Might have backed up to try to get you with a missile or frag.
  • ; Do something about it.
  •  
  • reaper:  -- explain
  • if value #x_pos <> #enemy_x then if value #y_pos <> #enemy_y then goto kenny  -- explain
  • math ve = #cur_head - #enemy_h  -- explain
  • if value ~ve = 0 then move backward  -- explain
  • if value ~ve <> 0 then move forward  -- explain
  • if value #enemy_x = #x_pos then if value #cur_head <> 2 then if value #cur_head <> 4 then goto reaper2  -- explain
  • if value #enemy_y = #y_pos then if value #cur_head <> 3 then if value #cur_head <> 1 then goto reaper2  -- explain
  • if bump barrier then move backward
  • if shield is down then gosub err_ #cur_head  -- explain
  • lower shield
  • if value #x_pos = #enemy_x then goto same_x_ #cur_head  -- explain
  • if value #y_pos = #enemy_y then goto same_y_ #cur_head  -- explain
  • if value #inbound >= 1 then goto locked_ #cur_head #inbound  -- explain
  • goto err_ #cur_head  -- explain
  •  
  • ; Someone is trying to run away, chase them down, and keep on the chase.
  •  
  • reaper2:  -- explain
  • scan perimeter  -- explain
  • if value #scan <> 3 then goto #scan
  • if value ~ve = 0 then move backward  -- explain
  • if value ~ve <> 0 then move forward  -- explain
  • if value #enemy_x = #x_pos then if value #cur_head <> 2 then if value #cur_head <> 4 then goto reaper2  -- explain
  • if value #enemy_y = #y_pos then if value #cur_head <> 3 then if value #cur_head <> 1 then goto reaper2  -- explain
  • if shield is up then lower shield
  • if value #inbound = 0 then if value #enemy_x <> #x_pos then if value #enemy_y <> #y_pos then goto start_ #cur_head  -- explain
  • if value #x_pos = #enemy_x then goto same_x_ #cur_head  -- explain
  • if value #y_pos = #enemy_y then goto same_y_ #cur_head  -- explain
  • if value #inbound >= 1 then goto locked_ #cur_head #inbound  -- explain
  •  
  • ; Someone is likely trying to frag you, clear out their mine.
  •  
  • kenny:  -- explain
  • if scan found mine then if damage is > 89 then gosub kenny2  -- explain
  • if scan found mine then discharge energy  -- explain
  • if shield is down then lower shield
  • if value #inbound = 0 then if value #enemy_x <> #x_pos then if value #enemy_y <> #y_pos then goto start_ #cur_head  -- explain
  • if value #x_pos = #enemy_x then goto same_x_ #cur_head  -- explain
  • if value #y_pos = #enemy_y then goto same_y_ #cur_head  -- explain
  • if value #inbound >= 1 then goto locked_ #cur_head #inbound  -- explain
  •  
  • ; We're too hurt to get rid of the mine.
  •  
  • kenny2:  -- explain
  • move backward
  • if shield is up then lower shield
  • goto err_ #cur_head  -- explain
  •  
  • ; We're hurt, get the heck out of there.
  •  
  • backherup_ 1:  -- explain
  • ; next command is subclick 4
  •  
  • if value #enemy_x = #x_pos then if value #enemy_h = 3 then lay mines on  -- explain
  • scan relative 5  -- explain
  • if value #scan <> 0 then if value #scan <> 5 then self destruct  -- explain
  • move backward
  • lay mines off
  • if value #cur_ammo >= 7 then if value #cur_fuel >= 210 then goto mine_layer  -- explain
  • assign vb 3  -- explain
  • if shield is down then gosub looptyi
  • lower shield
  • goto looptyi
  •  
  • backherup_ 3:  -- explain
  • ; next command is subclick 4
  •  
  • if value #enemy_x = #x_pos then if value #enemy_h = 1 then lay mines on  -- explain
  • scan relative 5  -- explain
  • if value #scan <> 0 then if value #scan <> 5 then self destruct  -- explain
  • move backward
  • lay mines off
  • if value #cur_ammo >= 7 then if value #cur_fuel >= 210 then goto mine_layer  -- explain
  • assign vb 3  -- explain
  • if shield is down then gosub looptyi
  • lower shield
  • goto looptyi
  •  
  • backherup_ 2:  -- explain
  • ; next command is subclick 4
  •  
  • if value #enemy_y = #y_pos then if value #enemy_h = 4 then lay mines on  -- explain
  • scan relative 5  -- explain
  • if value #scan <> 0 then if value #scan <> 5 then self destruct  -- explain
  • move backward
  • lay mines off
  • if value #cur_ammo >= 7 then if value #cur_fuel >= 210 then goto mine_layer  -- explain
  • assign vb 3  -- explain
  • if shield is down then gosub looptyi
  • lower shield
  • goto looptyi
  •  
  • backherup_ 4:  -- explain
  • ; next command is subclick 4
  •  
  • if value #enemy_y = #y_pos then if value #enemy_h = 2 then lay mines on  -- explain
  • scan relative 5  -- explain
  • if value #scan <> 0 then if value #scan <> 5 then self destruct  -- explain
  • move backward
  • lay mines off
  • if value #cur_ammo >= 7 then if value #cur_fuel >= 210 then goto mine_layer  -- explain
  • assign vb 3  -- explain
  • if shield is down then gosub looptyi
  • lower shield
  • goto looptyi
  •  
  • ; Keep backing up.
  •  
  • looptyi:  -- explain
  • scan relative 5  -- explain
  • if value #scan <> 0 then if value #scan <> 5 then goto outofit  -- explain
  • math vb = ~vb - 1  -- explain
  • move backward
  • if value #x_pos <> #enemy_x then if value #y_pos <> #enemy_y then if value ~vb <> 0 then goto looptyi
  • if value #x_pos = #enemy_x then goto same_x_ #cur_head  -- explain
  • if value #y_pos = #enemy_y then goto same_y_ #cur_head  -- explain
  •  
  • ; Stop backing up.
  •  
  • outofit:  -- explain
  • math v1 = #x_pos - #enemy_x - #enemy_x * #x_pos / #enemy_x + #enemy_x * #enemy_x / #y_pos + #y_pos - #enemy_y - #enemy_y * #y_pos / #enemy_y + #enemy_y * #enemy_y  -- explain
  • if value ~v1 < 3 then self destruct  -- explain
  • if value ~v1 > 70 then goto start_ #cur_head  -- explain
  • goto recooperate