diff -r d31eba29e706 -r 1791f776b726 hedgewars/GSHandlers.inc --- a/hedgewars/GSHandlers.inc Thu Sep 15 10:11:38 2011 +0200 +++ b/hedgewars/GSHandlers.inc Thu Sep 15 17:19:49 2011 +0200 @@ -2785,8 +2785,11 @@ i: LongWord; HHGear: PGear; sparkles: PVisualGear; + hasWishes: boolean; begin AllInactive := false; + hasWishes:= ((Gear^.Message and (gmPrecise or gmSwitch)) = (gmPrecise or gmSwitch)); + if hasWishes then Gear^.AdvBounce:= 1; HHGear := Gear^.Hedgehog^.Gear; HHGear^.State := HHGear^.State or gstNoDamage; @@ -2794,7 +2797,7 @@ Gear^.X := HHGear^.X; Gear^.Y := HHGear^.Y; - if (GameTicks mod 2 = 0) and ((Gear^.Message and (gmPrecise or gmSwitch)) = (gmPrecise or gmSwitch)) then + if (GameTicks mod 2 = 0) and hasWishes then begin sparkles:= AddVisualGear(hwRound(Gear^.X), hwRound(Gear^.Y), vgtDust, 1); if sparkles <> nil then sparkles^.Tint:= ((random(210)+45) shl 24) or ((random(210)+45) shl 16) or ((random(210)+45) shl 8) or $FF; @@ -2819,7 +2822,13 @@ inc(upd); if upd > 3 then begin - if Gear^.Health < 1500 then Gear^.Pos := 2; + if Gear^.Health < 1500 then + begin + if Gear^.AdvBounce <> 0 then + Gear^.Pos := 3 + else + Gear^.Pos := 2; + end; AmmoShove(Gear, 30, 40);