diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set18/gandalf/Card18_018.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set18/gandalf/Card18_018.java deleted file mode 100644 index 3d6363ac4..000000000 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set18/gandalf/Card18_018.java +++ /dev/null @@ -1,50 +0,0 @@ -package com.gempukku.lotro.cards.set18.gandalf; - -import com.gempukku.lotro.logic.cardtype.AbstractAttachableFPPossession; -import com.gempukku.lotro.logic.timing.TriggerConditions; -import com.gempukku.lotro.logic.effects.choose.ChooseAndPutCardFromDiscardIntoHandEffect; -import com.gempukku.lotro.common.Culture; -import com.gempukku.lotro.common.Filterable; -import com.gempukku.lotro.common.PossessionClass; -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.OptionalTriggerAction; -import com.gempukku.lotro.logic.timing.EffectResult; - -import java.util.Collections; -import java.util.List; - -/** - * Set: Treachery & Deceit - * Side: Free - * Culture: Gandalf - * Twilight Cost: 2 - * Type: Possession • Hand Weapon - * Strength: +2 - * Vitality: +1 - * Game Text: Bearer must be a [GANDALF] Man. While Grimbeorn is bearing this possession, each time he wins a skirmish, - * you may take a [GANDALF] card from your discard pile into hand. - */ -public class Card18_018 extends AbstractAttachableFPPossession { - public Card18_018() { - super(2, 2, 1, Culture.GANDALF, PossessionClass.HAND_WEAPON, "Beorning Axe"); - } - - @Override - public Filterable getValidTargetFilter(String playerId, LotroGame game, PhysicalCard self) { - return Filters.and(Culture.GANDALF, Race.MAN); - } - - @Override - public List getOptionalAfterTriggers(String playerId, LotroGame game, EffectResult effectResult, PhysicalCard self) { - if (TriggerConditions.winsSkirmish(game, effectResult, Filters.hasAttached(self), Filters.name("Grimbeorn"))) { - OptionalTriggerAction action = new OptionalTriggerAction(self); - action.appendEffect( - new ChooseAndPutCardFromDiscardIntoHandEffect(action, playerId, 1, 1, Culture.GANDALF)); - return Collections.singletonList(action); - } - return null; - } -} diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set18/gandalf/Card18_019.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set18/gandalf/Card18_019.java deleted file mode 100644 index 61573ab20..000000000 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set18/gandalf/Card18_019.java +++ /dev/null @@ -1,46 +0,0 @@ -package com.gempukku.lotro.cards.set18.gandalf; - -import com.gempukku.lotro.common.*; -import com.gempukku.lotro.game.PhysicalCard; -import com.gempukku.lotro.game.state.LotroGame; -import com.gempukku.lotro.logic.actions.PlayEventAction; -import com.gempukku.lotro.logic.cardtype.AbstractEvent; -import com.gempukku.lotro.logic.effects.AddUntilEndOfPhaseModifierEffect; -import com.gempukku.lotro.logic.effects.ChooseActiveCardEffect; -import com.gempukku.lotro.logic.modifiers.CancelStrengthBonusTargetModifier; -import com.gempukku.lotro.logic.timing.PlayConditions; - -/** - * Set: Treachery & Deceit - * Side: Free - * Culture: Gandalf - * Twilight Cost: 0 - * Type: Event • Skirmish - * Game Text: Spell. Spot a [GANDALF] Wizard to make a minion lose all strength bonuses from possessions. - */ -public class Card18_019 extends AbstractEvent { - public Card18_019() { - super(Side.FREE_PEOPLE, 0, Culture.GANDALF, "Drawn to Full Height", Phase.SKIRMISH); - addKeyword(Keyword.SPELL); - } - - @Override - public boolean checkPlayRequirements(LotroGame game, PhysicalCard self) { - return PlayConditions.canSpot(game, Culture.GANDALF, Race.WIZARD); - } - - @Override - public PlayEventAction getPlayEventCardAction(String playerId, LotroGame game, final PhysicalCard self) { - final PlayEventAction action = new PlayEventAction(self); - action.appendEffect( - new ChooseActiveCardEffect(self, playerId, "Choose a minion", CardType.MINION) { - @Override - protected void cardSelected(LotroGame game, PhysicalCard card) { - action.appendEffect( - new AddUntilEndOfPhaseModifierEffect( - new CancelStrengthBonusTargetModifier(self, card, CardType.POSSESSION))); - } - }); - return action; - } -} diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set18/gandalf/Card18_020.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set18/gandalf/Card18_020.java deleted file mode 100644 index cc978f8f1..000000000 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set18/gandalf/Card18_020.java +++ /dev/null @@ -1,57 +0,0 @@ -package com.gempukku.lotro.cards.set18.gandalf; - -import com.gempukku.lotro.common.*; -import com.gempukku.lotro.game.PhysicalCard; -import com.gempukku.lotro.game.state.LotroGame; -import com.gempukku.lotro.logic.GameUtils; -import com.gempukku.lotro.logic.actions.PlayEventAction; -import com.gempukku.lotro.logic.cardtype.AbstractEvent; -import com.gempukku.lotro.logic.effects.AddUntilStartOfPhaseModifierEffect; -import com.gempukku.lotro.logic.effects.ChooseActiveCardEffect; -import com.gempukku.lotro.logic.effects.DrawCardsEffect; -import com.gempukku.lotro.logic.effects.choose.ChooseAndExertCharactersEffect; -import com.gempukku.lotro.logic.modifiers.AddKeywordModifier; -import com.gempukku.lotro.logic.timing.PlayConditions; - -/** - * Set: Treachery & Deceit - * Side: Free - * Culture: Gandalf - * Twilight Cost: 3 - * Type: Event • Maneuver - * Game Text: If the fellowship is in region 1 or region 2, exert 2 Ents to make an Ent defender +1 until the regroup - * phase. If the fellowship is in region 3, spot a [GANDALF] companion to draw a card. - */ -public class Card18_020 extends AbstractEvent { - public Card18_020() { - super(Side.FREE_PEOPLE, 3, Culture.GANDALF, "Ents Marching", Phase.MANEUVER); - } - - @Override - public boolean checkPlayRequirements(LotroGame game, PhysicalCard self) { - return ((GameUtils.getRegion(game) == 3 && PlayConditions.canSpot(game, Culture.GANDALF, CardType.COMPANION)) - || ((GameUtils.getRegion(game) == 1 || GameUtils.getRegion(game) == 2) && PlayConditions.canExert(self, game, 1, 2, Race.ENT))); - } - - @Override - public PlayEventAction getPlayEventCardAction(String playerId, LotroGame game, final PhysicalCard self) { - final PlayEventAction action = new PlayEventAction(self); - if (GameUtils.getRegion(game) == 3) - action.appendEffect( - new DrawCardsEffect(action, playerId, 1)); - else { - action.appendCost( - new ChooseAndExertCharactersEffect(action, playerId, 2, 2, Race.ENT)); - action.appendEffect( - new ChooseActiveCardEffect(self, playerId, "Choose an Ent", Race.ENT) { - @Override - protected void cardSelected(LotroGame game, PhysicalCard card) { - action.appendEffect( - new AddUntilStartOfPhaseModifierEffect( - new AddKeywordModifier(self, card, Keyword.DEFENDER, 1), Phase.REGROUP)); - } - }); - } - return action; - } -} diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set18/gandalf/Card18_021.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set18/gandalf/Card18_021.java deleted file mode 100644 index 7b8723ccd..000000000 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set18/gandalf/Card18_021.java +++ /dev/null @@ -1,53 +0,0 @@ -package com.gempukku.lotro.cards.set18.gandalf; - -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 com.gempukku.lotro.logic.cardtype.AbstractPermanent; -import com.gempukku.lotro.logic.effects.AddTokenEffect; -import com.gempukku.lotro.logic.effects.RemoveTokenEffect; -import com.gempukku.lotro.logic.effects.choose.ChooseAndAddUntilEOPStrengthBonusEffect; -import com.gempukku.lotro.logic.effects.choose.ChooseAndExertCharactersEffect; -import com.gempukku.lotro.logic.timing.PlayConditions; - -import java.util.Collections; -import java.util.List; - -/** - * Set: Treachery & Deceit - * Side: Free - * Culture: Gandalf - * Twilight Cost: 2 - * Type: Condition • Support Area - * Game Text: Fellowship: Exert a [GANDALF] Man to add 2 [GANDALF] tokens here. Skirmish: Remove 3 [GANDALF] tokens - * from here to make a companion strength +3. - */ -public class Card18_021 extends AbstractPermanent { - public Card18_021() { - super(Side.FREE_PEOPLE, 2, CardType.CONDITION, Culture.GANDALF, "Last Stand"); - } - - @Override - public List getPhaseActionsInPlay(String playerId, LotroGame game, PhysicalCard self) { - if (PlayConditions.canUseFPCardDuringPhase(game, Phase.FELLOWSHIP, self) - && PlayConditions.canExert(self, game, Culture.GANDALF, Race.MAN)) { - ActivateCardAction action = new ActivateCardAction(self); - action.appendCost( - new ChooseAndExertCharactersEffect(action, playerId, 1, 1, Culture.GANDALF, Race.MAN)); - action.appendEffect( - new AddTokenEffect(self, self, Token.GANDALF, 2)); - return Collections.singletonList(action); - } - if (PlayConditions.canUseFPCardDuringPhase(game, Phase.SKIRMISH, self) - && PlayConditions.canRemoveTokens(game, self, Token.GANDALF, 3)) { - ActivateCardAction action = new ActivateCardAction(self); - action.appendCost( - new RemoveTokenEffect(self, self, Token.GANDALF, 3)); - action.appendEffect( - new ChooseAndAddUntilEOPStrengthBonusEffect(action, self, playerId, 3, CardType.COMPANION)); - return Collections.singletonList(action); - } - return null; - } -} diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set18/gandalf/Card18_022.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set18/gandalf/Card18_022.java deleted file mode 100644 index 6698218b2..000000000 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set18/gandalf/Card18_022.java +++ /dev/null @@ -1,68 +0,0 @@ -package com.gempukku.lotro.cards.set18.gandalf; - -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.cardtype.AbstractCompanion; -import com.gempukku.lotro.logic.effects.ChoiceEffect; -import com.gempukku.lotro.logic.effects.DrawCardsEffect; -import com.gempukku.lotro.logic.effects.choose.ChooseAndDiscardCardsFromPlayEffect; -import com.gempukku.lotro.logic.effects.choose.ChooseAndPutCardFromDiscardIntoHandEffect; -import com.gempukku.lotro.logic.modifiers.Modifier; -import com.gempukku.lotro.logic.modifiers.StrengthModifier; -import com.gempukku.lotro.logic.modifiers.condition.CanSpotCultureTokensCondition; -import com.gempukku.lotro.logic.timing.Effect; -import com.gempukku.lotro.logic.timing.PlayConditions; - -import java.util.Collections; -import java.util.LinkedList; -import java.util.List; - -/** - * Set: Treachery & Deceit - * Side: Free - * Culture: Gandalf - * Twilight Cost: 2 - * Type: Companion • Man - * Strength: 3 - * Vitality: 3 - * Resistance: 5 - * Game Text: While you can spot 2 [GANDALF] tokens, each of your [GANDALF] Men is strength +2. Regroup: Discard - * a follower from play to choose one: draw a card; or take a [GANDALF] skirmish event from your discard pile into hand. - */ -public class Card18_022 extends AbstractCompanion { - public Card18_022() { - super(2, 3, 3, 5, Culture.GANDALF, Race.MAN, null, "Librarian", "Keeper of Ancient Texts", true); - } - - @Override - public List getInPlayModifiers(LotroGame game, PhysicalCard self) { -return Collections.singletonList(new StrengthModifier(self, Filters.and(Culture.GANDALF, Race.MAN), new CanSpotCultureTokensCondition(2, Token.GANDALF), 2)); -} - - @Override - public List getPhaseActionsInPlay(String playerId, LotroGame game, PhysicalCard self) { - if (PlayConditions.canUseFPCardDuringPhase(game, Phase.REGROUP, self) - && PlayConditions.canDiscardFromPlay(self, game, CardType.FOLLOWER)) { - ActivateCardAction action = new ActivateCardAction(self); - action.appendCost( - new ChooseAndDiscardCardsFromPlayEffect(action, playerId, 1, 1, CardType.FOLLOWER)); - List possibleEffects = new LinkedList<>(); - possibleEffects.add( - new DrawCardsEffect(action, playerId, 1)); - possibleEffects.add( - new ChooseAndPutCardFromDiscardIntoHandEffect(action, playerId, 1, 1, Culture.GANDALF, CardType.EVENT, Keyword.SKIRMISH) { - @Override - public String getText(LotroGame game) { - return "Take a GANDALF skirmish event from your discard pile into hand"; - } - }); - action.appendEffect( - new ChoiceEffect(action, playerId, possibleEffects)); - return Collections.singletonList(action); - } - return null; - } -} diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set18/gandalf/Card18_023.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set18/gandalf/Card18_023.java deleted file mode 100644 index 5b1f39a25..000000000 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set18/gandalf/Card18_023.java +++ /dev/null @@ -1,40 +0,0 @@ -package com.gempukku.lotro.cards.set18.gandalf; - -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.PlayEventAction; -import com.gempukku.lotro.logic.cardtype.AbstractEvent; -import com.gempukku.lotro.logic.effects.RemoveBurdenEffect; -import com.gempukku.lotro.logic.timing.PlayConditions; - -/** - * Set: Treachery & Deceit - * Side: Free - * Culture: Gandalf - * Twilight Cost: 2 - * Type: Event • Maneuver - * Game Text: Spell. Spot 2 pipeweed cards to remove a burden for each [GANDALF] Wizard you can spot. - */ -public class Card18_023 extends AbstractEvent { - public Card18_023() { - super(Side.FREE_PEOPLE, 2, Culture.GANDALF, "One-Upsmanship", Phase.MANEUVER); - addKeyword(Keyword.SPELL); - } - - @Override - public boolean checkPlayRequirements(LotroGame game, PhysicalCard self) { - return PlayConditions.canSpot(game, 2, Keyword.PIPEWEED); - } - - @Override - public PlayEventAction getPlayEventCardAction(String playerId, LotroGame game, PhysicalCard self) { - PlayEventAction action = new PlayEventAction(self); - int count = Filters.countActive(game, Culture.GANDALF, Race.WIZARD); - if (count > 0) - action.appendEffect( - new RemoveBurdenEffect(playerId, self, count)); - return action; - } -} diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set18/gandalf/Card18_024.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set18/gandalf/Card18_024.java deleted file mode 100644 index 371520c47..000000000 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set18/gandalf/Card18_024.java +++ /dev/null @@ -1,59 +0,0 @@ -package com.gempukku.lotro.cards.set18.gandalf; - -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.RequiredTriggerAction; -import com.gempukku.lotro.logic.cardtype.AbstractPermanent; -import com.gempukku.lotro.logic.effects.AddTwilightEffect; -import com.gempukku.lotro.logic.effects.RemoveCardsFromTheGameEffect; -import com.gempukku.lotro.logic.effects.RemoveTwilightEffect; -import com.gempukku.lotro.logic.modifiers.AbstractExtraPlayCostModifier; -import com.gempukku.lotro.logic.modifiers.cost.ExertExtraPlayCostModifier; -import com.gempukku.lotro.logic.timing.EffectResult; -import com.gempukku.lotro.logic.timing.TriggerConditions; - -import java.util.Collections; -import java.util.List; - -/** - * Set: Treachery & Deceit - * Side: Free - * Culture: Gandalf - * Twilight Cost: 0 - * Type: Condition • Support Area - * Game Text: Spell. To play, exert Gandalf. When you play this condition, remove (3). At the start of the maneuver - * phase, add (4) and remove this condition from the game. - */ -public class Card18_024 extends AbstractPermanent { - public Card18_024() { - super(Side.FREE_PEOPLE, 0, CardType.CONDITION, Culture.GANDALF, "Our Time", null, true); - addKeyword(Keyword.SPELL); - } - - @Override - public List getExtraCostToPlay(LotroGame game, PhysicalCard self) { - return Collections.singletonList( - new ExertExtraPlayCostModifier(self, self, null, Filters.gandalf)); - } - - @Override - public List getRequiredAfterTriggers(LotroGame game, EffectResult effectResult, PhysicalCard self) { - if (TriggerConditions.played(game, effectResult, self)) { - RequiredTriggerAction action = new RequiredTriggerAction(self); - action.appendEffect( - new RemoveTwilightEffect(3)); - return Collections.singletonList(action); - } - if (TriggerConditions.startOfPhase(game, effectResult, Phase.MANEUVER)) { - RequiredTriggerAction action = new RequiredTriggerAction(self); - action.appendEffect( - new AddTwilightEffect(self, 4)); - action.appendEffect( - new RemoveCardsFromTheGameEffect(self.getOwner(), self, Collections.singleton(self))); - return Collections.singletonList(action); - } - return null; - } -} diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set18/gandalf/Card18_025.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set18/gandalf/Card18_025.java deleted file mode 100644 index e85b4241f..000000000 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set18/gandalf/Card18_025.java +++ /dev/null @@ -1,52 +0,0 @@ -package com.gempukku.lotro.cards.set18.gandalf; - -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 com.gempukku.lotro.logic.cardtype.AbstractPermanent; -import com.gempukku.lotro.logic.effects.AddThreatsEffect; -import com.gempukku.lotro.logic.effects.AddUntilStartOfPhaseModifierEffect; -import com.gempukku.lotro.logic.effects.ChooseActiveCardEffect; -import com.gempukku.lotro.logic.modifiers.PlayersCantUseCardSpecialAbilitiesModifier; -import com.gempukku.lotro.logic.timing.PlayConditions; - -import java.util.Collections; -import java.util.List; - -/** - * Set: Treachery & Deceit - * Side: Free - * Culture: Gandalf - * Twilight Cost: 2 - * Type: Condition • Support Area - * Game Text: Maneuver: Add 2 threats and spot a Wizard to spot a minion in play. That minion cannot use special - * abilities until the regroup phase. - */ -public class Card18_025 extends AbstractPermanent { - public Card18_025() { - super(Side.FREE_PEOPLE, 2, CardType.CONDITION, Culture.GANDALF, "Perspective"); - } - - @Override - public List getPhaseActionsInPlay(String playerId, LotroGame game, final PhysicalCard self) { - if (PlayConditions.canUseFPCardDuringPhase(game, Phase.MANEUVER, self) - && PlayConditions.canAddThreat(game, self, 2) - && PlayConditions.canSpot(game, Race.WIZARD)) { - final ActivateCardAction action = new ActivateCardAction(self); - action.appendCost( - new AddThreatsEffect(playerId, self, 2)); - action.appendEffect( - new ChooseActiveCardEffect(self, playerId, "Choose a minion", CardType.MINION) { - @Override - protected void cardSelected(LotroGame game, PhysicalCard card) { - action.appendEffect( - new AddUntilStartOfPhaseModifierEffect( - new PlayersCantUseCardSpecialAbilitiesModifier(self, card), Phase.REGROUP)); - } - }); - return Collections.singletonList(action); - } - return null; - } -} diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set18/gandalf/Card18_026.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set18/gandalf/Card18_026.java deleted file mode 100644 index 67b4c024b..000000000 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set18/gandalf/Card18_026.java +++ /dev/null @@ -1,57 +0,0 @@ -package com.gempukku.lotro.cards.set18.gandalf; - -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.OptionalTriggerAction; -import com.gempukku.lotro.logic.cardtype.AbstractAttachableFPPossession; -import com.gempukku.lotro.logic.effects.ChooseAndWoundCharactersEffect; -import com.gempukku.lotro.logic.effects.ExertCharactersEffect; -import com.gempukku.lotro.logic.timing.EffectResult; -import com.gempukku.lotro.logic.timing.PlayConditions; -import com.gempukku.lotro.logic.timing.TriggerConditions; - -import java.util.Collections; -import java.util.List; - -/** - * Set: Treachery & Deceit - * Side: Free - * Culture: Gandalf - * Twilight Cost: 1 - * Type: Possession - * Vitality: +1 - * Resistance: +2 - * Game Text: Bearer must be a [GANDALF] Wizard. Each time you play a [GANDALF] spell, you may exert bearer to wound - * a minion. - */ -public class Card18_026 extends AbstractAttachableFPPossession { - public Card18_026() { - super(1, 0, 1, Culture.GANDALF, null, "Radagast's Herb Bag", null, true); - } - - @Override - public Filterable getValidTargetFilter(String playerId, LotroGame game, PhysicalCard self) { - return Filters.and(Culture.GANDALF, Race.WIZARD); - } - - @Override - public int getResistance() { - return 2; - } - - @Override - public List getOptionalAfterTriggers(String playerId, LotroGame game, EffectResult effectResult, PhysicalCard self) { - if (TriggerConditions.played(game, effectResult, Culture.GANDALF, Keyword.SPELL) - && PlayConditions.canExert(self, game, Filters.hasAttached(self))) { - OptionalTriggerAction action = new OptionalTriggerAction(self); - action.appendCost( - new ExertCharactersEffect(action, self, self.getAttachedTo())); - action.appendEffect( - new ChooseAndWoundCharactersEffect(action, playerId, 1, 1, CardType.MINION)); - return Collections.singletonList(action); - } - return null; - } -} diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set18/gandalf/Card18_027.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set18/gandalf/Card18_027.java deleted file mode 100644 index b0c4342e1..000000000 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set18/gandalf/Card18_027.java +++ /dev/null @@ -1,50 +0,0 @@ -package com.gempukku.lotro.cards.set18.gandalf; - -import com.gempukku.lotro.logic.cardtype.AbstractPermanent; -import com.gempukku.lotro.logic.timing.PlayConditions; -import com.gempukku.lotro.logic.timing.TriggerConditions; -import com.gempukku.lotro.logic.effects.PutCardsFromDeckIntoHandDiscardRestEffect; -import com.gempukku.lotro.logic.effects.RevealTopCardsOfDrawDeckEffect; -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.OptionalTriggerAction; -import com.gempukku.lotro.logic.timing.EffectResult; - -import java.util.Collections; -import java.util.List; - -/** - * Set: Treachery & Deceit - * Side: Free - * Culture: Gandalf - * Twilight Cost: 0 - * Type: Condition • Support Area - * Game Text: Pipeweed. Each time you play a pipeweed card, you may spot Gandalf to reveal the top 3 cards of your draw - * deck. Take all Free Peoples cards revealed into hand and discard the remaining cards. - */ -public class Card18_027 extends AbstractPermanent { - public Card18_027() { - super(Side.FREE_PEOPLE, 0, CardType.CONDITION, Culture.GANDALF, "Ship of Smoke", null, true); - addKeyword(Keyword.PIPEWEED); - } - - @Override - public List getOptionalAfterTriggers(final String playerId, final LotroGame game, EffectResult effectResult, final PhysicalCard self) { - if (TriggerConditions.played(game, effectResult, Filters.owner(playerId), Keyword.PIPEWEED) - && PlayConditions.canSpot(game, Filters.gandalf)) { - final OptionalTriggerAction action = new OptionalTriggerAction(self); - action.appendEffect( - new RevealTopCardsOfDrawDeckEffect(self, playerId, 3) { - @Override - protected void cardsRevealed(List revealedCards) { - action.appendEffect( - new PutCardsFromDeckIntoHandDiscardRestEffect(action, self, playerId, revealedCards, Side.FREE_PEOPLE)); - } - }); - return Collections.singletonList(action); - } - return null; - } -} diff --git a/gemp-lotr/gemp-lotr-cards/src/main/resources/card-stubs/set18-Gandalf.hjson b/gemp-lotr/gemp-lotr-cards/src/main/resources/cards/official/set18/set18-Gandalf.hjson similarity index 54% rename from gemp-lotr/gemp-lotr-cards/src/main/resources/card-stubs/set18-Gandalf.hjson rename to gemp-lotr/gemp-lotr-cards/src/main/resources/cards/official/set18/set18-Gandalf.hjson index 5aad02ced..d3332c502 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/resources/card-stubs/set18-Gandalf.hjson +++ b/gemp-lotr/gemp-lotr-cards/src/main/resources/cards/official/set18/set18-Gandalf.hjson @@ -24,8 +24,20 @@ strength: 2 vitality: 1 itemclass: Hand weapon - #target: a [gandalf] Man + target: culture(gandalf),man effects: [ + { + type: trigger + optional: true + trigger: { + type: winsSkirmish + filter: bearer,name(Grimbeorn) + } + effect: { + type: putCardsFromDiscardIntoHand + filter: choose(culture(gandalf)) + } + } ] gametext: Bearer must be a [gandalf] Man.
While Grimbeorn is bearing this possession, each time he wins a skirmish, you may take a [gandalf] card from your discard pile into hand. lore: No Orc or wolf dared enter the land of the Beornings. @@ -63,13 +75,26 @@ Spell Skirmish ] - effects: { type: event - cost: { - }, + requires: { + type: canSpot + filter: culture(gandalf),wizard + } effect: [ { + type: chooseActiveCards + filter: choose(minion) + text: Choose minion to lose all strength bonuses from possessions + memorize: chosenMinion + } + { + type: addModifier + modifier: { + type: cancelStrengthBonus + filter: memory(chosenMinion) + from: possession + } } ] } @@ -106,13 +131,64 @@ twilight: 3 type: Event keywords: Maneuver - effects: { type: event cost: { + type: choice + texts: [ + Exert 2 Ents + Spot a {gandalf} companion + ] + effects: [ + { + type: conditional + requires: { + type: location + filter: or(regionNumber(1),regionNumber(2)) + } + effect: { + type: exert + filter: choose(ent) + count: 2 + } + } + { + type: conditional + requires: { + type: location + filter: regionNumber(3) + } + effect: { + type: spot + filter: culture(gandalf),companion + } + } + ] }, effect: [ { + type: conditional + requires: { + type: location + filter: or(regionNumber(1),regionNumber(2)) + } + effect: { + type: addKeyword + filter: choose(ent) + keyword: defender + amount: 1 + until: regroup + } + } + { + type: conditional + requires: { + type: location + filter: regionNumber(3) + } + effect: { + type: drawCards + } } ] } @@ -150,6 +226,35 @@ type: Condition keywords: Support Area effects: [ + { + type: activated + phase: fellowship + cost: { + type: exert + filter: choose(culture(gandalf),man) + } + effect: { + type: addTokens + count: 2 + culture: gandalf + filter: self + } + } + { + type: activated + phase: skirmish + cost: { + type: removeTokens + count: 3 + culture: gandalf + filter: self + } + effect: { + type: modifyStrength + filter: choose(companion) + amount: 3 + } + } ] gametext: Fellowship: Exert a [gandalf] Man to add 2 [gandalf] tokens here.
Skirmish: Remove 3 [gandalf] tokens from here to make a companion strength +3. lore: To give his people time to escape, Brand stood against the Mordor army until he was slain. His friend, the dwarf Dáin Ironfoot, stood over him until he too was slain. @@ -189,6 +294,43 @@ vitality: 3 resistance: 5 effects: [ + { + type: modifier + modifier: { + type: modifyStrength + requires: { + type: canSpotCultureTokens + culture: gandalf + amount: 2 + } + filter: your,culture(gandalf),man + amount: 2 + } + } + { + type: activated + phase: regroup + cost: { + type: discard + filter: choose(follower) + } + effect: { + type: choice + texts: [ + Draw a card + Take a {gandalf} skirmish event from discard to hand + ] + effects: [ + { + type: drawCards + } + { + type: putCardsFromDiscardIntoHand + filter: choose(culture(gandalf),skirmish,event) + } + ] + } + } ] gametext: While you can spot 2 [gandalf] tokens, each of your [gandalf] Men is strength +2.
Regroup: Discard a follower from play to choose one: draw a card; or take a [gandalf] skirmish event from your discard pile into hand. lore: A guide through books and scrolls from floor to ceiling. @@ -226,13 +368,20 @@ Spell Maneuver ] - effects: { type: event - cost: { - }, + requires: { + type: canSpot + filter: pipeweed + count: 2 + } effect: [ { + type: removeBurdens + amount: { + type: forEachYouCanSpot + filter: culture(gandalf),wizard + } } ] } @@ -273,6 +422,42 @@ Support Area ] effects: [ + { + type: extraCost + cost: { + type: exert + filter: choose(name(Gandalf)) + } + } + { + type: trigger + trigger: { + type: played + player: you + filter: self + } + effect: { + type: removeTwilight + amount: 3 + } + } + { + type: trigger + trigger: { + type: startOfPhase + phase: maneuver + } + effect: [ + { + type: addTwilight + amount: 4 + } + { + type: removeFromTheGame + filter: self + } + ] + } ] gametext: Spell. To play, exert Gandalf.
When you play this condition, remove (3).
At the start of the maneuver phase, add (4) and remove this condition from the game. lore: All we have to decide is what to do with the time that is given to us. @@ -308,6 +493,33 @@ type: Condition keywords: Support Area effects: [ + { + type: activated + phase: maneuver + cost: [ + { + type: addThreats + amount: 2 + } + { + type: spot + filter: choose(minion) + memorize: spottedMinion + } + ] + requires: { + type: canSpot + filter: wizard + } + effect: { + type: addModifier + modifier: { + type: cantPlaySpecialAbilities + filter: memory(spottedMinion) + } + until: regroup + } + } ] gametext: Maneuver: Add 2 threats and spot a Wizard to spot a minion in play. That minion cannot use special abilities until the regroup phase. lore: Hobbits really are amazing creatures! You can learn all that there is to know about their ways in a month, and yet after a hundred years, they can still surprise you. @@ -343,8 +555,25 @@ type: Possession vitality: 1 resistance: 2 - #target: a [gandalf] Wizard + target: culture(gandalf),wizard effects: [ + { + type: trigger + optional: true + trigger: { + type: played + player: you + filter: culture(gandalf),spell + } + cost: { + type: exert + filter: bearer + } + effect: { + type: wound + filter: choose(minion) + } + } ] gametext: Bearer must be a [gandalf] Wizard.
Each time you play a [gandalf] spell, you may exert bearer to wound a minion. lore: The tools of a master of herb and beast-lore were often confined to the simplest of places. @@ -383,6 +612,34 @@ Support Area ] effects: [ + { + type: trigger + optional: true + trigger: { + type: played + player: you + filter: pipeweed + } + requires: { + type: canSpot + filter: name(Gandalf) + } + effect: [ + { + type: revealTopCardsOfDrawDeck + count: 3 + memorize: revealedCards + } + { + type: putCardsFromDeckIntoHand + filter: all(memory(revealedCards),side(free people)) + } + { + type: discardCardsFromDrawDeck + filter: all(memory(revealedCards),not(side(free people))) + } + ] + } ] gametext: Pipeweed.
Each time you play a pipeweed card, you may spot Gandalf to reveal the top 3 cards of your draw deck. Take all Free Peoples cards revealed into hand and discard the remaining cards. lore: Old Toby. The finest weed in the Southfarthing. diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/modifiers/CancelStrengthBonusSourceModifier.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/modifiers/CancelStrengthBonusSourceModifier.java deleted file mode 100644 index 4d20e2f61..000000000 --- a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/modifiers/CancelStrengthBonusSourceModifier.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.gempukku.lotro.logic.modifiers; - -import com.gempukku.lotro.common.Filterable; -import com.gempukku.lotro.game.PhysicalCard; -import com.gempukku.lotro.game.state.LotroGame; - -public class CancelStrengthBonusSourceModifier extends AbstractModifier { - public CancelStrengthBonusSourceModifier(PhysicalCard source, Filterable affectFilter) { - super(source, "Cancel strength bonus", affectFilter, ModifierEffect.STRENGTH_BONUS_SOURCE_MODIFIER); - } - - public CancelStrengthBonusSourceModifier(PhysicalCard source, Condition condition, Filterable affectFilter) { - super(source, "Cancel strength bonus", affectFilter, condition, ModifierEffect.STRENGTH_BONUS_SOURCE_MODIFIER); - } - - @Override - public boolean appliesStrengthBonusModifier(LotroGame game, PhysicalCard modifierSource, PhysicalCard modifierTaget) { - return false; - } -} diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/modifiers/CancelStrengthBonusTargetModifier.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/modifiers/CancelStrengthBonusTargetModifier.java index 892da9dd8..15ebcc267 100644 --- a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/modifiers/CancelStrengthBonusTargetModifier.java +++ b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/modifiers/CancelStrengthBonusTargetModifier.java @@ -14,7 +14,7 @@ public class CancelStrengthBonusTargetModifier extends AbstractModifier { } public CancelStrengthBonusTargetModifier(PhysicalCard source, Condition condition, Filterable affectFilter, Filterable sourceFilter) { - super(source, "Has some strength bonuses cancelled", affectFilter, condition, ModifierEffect.STRENGTH_BONUS_TARGET_MODIFIER); + super(source, "Has some strength bonuses cancelled", affectFilter, condition, ModifierEffect.STRENGTH_BONUS_MODIFIER); _sourceFilter = Filters.changeToFilter(sourceFilter); } diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/modifiers/ModifierEffect.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/modifiers/ModifierEffect.java index 84935d40a..bcc501e82 100644 --- a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/modifiers/ModifierEffect.java +++ b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/modifiers/ModifierEffect.java @@ -3,8 +3,7 @@ package com.gempukku.lotro.logic.modifiers; public enum ModifierEffect { SIGNET_MODIFIER, STRENGTH_MODIFIER, SKIRMISH_STRENGTH_EVALUATOR_MODIFIER, - STRENGTH_BONUS_SOURCE_MODIFIER, - STRENGTH_BONUS_TARGET_MODIFIER, + STRENGTH_BONUS_MODIFIER, VITALITY_MODIFIER, RESISTANCE_MODIFIER, SITE_NUMBER_MODIFIER, TWILIGHT_COST_MODIFIER, OVERWHELM_MODIFIER, WOUND_MODIFIER, BURDEN_MODIFIER, THREAT_MODIFIER, PRESENCE_MODIFIER, ARCHERY_MODIFIER, MOVE_LIMIT_MODIFIER, ACTION_MODIFIER, ASSIGNMENT_MODIFIER, DISCARD_FROM_PLAY_MODIFIER, DISCARD_NOT_FROM_PLAY, diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/modifiers/ModifiersLogic.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/modifiers/ModifiersLogic.java index 2ce0cdcb2..6ecf056a1 100644 --- a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/modifiers/ModifiersLogic.java +++ b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/modifiers/ModifiersLogic.java @@ -419,16 +419,10 @@ public class ModifiersLogic implements ModifiersEnvironment, ModifiersQuerying { @Override public boolean appliesStrengthBonusModifier(LotroGame game, PhysicalCard modifierSource, PhysicalCard modifierTarget) { - if (modifierSource != null) - for (Modifier modifier : getModifiersAffectingCard(game, ModifierEffect.STRENGTH_BONUS_SOURCE_MODIFIER, modifierSource)) { - if (!modifier.appliesStrengthBonusModifier(game, modifierSource, modifierTarget)) - return false; - } - if (modifierTarget != null) - for (Modifier modifier : getModifiersAffectingCard(game, ModifierEffect.STRENGTH_BONUS_TARGET_MODIFIER, modifierTarget)) { - if (!modifier.appliesStrengthBonusModifier(game, modifierSource, modifierTarget)) - return false; - } + for (Modifier modifier : getModifiersAffectingCard(game, ModifierEffect.STRENGTH_BONUS_MODIFIER, modifierTarget)) { + if (!modifier.appliesStrengthBonusModifier(game, modifierSource, modifierTarget)) + return false; + } return true; }