Review of Promotional set.
This commit is contained in:
@@ -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;
|
||||
}
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user