private void StartResolvingOneCard(IPlayedCard played)
    {
        BattleLog.Write($"Began resolving {played.Card.Name}");
        if (physicalZone.Count == 0)
        {
            Log.Info($"Weird Physical Zone Draw bug.");
        }
        else
        {
            physicalZone.DrawOneCard();
        }

        var card = played.Card;

        if (card.Owner.IsStunnedForCard())
        {
            BattleLog.Write($"{card.Owner.Name} was stunned, so {card.Name} does not resolve.");
            card.Owner.Apply(m => m.ApplyTemporaryAdditive(AdjustedStats.CreateIndefinite(new StatAddends().With(TemporalStatType.CardStun, -1), true)));
            WrapupCard(played, card);
            Message.Publish(new CardResolutionFinished());
        }
        else
        {
            AllConditions.InitCardPlaying(battleState.GetSnapshot());
            played.Perform();
            WrapupCard(played, card);
        }
    }
 private void WrapupCard(IPlayedCard played, Card physicalCard)
 {
     LastPlayed = played;
     if (played.Member.TeamType.Equals(TeamType.Party))
     {
         playedDiscardZone.PutOnBottom(physicalCard.RevertedToStandard());
     }
     isResolving = moves.Any();
 }
 public void Add(IPlayedCard played)
 {
     moves.Add(played);
     physicalZone.PutOnBottom(played.Card);
     played.Member.Apply(m =>
     {
         m.Lose(played.Spent);
         m.Gain(played.Gained);
     });
     BattleLog.Write($"{played.Member.Name} Played {played.Card.Name} - Spent {played.Spent} - Gained {played.Gained}");
 }