This commit is contained in:
marcins78@gmail.com
2011-11-20 00:00:18 +00:00
parent 781020858c
commit 5540c6e4ae
2 changed files with 99 additions and 6 deletions

View File

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

View File

@@ -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<? extends Modifier> 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<RequiredTriggerAction> 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<Effect> possibleEffects = new LinkedList<Effect>();
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;
}
}