- "Anarion, Lord of Anorien" effect now remembers the list of minions it affects upon use, as well as the penalty value.

This commit is contained in:
marcins78@gmail.com
2012-07-09 11:05:39 +00:00
parent 6129de0b2f
commit 7d0fff92e3
4 changed files with 63 additions and 7 deletions

View File

@@ -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<Integer, Integer> _rememberedValue = new HashMap<Integer, Integer>();
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;
}
}

View File

@@ -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;
}
}

View File

@@ -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;

View File

@@ -1,4 +1,7 @@
<pre style="font-size:80%">
<b>9 Jul. 2012</b>
- "Anarion, Lord of Anorien" effect now remembers the list of minions it affects upon use, as well as the penalty value.
<b>6 Jul. 2012</b>
- "Harrowdale" now works only until the regroup phase, but both if you moved to and moved out of "Harrowdale".