Преглед изворни кода

Fixed https://bugs.vcmi.eu/view.php?id=2865

AlexVinS пре 7 година
родитељ
комит
b194f8f13b
1 измењених фајлова са 4 додато и 4 уклоњено
  1. 4 4
      server/CGameHandler.cpp

+ 4 - 4
server/CGameHandler.cpp

@@ -4137,10 +4137,9 @@ bool CGameHandler::makeBattleAction(BattleAction &ba)
 			for (int i = 0; i < totalAttacks; ++i)
 			{
 				const bool firstStrike = destinationStack->hasBonusOfType(Bonus::FIRST_STRIKE);
+				const bool retaliation = destinationStack->ableToRetaliate();
 				//first strike
-				if(i == 0 && firstStrike
-					&& destinationStack->ableToRetaliate()
-					&& stack->alive()) //probably not needed
+				if(i == 0 && firstStrike && retaliation)
 				{
 					makeAttack(destinationStack, stack, 0, stack->getPosition(), true, false, true);
 				}
@@ -4152,10 +4151,11 @@ bool CGameHandler::makeBattleAction(BattleAction &ba)
 				}
 
 				//counterattack
+				//we check retaliation twice, so if it unblocked during attack it will work only on next attack
 				if(stack->alive()
 					&& !stack->hasBonusOfType(Bonus::BLOCKS_RETALIATION)
 					&& (i > 0 || !firstStrike)
-					&& destinationStack->ableToRetaliate())
+					&& retaliation && destinationStack->ableToRetaliate())
 				{
 					makeAttack(destinationStack, stack, 0, stack->getPosition(), i==0, false, true);
 				}