# HG changeset patch # User unc0rr # Date 1315591480 -14400 # Node ID 3ec95dc2b249df624df75e59e3684df24ebcc9a7 # Parent a416f1070fdf628e2f872f8ac43f67cfd6869b04 Don't test for hasGone in unapproved places. Now any possibility of desync on player quit is ruled out. Not tested at all. diff -r a416f1070fdf -r 3ec95dc2b249 hedgewars/HHHandlers.inc --- a/hedgewars/HHHandlers.inc Fri Sep 09 15:52:59 2011 +0200 +++ b/hedgewars/HHHandlers.inc Fri Sep 09 22:04:40 2011 +0400 @@ -1034,7 +1034,7 @@ PrvInactive:= false; AllInactive:= false; - if not Gear^.Hedgehog^.Team^.hasGone then + if (Gear^.State and gstHHGone) = 0 then begin Gear^.Hedgehog^.Effects[hePoisoned] := false; if Gear^.Hedgehog^.Effects[heResurrectable] then begin @@ -1048,21 +1048,8 @@ end else begin - Gear^.State:= Gear^.State or gstHHGone; Gear^.doStep:= @doStepHedgehogGone; - with Gear^.Hedgehog^.Team^ do - for i:= 0 to cMaxHHIndex do - if Hedgehogs[i].GearHidden <> nil then - begin - RestoreHog(@Hedgehogs[i]); - if Hedgehogs[i].Gear <> nil then - begin - Hedgehogs[i].Gear^.State:= Gear^.State or gstHHGone; - Hedgehogs[i].Gear^.doStep:= @doStepHedgehogGone - end - end; - // Gone message AddCaption(Format(GetEventString(eidGone), Gear^.Hedgehog^.Name), cWhiteColor, capgrpMessage); end @@ -1103,7 +1090,9 @@ else begin with Gear^.Hedgehog^ do - if Team^.hasGone then TeamGoneEffect(Team^); - doStepHedgehogDriven(Gear) + if Team^.hasGone then + TeamGoneEffect(Team^) + else + doStepHedgehogDriven(Gear) end; end; diff -r a416f1070fdf -r 3ec95dc2b249 hedgewars/uTeams.pas --- a/hedgewars/uTeams.pas Fri Sep 09 15:52:59 2011 +0200 +++ b/hedgewars/uTeams.pas Fri Sep 09 22:04:40 2011 +0400 @@ -427,11 +427,17 @@ with Team do for i:= 0 to cMaxHHIndex do with Hedgehogs[i] do + begin + if Hedgehogs[i].GearHidden <> nil then + RestoreHog(@Hedgehogs[i]); + if Gear <> nil then begin Gear^.Invulnerable:= false; - Gear^.Damage:= Gear^.Health + Gear^.Damage:= Gear^.Health; + Gear^.State:= Gear^.State or gstHHGone end + end end; procedure chAddHH(var id: shortstring);