From 5540c6e4aeb935fc02ad18a200c6f27be705fe82 Mon Sep 17 00:00:00 2001 From: "marcins78@gmail.com" Date: Sun, 20 Nov 2011 00:00:18 +0000 Subject: [PATCH] "Gimli" --- .../cards/modifiers/ResistanceModifier.java | 24 ++++-- .../lotro/cards/set9/dwarven/Card9_004.java | 81 +++++++++++++++++++ 2 files changed, 99 insertions(+), 6 deletions(-) create mode 100644 gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set9/dwarven/Card9_004.java diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/modifiers/ResistanceModifier.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/modifiers/ResistanceModifier.java index 5cbd5b448..000eccfe7 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/modifiers/ResistanceModifier.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/modifiers/ResistanceModifier.java @@ -1,22 +1,34 @@ package com.gempukku.lotro.cards.modifiers; -import com.gempukku.lotro.filters.Filter; +import com.gempukku.lotro.common.Filterable; import com.gempukku.lotro.game.PhysicalCard; import com.gempukku.lotro.game.state.GameState; import com.gempukku.lotro.logic.modifiers.AbstractModifier; import com.gempukku.lotro.logic.modifiers.ModifierEffect; import com.gempukku.lotro.logic.modifiers.ModifiersQuerying; +import com.gempukku.lotro.logic.modifiers.evaluator.ConstantEvaluator; +import com.gempukku.lotro.logic.modifiers.evaluator.Evaluator; public class ResistanceModifier extends AbstractModifier { - private int _modifier; + private Evaluator _evaluator; - public ResistanceModifier(PhysicalCard source, Filter affectFilter, int modifier) { - super(source, "Resistance " + ((modifier < 0) ? modifier : ("+" + modifier)), affectFilter, ModifierEffect.RESISTANCE_MODIFIER); - _modifier = modifier; + public ResistanceModifier(PhysicalCard source, Filterable affectFilter, int modifier) { + this(source, affectFilter, new ConstantEvaluator(modifier)); + } + + public ResistanceModifier(PhysicalCard source, Filterable affectFilter, Evaluator evaluator) { + super(source, null, affectFilter, ModifierEffect.RESISTANCE_MODIFIER); + _evaluator = evaluator; + } + + @Override + public String getText(GameState gameState, ModifiersQuerying modifiersQuerying, PhysicalCard self) { + int modifier = _evaluator.evaluateExpression(gameState, modifiersQuerying, self); + return "Resistance " + ((modifier < 0) ? modifier : ("+" + modifier)); } @Override public int getResistanceModifier(GameState gameState, ModifiersQuerying modifiersQuerying, PhysicalCard physicalCard) { - return _modifier; + return _evaluator.evaluateExpression(gameState, modifiersQuerying, physicalCard); } } diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set9/dwarven/Card9_004.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set9/dwarven/Card9_004.java new file mode 100644 index 000000000..f350406e3 --- /dev/null +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set9/dwarven/Card9_004.java @@ -0,0 +1,81 @@ +package com.gempukku.lotro.cards.set9.dwarven; + +import com.gempukku.lotro.cards.AbstractCompanion; +import com.gempukku.lotro.cards.effects.AddBurdenEffect; +import com.gempukku.lotro.cards.effects.ChoiceEffect; +import com.gempukku.lotro.cards.modifiers.ResistanceModifier; +import com.gempukku.lotro.common.Culture; +import com.gempukku.lotro.common.Keyword; +import com.gempukku.lotro.common.Phase; +import com.gempukku.lotro.common.Race; +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.RequiredTriggerAction; +import com.gempukku.lotro.logic.effects.AddThreatsEffect; +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.Effect; +import com.gempukku.lotro.logic.timing.EffectResult; + +import java.util.Collections; +import java.util.LinkedList; +import java.util.List; + +/** + * Set: Reflections + * Side: Free + * Culture: Dwarven + * Twilight Cost: 2 + * Type: Companion • Dwarf + * Strength: 6 + * Vitality: 3 + * Resistance: 4 + * Game Text: Damage +1. While Gimli is the Ring-bearer, at the start of each skirmish involving him, add 2 burdens + * or 2 threats. While Gimli is damage +X, he is resistance +X. + */ +public class Card9_004 extends AbstractCompanion { + public Card9_004() { + super(2, 6, 3, Culture.DWARVEN, Race.DWARF, null, "Gimli", true); + addKeyword(Keyword.CAN_START_WITH_RING); + addKeyword(Keyword.DAMAGE, 1); + } + + @Override + public int getResistance() { + return 4; + } + + @Override + public List getAlwaysOnModifiers(LotroGame game, PhysicalCard self) { + return Collections.singletonList( + new ResistanceModifier(self, self, new Evaluator() { + @Override + public int evaluateExpression(GameState gameState, ModifiersQuerying modifiersQuerying, PhysicalCard cardAffected) { + return modifiersQuerying.getKeywordCount(gameState, cardAffected, Keyword.DAMAGE); + } + })); + } + + @Override + public List getRequiredAfterTriggers(LotroGame game, EffectResult effectResult, PhysicalCard self) { + if (effectResult.getType() == EffectResult.Type.START_OF_PHASE + && game.getGameState().getCurrentPhase() == Phase.SKIRMISH + && Filters.and(Filters.inSkirmish, Keyword.RING_BEARER).accepts(game.getGameState(), game.getModifiersQuerying(), self)) { + RequiredTriggerAction action = new RequiredTriggerAction(self); + List possibleEffects = new LinkedList(); + possibleEffects.add( + new AddBurdenEffect(self, 2)); + possibleEffects.add( + new AddThreatsEffect(self.getOwner(), self, 2)); + action.appendEffect( + new ChoiceEffect(action, self.getOwner(), possibleEffects)); + return Collections.singletonList(action); + } + return null; + } + + +}