From 7d0fff92e33872b1665815c2f24a92769443f99b Mon Sep 17 00:00:00 2001 From: "marcins78@gmail.com" Date: Mon, 9 Jul 2012 11:05:39 +0000 Subject: [PATCH] - "Anarion, Lord of Anorien" effect now remembers the list of minions it affects upon use, as well as the penalty value. --- .../evaluator/PerCardMemoryEvaluator.java | 28 +++++++++++++++++++ .../evaluator/SingleMemoryEvaluator.java | 23 +++++++++++++++ .../lotro/cards/set0/gondor/Card0_058.java | 16 ++++++----- .../src/main/webapp/includes/changeLog.html | 3 ++ 4 files changed, 63 insertions(+), 7 deletions(-) create mode 100644 gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/modifiers/evaluator/PerCardMemoryEvaluator.java create mode 100644 gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/modifiers/evaluator/SingleMemoryEvaluator.java diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/modifiers/evaluator/PerCardMemoryEvaluator.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/modifiers/evaluator/PerCardMemoryEvaluator.java new file mode 100644 index 000000000..a8472c00e --- /dev/null +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/modifiers/evaluator/PerCardMemoryEvaluator.java @@ -0,0 +1,28 @@ +package com.gempukku.lotro.cards.modifiers.evaluator; + +import com.gempukku.lotro.game.PhysicalCard; +import com.gempukku.lotro.game.state.GameState; +import com.gempukku.lotro.logic.modifiers.ModifiersQuerying; +import com.gempukku.lotro.logic.modifiers.evaluator.Evaluator; + +import java.util.HashMap; +import java.util.Map; + +public class PerCardMemoryEvaluator implements Evaluator { + private Map _rememberedValue = new HashMap(); + private Evaluator _evaluator; + + public PerCardMemoryEvaluator(Evaluator evaluator) { + _evaluator = evaluator; + } + + @Override + public int evaluateExpression(GameState gameState, ModifiersQuerying modifiersQuerying, PhysicalCard cardAffected) { + Integer value = _rememberedValue.get(cardAffected.getCardId()); + if (value == null) { + value = _evaluator.evaluateExpression(gameState, modifiersQuerying, cardAffected); + _rememberedValue.put(cardAffected.getCardId(), value); + } + return value; + } +} diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/modifiers/evaluator/SingleMemoryEvaluator.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/modifiers/evaluator/SingleMemoryEvaluator.java new file mode 100644 index 000000000..5c997ac69 --- /dev/null +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/modifiers/evaluator/SingleMemoryEvaluator.java @@ -0,0 +1,23 @@ +package com.gempukku.lotro.cards.modifiers.evaluator; + +import com.gempukku.lotro.game.PhysicalCard; +import com.gempukku.lotro.game.state.GameState; +import com.gempukku.lotro.logic.modifiers.ModifiersQuerying; +import com.gempukku.lotro.logic.modifiers.evaluator.Evaluator; + +public class SingleMemoryEvaluator implements Evaluator { + private Integer _rememberedValue; + private Evaluator _evaluator; + + public SingleMemoryEvaluator(Evaluator evaluator) { + _evaluator = evaluator; + } + + @Override + public int evaluateExpression(GameState gameState, ModifiersQuerying modifiersQuerying, PhysicalCard cardAffected) { + if (_rememberedValue == null) + _rememberedValue = _evaluator.evaluateExpression(gameState, modifiersQuerying, cardAffected); + return _rememberedValue; + } +} + diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set0/gondor/Card0_058.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set0/gondor/Card0_058.java index 3c4d675b3..45088a9b4 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set0/gondor/Card0_058.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set0/gondor/Card0_058.java @@ -4,6 +4,7 @@ import com.gempukku.lotro.cards.AbstractCompanion; import com.gempukku.lotro.cards.PlayConditions; import com.gempukku.lotro.cards.effects.AddUntilEndOfPhaseModifierEffect; import com.gempukku.lotro.cards.effects.choose.ChooseAndPlayCardFromHandEffect; +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; @@ -43,13 +44,14 @@ public class Card0_058 extends AbstractCompanion { new ChooseAndPlayCardFromHandEffect(playerId, game, Culture.GONDOR, CardType.EVENT, Keyword.SKIRMISH)); action.appendEffect( new AddUntilEndOfPhaseModifierEffect( - new StrengthModifier(self, Filters.and(CardType.MINION, Filters.inSkirmishAgainst(self)), null, - new Evaluator() { - @Override - public int evaluateExpression(GameState gameState, ModifiersQuerying modifiersQuerying, PhysicalCard cardAffected) { - return -modifiersQuerying.getVitality(game.getGameState(), self); - } - }), Phase.SKIRMISH)); + new StrengthModifier(self, Filters.in(Filters.filterActive(game.getGameState(), game.getModifiersQuerying(), Filters.and(CardType.MINION, Filters.inSkirmishAgainst(self)))), null, + new SingleMemoryEvaluator( + new Evaluator() { + @Override + public int evaluateExpression(GameState gameState, ModifiersQuerying modifiersQuerying, PhysicalCard cardAffected) { + return -modifiersQuerying.getVitality(game.getGameState(), self); + } + })), Phase.SKIRMISH)); return Collections.singletonList(action); } return null; 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 3c3ebdc3c..f3041f26e 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,4 +1,7 @@
+9 Jul. 2012
+- "Anarion, Lord of Anorien" effect now remembers the list of minions it affects upon use, as well as the penalty value.
+
 6 Jul. 2012
 - "Harrowdale" now works only until the regroup phase, but both if you moved to and moved out of "Harrowdale".