Browse Source

Merge branch 'pr/4528' into develop

Xilmi 1 year ago
parent
commit
f4578c6d3a
2 changed files with 15 additions and 9 deletions
  1. 9 6
      AI/BattleAI/BattleExchangeVariant.cpp
  2. 6 3
      AI/Nullkiller/Analyzers/HeroManager.cpp

+ 9 - 6
AI/BattleAI/BattleExchangeVariant.cpp

@@ -485,15 +485,18 @@ ReachabilityData BattleExchangeEvaluator::getExchangeUnits(
 		vstd::concatenate(allReachableUnits, turn == 0 ? reachabilityMap.at(hex) : getOneTurnReachableUnits(turn, hex));
 	}
 
-	for(auto hex : ap.attack.attacker->getHexes())
+	if(!ap.attack.attacker->isTurret())
 	{
-		auto unitsReachingAttacker = turn == 0 ? reachabilityMap.at(hex) : getOneTurnReachableUnits(turn, hex);
-		for(auto unit : unitsReachingAttacker)
+		for(auto hex : ap.attack.attacker->getHexes())
 		{
-			if(unit->unitSide() != ap.attack.attacker->unitSide())
+			auto unitsReachingAttacker = turn == 0 ? reachabilityMap.at(hex) : getOneTurnReachableUnits(turn, hex);
+			for(auto unit : unitsReachingAttacker)
 			{
-				allReachableUnits.push_back(unit);
-				result.enemyUnitsReachingAttacker.insert(unit->unitId());
+				if(unit->unitSide() != ap.attack.attacker->unitSide())
+				{
+					allReachableUnits.push_back(unit);
+					result.enemyUnitsReachingAttacker.insert(unit->unitId());
+				}
 			}
 		}
 	}

+ 6 - 3
AI/Nullkiller/Analyzers/HeroManager.cpp

@@ -126,20 +126,23 @@ void HeroManager::update()
 	}
 
 	std::sort(myHeroes.begin(), myHeroes.end(), scoreSort);
-	heroRoles.clear();
+	
+	std::map<HeroPtr, HeroRole> newHeroRoles;
 
 	for(auto hero : myHeroes)
 	{
 		if(hero->patrol.patrolling)
 		{
-			heroRoles[hero] = HeroRole::MAIN;
+			newHeroRoles[hero] = HeroRole::MAIN;
 		}
 		else
 		{
-			heroRoles[hero] = (globalMainCount--) > 0 ? HeroRole::MAIN : HeroRole::SCOUT;
+			newHeroRoles[hero] = (globalMainCount--) > 0 ? HeroRole::MAIN : HeroRole::SCOUT;
 		}
 	}
 
+	heroRoles = std::move(newHeroRoles);
+
 	for(auto hero : myHeroes)
 	{
 		logAi->trace("Hero %s has role %s", hero->getNameTranslated(), heroRoles[hero] == HeroRole::MAIN ? "main" : "scout");