bool Action1(CardActionParameters parameters) { ValidateParameters(parameters); List <ICard> cardsToReturn = parameters.TargetPlayer.PickMultipleCards(parameters.TargetPlayer.Hand, 0, parameters.TargetPlayer.Hand.Count).ToList(); if (cardsToReturn.Count == 0) { return(false); } foreach (ICard card in cardsToReturn) { parameters.TargetPlayer.Hand.Remove(card); Return.Action(card, parameters.Game); } int differentAges = cardsToReturn.Select(x => x.Age).Distinct().Count(); for (int i = 0; i < differentAges; i++) { Score.Action(Draw.Action(2, parameters.Game), parameters.TargetPlayer); } return(true); }
bool Action1(CardActionParameters parameters) { ValidateParameters(parameters); //Score your top green card. var topGreenCard = parameters.TargetPlayer.Tableau.Stacks[Color.Green].GetTopCard(); if (topGreenCard != null) { Score.Action(topGreenCard, parameters.TargetPlayer); parameters.TargetPlayer.Tableau.Stacks[Color.Green].RemoveCard(topGreenCard); } //Draw and meld a [10] var drawnCard = Draw.Action(10, parameters.Game); if (drawnCard == null) { return(true); } Meld.Action(drawnCard, parameters.TargetPlayer); foreach (var cardAction in drawnCard.Actions) { if (cardAction.ActionType != ActionType.Demand) { cardAction.ActionHandler(new CardActionParameters { ActivePlayer = parameters.TargetPlayer, TargetPlayer = parameters.TargetPlayer, Game = parameters.Game, PlayerSymbolCounts = parameters.PlayerSymbolCounts }); } } return(true); }
bool Action1(CardActionParameters parameters) { ValidateParameters(parameters); Score.Action(Draw.Action(10, parameters.Game), parameters.TargetPlayer); return(true); }
bool Action2(CardActionParameters parameters) { ValidateParameters(parameters); if (parameters.TargetPlayer.Hand.Count > 0) { ICard card = parameters.TargetPlayer.PickCardFromHand(); parameters.TargetPlayer.Hand.Remove(card); Score.Action(card, parameters.TargetPlayer); } return(false); }
bool Action2(CardActionParameters parameters) { ValidateParameters(parameters); Score.Action(Draw.Action(6, parameters.Game), parameters.TargetPlayer); if (!parameters.Game.Players.Exists(p => p.Tableau.GetSymbolCount(Symbol.Leaf) > p.Tableau.GetSymbolCount(Symbol.Factory))) { parameters.Game.TriggerEndOfGame(parameters.Game.Players.OrderByDescending(p => p.Tableau.GetScore()).ToList().First()); } return(true); }
bool Action2(CardActionParameters parameters) { ValidateParameters(parameters); if (!(bool)parameters.Game.GetPropertyBagValue("MapmakingAction1Taken")) { return(false); } Score.Action(Draw.Action(1, parameters.Game), parameters.TargetPlayer); return(true); }
bool Action2(CardActionParameters parameters) { ValidateParameters(parameters); List <Color> targetPlayerTopCardColors = parameters.TargetPlayer.Tableau.GetStackColors(); List <Color> otherPlayerTopCardColors = parameters.Game.Players.Where(p => p != parameters.TargetPlayer).SelectMany(r => r.Tableau.GetStackColors()).Distinct().ToList(); var numberOfCardsToDraw = targetPlayerTopCardColors.Count(x => !otherPlayerTopCardColors.Contains(x)); for (var i = 0; i < numberOfCardsToDraw; i++) { Score.Action(Draw.Action(1, parameters.Game), parameters.TargetPlayer); } return(numberOfCardsToDraw > 0); }
bool Action2(CardActionParameters parameters) { ValidateParameters(parameters); if (!parameters.TargetPlayer.Hand.Any()) { return(false); } var cardChosen = parameters.TargetPlayer.PickCardFromHand(); Meld.Action(cardChosen, parameters.TargetPlayer); parameters.TargetPlayer.Hand.Remove(cardChosen); cardChosen = parameters.TargetPlayer.PickCardFromHand(); Score.Action(cardChosen, parameters.TargetPlayer); parameters.TargetPlayer.Hand.Remove(cardChosen); return(true); }
private bool Action1(CardActionParameters parameters) { ValidateParameters(parameters); var card = Draw.Action(1, parameters.Game); parameters.TargetPlayer.RevealCard(card); while (card.HasSymbol(Symbol.Tower)) { Score.Action(card, parameters.TargetPlayer); card = Draw.Action(1, parameters.Game); parameters.TargetPlayer.RevealCard(card); } parameters.TargetPlayer.Hand.Add(card); return(true); }
private bool Action1(CardActionParameters parameters) { ValidateParameters(parameters); var selectedCards = parameters.TargetPlayer.PickMultipleCards(parameters.TargetPlayer.Hand, 0, 3).ToList(); if (selectedCards.Count == 0) { return(false); } foreach (ICard card in selectedCards) { parameters.TargetPlayer.Hand.Remove(card); Return.Action(card, parameters.Game); } Score.Action(Draw.Action(selectedCards.Count, parameters.Game), parameters.TargetPlayer); return(true); }
private bool Action1(CardActionParameters parameters) { ValidateParameters(parameters); ICard selectedCard = parameters.TargetPlayer.PickCardFromHand(); if (selectedCard == null) { return(false); } parameters.TargetPlayer.Hand.Remove(selectedCard); Return.Action(selectedCard, parameters.Game); int ageToDraw = selectedCard.Age + 1; var cardToScore = Draw.Action(ageToDraw, parameters.Game); Score.Action(cardToScore, parameters.TargetPlayer); return(true); }
private bool Action1(CardActionParameters parameters) { ValidateParameters(parameters); List <ICard> cardsWithCrowns = parameters.TargetPlayer.Hand.Where(x => x.HasSymbol(Symbol.Crown)).ToList(); if (cardsWithCrowns.Count == 0) { parameters.Game.StashPropertyBagValue("OarsAction1Taken", false); return(false); } ICard card = parameters.TargetPlayer.PickCard(cardsWithCrowns); parameters.TargetPlayer.Hand.Remove(card); Score.Action(card, parameters.ActivePlayer); parameters.TargetPlayer.Hand.Add(Draw.Action(1, parameters.Game)); parameters.Game.StashPropertyBagValue("OarsAction1Taken", true); return(true); }
public void ScoreAction_Base() { Score.Action(testCard, testPlayer); Assert.AreEqual(testCard, testPlayer.Tableau.ScorePile.First()); Assert.AreEqual(1, testPlayer.Tableau.GetScore()); }