diff -r b801ff99e52c -r 9e0b20330d05 hedgewars/uLandObjects.pas --- a/hedgewars/uLandObjects.pas Sat Oct 15 13:10:16 2016 +0200 +++ b/hedgewars/uLandObjects.pas Sat Oct 15 13:28:13 2016 +0200 @@ -48,8 +48,8 @@ Surf, Mask: PSDL_Surface; inland: array[0..Pred(MAXOBJECTRECTS)] of TSDL_Rect; outland: array[0..Pred(MAXOBJECTRECTS)] of TSDL_Rect; - rectcnt: Longword; - rectcnt2: Longword; + inrectcnt: Longword; + outrectcnt: Longword; Width, Height: Longword; Maxcnt: Longword; end; @@ -359,14 +359,14 @@ with Obj do begin bRes:= true; i:= 1; - while bRes and (i <= rectcnt2) do + while bRes and (i <= inrectcnt) do begin bRes:= CheckLand(inland[i], x, y, lfBasic); inc(i) end; i:= 1; - while bRes and (i <= rectcnt) do + while bRes and (i <= outrectcnt) do begin bRes:= CheckLand(outland[i], x, y, 0); inc(i) @@ -668,41 +668,43 @@ Delete(s, 1, i); if (Maxcnt < 1) or (Maxcnt > MAXTHEMEOBJECTS) then OutError('Object''s max count should be between 1 and '+ inttostr(MAXTHEMEOBJECTS) +' (it was '+ inttostr(Maxcnt) +').', true); - rectcnt2 := 0; + + inrectcnt := 0; + for ii := 1 to Length(S) do if S[ii] = ',' then - inc(rectcnt2); + inc(inrectcnt); - if rectcnt2 mod 2 = 0 then - rectcnt2 := 1 + if inrectcnt mod 2 = 0 then + inrectcnt := 1 else begin i:= Pos(',', s); - rectcnt2:= StrToInt(Trim(Copy(s, 1, Pred(i)))); + inrectcnt:= StrToInt(Trim(Copy(s, 1, Pred(i)))); Delete(s, 1, i); end; - for ii:= 1 to rectcnt2 do - with inland[ii] do - begin - i:= Pos(',', s); - x:= StrToInt(Trim(Copy(s, 1, Pred(i)))); - Delete(s, 1, i); - i:= Pos(',', s); - y:= StrToInt(Trim(Copy(s, 1, Pred(i)))); - Delete(s, 1, i); - i:= Pos(',', s); - w:= StrToInt(Trim(Copy(s, 1, Pred(i)))); - Delete(s, 1, i); - i:= Pos(',', s); - h:= StrToInt(Trim(Copy(s, 1, Pred(i)))); - Delete(s, 1, i); - CheckRect(Width, Height, x, y, w, h) - end; + for ii:= 1 to inrectcnt do + with inland[ii] do + begin + i:= Pos(',', s); + x:= StrToInt(Trim(Copy(s, 1, Pred(i)))); + Delete(s, 1, i); + i:= Pos(',', s); + y:= StrToInt(Trim(Copy(s, 1, Pred(i)))); + Delete(s, 1, i); + i:= Pos(',', s); + w:= StrToInt(Trim(Copy(s, 1, Pred(i)))); + Delete(s, 1, i); + i:= Pos(',', s); + h:= StrToInt(Trim(Copy(s, 1, Pred(i)))); + Delete(s, 1, i); + CheckRect(Width, Height, x, y, w, h) + end; i:= Pos(',', s); - rectcnt:= StrToInt(Trim(Copy(s, 1, Pred(i)))); + outrectcnt:= StrToInt(Trim(Copy(s, 1, Pred(i)))); Delete(s, 1, i); - for ii:= 1 to rectcnt do + for ii:= 1 to outrectcnt do with outland[ii] do begin i:= Pos(',', s); @@ -714,7 +716,7 @@ i:= Pos(',', s); w:= StrToInt(Trim(Copy(s, 1, Pred(i)))); Delete(s, 1, i); - if ii = rectcnt then + if ii = outrectcnt then h:= StrToInt(Trim(s)) else begin @@ -724,6 +726,7 @@ end; CheckRect(Width, Height, x, y, w, h) end; + end; end else if key = 'spray' then