# HG changeset patch # User unc0rr # Date 1339247116 -14400 # Node ID 522f165cd2e772a22089fefcd1a3337f02f8088e # Parent 2d78dc517c91efcb4ea292f71138b088a298e8bf - Fix damage calculation in TestSniperRifle, aim a bit lower to compensate initial angle shift in sniper rifle. As a result, AI seems to never fail sniper rifle shots. - Temporarily make AI tell its expectations in chat diff -r 2d78dc517c91 -r 522f165cd2e7 hedgewars/GSHandlers.inc --- a/hedgewars/GSHandlers.inc Sat Jun 09 12:15:05 2012 +0200 +++ b/hedgewars/GSHandlers.inc Sat Jun 09 17:05:16 2012 +0400 @@ -1025,7 +1025,9 @@ else AmmoShove(Gear, Gear^.Timer, 20); CheckGearDrowning(Gear); - dec(i) until (i = 0) or (Gear^.Damage > Gear^.Health) or ((Gear^.State and gstDrowning) <> 0); + dec(i) + until (i = 0) or (Gear^.Damage > Gear^.Health) or ((Gear^.State and gstDrowning) <> 0); + if Gear^.Damage > 0 then begin DrawTunnel(oX, oY, Gear^.dX, Gear^.dY, 82 - i, 1); diff -r 2d78dc517c91 -r 522f165cd2e7 hedgewars/uAI.pas --- a/hedgewars/uAI.pas Sat Jun 09 12:15:05 2012 +0200 +++ b/hedgewars/uAI.pas Sat Jun 09 17:05:16 2012 +0400 @@ -178,6 +178,10 @@ begin AddAction(BestActions, aia_attack, aim_push, 350 + random(200), 0, 0); AddAction(BestActions, aia_attack, aim_release, 1, 0, 0); + + AddAction(BestActions, aia_Down, aim_push, 100 + random(150), 0, 0); + AddAction(BestActions, aia_Down, aim_release, 32, 0, 0); + AddAction(BestActions, aia_waitAngle, ap.Angle, 250, 0, 0); AddAction(BestActions, aia_attack, aim_push, 1, 0, 0); AddAction(BestActions, aia_attack, aim_release, 1, 0, 0); @@ -431,6 +435,8 @@ AddFileLog('Thread started'); end; +var scoreShown: boolean = false; + procedure ProcessBot; const cStopThinkTime = 40; begin @@ -447,13 +453,23 @@ StopMessages(Gear^.Message); TryDo((Gear^.Message and gmAllStoppable) = 0, 'Engine bug: AI may break demos playing', true); end; + if Gear^.Message <> 0 then exit; + + scoreShown:= false; StartThink(Gear); StartTicks:= GameTicks - end else - ProcessAction(BestActions, Gear) + end else + begin + if not scoreShown then + begin + if BestActions.Score > 0 then ParseCommand('/say Expected score = ' + inttostr(BestActions.Score div 1024), true); + scoreShown:= true + end; + ProcessAction(BestActions, Gear) + end else if ((GameTicks - StartTicks) > cMaxAIThinkTime) or (TurnTimeLeft <= cStopThinkTime) then StopThinking:= true diff -r 2d78dc517c91 -r 522f165cd2e7 hedgewars/uAIAmmoTests.pas --- a/hedgewars/uAIAmmoTests.pas Sat Jun 09 12:15:05 2012 +0200 +++ b/hedgewars/uAIAmmoTests.pas Sat Jun 09 17:05:16 2012 +0400 @@ -652,7 +652,7 @@ dmg:= sqrt(sqr(Targ.X - x)+sqr(Targ.Y-y)); t:= 1.5 / dmg; -dmg:= dmg * 0.33333333; +dmg:= dmg * 0.025; // div 40 Vx:= (Targ.X - x) * t; Vy:= (Targ.Y - y) * t; ap.Angle:= DxDy2AttackAnglef(Vx, -Vy);