Review of Promotional set.

This commit is contained in:
marcins78
2013-02-14 15:07:28 +00:00
parent c2434c1f76
commit 2e5fa482e7
3 changed files with 78 additions and 15 deletions

View File

@@ -0,0 +1,48 @@
package com.gempukku.lotro.cards.effects;
import com.gempukku.lotro.common.Filterable;
import com.gempukku.lotro.filters.Filters;
import com.gempukku.lotro.game.PhysicalCard;
import com.gempukku.lotro.game.state.LotroGame;
import com.gempukku.lotro.logic.modifiers.StrengthModifier;
import com.gempukku.lotro.logic.modifiers.evaluator.Evaluator;
import com.gempukku.lotro.logic.timing.AbstractEffect;
public class SnapshotAndApplyStrengthModifierUntilEndOfCurrentPhaseEffect extends AbstractEffect {
private PhysicalCard _source;
private Filterable[] _filters;
private Evaluator _evaluator;
public SnapshotAndApplyStrengthModifierUntilEndOfCurrentPhaseEffect(PhysicalCard source, Evaluator evaluator, Filterable... filter) {
_source = source;
_evaluator = evaluator;
_filters = filter;
}
@Override
public String getText(LotroGame game) {
return "Apply strength modifier";
}
@Override
protected FullEffectResult playEffectReturningResult(LotroGame game) {
for (PhysicalCard physicalCard : Filters.filterActive(game.getGameState(), game.getModifiersQuerying(), _filters)) {
final int modifier = _evaluator.evaluateExpression(game.getGameState(), game.getModifiersQuerying(), physicalCard);
if (modifier != 0)
game.getModifiersEnvironment().addUntilEndOfPhaseModifier(
new StrengthModifier(_source, physicalCard, modifier), game.getGameState().getCurrentPhase());
}
return new FullEffectResult(true);
}
@Override
public Type getType() {
return null;
}
@Override
public boolean isPlayableInFull(LotroGame game) {
return true;
}
}

View File

@@ -0,0 +1,25 @@
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 VitalityEvaluator implements Evaluator {
private int _multiplier;
private PhysicalCard _physicalCard;
public VitalityEvaluator(PhysicalCard physicalCard) {
this(physicalCard, 1);
}
public VitalityEvaluator(PhysicalCard physicalCard, int multiplier) {
_physicalCard = physicalCard;
_multiplier = multiplier;
}
@Override
public int evaluateExpression(GameState gameState, ModifiersQuerying modifiersQuerying, PhysicalCard cardAffected) {
return _multiplier * modifiersQuerying.getVitality(gameState, _physicalCard);
}
}

View File

@@ -2,18 +2,14 @@ package com.gempukku.lotro.cards.set0.gondor;
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.SnapshotAndApplyStrengthModifierUntilEndOfCurrentPhaseEffect;
import com.gempukku.lotro.cards.effects.choose.ChooseAndPlayCardFromHandEffect;
import com.gempukku.lotro.cards.modifiers.evaluator.SingleMemoryEvaluator;
import com.gempukku.lotro.cards.modifiers.evaluator.VitalityEvaluator;
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.modifiers.ModifiersQuerying;
import com.gempukku.lotro.logic.modifiers.StrengthModifier;
import com.gempukku.lotro.logic.modifiers.evaluator.Evaluator;
import java.util.Collections;
import java.util.List;
@@ -43,15 +39,9 @@ public class Card0_058 extends AbstractCompanion {
action.appendCost(
new ChooseAndPlayCardFromHandEffect(playerId, game, Culture.GONDOR, CardType.EVENT, Keyword.SKIRMISH));
action.appendEffect(
new AddUntilEndOfPhaseModifierEffect(
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));
new SnapshotAndApplyStrengthModifierUntilEndOfCurrentPhaseEffect(self,
new VitalityEvaluator(self, -1),
CardType.MINION, Filters.inSkirmishAgainst(self)));
return Collections.singletonList(action);
}
return null;