private ReturnCardFromHandToSupply ( Dominion.Card typeOfCard, |
||
typeOfCard | Dominion.Card | |
gameState | ||
return | void |
public override void DoSpecializedAction(PlayerState currentPlayer, GameState gameState) { Card revealedCard = currentPlayer.RequestPlayerRevealCardFromHand(acceptableCard => true, gameState); if (revealedCard == null) { return; } currentPlayer.MoveRevealedCardToHand(revealedCard); int maxReturnCount = 1; if (currentPlayer.Hand.CountWhere(card => card.Equals(revealedCard)) > 1) { maxReturnCount++; } int returnCount = currentPlayer.actions.GetCountToReturnToSupply(revealedCard, gameState); returnCount = Math.Min(returnCount, maxReturnCount); returnCount = Math.Max(returnCount, 0); for (int i = 0; i < returnCount; ++i) { currentPlayer.ReturnCardFromHandToSupply(revealedCard, gameState); } foreach (PlayerState otherPlayer in gameState.players.OtherPlayers) { if (!otherPlayer.IsAffectedByAttacks(gameState)) { otherPlayer.GainCardFromSupply(gameState, revealedCard); } } }
public override void DoSpecializedAction(PlayerState currentPlayer, GameState gameState) { Card revealedCard = currentPlayer.RequestPlayerRevealCardFromHand(acceptableCard => true, gameState); PlayerState.AttackAction attackAction = this.DoEmptyAttack; if (revealedCard != null && !revealedCard.isShelter) { int maxReturnCount = Math.Max(currentPlayer.Hand.CountOf(revealedCard), 2); int returnCount = currentPlayer.actions.GetCountToReturnToSupply(revealedCard, gameState); returnCount = Math.Min(returnCount, maxReturnCount); returnCount = Math.Max(returnCount, 0); for (int i = 0; i < returnCount; ++i) { if (currentPlayer.hand.HasCard(revealedCard)) { currentPlayer.ReturnCardFromHandToSupply(revealedCard, gameState); } } attackAction = delegate(PlayerState currentPlayer2, PlayerState otherPlayer, GameState gameState2) { otherPlayer.GainCardFromSupply(gameState, revealedCard); }; } currentPlayer.AttackOtherPlayers(gameState, attackAction); }