• ; The actual frag code.  Subclick optimised, I think, it's been awhile.
  • ; The order matters here, so don't mix them up.
  •  
  • gotcha__ 8:  -- explain
  • scan forward  -- explain
  • if value #scan = 0 then move forward  -- explain
  • if value #scan <> 0 then goto evade
  • 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 > 52 then goto evade  -- explain
  •  
  • gotcha__ 7:  -- explain
  • scan forward  -- explain
  • if scan found nothing then launch missile  -- explain
  • scan perimeter  -- explain
  • if value #scan <> 3 then goto #scan  -- explain
  • goto evade
  •  
  • gotcha__ 5:  -- explain
  • cmath vx = ((#cur_head-2) * (#cur_head-3) * (#cur_head-4) * (#x_pos)/-6) + ((#cur_head-1) * (#cur_head-3) * (#cur_head-4)* (#x_pos+2)/2) + ((#cur_head-1) * (#cur_head-2) * (#cur_head-4) * (#x_pos)/-2) + ((#cur_head-1) * (#cur_head-2) * (#cur_head-3) * (#x_pos-2)/6)  -- explain
  • cmath vy = ((#cur_head-2) * (#cur_head-3) * (#cur_head-4) * (#y_pos-2)/-6) + ((#cur_head-1) * (#cur_head-3) * (#cur_head-4) * (#y_pos)/2) + ((#cur_head-1) * (#cur_head-2) * (#cur_head-4) * (#y_pos+2)/-2) + ((#cur_head-1) * (#cur_head-2) * (#cur_head-3) * (#y_pos)/6)  -- explain
  • scan relative 1  -- explain
  • if value #scan = 0 then gps scan x ~vx y ~vy  -- explain
  • cmath vx = ((#cur_head-2) * (#cur_head-3) * (#cur_head-4) * (#x_pos)/-6) + ((#cur_head-1) * (#cur_head-3) * (#cur_head-4) * (#x_pos+3)/2) + ((#cur_head-1) * (#cur_head-2) * (#cur_head-4) * (#x_pos)/-2) + ((#cur_head-1) * (#cur_head-2) * (#cur_head-3) * (#x_pos-3)/6)  -- explain
  • cmath vy = ((#cur_head-2) * (#cur_head-3) * (#cur_head-4) * (#y_pos-3)/-6) + ((#cur_head-1) * (#cur_head-3) * (#cur_head-4) * (#y_pos)/2) + ((#cur_head-1) * (#cur_head-2) * (#cur_head-4) * (#y_pos+3)/-2) + ((#cur_head-1) * (#cur_head-2) * (#cur_head-3) * (#y_pos)/6)  -- explain
  • if value #scan = 0 then gps scan x ~vx y ~vy  -- explain
  • if value #scan <> 0 then gosub evade
  • launch missile
  • scan perimeter  -- explain
  • if value #scan <> 3 then goto #scan  -- explain
  • goto evade
  •  
  • gotcha__ 4:  -- explain
  • scan relative 1  -- explain
  • if value #scan = 0 then move forward
  • if value #scan <> 0 then goto evade
  •  
  • gotcha__ 3:  -- explain
  • scan relative 1  -- explain
  • if scan found nothing then launch missile
  • if scan found nothing then goto re_check  -- explain
  • goto evade
  •  
  • gotcha__ 2:  -- explain
  • move backward
  • if bump barrier then goto evade  -- explain
  • cmath v1 = ((#cur_head-2)  * (#cur_head-3) * (#cur_head-4) * (#y_pos-#enemy_y)/-6) + ((#cur_head-1) * (#cur_head-3) * (#cur_head-4) * (#enemy_x-#x_pos)/2) + ((#cur_head-1) * (#cur_head-2) * (#cur_head-4) * (#enemy_y-#y_pos)/-2) + ((#cur_head-1) * (#cur_head-2) * (#cur_head-3) * (#x_pos-#enemy_x)/6)  -- explain
  • cmath v2 = ((#cur_head-2) * (#cur_head-3) * (#cur_head-4) * (#x_pos-#enemy_x)/-6) + ((#cur_head-1) * (#cur_head-3) * (#cur_head-4) * (#y_pos-#enemy_y)/2) + ((#cur_head-1) * (#cur_head-2) * (#cur_head-4) * (#x_pos-#enemy_x)/-2) + ((#cur_head-1) * (#cur_head-2) * (#cur_head-3) * (#y_pos-#enemy_y)/6)  -- explain
  • if value ~v2 >= -1 then if value ~v2 <= 1 then if value ~v1 <= 3 then if value ~v1 >= 1  then launch missile  -- explain
  • if grenade ready then if value ~v2 >= -1 then if value ~v2 <= 1 then if value ~v1 <= 3 then if value ~v1 >= 1 then goto re_check  -- explain
  • if value ~v1 >= -1 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
  • goto evade
  •  
  • re_check:  -- explain
  • cmath v1 = ((#cur_head-2) * (#cur_head-3) * (#cur_head-4) * (#y_pos-#enemy_y)/-6) + ((#cur_head-1) * (#cur_head-3) * (#cur_head-4) * (#enemy_x-#x_pos)/2) + ((#cur_head-1) * (#cur_head-2) * (#cur_head-4) * (#enemy_y-#y_pos)/-2) + ((#cur_head-1) * (#cur_head-2) * (#cur_head-3) * (#x_pos-#enemy_x)/6)  -- explain
  • cmath v2 = ((#cur_head-2) * (#cur_head-3) * (#cur_head-4) * (#x_pos-#enemy_x)/-6) + ((#cur_head-1) * (#cur_head-3) * (#cur_head-4) * (#y_pos-#enemy_y)/2)+ ((#cur_head-1) * (#cur_head-2) * (#cur_head-4) * (#x_pos-#enemy_x)/-2) + ((#cur_head-1) * (#cur_head-2) * (#cur_head-3) * (#y_pos-#enemy_y)/6)  -- explain
  • if missile not ready then if grenade ready then if value ~v2 >= -1 then if value ~v2 <= 1 then if value ~v1 <= 3 then if value ~v1 >= 1 then launch grenade  -- explain
  • if value ~v2 >= -1 then if value ~v2 <= 1 then if value ~v1 <= 3  then if value ~v1 >= 1 then launch missile  -- explain
  • if missile not ready then if grenade ready then if value ~v2 >= -1 then if value ~v2 <= 1 then if value ~v1 <= 3 then if value ~v1 >= 1 then goto re_check  -- explain
  • if missile ready then if value ~v2 >= -1 then if value ~v2 <= 1 then if value ~v1 <= 3 then if value ~v1 >= 1 then goto re_check  -- explain
  • if value ~v1 >= -1 then if value ~v1 <= 1 then if value ~v2 >= -1 then if value ~v2 <= 1 then gosub 2  -- explain
  • goto evade