internal bool IsAffectedByAttacks(GameState gameState)
{
bool doesCancelAttack = false;
bool didCardAffectAnything = true;
while (didCardAffectAnything)
{
didCardAffectAnything = false;
foreach (Card reactionCard in this.hand.AllTypes)
{
gameState.cardContextStack.PushCardContext(this, reactionCard, CardContextReason.CardReacting);
bool didthisCardCancelAttack;
didCardAffectAnything = reactionCard.DoReactionToAttackWhileInHand(this, gameState, out didthisCardCancelAttack);
doesCancelAttack |= didthisCardCancelAttack;
gameState.cardContextStack.Pop();
if (didCardAffectAnything)
break;
}
}
foreach (Card durationCard in this.CardsInPlay)
{
gameState.cardContextStack.PushCardContext(this, durationCard, CardContextReason.CardReacting);
if (durationCard.DoReactionToAttackWhileInPlayAcrossTurns(this, gameState))
{
doesCancelAttack = true;
}
gameState.cardContextStack.Pop();
}
return !doesCancelAttack;
}