From 4891cc34d36e4a99e4daf84ab54c15536ab82166 Mon Sep 17 00:00:00 2001 From: "marcins78@gmail.com" Date: Thu, 9 Aug 2012 11:35:38 +0000 Subject: [PATCH] - "Aragorn's Bow, Ranger's Longbow" now correctly can wound minions that have their strength based off number of threats. --- .../lotro/cards/set15/gondor/Card15_056.java | 21 ++++++++++++++----- .../com/gempukku/lotro/filters/Filters.java | 10 +++++++++ .../src/main/webapp/includes/changeLog.html | 1 + 3 files changed, 27 insertions(+), 5 deletions(-) diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set15/gondor/Card15_056.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set15/gondor/Card15_056.java index c7e11ded3..4135d1dec 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set15/gondor/Card15_056.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set15/gondor/Card15_056.java @@ -2,15 +2,19 @@ package com.gempukku.lotro.cards.set15.gondor; import com.gempukku.lotro.cards.AbstractAttachableFPPossession; import com.gempukku.lotro.cards.PlayConditions; +import com.gempukku.lotro.cards.modifiers.evaluator.SingleMemoryEvaluator; import com.gempukku.lotro.common.*; import com.gempukku.lotro.filters.Filters; import com.gempukku.lotro.game.PhysicalCard; +import com.gempukku.lotro.game.state.GameState; import com.gempukku.lotro.game.state.LotroGame; import com.gempukku.lotro.logic.actions.ActivateCardAction; import com.gempukku.lotro.logic.effects.AddThreatsEffect; import com.gempukku.lotro.logic.effects.ChooseAndWoundCharactersEffect; import com.gempukku.lotro.logic.modifiers.KeywordModifier; import com.gempukku.lotro.logic.modifiers.Modifier; +import com.gempukku.lotro.logic.modifiers.ModifiersQuerying; +import com.gempukku.lotro.logic.modifiers.evaluator.Evaluator; import com.gempukku.lotro.logic.timing.Action; import java.util.Collections; @@ -44,15 +48,22 @@ public class Card15_056 extends AbstractAttachableFPPossession { protected List getExtraInPlayPhaseActions(String playerId, LotroGame game, PhysicalCard self) { if (PlayConditions.canUseFPCardDuringPhase(game, Phase.ARCHERY, self) && PlayConditions.canAddThreat(game, self, 1)) { - int lowestStrength = Integer.MAX_VALUE; - for (PhysicalCard physicalCard : Filters.filterActive(game.getGameState(), game.getModifiersQuerying(), CardType.MINION)) - lowestStrength = Math.min(lowestStrength, game.getModifiersQuerying().getStrength(game.getGameState(), physicalCard)); - ActivateCardAction action = new ActivateCardAction(self); action.appendCost( new AddThreatsEffect(playerId, self, 1)); action.appendEffect( - new ChooseAndWoundCharactersEffect(action, playerId, 1, 1, CardType.MINION, Filters.lessStrengthThan(lowestStrength + 1))); + new ChooseAndWoundCharactersEffect(action, playerId, 1, 1, CardType.MINION, Filters.strengthEqual( + new SingleMemoryEvaluator( + new Evaluator() { + @Override + public int evaluateExpression(GameState gameState, ModifiersQuerying modifiersQuerying, PhysicalCard cardAffected) { + int minStrength = Integer.MAX_VALUE; + for (PhysicalCard minion : Filters.filterActive(gameState, modifiersQuerying, CardType.MINION)) + minStrength = Math.min(minStrength, modifiersQuerying.getStrength(gameState, minion)); + return minStrength; + } + } + )))); return Collections.singletonList(action); } return null; diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/filters/Filters.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/filters/Filters.java index f6e0fe9ed..d51b31a89 100644 --- a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/filters/Filters.java +++ b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/filters/Filters.java @@ -11,6 +11,7 @@ import com.gempukku.lotro.game.state.LotroGame; import com.gempukku.lotro.game.state.Skirmish; import com.gempukku.lotro.logic.GameUtils; import com.gempukku.lotro.logic.modifiers.ModifiersQuerying; +import com.gempukku.lotro.logic.modifiers.evaluator.Evaluator; import java.util.*; @@ -153,6 +154,15 @@ public class Filters { }; } + public static Filter strengthEqual(final Evaluator evaluator) { + return new Filter() { + @Override + public boolean accepts(GameState gameState, ModifiersQuerying modifiersQuerying, PhysicalCard physicalCard) { + return modifiersQuerying.getStrength(gameState, physicalCard) == evaluator.evaluateExpression(gameState, modifiersQuerying, null); + } + }; + } + public static Filter lessStrengthThan(final int strength) { return new Filter() { @Override diff --git a/gemp-lotr/gemp-lotr-web/src/main/webapp/includes/changeLog.html b/gemp-lotr/gemp-lotr-web/src/main/webapp/includes/changeLog.html index 6990b0ea7..d65b82b5a 100644 --- a/gemp-lotr/gemp-lotr-web/src/main/webapp/includes/changeLog.html +++ b/gemp-lotr/gemp-lotr-web/src/main/webapp/includes/changeLog.html @@ -1,6 +1,7 @@
 9 Aug. 2012
 - "That Is No Orc Horn" is now allowing to heal a companion and liberate a site, rather than one of the effects.
+- "Aragorn's Bow, Ranger's Longbow" now correctly can wound minions that have their strength based off number of threats.
 
 1 Aug. 2012
 - "Gorbag's Sword" now gives the option to put the possession on top of the deck to the owner of the card.