diff -r 4118006fab95 -r d78e65c66573 hedgewars/uGearsHedgehog.pas --- a/hedgewars/uGearsHedgehog.pas Wed Mar 07 20:27:42 2018 +0100 +++ b/hedgewars/uGearsHedgehog.pas Wed Mar 07 22:47:55 2018 +0100 @@ -77,8 +77,8 @@ if (MultiShootAttacks > 0) then begin - if (CurAmmoType = amSniperRifle) and ((GameFlags and gfArtillery) = 0) then - cArtillery := false; + if (Effects[heArtillery] = 2) then + Effects[heArtillery]:= 0; if (Ammoz[CurAmmoType].Ammo.Propz and ammoprop_NoRoundEnd) = 0 then begin MultiShootAttacks:= Ammoz[CurAmmoType].Ammo.NumPerTurn; @@ -270,7 +270,7 @@ lx:= X + int2hwfloat(round(GetLaunchX(CurAmmoType, hwSign(dX), Angle))); ly:= Y + int2hwfloat(round(GetLaunchY(CurAmmoType, Angle))); - if ((Gear^.State and gstHHHJump) <> 0) and (not cArtillery) then + if ((Gear^.State and gstHHHJump) <> 0) and (Effects[heArtillery] = 0) then xx:= - xx; if Ammoz[CurAmmoType].Ammo.AttackVoice <> sndNone then AddVoice(Ammoz[CurAmmoType].Ammo.AttackVoice, CurrentTeam^.voicepack); @@ -829,7 +829,7 @@ (TestCollisionYwithGear(Gear, -1) = 0) then begin Gear^.dY:= -_0_15; - if not cArtillery then + if Gear^.Hedgehog^.Effects[heArtillery] = 0 then Gear^.dX:= SignAs(_0_15, Gear^.dX); Gear^.State:= Gear^.State or gstMoving or gstHHJumping; PlaySoundV(sndJump1, Gear^.Hedgehog^.Team^.voicepack); @@ -874,7 +874,7 @@ Gear^.Hedgehog^.visStepPos:= (Gear^.Hedgehog^.visStepPos + 1) and 7; - if (not cArtillery or + if ((Gear^.Hedgehog^.Effects[heArtillery] = 0) or ((CurAmmoGear <> nil) and (CurAmmoGear^.Kind = gtBlowTorch))) and ((Gear^.Message and gmPrecise) = 0) then MakeHedgehogsStep(Gear); @@ -1043,7 +1043,7 @@ if (land and lfBouncy = 0) or (Gear^.State and gstCollision <> 0) then begin - if ((Gear^.State and gstHHHJump) <> 0) and (not cArtillery) + if ((Gear^.State and gstHHHJump) <> 0) and (Gear^.Hedgehog^.Effects[heArtillery] = 0) and (Gear^.dX.QWordValue < _0_02.QWordValue) then begin if land and lfBouncy <> 0 then @@ -1348,14 +1348,14 @@ begin HHGear^.State:= HHGear^.State or gstHHHJump; HHGear^.dY:= -_0_25; - if not cArtillery then + if (Hedgehog^.Effects[heArtillery] = 0) then HHGear^.dX:= -SignAs(_0_02, HHGear^.dX); PlaySoundV(sndJump2, Hedgehog^.Team^.voicepack) end; HHGear^.Message:= HHGear^.Message and (not (gmLJump or gmHJump)); - if (not cArtillery) and wasJumping and (TestCollisionXwithGear(HHGear, hwSign(HHGear^.dX)) <> 0) then + if (Hedgehog^.Effects[heArtillery] = 0) and wasJumping and (TestCollisionXwithGear(HHGear, hwSign(HHGear^.dX)) <> 0) then SetLittle(HHGear^.dX); if Hedgehog^.Gear <> nil then