# HG changeset patch # User unc0rr # Date 1213024134 0 # Node ID e883baf3a45888d7b29bfcc55818d40eb9576a93 # Parent 20128e98988b805e8a4b40ea7f497712ff10fab2 Fix Baseball, whip, firepunch attacking on slope diff -r 20128e98988b -r e883baf3a458 hedgewars/uGears.pas --- a/hedgewars/uGears.pas Mon Jun 09 15:02:49 2008 +0000 +++ b/hedgewars/uGears.pas Mon Jun 09 15:08:54 2008 +0000 @@ -973,28 +973,39 @@ t:= CheckGearsCollision(Ammo); i:= t^.Count; while i > 0 do - begin - dec(i); - if (t^.ar[i]^.State and gstNoDamage) = 0 then - case t^.ar[i]^.Kind of - gtHedgehog, - gtMine, - gtTarget, - gtCase: begin - inc(t^.ar[i]^.Damage, Damage); + begin + dec(i); + if (t^.ar[i]^.State and gstNoDamage) = 0 then + case t^.ar[i]^.Kind of + gtHedgehog, + gtMine, + gtTarget, + gtCase: begin + inc(t^.ar[i]^.Damage, Damage); + + if t^.ar[i]^.Kind = gtHedgehog then + AddDamageTag(hwRound(t^.ar[i]^.X), hwRound(t^.ar[i]^.Y), Damage, t^.ar[i]); - if t^.ar[i]^.Kind = gtHedgehog then - AddDamageTag(hwRound(t^.ar[i]^.X), hwRound(t^.ar[i]^.Y), Damage, t^.ar[i]); + DeleteCI(t^.ar[i]); + t^.ar[i]^.dX:= Ammo^.dX * Power * _0_01; + t^.ar[i]^.dY:= Ammo^.dY * Power * _0_01; + t^.ar[i]^.Active:= true; + t^.ar[i]^.State:= t^.ar[i]^.State or gstMoving; - DeleteCI(t^.ar[i]); - t^.ar[i]^.dX:= Ammo^.dX * Power * _0_01; - t^.ar[i]^.dY:= Ammo^.dY * Power * _0_01; - t^.ar[i]^.Active:= true; - t^.ar[i]^.State:= t^.ar[i]^.State or gstMoving; - FollowGear:= t^.ar[i] - end; - end - end; +(* if TestCollisionXwithGear(t^.ar[i], hwSign(t^.ar[i]^.dX)) then + begin + if not (TestCollisionXwithXYShift(t^.ar[i], _0, -3, hwSign(t^.ar[i]^.dX)) + or TestCollisionYwithGear(t^.ar[i], -1)) then t^.ar[i]^.Y:= t^.ar[i]^.Y - _1; + if not (TestCollisionXwithXYShift(t^.ar[i], _0, -2, hwSign(t^.ar[i]^.dX)) + or TestCollisionYwithGear(t^.ar[i], -1)) then t^.ar[i]^.Y:= t^.ar[i]^.Y - _1; + if not (TestCollisionXwithXYShift(t^.ar[i], _0, -1, hwSign(t^.ar[i]^.dX)) + or TestCollisionYwithGear(t^.ar[i], -1)) then t^.ar[i]^.Y:= t^.ar[i]^.Y - _1; + end; +*) + FollowGear:= t^.ar[i] + end; + end + end; SetAllToActive end;