# HG changeset patch # User nemo # Date 1364645469 14400 # Node ID fc9877ff7f1a14a26ad35d528ace61574e58170f # Parent 9cc4a057473fff5c8f727fb5ccc4f8926f2918dc Don't reward digging close w/ drill rocket. Doesn't offer much benefit. Reduce final bonus slightly to avoid using drill like bazooka. Better would be AI doing this for all weps based on count. Make main drill loop a little more efficient. diff -r 9cc4a057473f -r fc9877ff7f1a hedgewars/GSHandlers.inc --- a/hedgewars/GSHandlers.inc Fri Mar 29 23:58:03 2013 +0100 +++ b/hedgewars/GSHandlers.inc Sat Mar 30 08:11:09 2013 -0400 @@ -2889,21 +2889,23 @@ tempColl: Word; begin AllInactive := false; - - - if (Gear^.Timer > 0) and ((Gear^.Timer mod 10) = 0) then - begin - DrawTunnel(Gear^.X, Gear^.Y, Gear^.dX, Gear^.dY, 2, 6); - Gear^.X := Gear^.X + Gear^.dX; - Gear^.Y := Gear^.Y + Gear^.dY; - if (Gear^.Timer mod 30) = 0 then - AddVisualGear(hwRound(Gear^.X + _20 * Gear^.dX), hwRound(Gear^.Y + _20 * Gear^.dY), vgtDust); - if (CheckGearDrowning(Gear)) then - begin - StopSoundChan(Gear^.SoundChannel); - exit - end + if (Gear^.Timer > 0) and (Gear^.Timer mod 10 <> 0) then + begin + dec(Gear^.Timer); + exit; + end; + + DrawTunnel(Gear^.X, Gear^.Y, Gear^.dX, Gear^.dY, 2, 6); + Gear^.X := Gear^.X + Gear^.dX; + Gear^.Y := Gear^.Y + Gear^.dY; + if (Gear^.Timer mod 30) = 0 then + AddVisualGear(hwRound(Gear^.X + _20 * Gear^.dX), hwRound(Gear^.Y + _20 * Gear^.dY), vgtDust); + if (CheckGearDrowning(Gear)) then + begin + StopSoundChan(Gear^.SoundChannel); + exit end; + tempColl:= Gear^.CollisionMask; Gear^.CollisionMask:= $007F; if (TestCollisionYWithGear(Gear, hwSign(Gear^.dY)) <> 0) or TestCollisionXWithGear(Gear, hwSign(Gear^.dX)) or (GameTicks > Gear^.FlightTime) then diff -r 9cc4a057473f -r fc9877ff7f1a hedgewars/uAIAmmoTests.pas --- a/hedgewars/uAIAmmoTests.pas Fri Mar 29 23:58:03 2013 +0100 +++ b/hedgewars/uAIAmmoTests.pas Sat Mar 30 08:11:09 2013 -0400 @@ -200,6 +200,8 @@ t2: real; timer: Longint; begin + if (Level > 3) then exit(BadTurn); + mX:= hwFloat2Float(Me^.X); mY:= hwFloat2Float(Me^.Y); ap.Time:= 0; @@ -250,8 +252,6 @@ if Level = 1 then value:= RateExplosion(Me, EX, EY, 101, afTrackFall or afErasesLand) else value:= RateExplosion(Me, EX, EY, 101); - if value = 0 then - value:= 1024 - Metric(Targ.X, Targ.Y, EX, EY) div 64; if valueResult <= value then begin ap.Angle:= DxDy2AttackAnglef(Vx, Vy) + AIrndSign(random((Level - 1) * 9)); @@ -259,7 +259,7 @@ ap.ExplR:= 100; ap.ExplX:= EX; ap.ExplY:= EY; - valueResult:= value + valueResult:= value-5 // trying to make it slightly less attractive than a bazooka, to prevent waste. AI could use awareness of weapon count end; end until rTime > 4250;