/*  KILLER.R  by John Smolin  (JS090186 at AFEHQVM2)  */
/*  Combination of Leader (standing still) and B2   */
/*  Eventually there will be one which moves instead of corner-sitting	*/
int range,x,orange,ox,dir;
main() {
drive(270,100);
x=-239;
dir=90;
while(loc_y()>35);
drive(90,0);
while(speed()>49);
drive(0,100);
while(loc_x()<965);
drive(100,0);
while(damage()<55)
{
x+=329;
while(!range && damage()<55)
{
if (range=scan(x+=15,8))
    x=killit(x);
else if(x>180) x=80;
 }
}
while(1)
{
if(dir==450) dir=90;
if((dir==90 && loc_y()>920) || (dir==270 && loc_y()<80)
   || (dir==0 && loc_x()>920) || (dir==180 && loc_x()<80))
  { drive(dir+=90,0);
    while(speed()>49);
    drive(dir,100);
  }
if(speed()<50) drive(dir,100);
if(x>dir+179 && !range) x=dir-25;
if(range && range<701)
  {
   x+=5-(scan(x-5,5) != 0)*10;
   x+=3-(scan(x-3,3) != 0)*6;
   orange=range;
   if ((range=scan(x,10))>40)
 cannon(x,range+(range-orange+cos(x-dir)/2000)*range/325);
		 else cannon(x,46);
    }
 else range=scan(x+=19,10);
} }

killit(x)
   {
 cannon(x,range);
 while (range && range<700 && damage()<55)
   {
     ox=x;
     orange=range;
     x+=4-(scan(x-4,4) != 0)*8;
     x+=2-(scan(x-2,2) != 0)*4;
     range=scan(x,10);
    if (range>150) {
     x+=1-(scan(x-1,1) != 0)*2;
     if(range)
cannon(x+(x-ox)*range/275,range+(range-orange)*range/275);
		    }
      else {
      if (range<41 && range) range=41;
      if (range)
      cannon(x,range);
	   }
}
   range=0;
   return(x); }



