diff --git a/src/rendering/water_renderer.cpp b/src/rendering/water_renderer.cpp index efe0ab21..7c7ca515 100644 --- a/src/rendering/water_renderer.cpp +++ b/src/rendering/water_renderer.cpp @@ -404,6 +404,22 @@ void WaterRenderer::loadFromWMO([[maybe_unused]] const pipeline::WMOLiquid& liqu } } + // Fix Northshire Abbey fountain - water extends 2 units too large in diameter + // Fountain center at approximately (-9048, -44, 93.7) + glm::vec3 northshireFountainPos(-9048.0f, -44.2f, 93.7f); + float distToFountain = glm::distance(glm::vec2(surface.origin.x, surface.origin.y), + glm::vec2(northshireFountainPos.x, northshireFountainPos.y)); + + // Lower fountain water by 2 units if within 15 units of fountain center + if (distToFountain < 15.0f && std::abs(surface.origin.z - northshireFountainPos.z) < 5.0f) { + LOG_INFO(" -> LOWERING Northshire fountain by 2 units (dist: ", distToFountain, ")"); + for (float& h : surface.heights) { + h -= 2.0f; + } + surface.minHeight -= 2.0f; + surface.maxHeight -= 2.0f; + } + // Skip WMO water that's clearly invalid (extremely high - above 300 units) // This is a conservative global filter that won't affect normal gameplay if (surface.origin.z > 300.0f) {