diff --git a/libs/s25main/buildings/noBuildingSite.cpp b/libs/s25main/buildings/noBuildingSite.cpp index 621a630008..c084801a56 100644 --- a/libs/s25main/buildings/noBuildingSite.cpp +++ b/libs/s25main/buildings/noBuildingSite.cpp @@ -29,7 +29,10 @@ noBuildingSite::noBuildingSite(const BuildingType type, const MapPoint pos, cons || GetSize() == BuildingQuality::Harbor) { // Höhe auf dem Punkt, wo die Baustelle steht - int altitude = world->GetNode(pos).altitude; + int altitude = world->GetNode(this->GetFlagPos()).altitude; + + if(altitude - world->GetNode(pos).altitude != 0) + state = BuildingSiteState::Planing; for(const auto dir : helpers::EnumRange{}) { @@ -377,6 +380,8 @@ void noBuildingSite::PlaningFinished() state = BuildingSiteState::Building; planer = nullptr; + world->ChangeAltitude(pos, world->GetNode(this->GetFlagPos()).altitude); + // Wir hätten gerne einen Bauarbeiter... world->GetPlayer(player).AddJobWanted(Job::Builder, this); diff --git a/libs/s25main/figures/nofPlaner.cpp b/libs/s25main/figures/nofPlaner.cpp index 2b047b7edb..1ecf735d79 100644 --- a/libs/s25main/figures/nofPlaner.cpp +++ b/libs/s25main/figures/nofPlaner.cpp @@ -158,7 +158,7 @@ void nofPlaner::HandleDerivedEvent(const unsigned id) { // Planieren (falls Baustelle noch existiert) if(building_site) - world->ChangeAltitude(pos, world->GetNode(building_site->GetPos()).altitude); + world->ChangeAltitude(pos, world->GetNode(building_site->GetFlagPos()).altitude); /// Sounds abmelden world->GetSoundMgr().stopSounds(*this);