diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set31/gollum/Card31_020.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set31/gollum/Card31_020.java new file mode 100644 index 000000000..74a6d4efc --- /dev/null +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set31/gollum/Card31_020.java @@ -0,0 +1,81 @@ +package com.gempukku.lotro.cards.set31.gollum; + +import com.gempukku.lotro.cards.AbstractMinion; +import com.gempukku.lotro.cards.PlayConditions; +import com.gempukku.lotro.cards.TriggerConditions; +import com.gempukku.lotro.cards.effects.AddBurdenEffect; +import com.gempukku.lotro.cards.effects.AddUntilEndOfPhaseModifierEffect; +import com.gempukku.lotro.cards.effects.SelfExertEffect; +import com.gempukku.lotro.cards.effects.choose.ChooseAndAssignCharacterToMinionEffect; +import com.gempukku.lotro.cards.effects.choose.ChooseAndExertCharactersEffect; +import com.gempukku.lotro.common.*; +import com.gempukku.lotro.filters.Filters; +import com.gempukku.lotro.game.PhysicalCard; +import com.gempukku.lotro.game.state.GameState; +import com.gempukku.lotro.game.state.LotroGame; +import com.gempukku.lotro.logic.actions.ActivateCardAction; +import com.gempukku.lotro.logic.actions.OptionalTriggerAction; +import com.gempukku.lotro.logic.effects.ChooseActiveCardEffect; +import com.gempukku.lotro.logic.modifiers.Modifier; +import com.gempukku.lotro.logic.modifiers.ModifiersQuerying; +import com.gempukku.lotro.logic.modifiers.StrengthModifier; +import com.gempukku.lotro.logic.modifiers.evaluator.Evaluator; +import com.gempukku.lotro.logic.timing.Action; +import com.gempukku.lotro.logic.timing.EffectResult; + +import java.util.Collections; +import java.util.List; + +/** + * Set: The Short Rest + * Side: Shadow + * Culture: Gollum + * Twilight Cost: 2 + * Type: Minion + * Strength: 5 + * Vitality: 4 + * Site: 4 + * Game Text: Each times Gollum wins a skirmish, you may add a doubt. Assignment: If Gollum is not roaming, + * exert Gollum and assign him to Bilbo to make Gollum strength +1 (or +3 if at an underground site) until + * the regroup phase. + */ +public class Card31_020 extends AbstractMinion { + public Card31_020() { + super(2, 5, 4, 4, null, Culture.GOLLUM, "Gollum", "Small Slimy Creature", true); + } + + @Override + public List getOptionalAfterTriggers(String playerId, LotroGame game, EffectResult effectResult, PhysicalCard self) { + if (TriggerConditions.winsSkirmish(game, effectResult, self)) { + OptionalTriggerAction action = new OptionalTriggerAction(self); + action.appendEffect( + new AddBurdenEffect(self.getOwner(), self, 1)); + return Collections.singletonList(action); + } + return null; + } + + @Override + protected List getExtraPhaseActions(final String playerId, LotroGame game, final PhysicalCard self) { + if (PlayConditions.canUseShadowCardDuringPhase(game, Phase.ASSIGNMENT, self, 0) + && PlayConditions.canExert(self, game, self) + && !PlayConditions.canSpot(game, self, Keyword.ROAMING)) { + final ActivateCardAction action = new ActivateCardAction(self); + action.appendCost(new SelfExertEffect(action, self)); + action.appendCost( + new ChooseAndAssignCharacterToMinionEffect(action, playerId, self, Filters.name("Bilbo"))); + action.appendEffect( + new ChooseActiveCardEffect(self, playerId, "Gollum", Filters.name("Gollum")) { + @Override + protected void cardSelected(LotroGame game, PhysicalCard card) { + int bonus = game.getModifiersQuerying().hasKeyword(game.getGameState(), game.getGameState().getCurrentSite(), Keyword.UNDERGROUND) ? 3 : 1; + action.insertEffect( + new AddUntilEndOfPhaseModifierEffect( + new StrengthModifier(self, Filters.sameCard(card), bonus))); + } + }); + return Collections.singletonList(action); + } + return null; + } +} \ No newline at end of file diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set31/gollum/Card31_021.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set31/gollum/Card31_021.java new file mode 100644 index 000000000..5bcd482a4 --- /dev/null +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set31/gollum/Card31_021.java @@ -0,0 +1,79 @@ +package com.gempukku.lotro.cards.set31.gollum; + +import com.gempukku.lotro.cards.AbstractEvent; +import com.gempukku.lotro.cards.PlayConditions; +import com.gempukku.lotro.cards.TriggerConditions; +import com.gempukku.lotro.cards.effects.AddBurdenEffect; +import com.gempukku.lotro.cards.actions.PlayEventAction; +import com.gempukku.lotro.cards.effects.AddUntilEndOfPhaseActionProxyEffect; +import com.gempukku.lotro.cards.effects.AddUntilEndOfPhaseModifierEffect; +import com.gempukku.lotro.cards.effects.choose.ChooseAndExertCharactersEffect; +import com.gempukku.lotro.common.*; +import com.gempukku.lotro.filters.Filters; +import com.gempukku.lotro.game.AbstractActionProxy; +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.ChooseActiveCardEffect; +import com.gempukku.lotro.logic.modifiers.StrengthModifier; +import com.gempukku.lotro.logic.timing.Action; +import com.gempukku.lotro.logic.timing.EffectResult; + + +import java.util.Collections; +import java.util.List; + +/** + * Set: The Short Rest + * Side: Shadow + * Culture: Gollum + * Twilight Cost: 1 + * Type: Event • Skirmish + * Game Text: You may exert Gollum twice to play this event from your discard pile. Make a minion strength +2. If + * that minion wins this skirmish, you may add a doubt. + */ +public class Card31_021 extends AbstractEvent { + public Card31_021() { + super(Side.SHADOW, 1, Culture.GOLLUM, "If He Loses", Phase.SKIRMISH); + } + + @Override + public PlayEventAction getPlayCardAction(String playerId, LotroGame game, PhysicalCard self, int twilightModifier, boolean ignoreRoamingPenalty) { + final PlayEventAction action = new PlayEventAction(self); + action.appendEffect(new ChooseActiveCardEffect(self, playerId, "Choose a minion", CardType.MINION) { + @Override + protected void cardSelected(LotroGame game, final PhysicalCard card) { + action.appendEffect(new AddUntilEndOfPhaseModifierEffect(new StrengthModifier(self, card, 2))); + action.appendEffect( + new AddUntilEndOfPhaseActionProxyEffect(new AbstractActionProxy() { + @Override + public List getOptionalAfterTriggers(String playerId, LotroGame game, EffectResult effectResult) { + if (TriggerConditions.winsSkirmish(game, effectResult, card) + && playerId.equals(card.getOwner())) { + OptionalTriggerAction action = new OptionalTriggerAction(self); + action.setVirtualCardAction(true); + action.appendEffect( + new AddBurdenEffect(self.getOwner(), self, 1)); + return Collections.singletonList(action); + } + return null; + } + })); + } + }); + return action; + } + + @Override + public List getPhaseActionsFromDiscard(String playerId, LotroGame game, final PhysicalCard self) { + if (PlayConditions.isPhase(game, Phase.SKIRMISH) + && PlayConditions.canExert(self, game, 2, Filters.name("Gollum")) + && PlayConditions.canPlayFromDiscard(playerId, game, self)) { + final PlayEventAction playCardAction = getPlayCardAction(playerId, game, self, 0, false); + playCardAction.appendCost( + new ChooseAndExertCharactersEffect(playCardAction, playerId, 1, 1, 2, Filters.name("Gollum"))); + return Collections.singletonList(playCardAction); + } + return null; + } +} diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set31/gollum/Card31_022.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set31/gollum/Card31_022.java new file mode 100644 index 000000000..ddf8f41ee --- /dev/null +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set31/gollum/Card31_022.java @@ -0,0 +1,86 @@ +package com.gempukku.lotro.cards.set31.gollum; + +import com.gempukku.lotro.cards.AbstractPermanent; +import com.gempukku.lotro.cards.PlayConditions; +import com.gempukku.lotro.cards.TriggerConditions; +import com.gempukku.lotro.cards.actions.PlayPermanentAction; +import com.gempukku.lotro.cards.effects.PreventableEffect; +import com.gempukku.lotro.cards.effects.choose.ChooseAndExertCharactersEffect; +import com.gempukku.lotro.cards.effects.choose.ChooseAndDiscardCardsFromPlayEffect; +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.actions.OptionalTriggerAction; +import com.gempukku.lotro.logic.actions.RequiredTriggerAction; +import com.gempukku.lotro.logic.actions.SubAction; +import com.gempukku.lotro.logic.effects.AddTwilightEffect; +import com.gempukku.lotro.logic.effects.ChooseAndDiscardCardsFromHandEffect; +import com.gempukku.lotro.logic.timing.Effect; +import com.gempukku.lotro.logic.timing.EffectResult; +import com.gempukku.lotro.logic.timing.UnrespondableEffect; + +import java.util.Collections; +import java.util.List; + +/** + * Set: The Short Rest + * Side: Shadow + * Culture: Gollum + * Twilight Cost: 2 + * Type: Condition + * Game Text: Each time the fellowship moves, add (2). Response: If Bilbo exerts or takes a wound, exert + * a minion and discard a card from hand to discard a [SHIRE] card (except Bilbo). The Free Peoples player + * may discard 2 cards from hand to prevent this. + */ +public class Card31_022 extends AbstractPermanent { + public Card31_022() { + super(Side.SHADOW, 2, CardType.CONDITION, Culture.GOLLUM, Zone.SUPPORT, "Riddles in the Dark", null, true); + } + + @Override + public List getRequiredAfterTriggers(LotroGame game, EffectResult effectResult, PhysicalCard self) { + if (TriggerConditions.moves(game, effectResult)) { + RequiredTriggerAction action = new RequiredTriggerAction(self); + action.appendEffect( + new AddTwilightEffect(self, 2)); + return Collections.singletonList(action); + } + return null; + } + + @Override + public List getOptionalInPlayAfterActions(final String playerId, final LotroGame game, EffectResult effectResult, final PhysicalCard self) { + if (TriggerConditions.forEachExerted(game, effectResult, Filters.name("Bilbo")) || TriggerConditions.forEachWounded(game, effectResult, Filters.name("Bilbo"))) { + final ActivateCardAction action = new ActivateCardAction(self); + action.appendCost( + new ChooseAndExertCharactersEffect(action, playerId, 1, 1, CardType.MINION)); + action.appendCost( + new ChooseAndDiscardCardsFromHandEffect(action, playerId, true, 1, 1)); + action.appendEffect( + new PreventableEffect(action, + new UnrespondableEffect() { + @Override + public String getText(LotroGame game) { + return "Choose a SHIRE card"; + } + + @Override + protected void doPlayEffect(LotroGame game) { + action.appendEffect( + new ChooseAndDiscardCardsFromPlayEffect(action, playerId, 1, 1, Culture.SHIRE)); + } + }, Collections.singletonList(game.getGameState().getCurrentPlayerId()), + new PreventableEffect.PreventionCost() { + @Override + public Effect createPreventionCostForPlayer(SubAction subAction, String playerId) { + return new ChooseAndDiscardCardsFromHandEffect(subAction, playerId, true, 2, 2); + } + } + )); + return Collections.singletonList(action); + } + return null; + } +} \ No newline at end of file