diff -r b71bae455926 -r ceb289e8a582 hedgewars/uGears.pas --- a/hedgewars/uGears.pas Mon Jul 08 15:16:05 2019 +0300 +++ b/hedgewars/uGears.pas Mon Jul 08 21:44:26 2019 +0200 @@ -680,7 +680,7 @@ t:= t^.NextGear end; - if ((GameFlags and gfResetWeps) <> 0) and (not PlacingHogs) then + if ((GameFlags and gfResetWeps) <> 0) and (not PlacingHogs) and (not PlacingKings) then ResetWeapons; if (GameFlags and gfResetHealth) <> 0 then @@ -968,7 +968,9 @@ divide, sectionDivide: boolean; begin if (GameFlags and gfPlaceHog) <> 0 then - PlacingHogs:= true; + PlacingHogs:= true +else if (GameFlags and gfKing) <> 0 then + PlacingKings:= true; divide:= ((GameFlags and gfDivideTeams) <> 0); @@ -1005,6 +1007,8 @@ Unplaced:= true else FindPlace(Gear, false, t, t + playWidth div ClansCount, true);// could make Gear == nil; + if PlacingKings and King then + UnplacedKing:= true; if Gear <> nil then begin Gear^.Pos:= GetRandom(49); @@ -1039,6 +1043,8 @@ ar[i]^.Unplaced:= true else FindPlace(ar[i]^.Gear, false, leftX, rightX, true); + if PlacingKings and ar[i]^.King then + ar[i]^.UnplacedKing:= true; if ar[i]^.Gear <> nil then begin ar[i]^.Gear^.dX.isNegative:= hwRound(ar[i]^.Gear^.X) > leftX + playWidth div 2;