diff --git a/lib/mapObjects/CGTownBuilding.cpp b/lib/mapObjects/CGTownBuilding.cpp index 3bf11aa96..8abf8999a 100644 --- a/lib/mapObjects/CGTownBuilding.cpp +++ b/lib/mapObjects/CGTownBuilding.cpp @@ -444,7 +444,7 @@ void CTownRewardableBuilding::onHeroVisit(const CGHeroInstance *h) const cb->showBlockingDialog(&sd); }; - if(!town->hasBuilt(bID)) + if(!town->hasBuilt(bID) || cb->isVisitCoveredByAnotherQuery(town, h)) return; if(!wasVisitedBefore(h)) @@ -496,7 +496,7 @@ void CTownRewardableBuilding::onHeroVisit(const CGHeroInstance *h) const if (!visitedRewards.empty()) grantRewardWithMessage(visitedRewards[0]); else - logMod->warn("No applicable message for visiting already visited object!"); + logMod->debug("No applicable message for visiting already visited object!"); } } diff --git a/server/CGameHandler.cpp b/server/CGameHandler.cpp index aadabdaf7..5cf9fc5ab 100644 --- a/server/CGameHandler.cpp +++ b/server/CGameHandler.cpp @@ -3614,7 +3614,7 @@ bool CGameHandler::buildStructure(ObjectInstanceID tid, BuildingID requestedID, if(t->visitingHero) objectVisited(t, t->visitingHero); if(t->garrisonHero) - objectVisited(t, t->garrisonHero); + visitCastleObjects(t, t->garrisonHero); checkVictoryLossConditionsForPlayer(t->tempOwner); return true;