# HG changeset patch # User Wuzzy # Date 1534005382 -7200 # Node ID 34aeaa627400a73a654d0ef53da0d6b7abbd61ba # Parent d5fe7db1baa995e7cf86df0a2cbeb04c87f1154c Fix TotalRounds advancing incorrectly with gfRandomOrder off and/or gfTagTeam on diff -r d5fe7db1baa9 -r 34aeaa627400 hedgewars/uTeams.pas --- a/hedgewars/uTeams.pas Thu Aug 09 19:14:58 2018 +0200 +++ b/hedgewars/uTeams.pas Sat Aug 11 18:36:22 2018 +0200 @@ -193,22 +193,39 @@ c:= CurrentTeam^.Clan^.ClanIndex; repeat - with ClansArray[c]^ do - if (CurrTeam = TagTeamIndex) and ((GameFlags and gfTagTeam) <> 0) then + if (GameFlags and gfTagTeam) <> 0 then + begin + with ClansArray[c]^ do begin - TagTeamIndex:= Pred(TagTeamIndex) mod TeamsNumber; - CurrTeam:= Pred(CurrTeam) mod TeamsNumber; - inc(c); - NextClan:= true; + if (CurrTeam = TagTeamIndex) then + begin + TagTeamIndex:= Pred(TagTeamIndex) mod TeamsNumber; + CurrTeam:= Pred(CurrTeam) mod TeamsNumber; + inc(c); + if c = ClansCount then + c:= 0; + NextClan:= true; + end; end; - if (GameFlags and gfTagTeam) = 0 then + with ClansArray[c]^ do + begin + if (c = SwapClan) and (not PlacingHogs) and ((Succ(CurrTeam) mod TeamsNumber) = TagTeamIndex) then + begin + inc(TotalRounds); + end; + end; + end + else + begin inc(c); - - if (c = SwapClan) and (not PlacingHogs) then - inc(TotalRounds); - if c = ClansCount then - c:= 0; + if c = ClansCount then + c:= 0; + if (c = SwapClan) and (not PlacingHogs) then + begin + inc(TotalRounds); + end; + end; with ClansArray[c]^ do begin @@ -288,12 +305,14 @@ end; -// Clan ID (+1) to check to determine whether to increase TotalRounds +// Determine clan ID to check to determine whether to increase TotalRounds if (SwapClan = -1) and (not PlacingHogs) then + begin if (GameFlags and gfRandomOrder) <> 0 then - SwapClan:= ClansCount + SwapClan:= 0 else - SwapClan:= 1; + SwapClan:= ClansCount - 1; + end; inc(CurrentTeam^.Clan^.TurnNumber); with CurrentTeam^.Clan^ do