diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/modifiers/OpponentsCantUseSpecialAbilitiesModifier.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/modifiers/OpponentsCantUseSpecialAbilitiesModifier.java new file mode 100644 index 000000000..c81c4c188 --- /dev/null +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/modifiers/OpponentsCantUseSpecialAbilitiesModifier.java @@ -0,0 +1,29 @@ +package com.gempukku.lotro.cards.modifiers; + +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; +import com.gempukku.lotro.logic.timing.Action; + +public class OpponentsCantUseSpecialAbilitiesModifier extends AbstractModifier { + private String _playerId; + + public OpponentsCantUseSpecialAbilitiesModifier(PhysicalCard source, String playerId) { + this(source, null, playerId); + } + + public OpponentsCantUseSpecialAbilitiesModifier(PhysicalCard source, Condition condition, String playerId) { + super(source, null, null, condition, ModifierEffect.ACTION_MODIFIER); + _playerId = playerId; + } + + @Override + public boolean canPlayAction(GameState gameState, ModifiersQuerying modifiersQuerying, String performingPlayer, Action action) { + if (!performingPlayer.equals(_playerId) && action.getType() == Action.Type.SPECIAL_ABILITY) + return false; + return true; + } +} diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set12/gondor/Card12_044.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set12/gondor/Card12_044.java new file mode 100644 index 000000000..e17222787 --- /dev/null +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set12/gondor/Card12_044.java @@ -0,0 +1,50 @@ +package com.gempukku.lotro.cards.set12.gondor; + +import com.gempukku.lotro.cards.AbstractEvent; +import com.gempukku.lotro.cards.actions.PlayEventAction; +import com.gempukku.lotro.cards.effects.AddUntilEndOfPhaseModifierEffect; +import com.gempukku.lotro.cards.modifiers.OpponentsCantUseSpecialAbilitiesModifier; +import com.gempukku.lotro.common.Culture; +import com.gempukku.lotro.common.Phase; +import com.gempukku.lotro.common.Race; +import com.gempukku.lotro.common.Side; +import com.gempukku.lotro.filters.Filters; +import com.gempukku.lotro.game.PhysicalCard; +import com.gempukku.lotro.game.state.LotroGame; +import com.gempukku.lotro.logic.effects.ChooseActiveCardEffect; +import com.gempukku.lotro.logic.modifiers.StrengthModifier; + +/** + * Set: Black Rider + * Side: Free + * Culture: Gondor + * Twilight Cost: 0 + * Type: Event • Skirmish + * Game Text: Make a [GONDOR] Man strength +1. If he or she is skirmishing a roaming minion, your opponents cannot use + * special abilities. + */ +public class Card12_044 extends AbstractEvent { + public Card12_044() { + super(Side.FREE_PEOPLE, 0, Culture.GONDOR, "Concealment", Phase.SKIRMISH); + } + + @Override + public PlayEventAction getPlayCardAction(final String playerId, LotroGame game, final PhysicalCard self, int twilightModifier, boolean ignoreRoamingPenalty) { + final PlayEventAction action = new PlayEventAction(self); + action.appendEffect( + new ChooseActiveCardEffect(self, playerId, "Choose a GONDOR Man", Culture.GONDOR, Race.MAN) { + @Override + protected void cardSelected(LotroGame game, PhysicalCard card) { + action.appendEffect( + new AddUntilEndOfPhaseModifierEffect( + new StrengthModifier(self, card, 1), Phase.SKIRMISH)); + if (Filters.inSkirmishAgainst(Filters.roamingMinion).accepts(game.getGameState(), game.getModifiersQuerying(), card)) { + action.appendEffect( + new AddUntilEndOfPhaseModifierEffect( + new OpponentsCantUseSpecialAbilitiesModifier(self, playerId), Phase.SKIRMISH)); + } + } + }); + return action; + } +} diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/gondor/Card4_131.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/gondor/Card4_131.java index 802c31fb1..c24839d13 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/gondor/Card4_131.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/gondor/Card4_131.java @@ -38,12 +38,12 @@ public class Card4_131 extends AbstractAttachableFPPossession { protected List getExtraInPlayPhaseActions(String playerId, LotroGame game, PhysicalCard self) { if (PlayConditions.canUseFPCardDuringPhase(game, Phase.SKIRMISH, self) && PlayConditions.canExert(self, game, self.getAttachedTo()) - && Filters.countActive(game.getGameState(), game.getModifiersQuerying(), Filters.inSkirmishAgainst(Filters.hasAttached(self)), Filters.or(Race.MAN, Filters.roaminMinion)) > 0) { + && Filters.countActive(game.getGameState(), game.getModifiersQuerying(), Filters.inSkirmishAgainst(Filters.hasAttached(self)), Filters.or(Race.MAN, Filters.roamingMinion)) > 0) { ActivateCardAction action = new ActivateCardAction(self); action.appendCost( new ChooseAndExertCharactersEffect(action, playerId, 1, 1, Filters.hasAttached(self))); action.appendEffect( - new ChooseAndWoundCharactersEffect(action, playerId, 1, 1, Filters.inSkirmishAgainst(Filters.hasAttached(self)), Filters.or(Race.MAN, Filters.roaminMinion))); + new ChooseAndWoundCharactersEffect(action, playerId, 1, 1, Filters.inSkirmishAgainst(Filters.hasAttached(self)), Filters.or(Race.MAN, Filters.roamingMinion))); return Collections.singletonList(action); } return null; diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/gondor/Card4_134.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/gondor/Card4_134.java index 76c41c518..63183efe0 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/gondor/Card4_134.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/gondor/Card4_134.java @@ -43,7 +43,7 @@ public class Card4_134 extends AbstractAttachableFPPossession { Filters.inSkirmishAgainst( Filters.or( Race.MAN, - Filters.roaminMinion + Filters.roamingMinion ) ) ), Keyword.DAMAGE)); diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/gondor/Card4_135.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/gondor/Card4_135.java index 98b80543f..7c0dc15e2 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/gondor/Card4_135.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/gondor/Card4_135.java @@ -36,7 +36,7 @@ public class Card4_135 extends AbstractOldEvent { new ChooseActiveCardEffect(self, playerId, "Choose a GONDOR Man", Culture.GONDOR, Race.MAN) { @Override protected void cardSelected(LotroGame game, PhysicalCard card) { - boolean isAgainstRoaming = Filters.countActive(game.getGameState(), game.getModifiersQuerying(), Filters.roaminMinion, Filters.inSkirmishAgainst(Filters.sameCard(card))) > 0; + boolean isAgainstRoaming = Filters.countActive(game.getGameState(), game.getModifiersQuerying(), Filters.roamingMinion, Filters.inSkirmishAgainst(Filters.sameCard(card))) > 0; int bonus = isAgainstRoaming ? 3 : 2; action.insertEffect( new AddUntilEndOfPhaseModifierEffect( diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/rohan/Card4_293.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/rohan/Card4_293.java index 7ab5b216f..1b5d04bb6 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/rohan/Card4_293.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/rohan/Card4_293.java @@ -31,7 +31,7 @@ public class Card4_293 extends AbstractPermanent { @Override public List getOptionalAfterTriggers(String playerId, LotroGame game, EffectResult effectResult, PhysicalCard self) { - if (TriggerConditions.played(game, effectResult, Filters.roaminMinion) + if (TriggerConditions.played(game, effectResult, Filters.roamingMinion) && PlayConditions.canSpot(game, Keyword.VILLAGER)) { PlayCardResult result = (PlayCardResult) effectResult; OptionalTriggerAction action = new OptionalTriggerAction(self); diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/filters/Filters.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/filters/Filters.java index c3bb7e29d..89439162b 100644 --- a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/filters/Filters.java +++ b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/filters/Filters.java @@ -790,7 +790,7 @@ public class Filters { } public static final Filter unboundCompanion = Filters.and(CardType.COMPANION, Filters.not(Keyword.RING_BOUND)); - public static final Filter roaminMinion = Filters.and(CardType.MINION, Keyword.ROAMING); + public static final Filter roamingMinion = Filters.and(CardType.MINION, Keyword.ROAMING); public static final Filter mounted = Filters.hasAttached(PossessionClass.MOUNT); private static class SpotFilterCardInPlayVisitor implements PhysicalCardVisitor {