diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set40/elven/Card40_051.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set40/elven/Card40_051.java new file mode 100644 index 000000000..79be07d5f --- /dev/null +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set40/elven/Card40_051.java @@ -0,0 +1,54 @@ +package com.gempukku.lotro.cards.set40.elven; + +import com.gempukku.lotro.cards.AbstractCompanion; +import com.gempukku.lotro.cards.PlayConditions; +import com.gempukku.lotro.cards.TriggerConditions; +import com.gempukku.lotro.cards.effects.AddUntilEndOfPhaseModifierEffect; +import com.gempukku.lotro.cards.effects.SelfExertEffect; +import com.gempukku.lotro.cards.modifiers.DoesNotAddToArcheryTotalModifier; +import com.gempukku.lotro.common.*; +import com.gempukku.lotro.game.PhysicalCard; +import com.gempukku.lotro.game.state.LotroGame; +import com.gempukku.lotro.logic.actions.OptionalTriggerAction; +import com.gempukku.lotro.logic.effects.ChooseAndWoundCharactersEffect; +import com.gempukku.lotro.logic.timing.EffectResult; + +import java.util.Collections; +import java.util.List; + +/** + * Title: *Legolas, Sindarin Marksman + * Set: Second Edition + * Side: Free + * Culture: Elven + * Twilight Cost: 2 + * Type: Companion - Elf + * Strength: 6 + * Vitality: 3 + * Resistance: 8 + * Card Number: 1R51 + * Game Text: Archer. At the beginning of the archery phase, you may exert Legolas to wound a minion. If you do, Legolas does not add to the fellowship archery total. + */ +public class Card40_051 extends AbstractCompanion{ + public Card40_051() { + super(2, 6, 3, 8, Culture.ELVEN, Race.ELF, null, "Legolas", "Sindarin Marksman", true); + addKeyword(Keyword.ARCHER); + } + + @Override + public List getOptionalAfterTriggers(String playerId, LotroGame game, EffectResult effectResult, PhysicalCard self) { + if (TriggerConditions.startOfPhase(game, effectResult, Phase.ARCHERY) + && PlayConditions.canSelfExert(self, game)) { + OptionalTriggerAction action = new OptionalTriggerAction(self); + action.appendCost( + new SelfExertEffect(action, self)); + action.appendEffect( + new ChooseAndWoundCharactersEffect(action, playerId, 1, 1, CardType.MINION)); + action.appendEffect( + new AddUntilEndOfPhaseModifierEffect( + new DoesNotAddToArcheryTotalModifier(self, self))); + return Collections.singletonList(action); + } + return null; + } +} diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set40/elven/Card40_052.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set40/elven/Card40_052.java new file mode 100644 index 000000000..15bbfbe5f --- /dev/null +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set40/elven/Card40_052.java @@ -0,0 +1,50 @@ +package com.gempukku.lotro.cards.set40.elven; + +import com.gempukku.lotro.cards.AbstractCompanion; +import com.gempukku.lotro.cards.PlayConditions; +import com.gempukku.lotro.cards.effects.AddUntilEndOfPhaseModifierEffect; +import com.gempukku.lotro.cards.effects.SelfExertEffect; +import com.gempukku.lotro.cards.modifiers.ArcheryTotalModifier; +import com.gempukku.lotro.common.*; +import com.gempukku.lotro.game.PhysicalCard; +import com.gempukku.lotro.game.state.LotroGame; +import com.gempukku.lotro.logic.actions.ActivateCardAction; + +import java.util.Collections; +import java.util.List; + +/** + * Title: *Legolas, Swiftshot + * Set: Second Edition + * Side: Free + * Culture: Elven + * Twilight Cost: 2 + * Type: Companion - Elf + * Strength: 6 + * Vitality: 3 + * Resistance: 8 + * Card Number: 1C52 + * Game Text: Archer. Archery: If Legolas is at a battleground, exert him to add 1 to the fellowship archery total. + */ +public class Card40_052 extends AbstractCompanion{ + public Card40_052() { + super(2, 6, 3, 8, Culture.ELVEN, Race.ELF, null, "Legolas", "Swiftshot", true); + addKeyword(Keyword.ARCHER); + } + + @Override + protected List getExtraInPlayPhaseActions(String playerId, LotroGame game, PhysicalCard self) { + if (PlayConditions.canUseFPCardDuringPhase(game, Phase.ARCHERY, self) + && PlayConditions.location(game, Keyword.BATTLEGROUND) + && PlayConditions.canSelfExert(self, game)) { + ActivateCardAction action = new ActivateCardAction(self); + action.appendCost( + new SelfExertEffect(action, self)); + action.appendEffect( + new AddUntilEndOfPhaseModifierEffect( + new ArcheryTotalModifier(self, Side.FREE_PEOPLE, 1))); + return Collections.singletonList(action); + } + return null; + } +} diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set40/elven/Card40_053.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set40/elven/Card40_053.java new file mode 100644 index 000000000..774631385 --- /dev/null +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set40/elven/Card40_053.java @@ -0,0 +1,57 @@ +package com.gempukku.lotro.cards.set40.elven; + +import com.gempukku.lotro.cards.AbstractPermanent; +import com.gempukku.lotro.cards.PlayConditions; +import com.gempukku.lotro.cards.TriggerConditions; +import com.gempukku.lotro.cards.effects.RemoveBurdenEffect; +import com.gempukku.lotro.cards.effects.choose.ChooseAndExertCharactersEffect; +import com.gempukku.lotro.common.*; +import com.gempukku.lotro.game.PhysicalCard; +import com.gempukku.lotro.game.state.LotroGame; +import com.gempukku.lotro.logic.actions.OptionalTriggerAction; +import com.gempukku.lotro.logic.timing.EffectResult; + +import java.util.Collections; +import java.util.List; + +/** + * Title: *Lights of Caras Galadhon + * Set: Second Edition + * Side: Free + * Culture: Elven + * Twilight Cost: 1 + * Type: Condition - Support Area + * Card Number: 1C53 + * Game Text: To play, spot an Elf. + * Each time the fellowship moves to a sanctuary, you may exert an Elf to remove a burden (or 2 burdens if that Elf is Galadriel). + */ +public class Card40_053 extends AbstractPermanent{ + public Card40_053() { + super(Side.FREE_PEOPLE, 1, CardType.CONDITION, Culture.ELVEN, Zone.SUPPORT, "Lights of Caras Galadhon", null, true); + } + + @Override + public boolean checkPlayRequirements(String playerId, LotroGame game, PhysicalCard self, int withTwilightRemoved, int twilightModifier, boolean ignoreRoamingPenalty, boolean ignoreCheckingDeadPile) { + return super.checkPlayRequirements(playerId, game, self, withTwilightRemoved, twilightModifier, ignoreRoamingPenalty, ignoreCheckingDeadPile) + && PlayConditions.canSpot(game, Race.ELF); + } + + @Override + public List getOptionalAfterTriggers(final String playerId, LotroGame game, EffectResult effectResult, final PhysicalCard self) { + if (TriggerConditions.movesTo(game, effectResult, Keyword.SANCTUARY) + && PlayConditions.canExert(self, game, Race.ELF)) { + final OptionalTriggerAction action = new OptionalTriggerAction(self); + action.appendCost( + new ChooseAndExertCharactersEffect(action, playerId, 1, 1, Race.ELF) { + @Override + protected void forEachCardExertedCallback(PhysicalCard character) { + int removeCount = (character.getBlueprint().getName().equals("Galadriel"))?2:1; + action.appendEffect( + new RemoveBurdenEffect(playerId, self, removeCount)); + } + }); + return Collections.singletonList(action); + } + return null; + } +} diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set40/elven/Card40_054.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set40/elven/Card40_054.java new file mode 100644 index 000000000..3288e0e4d --- /dev/null +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set40/elven/Card40_054.java @@ -0,0 +1,43 @@ +package com.gempukku.lotro.cards.set40.elven; + +import com.gempukku.lotro.cards.AbstractAttachableFPPossession; +import com.gempukku.lotro.common.CardType; +import com.gempukku.lotro.common.Culture; +import com.gempukku.lotro.common.Filterable; +import com.gempukku.lotro.common.PossessionClass; +import com.gempukku.lotro.filters.Filters; +import com.gempukku.lotro.game.PhysicalCard; +import com.gempukku.lotro.game.state.LotroGame; +import com.gempukku.lotro.logic.modifiers.Modifier; +import com.gempukku.lotro.logic.modifiers.StrengthModifier; + +import java.util.Collections; +import java.util.List; + +/** + * Title: *Long-knives of Legolas, Dancing Blades + * Set: Second Edition + * Side: Free + * Culture: Elven + * Twilight Cost: 1 + * Type: Possession - Hand Weapon + * Strength: +1 + * Card Number: 1R54 + * Game Text: Bearer must be Legolas. Each wounded minion skirmishing Legolas is strength -2. + */ +public class Card40_054 extends AbstractAttachableFPPossession{ + public Card40_054() { + super(1, 1, 0, Culture.ELVEN, PossessionClass.HAND_WEAPON, "Long-knives of Legolas", "Dancing Blades", true); + } + + @Override + protected Filterable getValidTargetFilter(String playerId, LotroGame game, PhysicalCard self) { + return Filters.legolas; + } + + @Override + protected List getNonBasicStatsModifiers(PhysicalCard self) { + StrengthModifier modifier = new StrengthModifier(self, Filters.and(CardType.MINION, Filters.wounded, Filters.inSkirmishAgainst(Filters.legolas)), -2); + return Collections.singletonList(modifier); + } +} diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set40/elven/Card40_055.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set40/elven/Card40_055.java new file mode 100644 index 000000000..8c4a8e083 --- /dev/null +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set40/elven/Card40_055.java @@ -0,0 +1,63 @@ +package com.gempukku.lotro.cards.set40.elven; + +import com.gempukku.lotro.cards.AbstractEvent; +import com.gempukku.lotro.cards.PlayConditions; +import com.gempukku.lotro.cards.actions.PlayEventAction; +import com.gempukku.lotro.cards.effects.choose.ChooseAndExertCharactersEffect; +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.game.PhysicalCard; +import com.gempukku.lotro.game.state.LotroGame; +import com.gempukku.lotro.logic.effects.AddThreatsEffect; +import com.gempukku.lotro.logic.effects.ChooseAndWoundCharactersEffect; +import com.gempukku.lotro.logic.effects.WoundCharactersEffect; + +import java.util.Collection; + +/** + * Title: Lorien Patrol + * Set: Second Edition + * Side: Free + * Culture: Elven + * Twilight Cost: 1 + * Type: Event - Archery + * Card Number: 1U55 + * Game Text: Exert an [ELVEN] ally and add a threat to wound a minion. If it is an [ISENGARD] minion, wound it again. + */ +public class Card40_055 extends AbstractEvent{ + public Card40_055() { + super(Side.FREE_PEOPLE, 1, Culture.ELVEN, "Lorien Patrol", Phase.ARCHERY); + } + + @Override + public boolean checkPlayRequirements(String playerId, LotroGame game, PhysicalCard self, int withTwilightRemoved, int twilightModifier, boolean ignoreRoamingPenalty, boolean ignoreCheckingDeadPile) { + return super.checkPlayRequirements(playerId, game, self, withTwilightRemoved, twilightModifier, ignoreRoamingPenalty, ignoreCheckingDeadPile) + && PlayConditions.canExert(self, game, Culture.ELVEN, CardType.ALLY) + && PlayConditions.canAddThreat(game, self, 1); + } + + @Override + public PlayEventAction getPlayCardAction(String playerId, LotroGame game, final PhysicalCard self, int twilightModifier, boolean ignoreRoamingPenalty) { + final PlayEventAction action = new PlayEventAction(self); + action.appendCost( + new ChooseAndExertCharactersEffect(action, playerId, 1, 1, Culture.ELVEN, CardType.ALLY)); + action.appendCost( + new AddThreatsEffect(playerId, self, 1)); + action.appendEffect( + new ChooseAndWoundCharactersEffect(action, playerId, 1, 1, CardType.MINION) { + @Override + protected void cardsSelected(LotroGame game, Collection cards) { + if (cards.size()>0) { + PhysicalCard minion = cards.iterator().next(); + if (minion.getBlueprint().getCulture() == Culture.ISENGARD) { + action.appendEffect( + new WoundCharactersEffect(self, minion)); + } + } + } + }); + return action; + } +} diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set40/elven/Card40_056.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set40/elven/Card40_056.java new file mode 100644 index 000000000..195ba4c19 --- /dev/null +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set40/elven/Card40_056.java @@ -0,0 +1,37 @@ +package com.gempukku.lotro.cards.set40.elven; + +import com.gempukku.lotro.cards.AbstractEvent; +import com.gempukku.lotro.cards.actions.PlayEventAction; +import com.gempukku.lotro.cards.effects.choose.ChooseAndAddUntilEOPStrengthBonusEffect; +import com.gempukku.lotro.cards.modifiers.evaluator.CountSpottableEvaluator; +import com.gempukku.lotro.cards.modifiers.evaluator.MultiplyEvaluator; +import com.gempukku.lotro.common.*; +import com.gempukku.lotro.filters.Filters; +import com.gempukku.lotro.game.PhysicalCard; +import com.gempukku.lotro.game.state.LotroGame; + +/** + * Title: Might of the Last Homely House + * Set: Second Edition + * Side: Free + * Culture: Elven + * Twilight Cost: 1 + * Type: Event - Skirmish + * Card Number: 1C56 + * Game Text: Make a minion skirmishing an Elf strength -X, where X is the number of Rivendell allies you can spot. + */ +public class Card40_056 extends AbstractEvent { + public Card40_056() { + super(Side.FREE_PEOPLE, 1, Culture.ELVEN, "Might of the Last Homely House", Phase.SKIRMISH); + } + + @Override + public PlayEventAction getPlayCardAction(String playerId, LotroGame game, PhysicalCard self, int twilightModifier, boolean ignoreRoamingPenalty) { + PlayEventAction action = new PlayEventAction(self); + action.appendEffect( + new ChooseAndAddUntilEOPStrengthBonusEffect( + action, self, playerId, new MultiplyEvaluator(-1, new CountSpottableEvaluator(CardType.ALLY, Keyword.RIVENDELL)), + CardType.MINION, Filters.inSkirmishAgainst(Race.ELF))); + return action; + } +}