浏览代码

Fix duplicated hero in Song for the Father campaign

Ivan Savenko 1 年之前
父节点
当前提交
c3012105e2
共有 1 个文件被更改,包括 9 次插入5 次删除
  1. 9 5
      lib/gameState/CGameStateCampaign.cpp

+ 9 - 5
lib/gameState/CGameStateCampaign.cpp

@@ -210,17 +210,21 @@ void CGameStateCampaign::placeCampaignHeroes()
 	// with the same hero type id
 	std::vector<CGHeroInstance *> removedHeroes;
 
-	std::set<HeroTypeID> heroesToRemove = campaignState->getReservedHeroes();
+	std::set<HeroTypeID> reservedHeroes = campaignState->getReservedHeroes();
+	std::set<HeroTypeID> heroesToRemove;
+
+	for (auto const & heroID : reservedHeroes )
+	{
+		// Do not replace reserved heroes initially, e.g. in 1st campaign scenario in which they appear
+		if (!campaignState->getHeroByType(heroID).isNull())
+			heroesToRemove.insert(heroID);
+	}
 
 	for(auto & campaignHeroReplacement : campaignHeroReplacements)
 		heroesToRemove.insert(campaignHeroReplacement.hero->getHeroType());
 
 	for(auto & heroID : heroesToRemove)
 	{
-		// Do not replace reserved heroes initially, e.g. in 1st campaign scenario in which they appear
-		if (campaignState->getHeroByType(heroID).isNull())
-			continue;
-
 		auto * hero = gameState->getUsedHero(heroID);
 		if(hero)
 		{