diff -r 191cd6c06203 -r 51d8e4747876 hedgewars/HHHandlers.inc --- a/hedgewars/HHHandlers.inc Sun Jun 26 13:38:47 2011 -0400 +++ b/hedgewars/HHHandlers.inc Sun Jun 26 15:23:45 2011 -0400 @@ -136,23 +136,23 @@ case Gear^.MsgParam of 1: begin AddCaption(format(trmsg[sidBounce], trmsg[sidBounce1]), color, capgrpAmmostate); - Gear^.Hedgehog^.Bounce:= _0_3 + CurWeapon^.Bounciness:= 350; end; 2: begin AddCaption(format(trmsg[sidBounce], trmsg[sidBounce2]), color, capgrpAmmostate); - Gear^.Hedgehog^.Bounce:= _0_7 + CurWeapon^.Bounciness:= 700; end; 3: begin AddCaption(format(trmsg[sidBounce], trmsg[sidBounce3]), color, capgrpAmmostate); - Gear^.Hedgehog^.Bounce:= _1 + CurWeapon^.Bounciness:= 1000; end; 4: begin AddCaption(format(trmsg[sidBounce], trmsg[sidBounce4]), color, capgrpAmmostate); - Gear^.Hedgehog^.Bounce:= _2 + CurWeapon^.Bounciness:= 2000; end; 5: begin AddCaption(format(trmsg[sidBounce], trmsg[sidBounce5]), color, capgrpAmmostate); - Gear^.Hedgehog^.Bounce:= _4 + CurWeapon^.Bounciness:= 4000; end end end @@ -171,6 +171,7 @@ newGear: PGear; CurWeapon: PAmmo; altUse: boolean; + elastic: hwFloat; begin bShowFinger:= false; CurWeapon:= GetAmmoEntry(Gear^.Hedgehog^); @@ -375,6 +376,19 @@ // Clear FollowGear if using on a rope/parachute/saucer etc so focus stays with the hog's movement if altUse then FollowGear:= nil; + if ((Ammoz[newGear^.AmmoType].Ammo.Propz and ammoprop_SetBounce) <> 0) and (newGear <> nil) then + begin + elastic:= int2hwfloat(CurWeapon^.Bounciness) / _1000; + + if elastic < _1 then newGear^.Elasticity:= newGear^.Elasticity * elastic + else if elastic > _1 then newGear^.Elasticity:= _1 - ((_1-newGear^.Elasticity) / elastic); +(* Experimented with friction modifier. Didn't seem helpful + fric:= int2hwfloat(CurWeapon^.Bounciness) / _250; + if fric < _1 then newGear^.Friction:= newGear^.Friction * fric + else if fric > _1 then newGear^.Friction:= _1 - ((_1-newGear^.Friction) / fric)*) + end; + + uStats.AmmoUsed(CurAmmoType); if not (SpeechText = '') then