From 510c447bfd2494891e91cfcf1a3fa34a7ce9c094 Mon Sep 17 00:00:00 2001 From: PhallenCassidy Date: Fri, 21 Oct 2016 12:10:39 -0400 Subject: [PATCH] "Bert," "Tom," "William," and "Troll Knife" --- .../lotro/cards/set22/troll/Card22_64.java | 68 ++++++++++++++++++ .../lotro/cards/set22/troll/Card22_66.java | 71 +++++++++++++++++++ .../lotro/cards/set22/troll/Card22_68.java | 42 +++++++++++ .../lotro/cards/set22/troll/Card22_69.java | 71 +++++++++++++++++++ 4 files changed, 252 insertions(+) create mode 100644 gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set22/troll/Card22_64.java create mode 100644 gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set22/troll/Card22_66.java create mode 100644 gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set22/troll/Card22_68.java create mode 100644 gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set22/troll/Card22_69.java diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set22/troll/Card22_64.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set22/troll/Card22_64.java new file mode 100644 index 000000000..1e466d9b7 --- /dev/null +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set22/troll/Card22_64.java @@ -0,0 +1,68 @@ +package com.gempukku.lotro.cards.set22.troll; + +import com.gempukku.lotro.cards.AbstractMinion; +import com.gempukku.lotro.cards.PlayConditions; +import com.gempukku.lotro.cards.TriggerConditions; +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.modifiers.TwilightCostModifier; +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: Troll + * Twilight Cost: 5 + * Type: Minion • Troll + * Strength: 11 + * Vitality: 4 + * Site: 2 + * Game Text: Fierce. To play, discard an Orc. The twilight cost of each Troll is -2. Each time the Free Peoples + * player discards a condition, you may discard an ally. + */ +public class Card22_64 extends AbstractMinion { + public Card22_64() { + super(5, 11, 4, 2, Race.TROLL, Culture.TROLL, "Bert", "Troll of Ettenmoors", true); + addKeyword(Keyword.FIERCE); + } + + @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.canDiscardFromPlay(self, game, Race.ORC); + } + + @Override + public PlayPermanentAction getPlayCardAction(String playerId, LotroGame game, PhysicalCard self, int twilightModifier, boolean ignoreRoamingPenalty) { + final PlayPermanentAction playCardAction = super.getPlayCardAction(playerId, game, self, twilightModifier, ignoreRoamingPenalty); + playCardAction.appendCost( + new ChooseAndDiscardCardsFromPlayEffect(playCardAction, playerId, 1, 1, Race.ORC)); + return playCardAction; + } + + @Override + public List getAlwaysOnModifiers(LotroGame game, PhysicalCard self) { + return Collections.singletonList( + new TwilightCostModifier(self, Race.TROLL, -2)); + } + + @Override + public List getOptionalAfterTriggers(String playerId, LotroGame game, EffectResult effectResult, PhysicalCard self) { + if (TriggerConditions.isGettingDiscarded(effect, game, CardType.CONDITION)) { + OptionalTriggerAction action = new OptionalTriggerAction(self); + action.appendEffect( + new ChooseAndDiscardCardsFromPlayEffect(action, playerId, 1, 1, CardType.ALLY)); + 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/set22/troll/Card22_66.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set22/troll/Card22_66.java new file mode 100644 index 000000000..22d2494e5 --- /dev/null +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set22/troll/Card22_66.java @@ -0,0 +1,71 @@ +package com.gempukku.lotro.cards.set22.troll; + +import com.gempukku.lotro.cards.AbstractMinion; +import com.gempukku.lotro.cards.PlayConditions; +import com.gempukku.lotro.cards.TriggerConditions; +import com.gempukku.lotro.cards.effects.AddUntilStartOfPhaseModifierEffect; +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.modifiers.StrengthModifier; +import com.gempukku.lotro.logic.modifiers.TwilightCostModifier; +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: Troll + * Twilight Cost: 5 + * Type: Minion • Troll + * Strength: 11 + * Vitality: 4 + * Site: 2 + * Game Text: Fierce. To play, discard an Orc. The twilight cost of each Troll is -2. Each time a companion loses + * a skirmish, each Troll is strength +1 until the regroup phase. + */ +public class Card22_66 extends AbstractMinion { + public Card22_66() { + super(5, 11, 4, 2, Race.TROLL, Culture.TROLL, "Tom", "Troll of Ettenmoors", true); + addKeyword(Keyword.FIERCE); + } + + @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.canDiscardFromPlay(self, game, Race.ORC); + } + + @Override + public PlayPermanentAction getPlayCardAction(String playerId, LotroGame game, PhysicalCard self, int twilightModifier, boolean ignoreRoamingPenalty) { + final PlayPermanentAction playCardAction = super.getPlayCardAction(playerId, game, self, twilightModifier, ignoreRoamingPenalty); + playCardAction.appendCost( + new ChooseAndDiscardCardsFromPlayEffect(playCardAction, playerId, 1, 1, Race.ORC)); + return playCardAction; + } + + @Override + public List getAlwaysOnModifiers(LotroGame game, PhysicalCard self) { + return Collections.singletonList( + new TwilightCostModifier(self, Race.TROLL, -2)); + } + + @Override + public List getRequiredAfterTriggers(LotroGame game, EffectResult effectResult, PhysicalCard self) { + (TriggerConditions.losesSkirmish(game, effectResult, CardType.COMPANION)) { + RequiredTriggerAction action = new RequiredTriggerAction(self); + action.appendEffect( + new AddUntilStartOfPhaseModifierEffect( + new StrengthModifier(self, Race.TROLL, 1), Phase.REGROUP)); + 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/set22/troll/Card22_68.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set22/troll/Card22_68.java new file mode 100644 index 000000000..548ffbd20 --- /dev/null +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set22/troll/Card22_68.java @@ -0,0 +1,42 @@ +package com.gempukku.lotro.cards.set22.troll; + +import com.gempukku.lotro.cards.AbstractAttachable; +import com.gempukku.lotro.common.*; +import com.gempukku.lotro.filters.Filter; +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.KeywordModifier; +import com.gempukku.lotro.logic.modifiers.Modifier; +import com.gempukku.lotro.logic.modifiers.StrengthModifier; + +import java.util.LinkedList; +import java.util.List; + +/** + * Set: The Short Rest + * Side: Shadow + * Culture: Troll + * Twilight Cost: 1 + * Type: Possession • Hand Weapon + * Strength: +3 + * Game Text: Bearer must be a Troll. Bearer is damage +1. + */ +public class Card22_68 extends AbstractAttachable { + public Card22_68() { + super(Side.SHADOW, CardType.POSSESSION, 1, Culture.TROLL, PossessionClass.HAND_WEAPON, "Troll Knife"); + } + + @Override + protected Filter getValidTargetFilter(String playerId, LotroGame game, PhysicalCard self) { + return Race.TROLL; + } + + @Override + public List getAlwaysOnModifiers(LotroGame game, PhysicalCard self) { + List modifiers = new LinkedList(); + modifiers.add(new StrengthModifier(self, Filters.hasAttached(self), 3)); + modifiers.add(new KeywordModifier(self, Filters.hasAttached(self), Keyword.DAMAGE)); + return modifiers; + } +} \ No newline at end of file diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set22/troll/Card22_69.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set22/troll/Card22_69.java new file mode 100644 index 000000000..bdf3ff3da --- /dev/null +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set22/troll/Card22_69.java @@ -0,0 +1,71 @@ +package com.gempukku.lotro.cards.set22.troll; + +import com.gempukku.lotro.cards.AbstractMinion; +import com.gempukku.lotro.cards.PlayConditions; +import com.gempukku.lotro.cards.TriggerConditions; +import com.gempukku.lotro.cards.effects.AddUntilStartOfPhaseModifierEffect; +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.modifiers.StrengthModifier; +import com.gempukku.lotro.logic.modifiers.TwilightCostModifier; +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: Troll + * Twilight Cost: 5 + * Type: Minion • Troll + * Strength: 11 + * Vitality: 4 + * Site: 2 + * Game Text: Fierce. To play, discard an Orc. The twilight cost of each Troll is -2. Each time the Free Peoples + * player transfers a follower, you may discard a hand weapon. + */ +public class Card22_69 extends AbstractMinion { + public Card22_69() { + super(5, 11, 4, 2, Race.TROLL, Culture.TROLL, "William", "Troll of Ettenmoors", true); + addKeyword(Keyword.FIERCE); + } + + @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.canDiscardFromPlay(self, game, Race.ORC); + } + + @Override + public PlayPermanentAction getPlayCardAction(String playerId, LotroGame game, PhysicalCard self, int twilightModifier, boolean ignoreRoamingPenalty) { + final PlayPermanentAction playCardAction = super.getPlayCardAction(playerId, game, self, twilightModifier, ignoreRoamingPenalty); + playCardAction.appendCost( + new ChooseAndDiscardCardsFromPlayEffect(playCardAction, playerId, 1, 1, Race.ORC)); + return playCardAction; + } + + @Override + public List getAlwaysOnModifiers(LotroGame game, PhysicalCard self) { + return Collections.singletonList( + new TwilightCostModifier(self, Race.TROLL, -2)); + } + + @Override + public List getOptionalAfterTriggers(String playerId, LotroGame game, EffectResult effectResult, PhysicalCard self) { + final String firstShadowPlayer = GameUtils.getFirstShadowPlayer(game); + if (TriggerConditions.transferredCard(game, effectResult, CardType.FOLLOWER, null, Filters.character)) { + OptionalTriggerAction action = new OptionalTriggerAction(self); + action.appendEffect( + new ChooseAndDiscardCardsFromPlayEffect(action, playerId, 1, 1, PossessionClass.HAND_WEAPON)); + return Collections.singletonList(action); + } + return null; + } +} \ No newline at end of file