public override void DoSpecializedAction(PlayerState currentPlayer, GameState gameState) { currentPlayer.RevealCardsFromDeck(5, gameState); Card cardType = gameState.players.PlayerLeft.actions.BanCardToDrawnIntoHandFromRevealedCards(gameState); if (!currentPlayer.cardsBeingRevealed.HasCard(cardType)) { throw new Exception("Must ban a card currently being revealed"); } currentPlayer.MoveRevealedCardToDiscard(cardType, gameState); currentPlayer.MoveAllRevealedCardsToHand(); }
public override void DoSpecializedAttack(PlayerState currentPlayer, PlayerState otherPlayer, GameState gameState) { otherPlayer.RevealCardsFromDeck(2); Card cardtoTrash = null; CardPredicate acceptableCards = card => card == Silver.card || card == Gold.card; if (otherPlayer.cardsBeingRevealed.HasCard(acceptableCards)) { Card cardTypeToTrash = currentPlayer.actions.GetCardFromRevealedCardsToTrash(gameState, otherPlayer, acceptableCards); cardtoTrash = otherPlayer.cardsBeingRevealed.RemoveCard(cardTypeToTrash); if (cardtoTrash == null) { throw new Exception("Must choose a revealed card to trash"); } if (!acceptableCards(cardtoTrash)) { throw new Exception("Player Must choose a treasure card to trash"); } otherPlayer.MoveCardToTrash(cardtoTrash, gameState); } if (!otherPlayer.CardsBeingRevealed.Where(card => card.isTreasure).Any()) { otherPlayer.GainCardFromSupply(Copper.card, gameState); } if (cardtoTrash != null) { Card cardToGain = gameState.trash.RemoveCard(cardtoTrash); currentPlayer.GainCard(gameState, cardToGain, DeckPlacement.Trash, DeckPlacement.Discard); } otherPlayer.MoveRevealedCardsToDiscard(gameState); }
public override void DoSpecializedAction(PlayerState currentPlayer, GameState gameState) { Card cardType = currentPlayer.RequestPlayerNameACard(gameState); currentPlayer.RevealCardsFromDeck(3, gameState); while (currentPlayer.cardsBeingRevealed.HasCard(cardType)) { currentPlayer.MoveRevealedCardToTrash(cardType, gameState); } currentPlayer.RequestPlayerPutRevealedCardsBackOnDeck(gameState); }
public override void DoSpecializedAction(PlayerState currentPlayer, GameState gameState) { currentPlayer.RevealCardsFromDeck(4); currentPlayer.AddCoins(currentPlayer.cardsBeingRevealed.CountTypes); currentPlayer.MoveRevealedCardsToDiscard(gameState); }
public override void DoSpecializedAction(PlayerState currentPlayer, GameState gameState) { currentPlayer.RevealCardsFromDeck(4); currentPlayer.MoveRevealedCardsToHand(card => card.isVictory); currentPlayer.RequestPlayerTopDeckRevealedCardsInAnyOrder(gameState); }
private static void AttackAction(PlayerState currentPlayer, PlayerState otherPlayer, GameState gameState) { otherPlayer.RevealCardsFromDeck(2, gameState); otherPlayer.RequestPlayerTrashRevealedCard(gameState, card => Card.DoesCardCost3To6(card, otherPlayer)); otherPlayer.MoveRevealedCardsToDiscard(gameState); }
public override void DoSpecializedAction(PlayerState currentPlayer, GameState gameState) { currentPlayer.RevealCardsFromDeck(3); gameState.gameLog.PushScope(); currentPlayer.RequestPlayerTrashRevealedCard(gameState); currentPlayer.RequestPlayerDiscardRevealedCard(gameState); currentPlayer.MoveRevealedCardToTopOfDeck(); gameState.gameLog.PopScope(); }
public override void DoSpecializedAction(PlayerState currentPlayer, GameState gameState) { currentPlayer.RevealCardsFromDeck(3); PlayerActionChoice choice = currentPlayer.RequestPlayerChooseBetween(gameState, actionChoice => actionChoice == PlayerActionChoice.Discard || actionChoice == PlayerActionChoice.PutInHand); switch (choice) { case PlayerActionChoice.Discard: { currentPlayer.MoveRevealedCardsToDiscard(gameState); currentPlayer.DrawAdditionalCardsIntoHand(3); break; } case PlayerActionChoice.PutInHand: { currentPlayer.MoveAllRevealedCardsToHand(); break; } default: throw new Exception(); } }
public override void DoSpecializedAction(PlayerState currentPlayer, GameState gameState) { currentPlayer.RevealCardsFromDeck(1); Card revealedCard = currentPlayer.cardsBeingRevealed.FirstOrDefault(); if (revealedCard == null) { return; } if (revealedCard.isCurse || revealedCard.isRuins || revealedCard.isShelter || revealedCard.isVictory) { currentPlayer.MoveRevealedCardToHand(revealedCard); } else { currentPlayer.MoveRevealedCardToTopOfDeck(); } }
public override void DoSpecializedAction(PlayerState currentPlayer, GameState gameState) { currentPlayer.RevealCardsFromDeck(3); currentPlayer.MoveRevealedCardsToDiscard(card => !card.isAction, gameState); currentPlayer.RequestPlayerPutRevealedCardsBackOnDeck(gameState); }
public override void DoSpecializedAction(PlayerState currentPlayer, GameState gameState) { currentPlayer.RevealCardsFromDeck(2); // TODO: Require option to put ruins back. currentPlayer.RequestPlayerPutRevealedCardsBackOnDeck(gameState); }
public override void DoSpecializedAttack(PlayerState currentPlayer, PlayerState otherPlayer, GameState gameState) { otherPlayer.RevealCardsFromDeck(2, gameState); PlayerActionChoice choice = currentPlayer.RequestPlayerChooseBetween(gameState, actionChoice => actionChoice == PlayerActionChoice.Discard || actionChoice == PlayerActionChoice.TopDeck); switch (choice) { case PlayerActionChoice.Discard: { otherPlayer.MoveRevealedCardsToDiscard(gameState); break; } case PlayerActionChoice.TopDeck: { otherPlayer.RequestPlayerTopDeckRevealedCardsInAnyOrder(gameState); break; } default: throw new Exception(); } }
public override void DoSpecializedAttack(PlayerState currentPlayer, PlayerState otherPlayer, GameState gameState) { otherPlayer.RevealCardsFromDeck(2, gameState); if (!otherPlayer.CardsBeingRevealed.AnyWhere(card => card.isTreasure)) { otherPlayer.GainCardFromSupply(Copper.card, gameState); } else { CardPredicate acceptableCard = card => card == Silver.card || card == Gold.card; Card trashedCard = currentPlayer.RequestPlayerTrashOtherPlayersRevealedCard(gameState, acceptableCard, otherPlayer); if (trashedCard != null) { Card cardToGain = gameState.trash.RemoveCard(trashedCard); currentPlayer.GainCard(gameState, cardToGain, DeckPlacement.Trash, DeckPlacement.Discard); } } otherPlayer.MoveRevealedCardsToDiscard(gameState); }
public override void DoSpecializedAction(PlayerState currentPlayer, GameState gameState) { currentPlayer.RevealCardsFromDeck(4); while (currentPlayer.cardsBeingRevealed.Any()) { if (currentPlayer.RequestPlayerTopDeckCardFromRevealed(gameState, true) == null) { break; } } currentPlayer.MoveRevealedCardsToDiscard(gameState); }
public override void DoSpecializedAction(PlayerState currentPlayer, GameState gameState) { currentPlayer.RevealCardsFromDeck(1); Card revealedCard = currentPlayer.CardsBeingRevealed.First(); currentPlayer.RequestPlayerDiscardRevealedCard(gameState); currentPlayer.MoveRevealedCardToTopOfDeck(); if (revealedCard.isAction) { currentPlayer.AddActions(1); } if (revealedCard.isTreasure) { currentPlayer.AddCoins(1); } if (revealedCard.isVictory) { currentPlayer.DrawOneCardIntoHand(); } }
public override void DoSpecializedAttack(PlayerState currentPlayer, PlayerState otherPlayer, GameState gameState) { otherPlayer.RevealCardsFromDeck(2); Card cardtoTrash = null; CardPredicate acceptableCards = card => card.isTreasure; if (otherPlayer.cardsBeingRevealed.HasCard(acceptableCards)) { Card cardTypeToTrash = currentPlayer.actions.GetCardFromRevealedCardsToTrash(gameState, otherPlayer, acceptableCards); cardtoTrash = otherPlayer.cardsBeingRevealed.RemoveCard(cardTypeToTrash); if (cardtoTrash == null) { throw new Exception("Must choose a revealed card to trash"); } if (!acceptableCards(cardtoTrash)) { throw new Exception("Player Must choose a treasure card to trash"); } otherPlayer.MoveCardToTrash(cardtoTrash, gameState); } if (cardtoTrash != null) { if (currentPlayer.actions.ShouldGainCard(gameState, cardtoTrash)) { Card cardToGain = gameState.trash.RemoveCard(cardtoTrash); currentPlayer.GainCard(gameState, cardToGain, originalLocation:DeckPlacement.Trash, defaultPlacement:DeckPlacement.Discard); } } otherPlayer.MoveRevealedCardsToDiscard(gameState); }
public override void DoSpecializedAction(PlayerState currentPlayer, GameState gameState) { //currentPlayer.gameLog.LogDeck(gameState.players.CurrentPlayer); Card cardType = currentPlayer.GuessCardTopOfDeck(gameState); currentPlayer.RevealCardsFromDeck(1); if (currentPlayer.cardsBeingRevealed.HasCard(cardType)) { currentPlayer.MoveRevealedCardToHand(cardType); } else { currentPlayer.MoveRevealedCardToTopOfDeck(); } }
public override void DoSpecializedAction(PlayerState currentPlayer, GameState gameState) { currentPlayer.RevealCardsFromDeck(4, gameState); currentPlayer.MoveRevealedCardsToHand(card => card == Copper.card || card == Potion.card); currentPlayer.RequestPlayerTopDeckRevealedCardsInAnyOrder(gameState); }
public override void DoSpecializedAttack(PlayerState currentPlayer, PlayerState otherPlayer, GameState gameState) { otherPlayer.RevealCardsFromDeck(3, gameState); otherPlayer.MoveRevealedCardsToDiscard(card => card.isAction || card.isTreasure, gameState); otherPlayer.RequestPlayerPutRevealedCardsBackOnDeck(gameState); }
public override void DoSpecializedAttack(PlayerState currentPlayer, PlayerState otherPlayer, GameState gameState) { otherPlayer.RevealCardsFromDeck(2, gameState); Card trashedCard = currentPlayer.RequestPlayerTrashOtherPlayersRevealedCard(gameState, card => card.isTreasure, otherPlayer); if (trashedCard != null) { if (currentPlayer.actions.ShouldGainCard(gameState, trashedCard)) { Card cardToGain = gameState.trash.RemoveCard(trashedCard); currentPlayer.GainCard(gameState, cardToGain, originalLocation:DeckPlacement.Trash, defaultPlacement:DeckPlacement.Discard); } } otherPlayer.MoveRevealedCardsToDiscard(gameState); }
public override void DoSpecializedAction(PlayerState currentPlayer, GameState gameState) { currentPlayer.RevealCardsFromDeck(3, gameState); currentPlayer.RequestPlayerTrashRevealedCard(gameState, acceptableCard => true); currentPlayer.RequestPlayerDiscardRevealedCard(gameState); currentPlayer.MoveRevealedCardToTopOfDeck(); }