diff -r 1b9f026e9fc6 -r 4609823efc94 hedgewars/uLandGraphics.pas --- a/hedgewars/uLandGraphics.pas Sun Mar 17 22:02:57 2013 +0100 +++ b/hedgewars/uLandGraphics.pas Mon Mar 18 12:13:46 2013 -0400 @@ -108,25 +108,25 @@ if ((y + dy) and LAND_HEIGHT_MASK) = 0 then for i:= Max(x - dx, 0) to Min(x + dx, LAND_WIDTH - 1) do if isCurrent then - Land[y + dy, i]:= Land[y + dy, i] and lfCurrentMask + Land[y + dy, i]:= Land[y + dy, i] and lfNotCurrentMask else if Land[y + dy, i] and lfObjMask > 0 then Land[y + dy, i]:= (Land[y + dy, i] and lfNotObjMask) or ((Land[y + dy, i] and lfObjMask) - 1); if ((y - dy) and LAND_HEIGHT_MASK) = 0 then for i:= Max(x - dx, 0) to Min(x + dx, LAND_WIDTH - 1) do if isCurrent then - Land[y - dy, i]:= Land[y - dy, i] and lfCurrentMask + Land[y - dy, i]:= Land[y - dy, i] and lfNotCurrentMask else if Land[y - dy, i] and lfObjMask > 0 then Land[y - dy, i]:= (Land[y - dy, i] and lfNotObjMask) or ((Land[y - dy, i] and lfObjMask) - 1); if ((y + dx) and LAND_HEIGHT_MASK) = 0 then for i:= Max(x - dy, 0) to Min(x + dy, LAND_WIDTH - 1) do if isCurrent then - Land[y + dx, i]:= Land[y + dx, i] and lfCurrentMask + Land[y + dx, i]:= Land[y + dx, i] and lfNotCurrentMask else if Land[y + dx, i] and lfObjMask > 0 then Land[y + dx, i]:= (Land[y + dx, i] and lfNotObjMask) or ((Land[y + dx, i] and lfObjMask) - 1); if ((y - dx) and LAND_HEIGHT_MASK) = 0 then for i:= Max(x - dy, 0) to Min(x + dy, LAND_WIDTH - 1) do if isCurrent then - Land[y - dx, i]:= Land[y - dx, i] and lfCurrentMask + Land[y - dx, i]:= Land[y - dx, i] and lfNotCurrentMask else if Land[y - dx, i] and lfObjMask > 0 then Land[y - dx, i]:= (Land[y - dx, i] and lfNotObjMask) or ((Land[y - dx, i] and lfObjMask) - 1) end @@ -269,7 +269,7 @@ exit; end; - if Land[j, i] and $FF00 and not lfIce = 0 then + if Land[j, i] and lfLandMask and not lfIce = 0 then result := result + 1; end; end; @@ -957,7 +957,7 @@ yy:= Y div 2; end; - pixelsweep:= ((Land[Y, X] and $FF00) = 0) and (LandPixels[yy, xx] <> 0); + pixelsweep:= (Land[Y, X] <= lfAllObjMask) and (LandPixels[yy, xx] <> 0); if (((Land[Y, X] and lfDamaged) <> 0) and ((Land[Y, X] and lfIndestructible) = 0)) or pixelsweep then begin c:= 0;