diff -r c20156328529 -r d231e007452a hedgewars/HHHandlers.inc --- a/hedgewars/HHHandlers.inc Sat May 10 16:26:53 2008 +0000 +++ b/hedgewars/HHHandlers.inc Sun May 11 19:21:58 2008 +0000 @@ -59,13 +59,26 @@ Gear^.Message:= Gear^.Message and not gm_Weapon; with PHedgehog(Gear^.Hedgehog)^ do - while (Ammo^[CurSlot, CurAmmo].AmmoType <> weap) and (t >= 0) do - begin - ChangeAmmo(Gear); - dec(t) - end + while (Ammo^[CurSlot, CurAmmo].AmmoType <> weap) and (t >= 0) do + begin + ChangeAmmo(Gear); + dec(t) + end end; +procedure HHSetTimer(Gear: PGear); +begin +Gear^.Message:= Gear^.Message and not gm_Timer; +with PHedgehog(Gear^.Hedgehog)^ do + if (Ammo^[CurSlot, CurAmmo].Propz and ammoprop_Timerable) <> 0 then + begin + Ammo^[CurSlot, CurAmmo].Timer:= 1000 * Gear^.MsgParam; + with CurrentTeam^ do + ApplyAmmoChanges(Hedgehogs[CurrHedgehog]); + end; +end; + + procedure Attack(Gear: PGear); var xx, yy: hwFloat; begin @@ -467,6 +480,8 @@ if ((Gear^.Message and gm_Weapon) <> 0) then HHSetWeapon(Gear); +if ((Gear^.Message and gm_Timer) <> 0) then HHSetTimer(Gear); + if ((Gear^.Message and gm_Attack) <> 0) or ((Gear^.State and gstAttacking) <> 0) then Attack(Gear);