diff -r 92535bc7e928 -r 15c3fb4882df hedgewars/uCommandHandlers.pas --- a/hedgewars/uCommandHandlers.pas Fri Jul 13 13:21:52 2012 +0400 +++ b/hedgewars/uCommandHandlers.pas Sat Jul 14 23:19:09 2012 -0400 @@ -412,18 +412,19 @@ end; procedure chNextTurn(var s: shortstring); -var checksum: Longword; +var i: Longword; gi: PGear; begin s:= s; // avoid compiler hint TryDo(AllInactive, '/nextturn called when not all gears are inactive', true); - checksum:= GameTicks; + CheckSum:= CheckSum xor GameTicks; gi := GearsList; while gi <> nil do begin - with gi^ do checksum:= checksum xor X.round xor X.frac xor dX.round xor dX.frac xor Y.round xor Y.frac xor dY.round xor dY.frac; + with gi^ do CheckSum:= CheckSum xor X.round xor X.frac xor dX.round xor dX.frac xor Y.round xor Y.frac xor dY.round xor dY.frac; + AddRandomness(CheckSum); gi := gi^.NextGear end; @@ -431,11 +432,11 @@ begin s[0]:= #5; s[1]:= 'N'; - SDLNet_Write32(checksum, @s[2]); + SDLNet_Write32(CheckSum, @s[2]); SendIPC(s) end else - TryDo(checksum = lastTurnChecksum, 'Desync detected', true); + TryDo(CheckSum = lastTurnChecksum, 'Desync detected', true); AddFileLog('Next turn: time '+inttostr(GameTicks)); end;