diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set3/sauron/Card3_098.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set3/sauron/Card3_098.java new file mode 100644 index 000000000..bdc2c7f3b --- /dev/null +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set3/sauron/Card3_098.java @@ -0,0 +1,35 @@ +package com.gempukku.lotro.cards.set3.sauron; + +import com.gempukku.lotro.cards.AbstractMinion; +import com.gempukku.lotro.cards.modifiers.StrengthModifier; +import com.gempukku.lotro.common.Culture; +import com.gempukku.lotro.common.Race; +import com.gempukku.lotro.filters.Filters; +import com.gempukku.lotro.game.PhysicalCard; +import com.gempukku.lotro.logic.modifiers.Modifier; + +import java.util.Collections; +import java.util.List; + +/** + * Set: Realms of Elf-lords + * Side: Shadow + * Culture: Sauron + * Twilight Cost: 3 + * Type: Minion • Orc + * Strength: 9 + * Vitality: 3 + * Site: 6 + * Game Text: While this minion bears a weapon, he is strength +2. + */ +public class Card3_098 extends AbstractMinion { + public Card3_098() { + super(3, 9, 3, 6, Race.ORC, Culture.SAURON, "Orc Swordsman"); + } + + @Override + public List getAlwaysOnModifiers(PhysicalCard self) { + return Collections.singletonList( + new StrengthModifier(self, Filters.and(Filters.sameCard(self), Filters.hasAttached(Filters.weapon())), 2)); + } +} diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set3/sauron/Card3_099.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set3/sauron/Card3_099.java new file mode 100644 index 000000000..b8aa67555 --- /dev/null +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set3/sauron/Card3_099.java @@ -0,0 +1,43 @@ +package com.gempukku.lotro.cards.set3.sauron; + +import com.gempukku.lotro.cards.AbstractMinion; +import com.gempukku.lotro.common.Culture; +import com.gempukku.lotro.common.Race; +import com.gempukku.lotro.filters.Filters; +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.Modifier; +import com.gempukku.lotro.logic.modifiers.ModifierEffect; +import com.gempukku.lotro.logic.modifiers.ModifiersQuerying; + +import java.util.Collections; +import java.util.List; + +/** + * Set: Realms of Elf-lords + * Side: Shadow + * Culture: Sauron + * Twilight Cost: 4 + * Type: Minion • Orc + * Strength: 7 + * Vitality: 3 + * Site: 6 + * Game Text: For each card in your hand, this minion is strength +1. + */ +public class Card3_099 extends AbstractMinion { + public Card3_099() { + super(4, 7, 3, 6, Race.ORC, Culture.SAURON, "Orc Tropper"); + } + + @Override + public List getAlwaysOnModifiers(PhysicalCard self) { + return Collections.singletonList( + new AbstractModifier(self, "For each card in your hand, this minion is strength +1", Filters.sameCard(self), new ModifierEffect[]{ModifierEffect.STRENGTH_MODIFIER}) { + @Override + public int getStrength(GameState gameState, ModifiersQuerying modifiersQuerying, PhysicalCard physicalCard, int result) { + return result + gameState.getHand(physicalCard.getOwner()).size(); + } + }); + } +} diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set3/sauron/Card3_100.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set3/sauron/Card3_100.java new file mode 100644 index 000000000..756ca965c --- /dev/null +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set3/sauron/Card3_100.java @@ -0,0 +1,55 @@ +package com.gempukku.lotro.cards.set3.sauron; + +import com.gempukku.lotro.cards.AbstractMinion; +import com.gempukku.lotro.cards.PlayConditions; +import com.gempukku.lotro.cards.costs.ChooseAndDiscardCardsFromPlayCost; +import com.gempukku.lotro.cards.effects.AddUntilEndOfPhaseModifierEffect; +import com.gempukku.lotro.cards.modifiers.StrengthModifier; +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.effects.ChooseActiveCardEffect; +import com.gempukku.lotro.logic.timing.Action; + +import java.util.Collections; +import java.util.List; + +/** + * Set: Realms of Elf-lords + * Side: Shadow + * Culture: Sauron + * Twilight Cost: 4 + * Type: Minion • Orc + * Strength: 10 + * Vitality: 3 + * Site: 6 + * Game Text: Skirmish: Discard your [SAURON] condition to make a character skirmishing this minion strength -1. + */ +public class Card3_100 extends AbstractMinion { + public Card3_100() { + super(4, 10, 3, 6, Race.ORC, Culture.SAURON, "Orc Veteran"); + } + + @Override + protected List getExtraPhaseActions(String playerId, LotroGame game, final PhysicalCard self) { + if (PlayConditions.canUseShadowCardDuringPhase(game.getGameState(), Phase.SKIRMISH, self, 0) + && Filters.countActive(game.getGameState(), game.getModifiersQuerying(), Filters.owner(playerId), Filters.culture(Culture.SAURON), Filters.type(CardType.CONDITION)) > 0) { + final ActivateCardAction action = new ActivateCardAction(self, Keyword.SKIRMISH); + action.appendCost( + new ChooseAndDiscardCardsFromPlayCost(action, playerId, 1, 1, Filters.owner(playerId), Filters.culture(Culture.SAURON), Filters.type(CardType.CONDITION))); + action.appendEffect( + new ChooseActiveCardEffect(playerId, "Choose character skirmishing this minion", Filters.inSkirmishAgainst(Filters.sameCard(self))) { + @Override + protected void cardSelected(PhysicalCard card) { + action.insertEffect( + new AddUntilEndOfPhaseModifierEffect( + new StrengthModifier(self, Filters.sameCard(card), -1), Phase.SKIRMISH)); + } + }); + return Collections.singletonList(action); + } + return null; + } +} diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set3/sauron/Card3_101.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set3/sauron/Card3_101.java new file mode 100644 index 000000000..b24e5f927 --- /dev/null +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set3/sauron/Card3_101.java @@ -0,0 +1,53 @@ +package com.gempukku.lotro.cards.set3.sauron; + +import com.gempukku.lotro.cards.AbstractMinion; +import com.gempukku.lotro.cards.PlayConditions; +import com.gempukku.lotro.cards.costs.ChooseAndDiscardCardsFromPlayCost; +import com.gempukku.lotro.cards.costs.ExertCharactersCost; +import com.gempukku.lotro.cards.effects.DiscardTopCardFromDeckEffect; +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.timing.Action; + +import java.util.Collections; +import java.util.List; + +/** + * Set: Realms of Elf-lords + * Side: Shadow + * Culture: Sauron + * Twilight Cost: 3 + * Type: Minion • Orc + * Strength: 9 + * Vitality: 3 + * Site: 6 + * Game Text: Maneuver: Exert this minion and discard your [SAURON] condition to make the Free Peoples player discard + * the top 2 cards from his or her draw deck. + */ +public class Card3_101 extends AbstractMinion { + public Card3_101() { + super(3, 9, 3, 6, Race.ORC, Culture.SAURON, "Orc Warrior"); + } + + @Override + protected List getExtraPhaseActions(String playerId, LotroGame game, PhysicalCard self) { + if (PlayConditions.canUseShadowCardDuringPhase(game.getGameState(), Phase.MANEUVER, self, 0) + && PlayConditions.canExert(self, game.getGameState(), game.getModifiersQuerying(), self) + && Filters.countActive(game.getGameState(), game.getModifiersQuerying(), Filters.owner(playerId), Filters.culture(Culture.SAURON), Filters.type(CardType.CONDITION)) > 0) { + ActivateCardAction action = new ActivateCardAction(self, Keyword.MANEUVER); + action.appendCost( + new ExertCharactersCost(self, self)); + action.appendCost( + new ChooseAndDiscardCardsFromPlayCost(action, playerId, 1, 1, Filters.owner(playerId), Filters.culture(Culture.SAURON), Filters.type(CardType.CONDITION))); + action.appendEffect( + new DiscardTopCardFromDeckEffect(game.getGameState().getCurrentPlayerId())); + action.appendEffect( + new DiscardTopCardFromDeckEffect(game.getGameState().getCurrentPlayerId())); + return Collections.singletonList(action); + } + return null; + } +} diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set3/sauron/Card3_102.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set3/sauron/Card3_102.java new file mode 100644 index 000000000..466005c08 --- /dev/null +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set3/sauron/Card3_102.java @@ -0,0 +1,60 @@ +package com.gempukku.lotro.cards.set3.sauron; + +import com.gempukku.lotro.cards.AbstractPermanent; +import com.gempukku.lotro.cards.PlayConditions; +import com.gempukku.lotro.cards.actions.PlayPermanentAction; +import com.gempukku.lotro.cards.costs.ChooseAndExertCharactersCost; +import com.gempukku.lotro.cards.effects.AddTwilightEffect; +import com.gempukku.lotro.common.CardType; +import com.gempukku.lotro.common.Culture; +import com.gempukku.lotro.common.Side; +import com.gempukku.lotro.common.Zone; +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.RequiredTriggerAction; +import com.gempukku.lotro.logic.timing.EffectResult; + +import java.util.Collections; +import java.util.List; + +/** + * Set: Realms of Elf-lords + * Side: Shadow + * Culture: Sauron + * Twilight Cost: 1 + * Type: Condition + * Game Text: To play, exert a [SAURON] minion. Plays to your support area. Each time the fellowship moves, add (1) + * for each ally you can spot. + */ +public class Card3_102 extends AbstractPermanent { + public Card3_102() { + super(Side.SHADOW, 1, CardType.CONDITION, Culture.SAURON, Zone.SHADOW_SUPPORT, "Our List of Allies Grows Thin", true); + } + + @Override + public boolean checkPlayRequirements(String playerId, LotroGame game, PhysicalCard self, int twilightModifier) { + return super.checkPlayRequirements(playerId, game, self, twilightModifier) + && PlayConditions.canExert(self, game.getGameState(), game.getModifiersQuerying(), Filters.culture(Culture.SAURON), Filters.type(CardType.MINION)); + } + + @Override + public PlayPermanentAction getPlayCardAction(String playerId, LotroGame game, PhysicalCard self, int twilightModifier) { + PlayPermanentAction action = super.getPlayCardAction(playerId, game, self, twilightModifier); + action.appendCost( + new ChooseAndExertCharactersCost(action, playerId, 1, 1, Filters.culture(Culture.SAURON), Filters.type(CardType.MINION))); + return action; + } + + @Override + public List getRequiredAfterTriggers(LotroGame game, EffectResult effectResult, PhysicalCard self) { + if (effectResult.getType() == EffectResult.Type.WHEN_FELLOWSHIP_MOVES) { + RequiredTriggerAction action = new RequiredTriggerAction(self); + int allies = Filters.countSpottable(game.getGameState(), game.getModifiersQuerying(), Filters.type(CardType.ALLY)); + action.appendEffect( + new AddTwilightEffect(allies)); + return Collections.singletonList(action); + } + return null; + } +} diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set3/sauron/Card3_103.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set3/sauron/Card3_103.java new file mode 100644 index 000000000..9148ddb6c --- /dev/null +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set3/sauron/Card3_103.java @@ -0,0 +1,70 @@ +package com.gempukku.lotro.cards.set3.sauron; + +import com.gempukku.lotro.cards.AbstractEvent; +import com.gempukku.lotro.cards.actions.PlayEventAction; +import com.gempukku.lotro.cards.costs.ChooseAndDiscardCardsFromPlayCost; +import com.gempukku.lotro.cards.effects.ChooseAndWoundCharactersEffect; +import com.gempukku.lotro.cards.effects.PreventableEffect; +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.timing.UnrespondableEffect; + +import java.util.Collections; + +/** + * Set: Realms of Elf-lords + * Side: Shadow + * Culture: Sauron + * Twilight Cost: 0 + * Type: Event + * Game Text: Maneuver: Spot a [SAURON] minion to wound Galadriel 3 times. The Free Peoples player may discard 2 Elves + * to prevent this. + */ +public class Card3_103 extends AbstractEvent { + public Card3_103() { + super(Side.SHADOW, Culture.SAURON, "Terrible as the Dawn", Phase.MANEUVER); + } + + @Override + public boolean checkPlayRequirements(String playerId, LotroGame game, PhysicalCard self, int twilightModifier) { + return super.checkPlayRequirements(playerId, game, self, twilightModifier) + && Filters.canSpot(game.getGameState(), game.getModifiersQuerying(), Filters.culture(Culture.SAURON), Filters.type(CardType.MINION)); + } + + @Override + public int getTwilightCost() { + return 0; + } + + @Override + public PlayEventAction getPlayCardAction(final String playerId, LotroGame game, PhysicalCard self, int twilightModifier) { + final PlayEventAction action = new PlayEventAction(self); + action.appendEffect( + new PreventableEffect(action, + new UnrespondableEffect() { + @Override + public String getText(LotroGame game) { + return "Wound Galadriel 3 times"; + } + + @Override + protected void doPlayEffect(LotroGame game) { + action.appendEffect( + new ChooseAndWoundCharactersEffect(action, playerId, 1, 1, Filters.name("Galadriel"))); + action.appendEffect( + new ChooseAndWoundCharactersEffect(action, playerId, 1, 1, Filters.name("Galadriel"))); + action.appendEffect( + new ChooseAndWoundCharactersEffect(action, playerId, 1, 1, Filters.name("Galadriel"))); + } + }, Collections.singletonList(game.getGameState().getCurrentPlayerId()), + new ChooseAndDiscardCardsFromPlayCost(action, game.getGameState().getCurrentPlayerId(), 2, 2, Filters.race(Race.ELF)) { + @Override + public String getText(LotroGame game) { + return "Discard 2 Elves from play"; + } + })); + return action; + } +} diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set3/sauron/Card3_104.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set3/sauron/Card3_104.java new file mode 100644 index 000000000..76b2917c2 --- /dev/null +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set3/sauron/Card3_104.java @@ -0,0 +1,59 @@ +package com.gempukku.lotro.cards.set3.sauron; + +import com.gempukku.lotro.cards.AbstractPermanent; +import com.gempukku.lotro.cards.PlayConditions; +import com.gempukku.lotro.cards.actions.PlayPermanentAction; +import com.gempukku.lotro.cards.costs.ChooseAndExertCharactersCost; +import com.gempukku.lotro.cards.effects.ChooseAndDiscardCardsFromHandEffect; +import com.gempukku.lotro.common.CardType; +import com.gempukku.lotro.common.Culture; +import com.gempukku.lotro.common.Side; +import com.gempukku.lotro.common.Zone; +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.RequiredTriggerAction; +import com.gempukku.lotro.logic.timing.EffectResult; + +import java.util.Collections; +import java.util.List; + +/** + * Set: Realms of Elf-lords + * Side: Shadow + * Culture: Sauron + * Twilight Cost: 1 + * Type: Condition + * Game Text: To play, exert a [SAURON] minion. Plays to your support area. Each time the fellowship moves, + * the Free Peoples player must discard a card from hand. + */ +public class Card3_104 extends AbstractPermanent { + public Card3_104() { + super(Side.SHADOW, 1, CardType.CONDITION, Culture.SAURON, Zone.SHADOW_SUPPORT, "Tower of Barad-dur"); + } + + @Override + public boolean checkPlayRequirements(String playerId, LotroGame game, PhysicalCard self, int twilightModifier) { + return super.checkPlayRequirements(playerId, game, self, twilightModifier) + && PlayConditions.canExert(self, game.getGameState(), game.getModifiersQuerying(), Filters.culture(Culture.SAURON), Filters.type(CardType.MINION)); + } + + @Override + public PlayPermanentAction getPlayCardAction(String playerId, LotroGame game, PhysicalCard self, int twilightModifier) { + PlayPermanentAction action = super.getPlayCardAction(playerId, game, self, twilightModifier); + action.appendCost( + new ChooseAndExertCharactersCost(action, playerId, 1, 1, Filters.culture(Culture.SAURON), Filters.type(CardType.MINION))); + return action; + } + + @Override + public List getRequiredAfterTriggers(LotroGame game, EffectResult effectResult, PhysicalCard self) { + if (effectResult.getType() == EffectResult.Type.WHEN_FELLOWSHIP_MOVES) { + RequiredTriggerAction action = new RequiredTriggerAction(self); + action.appendEffect( + new ChooseAndDiscardCardsFromHandEffect(action, game.getGameState().getCurrentPlayerId(), 1, 1, Filters.any())); + return Collections.singletonList(action); + } + return null; + } +} diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set3/sauron/Card3_105.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set3/sauron/Card3_105.java new file mode 100644 index 000000000..032980c52 --- /dev/null +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set3/sauron/Card3_105.java @@ -0,0 +1,57 @@ +package com.gempukku.lotro.cards.set3.sauron; + +import com.gempukku.lotro.cards.AbstractEvent; +import com.gempukku.lotro.cards.actions.PlayEventAction; +import com.gempukku.lotro.cards.costs.ChooseAndDiscardCardsFromPlayCost; +import com.gempukku.lotro.cards.effects.ChooseAndDiscardCardsFromPlayEffect; +import com.gempukku.lotro.cards.effects.PreventableEffect; +import com.gempukku.lotro.common.CardType; +import com.gempukku.lotro.common.Culture; +import com.gempukku.lotro.common.Phase; +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 java.util.Collections; + +/** + * Set: Realms of Elf-lords + * Side: Shadow + * Culture: Sauron + * Twilight Cost: 0 + * Type: Event + * Game Text: Maneuver: Spot a [SAURON] minion to discard Bilbo. The Free Peoples player may discard 2 Free Peoples + * conditions to prevent this. + */ +public class Card3_105 extends AbstractEvent { + public Card3_105() { + super(Side.SHADOW, Culture.SAURON, "Why Shouldn't I Keep It?", Phase.MANEUVER); + } + + @Override + public boolean checkPlayRequirements(String playerId, LotroGame game, PhysicalCard self, int twilightModifier) { + return super.checkPlayRequirements(playerId, game, self, twilightModifier) + && Filters.canSpot(game.getGameState(), game.getModifiersQuerying(), Filters.culture(Culture.SAURON), Filters.type(CardType.MINION)); + } + + @Override + public int getTwilightCost() { + return 0; + } + + @Override + public PlayEventAction getPlayCardAction(String playerId, LotroGame game, PhysicalCard self, int twilightModifier) { + PlayEventAction action = new PlayEventAction(self); + action.appendEffect( + new PreventableEffect(action, + new ChooseAndDiscardCardsFromPlayEffect(action, playerId, 1, 1, Filters.name("Bilbo")) { + @Override + public String getText(LotroGame game) { + return "Discard Bilbo"; + } + }, Collections.singletonList(game.getGameState().getCurrentPlayerId()), + new ChooseAndDiscardCardsFromPlayCost(action, game.getGameState().getCurrentPlayerId(), 2, 2, Filters.side(Side.FREE_PEOPLE), Filters.type(CardType.CONDITION)))); + return action; + } +}