public void HandleCardTransfer(Player from, Player to, DeckType target, List<Card> cards, Hero tag = null)
{
cards = new List<Card>(cards);
if (to.IsDead)
{
if (cards.Any(cd => cd.Place.DeckType != DeckType.Hand && cd.Place.DeckType != DeckType.Equipment && cd.Place.DeckType != DeckType.DelayedTools))
{
CardsMovement move1 = new CardsMovement();
move1.Cards = new List<Card>(cards);
move1.To = new DeckPlace(null, DeckType.Discard);
MoveCards(move1);
PlayerLostCard(from, cards);
}
return;
}
CardsMovement move = new CardsMovement();
move.Cards = new List<Card>(cards);
move.To = new DeckPlace(to, target);
move.Helper = new MovementHelper();
move.Helper.PrivateDeckHeroTag = tag;
MoveCards(move);
bool triggerAcquiredCard = target == DeckType.Hand || target == DeckType.Equipment;
EnterAtomicContext();
PlayerLostCard(from, cards);
if (triggerAcquiredCard) PlayerAcquiredCard(to, cards);
ExitAtomicContext();
}