diff --git a/server/CGameHandler.cpp b/server/CGameHandler.cpp index a59f1ae94..a2e01aea9 100644 --- a/server/CGameHandler.cpp +++ b/server/CGameHandler.cpp @@ -641,20 +641,7 @@ void CGameHandler::onNewTurn() // Skyship, probably easier to handle same as Veil of darkness // do it every new day before veils if (player.isValidPlayer()) - { - std::unordered_set revealedTiles; - - // find all hidden tiles - const auto & fow = getPlayerTeam(player)->fogOfWarMap; - auto shape = fow.shape(); - for(size_t z = 0; z < shape[0]; z++) - for(size_t x = 0; x < shape[1]; x++) - for(size_t y = 0; y < shape[2]; y++) - if (!fow[z][x][y]) - revealedTiles.insert(int3(x, y, z)); - - changeFogOfWar(revealedTiles, player, ETileVisibility::REVEALED); - } + changeFogOfWar(t->getSightCenter(), t->getSightRadius(), player, ETileVisibility::REVEALED); } } @@ -3884,7 +3871,8 @@ void CGameHandler::changeFogOfWar(const std::unordered_set &tiles, PlayerC if (mode == ETileVisibility::HIDDEN) { - //do not hide tiles observed by owned objects. May lead to disastrous AI problems + // do not hide tiles observed by owned objects. May lead to disastrous AI problems + // FIXME: this leads to a bug - shroud of darkness from Necropolis does can not override Skyship from Tower std::unordered_set observedTiles; auto p = getPlayerState(player); for (auto obj : p->getOwnedObjects())