; 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