소스 검색

Fix for arrow cart at bank fights

Dydzio 6 년 전
부모
커밋
9e5abeec35
1개의 변경된 파일19개의 추가작업 그리고 6개의 파일을 삭제
  1. 19 6
      lib/CStack.cpp

+ 19 - 6
lib/CStack.cpp

@@ -304,17 +304,30 @@ int32_t CStack::unitBaseAmount() const
 
 bool CStack::unitHasAmmoCart(const battle::Unit * unit) const
 {
-	bool hasAmmoCart = false;
-
 	for(const CStack * st : battle->stacks)
 	{
-		if(battle->battleMatchOwner(st, unit, true) && st->getCreature()->idNumber == CreatureID::AMMO_CART && st->alive())
+		if(battle->battleMatchOwner(st, unit, true) && st->getCreature()->idNumber == CreatureID::AMMO_CART)
+		{
+			if(st->alive())
+			{
+				return true;
+			}
+			else
+			{
+				return false;
+			}
+		}
+	}
+	//ammo cart works during creature bank battle while not on battlefield
+	auto ownerHero = battle->battleGetOwnerHero(unit);
+	if(ownerHero && ownerHero->artifactsWorn.find(ArtifactPosition::MACH2) != ownerHero->artifactsWorn.end())
+	{
+		if(battle->battleGetOwnerHero(unit)->artifactsWorn.at(ArtifactPosition::MACH2).artifact->artType->id == ArtifactID::AMMO_CART)
 		{
-			hasAmmoCart = true;
-			break;
+			return true;
 		}
 	}
-	return hasAmmoCart;
+	return false; //will be always false if trying to examine enemy hero in "special battle"
 }
 
 PlayerColor CStack::unitEffectiveOwner(const battle::Unit * unit) const