equal
deleted
inserted
replaced
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 |