diff -r bafca1686867 -r 8fa1ccfba752 hedgewars/uGears.pas --- a/hedgewars/uGears.pas Wed Apr 30 15:26:50 2014 +0400 +++ b/hedgewars/uGears.pas Tue May 06 23:16:35 2014 +0400 @@ -564,27 +564,39 @@ end; procedure AddMiscGears; -var p,i,j,rx, ry: Longword; +var p,i,j,rx, ry, unplaced: Longword; rdx, rdy: hwFloat; Gear: PGear; begin AddGear(0, 0, gtATStartGame, 0, _0, _0, 2000); i:= 0; -Gear:= PGear(1); -while (i < cLandMines) {and (Gear <> nil)} do // disable this check until better solution found +unplaced:= 0; +while (i < cLandMines) and (unplaced < 4) do begin Gear:= AddGear(0, 0, gtMine, 0, _0, _0, 0); FindPlace(Gear, false, 0, LAND_WIDTH); + + if Gear = nil then + inc(unplaced) + else + unplaced:= 0; + inc(i) end; i:= 0; -Gear:= PGear(1); -while (i < cExplosives){ and (Gear <> nil)} do +unplaced:= 0; +while (i < cExplosives) and (unplaced < 4) do begin Gear:= AddGear(0, 0, gtExplosives, 0, _0, _0, 0); FindPlace(Gear, false, 0, LAND_WIDTH); + + if Gear = nil then + inc(unplaced) + else + unplaced:= 0; + inc(i) end;