; Grenade code.
Highly accurate believe it or not.
; Need to extend range with scan forward.
; Really redid and sped up, takes single click
now.
closechk_ -1 1:
-- explain
if value #x_pos = #enemy_x then goto
same_x_ #cur_head -- explain
math v1 = #y_pos - #enemy_y - 2
-- explain
set grenade fuse ~v1
-- explain
math v2 = #x_pos - #enemy_x
if value ~v1 >= -3 then if value ~v1 <= -1
then if value ~v2 >= -1 then if value ~v2 <= 1 then if value #enemy_x
<> 0 then if value ~v9 = ~v9 then goto
2 -- explain
if value ~v1 >= 4 then scan forward
-- explain
if value ~v1 < 4 then scan relative 1
-- explain
if value ~v2 >= -1 then if value ~v2 <= 1 then
if value #scan = 0 then launch grenade
-- 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 grenade not ready then goto
err_ #cur_head -- explain
if value #scan <> 0 then if value ~v1 <
4 then goto barrier
math v2 = #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 ~v2 < 3 then if value #enemy_x <>
0 then if value ~v9 = ~v9 then goto
2 --
explain
generate random
-- explain
if value #random >= 3 then assign v1 turn right
-- explain
if value #random <= 2 then assign v1 turn left
-- explain
~v1 --
explain
scan relative 1
-- explain
math v2 = #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 ~v2 < 3 then if value #enemy_x <>
0 then if value ~v9 = ~v9 then goto
2 --
explain
assign ve move backward
-- explain
if scan found flag then if damage is > 0 then
assign ve move forward -- explain
if value #scan <> 1 then if value #scan <>
3 then if value #scan <> 5 then assign ve move forward
-- explain
if value ~v9 <> ~v9 then beep
-- explain
~ve --
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
err_ #cur_head -- explain
closechk_ -1 3:
-- explain
if value #x_pos = #enemy_x then goto
same_x_ #cur_head -- explain
math v1 = #enemy_y - #y_pos - 2
-- explain
set grenade fuse ~v1
-- explain
math v2 = #x_pos - #enemy_x
if value ~v1 >= -3 then if value ~v1 <= -1
then if value ~v2 >= -1 then if value ~v2 <= 1 then if value #enemy_x
<> 0 then if value ~v9 = ~v9 then goto
2 -- explain
if value ~v1 >= 4 then scan forward
-- explain
if value ~v1 < 4 then scan relative 1
-- explain
if value ~v2 >= -1 then if value ~v2 <= 1 then
if value #scan = 0 then launch grenade
-- 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 grenade not ready then goto
err_ #cur_head -- explain
if value #scan <> 0 then if value ~v1 <
4 then goto barrier
math v2 = #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 ~v2 < 3 then if value #enemy_x <>
0 then if value ~v9 = ~v9 then goto
2 --
explain
generate random
-- explain
if value #random >= 3 then assign v1 turn right
-- explain
if value #random <= 2 then assign v1 turn left
-- explain
~v1 --
explain
scan relative 1
-- explain
math v2 = #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 ~v2 < 3 then if value #enemy_x <>
0 then if value ~v9 = ~v9 then goto
2 --
explain
assign ve move backward
-- explain
if scan found flag then if damage is > 0 then
assign ve move forward -- explain
if value #scan <> 1 then if value #scan <>
3 then if value #scan <> 5 then assign ve move forward
-- explain
if value ~v9 <> ~v9 then beep
-- explain
~ve --
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
err_ #cur_head -- explain
closechk_ -1 2:
-- explain
if value #y_pos = #enemy_y then goto
same_y_ #cur_head -- explain
math v1 = #enemy_x - #x_pos - 2
-- explain
set grenade fuse ~v1
-- explain
math v2 = #y_pos - #enemy_y
if value ~v1 >= -3 then if value ~v1 <= -1
then if value ~v2 >= -1 then if value ~v2 <= 1 then if value #enemy_x
<> 0 then if value ~v9 = ~v9 then goto
2 -- explain
if value ~v1 >= 4 then scan forward
-- explain
if value ~v1 < 4 then scan relative 1
-- explain
if value ~v2 >= -1 then if value ~v2 <= 1 then
if value #scan = 0 then launch grenade
-- 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 grenade not ready then goto
err_ #cur_head -- explain
if value #scan <> 0 then if value ~v1 <
4 then goto barrier
math v2 = #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 ~v2 < 3 then if value #enemy_x <>
0 then if value ~v9 = ~v9 then goto
2 --
explain
generate random
-- explain
if value #random >= 3 then assign v1 turn right
-- explain
if value #random <= 2 then assign v1 turn left
-- explain
~v1 --
explain
scan relative 1
-- explain
math v2 = #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 ~v2 < 3 then if value #enemy_x <>
0 then if value ~v9 = ~v9 then goto
2 --
explain
assign ve move backward
-- explain
if scan found flag then if damage is > 0 then
assign ve move forward -- explain
if value #scan <> 1 then if value #scan <>
3 then if value #scan <> 5 then assign ve move forward
-- explain
if value ~v9 <> ~v9 then beep
-- explain
~ve --
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
err_ #cur_head -- explain
closechk_ -1 4:
-- explain
if value #y_pos = #enemy_y then goto
same_y_ #cur_head -- explain
math v1 = #x_pos - #enemy_x - 2
-- explain
set grenade fuse ~v1
-- explain
math v2 = #y_pos - #enemy_y
if value ~v1 >= -3 then if value ~v1 <= -1
then if value ~v2 >= -1 then if value ~v2 <= 1 then if value #enemy_x
<> 0 then if value ~v9 = ~v9 then goto
2 -- explain
if value ~v1 >= 4 then scan forward
-- explain
if value ~v1 < 4 then scan relative 1
-- explain
if value ~v2 >= -1 then if value ~v2 <= 1 then
if value #scan = 0 then launch grenade
-- 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 grenade not ready then goto
err_ #cur_head -- explain
if value #scan <> 0 then if value ~v1 <
4 then goto barrier
math v2 = #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 ~v2 < 3 then if value #enemy_x <>
0 then if value ~v9 = ~v9 then goto
2 --
explain
generate random
-- explain
if value #random >= 3 then assign v1 turn right
-- explain
if value #random <= 2 then assign v1 turn left
-- explain
~v1 --
explain
scan relative 1
-- explain
math v2 = #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 ~v2 < 3 then if value #enemy_x <>
0 then if value ~v9 = ~v9 then goto
2 --
explain
assign ve move backward
-- explain
if scan found flag then if damage is > 0 then
assign ve move forward -- explain
if value #scan <> 1 then if value #scan <>
3 then if value #scan <> 5 then assign ve move forward
-- explain
if value ~v9 <> ~v9 then beep
-- explain
~ve --
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
err_ #cur_head -- explain