diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/actions/PlayEventAction.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/actions/PlayEventAction.java index b40c5e7e2..d2376aece 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/actions/PlayEventAction.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/actions/PlayEventAction.java @@ -29,6 +29,10 @@ public class PlayEventAction extends AbstractCostToEffectAction { private boolean _cardDiscarded; public PlayEventAction(PhysicalCard card) { + this(card, false); + } + + public PlayEventAction(PhysicalCard card, boolean requiresRanger) { _source = card; List preCostEffects = new LinkedList(); @@ -41,6 +45,8 @@ public class PlayEventAction extends AbstractCostToEffectAction { _preCostIterator = preCostEffects.iterator(); _playCardEffect = new PlayEventEffect(card); + if (requiresRanger) + _playCardEffect.setRequiresRanger(true); _discardCardEffect = new PutCardIntoDiscardEffect(card); } diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/gondor/Card1_088.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/gondor/Card1_088.java index d93e33c3e..54de2b8a8 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/gondor/Card1_088.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/gondor/Card1_088.java @@ -32,7 +32,7 @@ public class Card1_088 extends AbstractEvent { @Override public PlayEventAction getPlayCardAction(String playerId, LotroGame game, PhysicalCard self, int twilightModifier) { - PlayEventAction action = new PlayEventAction(self); + PlayEventAction action = new PlayEventAction(self, true); action.appendEffect( new RemoveTwilightEffect(4)); return action; diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/gondor/Card1_099.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/gondor/Card1_099.java index 2a5732429..34c535113 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/gondor/Card1_099.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/gondor/Card1_099.java @@ -37,7 +37,7 @@ public class Card1_099 extends AbstractEvent { @Override public PlayEventAction getPlayCardAction(String playerId, final LotroGame game, PhysicalCard self, int twilightModifier) { - final PlayEventAction action = new PlayEventAction(self); + final PlayEventAction action = new PlayEventAction(self, true); action.appendCost( new ChooseAndExertCharactersCost(action, playerId, 1, 1, Filters.keyword(Keyword.RANGER), Filters.canExert())); action.appendEffect( diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/gondor/Card1_104.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/gondor/Card1_104.java index 7787137d6..6decffc62 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/gondor/Card1_104.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/gondor/Card1_104.java @@ -28,7 +28,7 @@ public class Card1_104 extends AbstractEvent { @Override public PlayEventAction getPlayCardAction(String playerId, LotroGame game, PhysicalCard self, int twilightModifier) { - PlayEventAction action = new PlayEventAction(self); + PlayEventAction action = new PlayEventAction(self, true); action.appendCost( new ChooseAndExertCharactersCost(action, playerId, 1, 1, Filters.keyword(Keyword.RANGER), Filters.canExert())); action.appendEffect( diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/gondor/Card1_106.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/gondor/Card1_106.java index 9362f814e..ec21674ca 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/gondor/Card1_106.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/gondor/Card1_106.java @@ -26,7 +26,7 @@ public class Card1_106 extends AbstractEvent { @Override public PlayEventAction getPlayCardAction(String playerId, LotroGame game, final PhysicalCard self, int twilightModifier) { - final PlayEventAction action = new PlayEventAction(self); + final PlayEventAction action = new PlayEventAction(self, true); action.appendCost( new ChooseAndExertCharactersCost(action, playerId, 1, 1, Filters.keyword(Keyword.RANGER), Filters.type(CardType.COMPANION), Filters.canExert())); action.appendEffect( diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/gondor/Card1_110.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/gondor/Card1_110.java index 64cb1a8a0..3a4d2effc 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/gondor/Card1_110.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/gondor/Card1_110.java @@ -27,7 +27,7 @@ public class Card1_110 extends AbstractEvent { @Override public PlayEventAction getPlayCardAction(String playerId, LotroGame game, PhysicalCard self, int twilightModifier) { - PlayEventAction action = new PlayEventAction(self); + PlayEventAction action = new PlayEventAction(self, true); action.appendEffect(new PlaySiteEffect(playerId, game.getGameState().getCurrentSiteNumber() + 1)); return action; } diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/gondor/Card1_111.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/gondor/Card1_111.java index b217865ec..0ad263709 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/gondor/Card1_111.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/gondor/Card1_111.java @@ -24,7 +24,7 @@ public class Card1_111 extends AbstractEvent { @Override public PlayEventAction getPlayCardAction(String playerId, LotroGame game, PhysicalCard self, int twilightModifier) { - PlayEventAction action = new PlayEventAction(self); + PlayEventAction action = new PlayEventAction(self, true); action.appendCost( new ChooseAndExertCharactersCost(action, playerId, 1, 1, Filters.keyword(Keyword.RANGER), Filters.canExert())); action.appendEffect( diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/gondor/Card1_113.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/gondor/Card1_113.java index 6a5e9a508..caa1a577d 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/gondor/Card1_113.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/gondor/Card1_113.java @@ -26,7 +26,7 @@ public class Card1_113 extends AbstractEvent { @Override public PlayEventAction getPlayCardAction(final String playerId, LotroGame game, final PhysicalCard self, int twilightModifier) { - final PlayEventAction action = new PlayEventAction(self); + final PlayEventAction action = new PlayEventAction(self, true); action.appendCost( new ChooseAndExertCharactersCost(action, playerId, 1, 1, Filters.keyword(Keyword.RANGER))); action.appendEffect( diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/gondor/Card1_117.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/gondor/Card1_117.java index 6d277741c..59ff0f84f 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/gondor/Card1_117.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/gondor/Card1_117.java @@ -27,7 +27,7 @@ public class Card1_117 extends AbstractEvent { @Override public PlayEventAction getPlayCardAction(String playerId, final LotroGame game, final PhysicalCard self, int twilightModifier) { - final PlayEventAction action = new PlayEventAction(self); + final PlayEventAction action = new PlayEventAction(self, true); action.appendEffect( new ChooseActiveCardEffect(playerId, "Choose a GONDOR companion", Filters.culture(Culture.GONDOR), Filters.type(CardType.COMPANION)) { diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/gondor/Card1_119.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/gondor/Card1_119.java index fb681a0ff..7572f4167 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/gondor/Card1_119.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/gondor/Card1_119.java @@ -26,7 +26,7 @@ public class Card1_119 extends AbstractEvent { @Override public PlayEventAction getPlayCardAction(String playerId, LotroGame game, final PhysicalCard self, int twilightModifier) { - final PlayEventAction action = new PlayEventAction(self); + final PlayEventAction action = new PlayEventAction(self, true); action.appendEffect( new ChooseActiveCardEffect(playerId, "Choose a roaming minion", Filters.keyword(Keyword.ROAMING), Filters.type(CardType.MINION)) { @Override diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set2/isengard/Card2_047.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set2/isengard/Card2_047.java new file mode 100644 index 000000000..d089a7215 --- /dev/null +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set2/isengard/Card2_047.java @@ -0,0 +1,65 @@ +package com.gempukku.lotro.cards.set2.isengard; + +import com.gempukku.lotro.cards.AbstractMinion; +import com.gempukku.lotro.cards.PlayConditions; +import com.gempukku.lotro.cards.costs.ExertCharactersCost; +import com.gempukku.lotro.cards.effects.CancelEventEffect; +import com.gempukku.lotro.cards.modifiers.RoamingPenaltyModifier; +import com.gempukku.lotro.common.CardType; +import com.gempukku.lotro.common.Culture; +import com.gempukku.lotro.common.Keyword; +import com.gempukku.lotro.common.Race; +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.effects.PlayEventEffect; +import com.gempukku.lotro.logic.modifiers.Modifier; +import com.gempukku.lotro.logic.timing.Action; +import com.gempukku.lotro.logic.timing.Effect; + +import java.util.Collections; +import java.util.List; + +/** + * Set: Mines of Moria + * Side: Shadow + * Culture: Isengard + * Twilight Cost: 3 + * Type: Minion • Uruk-Hai + * Strength: 7 + * Vitality: 2 + * Site: 5 + * Game Text: Tracker. Damage +1. The roaming penalty for each [ISENGARD] minion you play is -1. Response: If an event + * is played that spots or exerts a ranger, exert this minion to cancel that event. + */ +public class Card2_047 extends AbstractMinion { + public Card2_047() { + super(3, 7, 2, 5, Race.URUK_HAI, Culture.ISENGARD, "Uruk Scout"); + addKeyword(Keyword.TRACKER); + addKeyword(Keyword.DAMAGE); + } + + @Override + public List getAlwaysOnModifiers(PhysicalCard self) { + return Collections.singletonList( + new RoamingPenaltyModifier(self, Filters.and(Filters.culture(Culture.ISENGARD), Filters.type(CardType.MINION)), -1)); + } + + @Override + public List getOptionalBeforeActions(String playerId, LotroGame game, Effect effect, PhysicalCard self) { + if (PlayConditions.played(game.getGameState(), game.getModifiersQuerying(), effect, Filters.type(CardType.EVENT)) + && PlayConditions.canExert(game.getGameState(), game.getModifiersQuerying(), self)) { + PlayEventEffect playEffect = (PlayEventEffect) effect; + if (playEffect.isRequiresRanger()) { + ActivateCardAction action = new ActivateCardAction(self, Keyword.RESPONSE); + action.appendCost( + new ExertCharactersCost(playerId, self)); + action.appendEffect( + new CancelEventEffect(playerId, playEffect)); + return Collections.singletonList(action); + } + } + return null; + } +} diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/effects/PlayEventEffect.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/effects/PlayEventEffect.java index ddfeb0add..c550e8354 100644 --- a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/effects/PlayEventEffect.java +++ b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/effects/PlayEventEffect.java @@ -4,11 +4,20 @@ import com.gempukku.lotro.game.PhysicalCard; public class PlayEventEffect extends PlayCardEffect { private boolean _cancelled; + private boolean _requiresRanger; public PlayEventEffect(PhysicalCard cardPlayed) { super(cardPlayed); } + public boolean isRequiresRanger() { + return _requiresRanger; + } + + public void setRequiresRanger(boolean requiresRanger) { + _requiresRanger = requiresRanger; + } + public void cancel() { _cancelled = true; }