# HG changeset patch # User nemo # Date 1331522649 14400 # Node ID 237b96f06aaeef462e4263f823615e703c624fae # Parent 46cd5dad1a284ac635c567fd0cdb8761b90ca390 Try adding it to deagle too. Although the routine still doesn't consider angle, so it'll pretty much be luck. Might be a waste of time. Also fix some neglected scores from before. diff -r 46cd5dad1a28 -r 237b96f06aae hedgewars/uAIAmmoTests.pas --- a/hedgewars/uAIAmmoTests.pas Sun Mar 11 22:44:57 2012 -0400 +++ b/hedgewars/uAIAmmoTests.pas Sun Mar 11 23:24:09 2012 -0400 @@ -576,7 +576,7 @@ ap.Power:= 1; x:= Me^.X; y:= Me^.Y; -if Abs(hwRound(Me^.X) - Targ.X) + Abs(hwRound(Me^.Y) - Targ.Y) < 80 then +if Abs(hwRound(Me^.X) - Targ.X) + Abs(hwRound(Me^.Y) - Targ.Y) < 320 then exit(BadTurn); t:= _0_5 / Distance(int2hwFloat(Targ.X) - x, int2hwFloat(Targ.Y) - y); Vx:= (int2hwFloat(Targ.X) - x) * t; @@ -598,7 +598,11 @@ or (d > 200); if Abs(Targ.X - hwRound(x)) + Abs(Targ.Y - hwRound(y)) < 3 then - valueResult:= Max(0, (4 - d div 50) * 7 * 1024) + begin + if TraceShoveDrown(Me, Targ.X, Targ.Y, hwFloat2Float(vX) * 0.005 * 20, hwFloat2Float(vY) * 0.005 * 20) then + valueResult:= 204800 + else valueResult:= Max(0, (4 - d div 50) * 7 * 1024) + end else valueResult:= BadTurn; TestDesertEagle:= valueResult diff -r 46cd5dad1a28 -r 237b96f06aae hedgewars/uAIMisc.pas --- a/hedgewars/uAIMisc.pas Sun Mar 11 22:44:57 2012 -0400 +++ b/hedgewars/uAIMisc.pas Sun Mar 11 23:24:09 2012 -0400 @@ -53,6 +53,7 @@ function RatePlace(Gear: PGear): LongInt; function TestCollExcludingMe(Me: PGear; x, y, r: LongInt): boolean; inline; function TestColl(x, y, r: LongInt): boolean; inline; +function TraceShoveDrown(Me: PGear; x, y, dX, dY: Real): boolean; function RateExplosion(Me: PGear; x, y, r: LongInt; Flags: LongWord = 0): LongInt; function RateShove(Me: PGear; x, y, r, power, kick: LongInt; gdX, gdY: real; Flags: LongWord): LongInt; function RateShotgun(Me: PGear; gdX, gdY: real; x, y: LongInt): LongInt; @@ -361,9 +362,9 @@ end; if (Flags and 1 <> 0) and TraceShoveDrown(Me, Point.x, Point.y, dX, dY) then if Score > 0 then - inc(rate, KillScore + Score) // Add a bit of a bonus for bigger hog drownings + inc(rate, KillScore + Score div 10) // Add a bit of a bonus for bigger hog drownings else - dec(rate, KillScore * friendlyfactor div 100 - Score) // and more of a punishment for drowning bigger friendly hogs + dec(rate, KillScore * friendlyfactor div 100 - Score div 10) // and more of a punishment for drowning bigger friendly hogs else if power >= abs(Score) then if Score > 0 then inc(rate, KillScore) @@ -412,9 +413,9 @@ else dX:= dX + 0.01; if TraceDrown(x, y, Point.x, Point.y, dX, dY, erasure) then if Score > 0 then - inc(rate, KillScore + Score) // Add a bit of a bonus for bigger hog drownings + inc(rate, KillScore + Score div 10) // Add a bit of a bonus for bigger hog drownings else - dec(rate, KillScore * friendlyfactor div 100 - Score) // and more of a punishment for drowning bigger friendly hogs + dec(rate, KillScore * friendlyfactor div 100 - Score div 10) // and more of a punishment for drowning bigger friendly hogs else if dmg >= abs(Score) then dmg := KillScore; if Score > 0 then