diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/modifiers/ShouldSkipPhaseModifier.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/modifiers/ShouldSkipPhaseModifier.java index 1a8065fbf..8ac682b37 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/modifiers/ShouldSkipPhaseModifier.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/modifiers/ShouldSkipPhaseModifier.java @@ -4,10 +4,12 @@ import com.gempukku.lotro.common.Phase; 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.Condition; import com.gempukku.lotro.logic.modifiers.ModifierEffect; import com.gempukku.lotro.logic.modifiers.ModifiersQuerying; public class ShouldSkipPhaseModifier extends AbstractModifier { + private Condition _condition; private Phase _phase; private String _playerId; @@ -16,9 +18,15 @@ public class ShouldSkipPhaseModifier extends AbstractModifier { _phase = phase; } + public ShouldSkipPhaseModifier(PhysicalCard source, Condition condition, Phase phase) { + super(source, "Skip " + phase.toString() + " phase", null, new ModifierEffect[]{ModifierEffect.ACTION_MODIFIER}); + _condition = condition; + _phase = phase; + } + @Override public boolean shouldSkipPhase(GameState gameState, ModifiersQuerying modifiersQuerying, Phase phase, String playerId, boolean result) { - if (phase == _phase && (_playerId == null || _playerId.equals(playerId))) + if (phase == _phase && (_playerId == null || _playerId.equals(playerId)) && (_condition == null || _condition.isFullfilled(gameState, modifiersQuerying))) return true; return result; } diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set2/moria/Card2_056.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set2/moria/Card2_056.java new file mode 100644 index 000000000..b3e260c2e --- /dev/null +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set2/moria/Card2_056.java @@ -0,0 +1,54 @@ +package com.gempukku.lotro.cards.set2.moria; + +import com.gempukku.lotro.cards.AbstractPermanent; +import com.gempukku.lotro.cards.PlayConditions; +import com.gempukku.lotro.cards.costs.ChooseAndExertCharactersCost; +import com.gempukku.lotro.cards.effects.ChooseAndDiscardCardsFromPlayEffect; +import com.gempukku.lotro.cards.modifiers.ShouldSkipPhaseModifier; +import com.gempukku.lotro.common.*; +import com.gempukku.lotro.filters.Filters; +import com.gempukku.lotro.game.PhysicalCard; +import com.gempukku.lotro.game.state.LotroGame; +import com.gempukku.lotro.logic.actions.ActivateCardAction; +import com.gempukku.lotro.logic.modifiers.Modifier; +import com.gempukku.lotro.logic.modifiers.SpotCondition; +import com.gempukku.lotro.logic.timing.Action; + +import java.util.Collections; +import java.util.List; + +/** + * Set: Mines of Moria + * Side: Shadow + * Culture: Moria + * Twilight Cost: 0 + * Type: Condition + * Game Text: Plays to your support area. While you can spot The Balrog, skip the archery phase. Maneuver: Exert + * The Balrog to discard a ranged weapon. + */ +public class Card2_056 extends AbstractPermanent { + public Card2_056() { + super(Side.SHADOW, 0, CardType.CONDITION, Culture.MORIA, Zone.SHADOW_SUPPORT, "Fill With Fear"); + } + + @Override + public List getAlwaysOnModifiers(PhysicalCard self) { + return Collections.singletonList( + new ShouldSkipPhaseModifier(self, + new SpotCondition(Filters.name("The Balrog")), Phase.ARCHERY)); + } + + @Override + protected List getExtraPhaseActions(String playerId, LotroGame game, PhysicalCard self) { + if (PlayConditions.canUseShadowCardDuringPhase(game.getGameState(), Phase.MANEUVER, self, 0) + && Filters.canSpot(game.getGameState(), game.getModifiersQuerying(), Filters.name("The Balrog"), Filters.canExert())) { + ActivateCardAction action = new ActivateCardAction(self, Keyword.MANEUVER); + action.appendCost( + new ChooseAndExertCharactersCost(action, playerId, 1, 1, Filters.name("The Balrog"))); + action.appendEffect( + new ChooseAndDiscardCardsFromPlayEffect(action, playerId, 1, 1, Filters.keyword(Keyword.RANGED_WEAPON))); + return Collections.singletonList(action); + } + return null; + } +} diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/modifiers/SpotCondition.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/modifiers/SpotCondition.java new file mode 100644 index 000000000..3606728b7 --- /dev/null +++ b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/modifiers/SpotCondition.java @@ -0,0 +1,19 @@ +package com.gempukku.lotro.logic.modifiers; + +import com.gempukku.lotro.filters.Filter; +import com.gempukku.lotro.filters.Filters; +import com.gempukku.lotro.game.state.GameState; + +public class SpotCondition implements Condition { + private Filter _filter; + + public SpotCondition(Filter filter) { + _filter = filter; + } + + @Override + public boolean isFullfilled(GameState gameState, ModifiersQuerying modifiersQuerying) { + return Filters.canSpot(gameState, modifiersQuerying, _filter); + } +} +