# HG changeset patch # User unc0rr # Date 1258196815 0 # Node ID 956ff066f3a5d80dadf21ac7bd37aea3a8721357 # Parent 796269129c47018447f330334e1df1fbb0983d59 Fix desync when playing with AI via network, occuring in certain conditions diff -r 796269129c47 -r 956ff066f3a5 hedgewars/uGame.pas --- a/hedgewars/uGame.pas Sat Nov 14 05:26:26 2009 +0000 +++ b/hedgewars/uGame.pas Sat Nov 14 11:06:55 2009 +0000 @@ -23,8 +23,6 @@ procedure DoGameTick(Lag: LongInt); -var skipFlag: boolean = false; - //////////////////// implementation //////////////////// @@ -47,7 +45,6 @@ i:= 1; while (GameState <> gsExit) and (i <= Lag) do begin - skipFlag:= false; if not CurrentTeam^.ExtDriven then begin if CurrentHedgehog^.BotLevel <> 0 then ProcessBot; @@ -74,7 +71,6 @@ end else ProcessGears end; - if skipFlag then TurnTimeLeft:= 0; inc(i) end end; diff -r 796269129c47 -r 956ff066f3a5 hedgewars/uGears.pas --- a/hedgewars/uGears.pas Sat Nov 14 05:26:26 2009 +0000 +++ b/hedgewars/uGears.pas Sat Nov 14 11:06:55 2009 +0000 @@ -78,6 +78,7 @@ SpeechType: Longword = 1; SpeechText: shortstring; TrainingTargetGear: PGear = nil; + skipFlag: boolean = false; implementation uses uWorld, uMisc, uStore, uConsole, uSound, uTeams, uRandom, uCollisions, @@ -659,6 +660,12 @@ dec(TurnTimeLeft) end; +if skipFlag then + begin + TurnTimeLeft:= 0; + skipFlag:= false + end; + if ((GameTicks and $FFFF) = $FFFF) then begin if (not CurrentTeam^.ExtDriven) then diff -r 796269129c47 -r 956ff066f3a5 hedgewars/uMisc.pas --- a/hedgewars/uMisc.pas Sat Nov 14 05:26:26 2009 +0000 +++ b/hedgewars/uMisc.pas Sat Nov 14 11:06:55 2009 +0000 @@ -586,7 +586,7 @@ finalization //uRandom.DumpBuffer; -writeln(f, 'halt at ', GameTicks, ' ticks'); +writeln(f, 'halt at ', GameTicks, ' ticks. TurnTimeLeft = ', TurnTimeLeft); flush(f); close(f)