hedgewars/uAIAmmoTests.pas
changeset 15614 250c778463f3
parent 15613 d9c62f196fe0
child 15615 5a949495ee29
equal deleted inserted replaced
15613:d9c62f196fe0 15614:250c778463f3
   480         // there's a risk of fire flying towards us, so fail in this case.
   480         // there's a risk of fire flying towards us, so fail in this case.
   481         if (Level < 3) and (range <= 600) and (meY >= ry) and
   481         if (Level < 3) and (range <= 600) and (meY >= ry) and
   482             (((ap.Angle < 0) and (windSpeed > 0)) or ((ap.Angle > 0) and (windSpeed < 0))) then
   482             (((ap.Angle < 0) and (windSpeed > 0)) or ((ap.Angle > 0) and (windSpeed < 0))) then
   483             exit(BadTurn);
   483             exit(BadTurn);
   484 
   484 
       
   485         // Apply inaccuracy
       
   486         if (not cLaserSighting) then
       
   487             inc(ap.Angle, + AIrndSign(random((Level - 1) * 9)));
       
   488 
   485         if (valueResult <= 0) then
   489         if (valueResult <= 0) then
   486             valueResult:= BadTurn;
   490             valueResult:= BadTurn;
   487         exit(valueResult)
   491         exit(valueResult)
   488         end
   492         end
   489 until (Abs(Targ.Point.X - trunc(x)) + Abs(Targ.Point.Y - trunc(y)) < 4)
   493 until (Abs(Targ.Point.X - trunc(x)) + Abs(Targ.Point.Y - trunc(y)) < 4)
   934     exit(BadTurn);
   938     exit(BadTurn);
   935 
   939 
   936 Vx:= (Targ.Point.X - x) * 1 / 1024;
   940 Vx:= (Targ.Point.X - x) * 1 / 1024;
   937 Vy:= (Targ.Point.Y - y) * 1 / 1024;
   941 Vy:= (Targ.Point.Y - y) * 1 / 1024;
   938 ap.Angle:= DxDy2AttackAnglef(Vx, -Vy);
   942 ap.Angle:= DxDy2AttackAnglef(Vx, -Vy);
       
   943 // Apply inaccuracy
       
   944 if (not cLaserSighting) then
       
   945     inc(ap.Angle, + AIrndSign(random((Level - 1) * 10)));
   939 repeat
   946 repeat
   940     x:= x + vX;
   947     x:= x + vX;
   941     y:= y + vY;
   948     y:= y + vY;
   942     rx:= trunc(x);
   949     rx:= trunc(x);
   943     ry:= trunc(y);
   950     ry:= trunc(y);
   988 
   995 
   989 t:= 2 / sqrt(sqr(Targ.Point.X - x)+sqr(Targ.Point.Y-y));
   996 t:= 2 / sqrt(sqr(Targ.Point.X - x)+sqr(Targ.Point.Y-y));
   990 Vx:= (Targ.Point.X - x) * t;
   997 Vx:= (Targ.Point.X - x) * t;
   991 Vy:= (Targ.Point.Y - y) * t;
   998 Vy:= (Targ.Point.Y - y) * t;
   992 ap.Angle:= DxDy2AttackAnglef(Vx, -Vy);
   999 ap.Angle:= DxDy2AttackAnglef(Vx, -Vy);
       
  1000 // Apply inaccuracy
       
  1001 if (not cLaserSighting) then
       
  1002     inc(ap.Angle, + AIrndSign(random((Level - 1) * 10)));
   993 d:= 0;
  1003 d:= 0;
   994 
  1004 
   995 ix:= trunc(x);
  1005 ix:= trunc(x);
   996 iy:= trunc(y);
  1006 iy:= trunc(y);
   997 
  1007 
  1042 t:= 1.5 / dmg;
  1052 t:= 1.5 / dmg;
  1043 dmg:= dmg * 0.025; // div 40
  1053 dmg:= dmg * 0.025; // div 40
  1044 Vx:= (Targ.Point.X - x) * t;
  1054 Vx:= (Targ.Point.X - x) * t;
  1045 Vy:= (Targ.Point.Y - y) * t;
  1055 Vy:= (Targ.Point.Y - y) * t;
  1046 ap.Angle:= DxDy2AttackAnglef(Vx, -Vy);
  1056 ap.Angle:= DxDy2AttackAnglef(Vx, -Vy);
       
  1057 // Apply inaccuracy
       
  1058 inc(ap.Angle, + AIrndSign(random((Level - 1) * 5)));
       
  1059 
  1047 d:= 0;
  1060 d:= 0;
  1048 
  1061 
  1049 repeat
  1062 repeat
  1050     x:= x + vX;
  1063     x:= x + vX;
  1051     y:= y + vY;
  1064     y:= y + vY;
  1268         t:= step / d;
  1281         t:= step / d;
  1269         dx:= (Targ.Point.X - x) * t;
  1282         dx:= (Targ.Point.X - x) * t;
  1270         dy:= (Targ.Point.Y - y) * t;
  1283         dy:= (Targ.Point.Y - y) * t;
  1271 
  1284 
  1272         ap.Angle:= DxDy2AttackAnglef(dx, -dy)
  1285         ap.Angle:= DxDy2AttackAnglef(dx, -dy)
       
  1286         // Apply inaccuracy
       
  1287         if (not cLaserSighting) then
       
  1288             inc(ap.Angle, + AIrndSign(random((Level - 1) * 10)));
  1273         end;
  1289         end;
  1274 
  1290 
  1275     if dx >= 0 then cx:= 0.45 else cx:= -0.45;
  1291     if dx >= 0 then cx:= 0.45 else cx:= -0.45;
  1276 
  1292 
  1277     for i:= 1 to 512 div step - 2 do
  1293     for i:= 1 to 512 div step - 2 do