diff --git a/rts/Sim/Units/UnitTypes/Builder.cpp b/rts/Sim/Units/UnitTypes/Builder.cpp index 8559220..27529db 100644 --- a/rts/Sim/Units/UnitTypes/Builder.cpp +++ b/rts/Sim/Units/UnitTypes/Builder.cpp @@ -229,6 +229,10 @@ bool CBuilder::UpdateTerraform(const Command&) SmoothBorders(); if (curBuildee->terraformLeft <= 0.0f) { + // Short jobs can finish before SlowUpdate. Publish the final heights + // while the build still owns its complete smoothed footprint. + constexpr int tsr = TERRA_SMOOTHING_RADIUS; + mapDamage->RecalcArea(tx1 - tsr, tx2 + tsr, tz1 - tsr, tz2 + tsr); terraforming = false; curBuildee->groundLevelled = true; @@ -261,7 +265,7 @@ bool CBuilder::UpdateTerraform(const Command&) SmoothBorders(); if (myTerraformLeft <= 0.0f) { - terraforming = false; + // StopBuild recalculates the restored area while terraforming is true. StopBuild(); } } break;