private DrawAndRevealOneCardFromDeck ( |
||
gameState | ||
Résultat | Dominion.Card |
public override void DoSpecializedAction(PlayerState currentPlayer, GameState gameState) { int countTreasureFound = 0; while (countTreasureFound < 2) { Card card = currentPlayer.DrawAndRevealOneCardFromDeck(gameState); if (card == null) { break; } if (card.isTreasure) { countTreasureFound += 1; currentPlayer.MoveRevealedCardToHand(card); } } currentPlayer.MoveRevealedCardsToDiscard(gameState); }
public override void DoSpecializedAction(PlayerState currentPlayer, GameState gameState) { Card foundCard = null; gameState.gameLog.PushScope(); while (true) { foundCard = currentPlayer.DrawAndRevealOneCardFromDeck(); if (foundCard == null) break; if (foundCard.isAction || foundCard.isTreasure) { break; } } gameState.gameLog.PopScope(); if (foundCard != null) { currentPlayer.MoveRevealedCardToHand(foundCard); } currentPlayer.MoveRevealedCardsToDiscard(cardToMove => true, gameState); }
public override void DoSpecializedAction(PlayerState currentPlayer, GameState gameState) { currentPlayer.RequestPlayerInspectTopOfDeckForDiscard(currentPlayer, gameState); while (true) { Card card = currentPlayer.DrawAndRevealOneCardFromDeck(gameState); if (card == null || !card.isAction) break; } currentPlayer.MoveAllRevealedCardsToHand(); }
private static Card DrawAndRevealTillFindAnActionIsntGolem(PlayerState currentPlayer, GameState gameState) { while (true) { Card result = currentPlayer.DrawAndRevealOneCardFromDeck(gameState); if (result == null) return null; if (result.isAction && result != Cards.Golem) { return result; } } }
private static void ApplySpyEffect(PlayerState playerAffected, PlayerState decidingPlayer, GameState gameState) { Card revealedCard = playerAffected.DrawAndRevealOneCardFromDeck(); if (revealedCard != null) { if (decidingPlayer.actions.ShouldPlayerDiscardCardFromDeck(gameState, playerAffected, revealedCard)) { playerAffected.MoveRevealedCardsToDiscard(gameState); } else { playerAffected.MoveRevealedCardToTopOfDeck(revealedCard); } } }
public override void DoSpecializedAction(PlayerState currentPlayer, GameState gameState) { Card namedCard = currentPlayer.RequestPlayerNameACard(gameState); int cardFoundCount = 0; while(true) { Card revealedCard = currentPlayer.DrawAndRevealOneCardFromDeck(gameState); if (revealedCard == null) break; if (revealedCard == namedCard) continue; cardFoundCount++; if (cardFoundCount >= 3) break; } currentPlayer.MoveRevealedCardsToHand(card => card != namedCard); currentPlayer.MoveRevealedCardsToDiscard(gameState); }
public override void DoSpecializedAction(PlayerState currentPlayer, GameState gameState) { Card revealedCard = currentPlayer.DrawAndRevealOneCardFromDeck(gameState); if (revealedCard == null) return; if (revealedCard.isAction) { currentPlayer.cardsBeingRevealed.RemoveCard(revealedCard); currentPlayer.DoPlayAction(revealedCard, gameState); } else { currentPlayer.MoveRevealedCardToTopOfDeck(); } }
public override void DoSpecializedAction(PlayerState currentPlayer, GameState gameState) { while (true) { Card card = currentPlayer.DrawAndRevealOneCardFromDeck(); if (card == null) break; if (card.CurrentCoinCost(currentPlayer) >= 3 && card.potionCost == 0) { currentPlayer.MoveRevealedCardToHand(card); break; } } currentPlayer.MoveRevealedCardsToDiscard(gameState); }
public override void DoSpecializedAction(PlayerState currentPlayer, GameState gameState) { Card cardType = currentPlayer.GuessCardTopOfDeck(gameState); Card revealedCard = currentPlayer.DrawAndRevealOneCardFromDeck(); if (revealedCard != cardType) { currentPlayer.MoveAllRevealedCardsToHand(); } else { currentPlayer.MoveRevealedCardsToDiscard(gameState); } }
public override void DoSpecializedAction(PlayerState currentPlayer, GameState gameState) { currentPlayer.RevealHand(); Card revealedCard = currentPlayer.DrawAndRevealOneCardFromDeck(); while (revealedCard != null) { if (!currentPlayer.Hand.HasCard(revealedCard)) { currentPlayer.MoveRevealedCardToHand(revealedCard); break; } revealedCard = currentPlayer.DrawAndRevealOneCardFromDeck(); } currentPlayer.MoveRevealedCardsToDiscard(gameState); }
public override void DoSpecializedAttack(PlayerState currentPlayer, PlayerState otherPlayer, GameState gameState) { // Each other player reveals cards from the top of his deck Card revealedCard = otherPlayer.DrawAndRevealOneCardFromDeck(); while (revealedCard != null) { // until revealing one costing 3 or more if (revealedCard.CurrentCoinCost(otherPlayer) >= 3) { break; } revealedCard = otherPlayer.DrawAndRevealOneCardFromDeck(); } if (revealedCard != null) { // He trashess that card and otherPlayer.MoveRevealedCardToTrash(revealedCard, gameState); // may gain a card costing at most 2 less than it. otherPlayer.RequestPlayerGainCardFromSupply( gameState, acceptableCard => acceptableCard.CurrentCoinCost(currentPlayer) <= revealedCard.CurrentCoinCost(currentPlayer) - 2 && acceptableCard.potionCost <= revealedCard.potionCost, "Must gain a card costing at most 2 less than the trashed card", isOptional: true); } // he discards the other revealed cards otherPlayer.MoveRevealedCardsToDiscard(gameState); }
public override void DoSpecializedAction(PlayerState currentPlayer, GameState gameState) { Card cardToPlay = null; while (true) { Card revealedCard = currentPlayer.DrawAndRevealOneCardFromDeck(gameState); if (revealedCard == null) { break; } if (revealedCard.isTreasure) { cardToPlay = currentPlayer.cardsBeingRevealed.RemoveCard(revealedCard); break; } } currentPlayer.MoveRevealedCardsToDiscard(gameState); if (cardToPlay != null) { currentPlayer.DoPlayTreasure(cardToPlay, gameState); } }
public override void DoSpecializedAction(PlayerState currentPlayer, GameState gameState) { while (true) { Card revealedCard = currentPlayer.DrawAndRevealOneCardFromDeck(gameState); if (revealedCard == null) break; if (revealedCard.isTreasure) { if (currentPlayer.actions.ShouldTrashCard(gameState, revealedCard)) { currentPlayer.MoveRevealedCardToTrash(revealedCard, gameState); } else { currentPlayer.MoveRevealedCardToDiscard(revealedCard, gameState); } break; } } currentPlayer.MoveRevealedCardsToDiscard(gameState); }
public override void DoSpecializedAction(PlayerState currentPlayer, GameState gameState) { while (currentPlayer.hand.Count < 7) { Card revealedCard = currentPlayer.DrawAndRevealOneCardFromDeck(gameState); if (revealedCard == null) { break; } bool putCardInHand = !revealedCard.isAction || currentPlayer.actions.ShouldPutCardInHand(gameState, revealedCard); if (putCardInHand) { currentPlayer.MoveRevealedCardToHand(revealedCard); } } currentPlayer.MoveRevealedCardsToDiscard(gameState); }
public override void DoSpecializedAttack(PlayerState currentPlayer, PlayerState otherPlayer, GameState gameState) { // Each other player reveals cards from the top of his deck Card revealedCard = otherPlayer.DrawAndRevealOneCardFromDeck(); while (revealedCard != null) { // until he reveals a victory or curse card if (revealedCard.isVictory || revealedCard.isCurse) { otherPlayer.MoveRevealedCardToTopOfDeck(revealedCard); break; } revealedCard = otherPlayer.DrawAndRevealOneCardFromDeck(); } otherPlayer.MoveRevealedCardsToDiscard(gameState); }
public override void DoSpecializedAction(PlayerState currentPlayer, GameState gameState) { Card revealedCard = currentPlayer.DrawAndRevealOneCardFromDeck(gameState); if (revealedCard.isTreasure) { currentPlayer.MoveAllRevealedCardsToHand(); } else { currentPlayer.MoveRevealedCardToTopOfDeck(); } if (revealedCard.isAction || revealedCard.isVictory) { currentPlayer.GainCardFromSupply(Cards.Magpie, gameState); } }
public override void DoSpecializedAction(PlayerState currentPlayer, GameState gameState) { Card cardType = currentPlayer.RequestPlayerNameACard(gameState); Card foundCard = null; gameState.gameLog.PushScope(); while (true) { foundCard = currentPlayer.DrawAndRevealOneCardFromDeck(); if (foundCard == null) break; if (foundCard.isVictory && foundCard != cardType) { break; } } currentPlayer.MoveRevealedCardsToDiscard(cardToMove => !cardToMove.Equals(foundCard), gameState); gameState.gameLog.PopScope(); if (foundCard != null) { int cardCost = foundCard.CurrentCoinCost(currentPlayer); currentPlayer.MoveRevealedCardToTrash(foundCard, gameState); currentPlayer.RequestPlayerGainCardFromSupply(gameState, acceptableCard => acceptableCard.isVictory && acceptableCard.CurrentCoinCost(currentPlayer) <= cardCost + 3 && acceptableCard.potionCost == foundCard.potionCost, "Gain a victory card costing up to 3 more than the trashed card."); } }