소스 검색

Fix garrisons hero

nordsoft 2 년 전
부모
커밋
92dcfd1f68
2개의 변경된 파일3개의 추가작업 그리고 3개의 파일을 삭제
  1. 2 2
      lib/mapObjects/CGTownBuilding.cpp
  2. 1 1
      server/CGameHandler.cpp

+ 2 - 2
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!");
 	}
 }
 

+ 1 - 1
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;