diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set2/moria/Card2_069.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set2/moria/Card2_069.java new file mode 100644 index 000000000..279d7dcf3 --- /dev/null +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set2/moria/Card2_069.java @@ -0,0 +1,52 @@ +package com.gempukku.lotro.cards.set2.moria; + +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.StrengthModifier; +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; + +/** + * Set: Mines of Moria + * Side: Shadow + * Culture: Moria + * Twilight Cost: 0 + * Type: Event + * Game Text: Skirmish: Make an Elf or Dwarf skirmishing a [MORIA] Orc strength -1 (or -3 if you spot an Elf and + * a Dwarf). + */ +public class Card2_069 extends AbstractEvent { + public Card2_069() { + super(Side.SHADOW, Culture.MORIA, "Old Differences", Phase.SKIRMISH); + } + + @Override + public int getTwilightCost() { + return 0; + } + + @Override + public PlayEventAction getPlayCardAction(String playerId, final LotroGame game, final PhysicalCard self, int twilightModifier) { + final PlayEventAction action = new PlayEventAction(self); + action.appendEffect( + new ChooseActiveCardEffect(playerId, "Choose Elf or Dwarf", Filters.inSkirmishAgainst(Filters.or(Filters.race(Race.ELF), Filters.race(Race.DWARF)))) { + @Override + protected void cardSelected(PhysicalCard elfOrDwarf) { + boolean canSpotElf = Filters.canSpot(game.getGameState(), game.getModifiersQuerying(), Filters.race(Race.ELF)); + boolean canSpotDwarf = Filters.canSpot(game.getGameState(), game.getModifiersQuerying(), Filters.race(Race.DWARF)); + int penalty = (canSpotElf && canSpotDwarf) ? -3 : -1; + action.insertEffect( + new AddUntilEndOfPhaseModifierEffect( + new StrengthModifier(self, Filters.sameCard(elfOrDwarf), penalty), Phase.SKIRMISH)); + } + }); + return action; + } +} 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 4164f9e0a..84739888a 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 @@ -64,6 +64,20 @@ public class Filters { }; } + public static Filter inSkirmishAgainst(final Filter againstFilter) { + return new Filter() { + @Override + public boolean accepts(GameState gameState, ModifiersQuerying modifiersQuerying, PhysicalCard physicalCard) { + Skirmish skirmish = gameState.getSkirmish(); + if (skirmish != null && skirmish.getFellowshipCharacter() != null) { + return (skirmish.getFellowshipCharacter() == physicalCard && Filters.filter(skirmish.getShadowCharacters(), gameState, modifiersQuerying, againstFilter).size() > 0) + || (skirmish.getShadowCharacters().contains(physicalCard) && againstFilter.accepts(gameState, modifiersQuerying, skirmish.getFellowshipCharacter())); + } + return false; + } + }; + } + public static Filter notAssigned() { return new Filter() { @Override