public override void DoSpecializedAction(PlayerState currentPlayer, GameState gameState) { if (currentPlayer.RequestPlayerTrashCardFromHand(gameState, card => card.isTreasure, isOptional: true) != null) { PlayerActionChoice choice = currentPlayer.RequestPlayerChooseBetween( gameState, acceptableChoice => acceptableChoice == PlayerActionChoice.PlusCard || acceptableChoice == PlayerActionChoice.PlusCoin); switch (choice) { case PlayerActionChoice.PlusCard: { currentPlayer.DrawAdditionalCardsIntoHand(2); currentPlayer.AddActions(1); break; } case PlayerActionChoice.PlusCoin: { currentPlayer.AddCoins(2); currentPlayer.AddBuys(1); break; } default: throw new Exception(); } } }
public override void DoSpecializedAction(PlayerState currentPlayer, GameState gameState) { if (currentPlayer.RequestPlayerPlayActionFromHand(gameState, c => !currentPlayer.CardsInPlay.Contains(c) && Delegates.IsActionCardPredicate(c), isOptional: true)) { currentPlayer.AddActions(1); } }
public override void DoSpecializedAction(PlayerState currentPlayer, GameState gameState) { if (currentPlayer.CountCardsPlayedThisTurn >= 3) { currentPlayer.DrawOneCardIntoHand(gameState); currentPlayer.AddActions(1); } }
public override void DoSpecializedAction(PlayerState currentPlayer, GameState gameState) { if (currentPlayer.RequestPlayerDiscardCardFromHand(gameState, card => card.isTreasure, isOptional: true)) { currentPlayer.DrawAdditionalCardsIntoHand(3); currentPlayer.AddActions(1); } }
public override void DoSpecializedAction(PlayerState currentPlayer, GameState gameState) { if (!currentPlayer.CardsInPlay.Where(card => card == CrossRoads.card).Any()) { currentPlayer.AddActions(3); } int countVictoryCards = currentPlayer.hand.Count(card => card.isVictory); currentPlayer.DrawAdditionalCardsIntoHand(countVictoryCards); }
public override void DoSpecializedAction(PlayerState currentPlayer, GameState gameState) { // TODO: How does the player know whether he is discarding for action or buy? if (currentPlayer.RequestPlayerDiscardCardFromHand(gameState, card => true, isOptional: true)) { currentPlayer.AddActions(1); } if (currentPlayer.RequestPlayerDiscardCardFromHand(gameState, card => true, isOptional: true)) { currentPlayer.AddBuys(1); } }
private void DoActionChoice(PlayerState currentPlayer, PlayerActionChoice actionChoice, GameState gameState) { switch (actionChoice) { case PlayerActionChoice.PlusCard: currentPlayer.DrawOneCardIntoHand(gameState); break; case PlayerActionChoice.PlusAction: currentPlayer.AddActions(1); break; case PlayerActionChoice.PlusBuy: currentPlayer.AddBuys(1); break; case PlayerActionChoice.PlusCoin: currentPlayer.AddCoins(1); break; default: throw new Exception("Invalid pawn action choice"); } }
public override void DoSpecializedAction(PlayerState currentPlayer, GameState gameState) { PlayerActionChoice actionChoice = currentPlayer.RequestPlayerChooseBetween( gameState, acceptableChoice => acceptableChoice == PlayerActionChoice.PlusCard || acceptableChoice == PlayerActionChoice.PlusAction); if (actionChoice == PlayerActionChoice.PlusCard) { currentPlayer.DrawAdditionalCardsIntoHand(3, gameState); } else { currentPlayer.AddActions(2); } }
private static void ApplyChoice(PlayerActionChoice choice, PlayerState currentPlayer, GameState gameState) { switch (choice) { case PlayerActionChoice.PlusCard: currentPlayer.DrawAdditionalCardsIntoHand(2, gameState); break; case PlayerActionChoice.PlusAction: currentPlayer.AddActions(2); break; case PlayerActionChoice.PlusCoin: currentPlayer.AddCoins(2); break; case PlayerActionChoice.GainCard: currentPlayer.GainCardsFromSupply(gameState, Cards.Silver, 4); break; default: throw new Exception(); } }
public override void DoSpecializedAction(PlayerState currentPlayer, GameState gameState) { PlayerActionChoice choice = currentPlayer.RequestPlayerChooseBetween(gameState, acceptableChoice => acceptableChoice == PlayerActionChoice.PlusAction || acceptableChoice == PlayerActionChoice.PlusBuy || acceptableChoice == PlayerActionChoice.GainCard); switch (choice) { case PlayerActionChoice.PlusAction: currentPlayer.AddActions(2); break; case PlayerActionChoice.PlusBuy: currentPlayer.AddBuys(2); break; case PlayerActionChoice.GainCard: currentPlayer.GainCardFromSupply(Cards.Silver, gameState); break; default: throw new Exception(); } }
private void GainBenefitFromCard(Card card, PlayerState currentPlayer, GameState gameState) { if (card.isAction) { currentPlayer.AddActions(2); } if (card.isTreasure) { currentPlayer.AddCoins(2); } if (card.isVictory) { currentPlayer.DrawAdditionalCardsIntoHand(2, gameState); } }
public override void DoSpecializedAction(PlayerState currentPlayer, GameState gameState) { Card trashedCard = currentPlayer.RequestPlayerTrashCardFromHand(gameState, card => true, isOptional: false); if (trashedCard.isAction) { currentPlayer.DrawAdditionalCardsIntoHand(2, gameState); currentPlayer.AddActions(2); } if (trashedCard.isTreasure) { currentPlayer.AddCoins(2); } if (trashedCard.isVictory) { currentPlayer.AddVictoryTokens(2); } }
public override void DoSpecializedAction(PlayerState currentPlayer, GameState gameState) { Card gainedCard = currentPlayer.RequestPlayerGainCardFromSupply(gameState, acceptableCard => acceptableCard.CurrentCoinCost(currentPlayer) <= 4 && acceptableCard.potionCost == 0, "Any card costing up to 4"); if (gainedCard.isAction) { currentPlayer.AddActions(1); } if (gainedCard.isTreasure) { currentPlayer.AddCoins(1); } if (gainedCard.isVictory) { currentPlayer.DrawOneCardIntoHand(gameState); } }
public override void DoSpecializedAction(PlayerState currentPlayer, GameState gameState) { currentPlayer.RevealCardsFromDeck(1, gameState); 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(gameState); } }
private static void DelayedAction(PlayerState currentPlayer, GameState gameState) { currentPlayer.DrawAdditionalCardsIntoHand(5, gameState); currentPlayer.AddBuys(1); currentPlayer.AddActions(1); }
public override void DoSpecializedDurationActionAtBeginningOfTurn(PlayerState currentPlayer, GameState gameState) { currentPlayer.AddCoins(1); currentPlayer.AddActions(1); }