# HG changeset patch # User nemo # Date 1274110968 0 # Node ID f80431269806e4e7283f40fa673a53caf945e36d # Parent b1832a3761e646e6e3cb6b10d4db01851cdadc2b Increase minimum threshold for barrel damage to reduce likelihood of blowing one up on jumping out, increase damage to compensate (may need tweaking). Only apply dX for collision w/ kick if barrel is rolling. diff -r b1832a3761e6 -r f80431269806 hedgewars/GSHandlers.inc --- a/hedgewars/GSHandlers.inc Mon May 17 09:45:46 2010 +0000 +++ b/hedgewars/GSHandlers.inc Mon May 17 15:42:48 2010 +0000 @@ -1405,10 +1405,10 @@ begin DeleteCI(Gear); AllInactive := false; - if not Gear^.dY.isNegative and (Gear^.dY > _0_03) and TestCollisionYwithGear(Gear, 1) then + if not Gear^.dY.isNegative and (Gear^.dY > _0_2) and TestCollisionYwithGear(Gear, 1) then begin Gear^.State := Gear^.State or gsttmpFlag; - inc(Gear^.Damage, hwRound(Gear^.dY * _50)); + inc(Gear^.Damage, hwRound(Gear^.dY * _70)); for i:= min(12, hwRound(Gear^.dY*_10)) downto 0 do begin particle := AddVisualGear(hwRound(Gear^.X) - 5 + Random(10), hwRound(Gear^.Y) + 12, @@ -1416,15 +1416,15 @@ if particle <> nil then particle^.dX := particle^.dX + (Gear^.dX / 5) end end - else if not Gear^.dX.isNegative and (Gear^.dX > _0_03) and TestCollisionXwithGear(Gear, 1) + else if not Gear^.dX.isNegative and (Gear^.dX > _0_2) and TestCollisionXwithGear(Gear, 1) then - inc(Gear^.Damage, hwRound(Gear^.dX * _50)) - else if Gear^.dY.isNegative and (Gear^.dY < -_0_03) and TestCollisionYwithGear(Gear, -1) + inc(Gear^.Damage, hwRound(Gear^.dX * _70)) + else if Gear^.dY.isNegative and (Gear^.dY < -_0_2) and TestCollisionYwithGear(Gear, -1) then - inc(Gear^.Damage, hwRound(Gear^.dY * -_50)) - else if Gear^.dX.isNegative and (Gear^.dX < -_0_03) and TestCollisionXwithGear(Gear, -1) + inc(Gear^.Damage, hwRound(Gear^.dY * -_70)) + else if Gear^.dX.isNegative and (Gear^.dX < -_0_2) and TestCollisionXwithGear(Gear, -1) then - inc(Gear^.Damage, hwRound(Gear^.dX * -_50)); + inc(Gear^.Damage, hwRound(Gear^.dX * -_70)); doStepFallingGear(Gear); CalcRotationDirAngle(Gear); @@ -1542,8 +1542,8 @@ if (Gear^.dY.isNegative) and TestCollisionYwithGear(Gear, -1) then Gear^.dY := _0; if (not Gear^.dY.isNegative) and TestCollisionYwithGear(Gear, 1) then begin - if (Gear^.dY > _0_02) and (k = gtExplosives) then - inc(Gear^.Damage, hwRound(Gear^.dY * _40)); + if (Gear^.dY > _0_2) and (k = gtExplosives) then + inc(Gear^.Damage, hwRound(Gear^.dY * _70)); if Gear^.dY > _0_2 then for i:= min(12, hwRound(Gear^.dY*_10)) downto 0 do diff -r b1832a3761e6 -r f80431269806 hedgewars/uCollisions.pas --- a/hedgewars/uCollisions.pas Mon May 17 09:45:46 2010 +0000 +++ b/hedgewars/uCollisions.pas Mon May 17 15:42:48 2010 +0000 @@ -214,7 +214,7 @@ begin with cGear^ do begin - dX:= Gear^.dX; + if (Kind <> gtExplosives) or ((State and gsttmpflag) <> 0) then dX:= Gear^.dX; dY:= Gear^.dY * _0_5; State:= State or gstMoving; Active:= true @@ -266,7 +266,7 @@ begin with cGear^ do begin - dX:= Gear^.dX * _0_5; + if (Kind <> gtExplosives) or ((State and gsttmpflag) <> 0) then dX:= Gear^.dX * _0_5; dY:= Gear^.dY; State:= State or gstMoving; Active:= true