diff -r 0f31c8ab064b -r b29d60c7cac7 hedgewars/uLandGraphics.pas --- a/hedgewars/uLandGraphics.pas Sun Jun 26 20:19:11 2011 -0400 +++ b/hedgewars/uLandGraphics.pas Sun Jun 26 20:29:08 2011 -0400 @@ -480,10 +480,13 @@ procedure DrawTunnel(X, Y, dX, dY: hwFloat; ticks, HalfWidth: LongInt); var nx, ny, dX8, dY8: hwFloat; i, t, tx, ty, stX, stY, ddy, ddx: Longint; + despeckle : Boolean; begin // (-dY, dX) is (dX, dY) rotated by PI/2 stY:= hwRound(Y); stX:= hwRound(X); +despeckle:= HalfWidth > 1; + nx:= X + dY * (HalfWidth + 8); ny:= Y - dX * (HalfWidth + 8); @@ -505,10 +508,10 @@ ((Land[ty, tx] and lfObject) <> 0)) then begin Land[ty, tx]:= Land[ty, tx] or lfDamaged; - if (cReducedQuality and rqBlurryLand) = 0 then + if despeckle then LandDirty[ty div 32, tx div 32]:= 1; + if (cReducedQuality and rqBlurryLand) = 0 then LandPixels[ty, tx]:= cExplosionBorderColor - else - LandPixels[ty div 2, tx div 2]:= cExplosionBorderColor + else LandPixels[ty div 2, tx div 2]:= cExplosionBorderColor end end; nx:= nx - dY; @@ -531,11 +534,10 @@ ((Land[ty, tx] and lfObject) <> 0)) then begin Land[ty, tx]:= Land[ty, tx] or lfDamaged; - if (cReducedQuality and rqBlurryLand) = 0 then - LandPixels[ty, tx]:= cExplosionBorderColor - else - LandPixels[ty div 2, tx div 2]:= cExplosionBorderColor - + if despeckle then LandDirty[ty div 32, tx div 32]:= 1; + if (cReducedQuality and rqBlurryLand) = 0 then + LandPixels[ty, tx]:= cExplosionBorderColor + else LandPixels[ty div 2, tx div 2]:= cExplosionBorderColor end end; X:= nx; @@ -575,11 +577,10 @@ ((Land[ty, tx] and lfObject) <> 0)) then begin Land[ty, tx]:= Land[ty, tx] or lfDamaged; + if despeckle then LandDirty[ty div 32, tx div 32]:= 1; if (cReducedQuality and rqBlurryLand) = 0 then - LandPixels[ty, tx]:= cExplosionBorderColor - else - LandPixels[ty div 2, tx div 2]:= cExplosionBorderColor - + LandPixels[ty, tx]:= cExplosionBorderColor + else LandPixels[ty div 2, tx div 2]:= cExplosionBorderColor end end; nx:= nx - dY; @@ -602,10 +603,10 @@ ((Land[ty, tx] and lfObject) <> 0)) then begin Land[ty, tx]:= Land[ty, tx] or lfDamaged; + if despeckle then LandDirty[ty div 32, tx div 32]:= 1; if (cReducedQuality and rqBlurryLand) = 0 then - LandPixels[ty, tx]:= cExplosionBorderColor - else - LandPixels[ty div 2, tx div 2]:= cExplosionBorderColor + LandPixels[ty, tx]:= cExplosionBorderColor + else LandPixels[ty div 2, tx div 2]:= cExplosionBorderColor end end; nx:= nx - dY;