diff -r a342837fc875 -r 7d925e82e572 hedgewars/uGears.pas --- a/hedgewars/uGears.pas Thu Nov 07 23:08:28 2013 -0500 +++ b/hedgewars/uGears.pas Fri Nov 08 23:11:13 2013 -0500 @@ -78,7 +78,7 @@ begin if (not isInMultiShoot) then inc(Gear^.Damage, Gear^.Karma); - if (Gear^.Damage <> 0) and (not Gear^.Invulnerable) then + if (Gear^.Damage <> 0) and ((Gear^.Hedgehog^.Effects[heInvulnerable] = 0)) then begin CheckNoDamage:= false; @@ -510,7 +510,7 @@ if (Gear <> nil) then begin if (GameFlags and gfInvulnerable) = 0 then - Gear^.Invulnerable:= false; + Gear^.Hedgehog^.Effects[heInvulnerable]:= 0; end; end; t:= GearsList; @@ -564,7 +564,7 @@ end; procedure AddMiscGears; -var i,rx, ry: Longword; +var p,i,j,rx, ry: Longword; rdx, rdy: hwFloat; Gear: PGear; begin @@ -599,11 +599,13 @@ Gear:= GearsList; if (GameFlags and gfInvulnerable) <> 0 then - while Gear <> nil do - begin - Gear^.Invulnerable:= true; // this is only checked on hogs right now, so no need for gear type check - Gear:= Gear^.NextGear - end; + for p:= 0 to Pred(ClansCount) do + with ClansArray[p]^ do + for j:= 0 to Pred(TeamsNumber) do + with Teams[j]^ do + for i:= 0 to cMaxHHIndex do + with Hedgehogs[i] do + Effects[heInvulnerable]:= 1; if (GameFlags and gfLaserSight) <> 0 then cLaserSighting:= true;