From aee9fa684b3910fc4d888dab23d27358ed5e6819 Mon Sep 17 00:00:00 2001 From: PhallenCassidy Date: Fri, 6 Jan 2017 10:13:03 -0500 Subject: [PATCH] The Short Rest: Spider culture --- .../lotro/cards/set31/spider/Card31_058.java | 82 +++++++++++++++++++ .../lotro/cards/set31/spider/Card31_059.java | 58 +++++++++++++ .../lotro/cards/set31/spider/Card31_060.java | 66 +++++++++++++++ .../lotro/cards/set31/spider/Card31_061.java | 50 +++++++++++ .../lotro/cards/set31/spider/Card31_062.java | 78 ++++++++++++++++++ .../lotro/cards/set31/spider/Card31_063.java | 63 ++++++++++++++ 6 files changed, 397 insertions(+) create mode 100644 gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set31/spider/Card31_058.java create mode 100644 gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set31/spider/Card31_059.java create mode 100644 gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set31/spider/Card31_060.java create mode 100644 gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set31/spider/Card31_061.java create mode 100644 gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set31/spider/Card31_062.java create mode 100644 gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set31/spider/Card31_063.java diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set31/spider/Card31_058.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set31/spider/Card31_058.java new file mode 100644 index 000000000..a2704c45f --- /dev/null +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set31/spider/Card31_058.java @@ -0,0 +1,82 @@ +package com.gempukku.lotro.cards.set31.spider; + +import com.gempukku.lotro.cards.AbstractPermanent; +import com.gempukku.lotro.cards.PlayConditions; +import com.gempukku.lotro.cards.TriggerConditions; +import com.gempukku.lotro.cards.effects.ChoiceEffect; +import com.gempukku.lotro.cards.effects.SelfDiscardEffect; +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.LotroGame; +import com.gempukku.lotro.logic.actions.ActivateCardAction; +import com.gempukku.lotro.logic.actions.RequiredTriggerAction; +import com.gempukku.lotro.logic.effects.DrawCardsEffect; +import com.gempukku.lotro.logic.timing.Action; +import com.gempukku.lotro.logic.timing.Effect; +import com.gempukku.lotro.logic.timing.EffectResult; +import com.gempukku.lotro.logic.timing.results.PlayCardResult; + +import java.util.Collections; +import java.util.LinkedList; +import java.util.List; + +/** + * Set: The Short Rest + * Side: Shadow + * Culture: Spider + * Twilight Cost: 2 + * Type: Condition • Support Area + * Game Text: Each time a companion or a follower is played at site 5, the Free Peoples player must exert + * 2 [DWARVEN] companions. Shadow: Discard this condition or exert 3 Spiders to draw 3 cards. + */ +public class Card31_058 extends AbstractPermanent { + public Card31_058() { + super(Side.SHADOW, 2, CardType.CONDITION, Culture.SPIDER, Zone.SUPPORT, "Enchanted River", null, true); + } + + @Override + public List getRequiredAfterTriggers(LotroGame game, EffectResult effectResult, PhysicalCard self) { + if (TriggerConditions.played(game, effectResult, Filters.or(CardType.COMPANION, CardType.FOLLOWER)) + && game.getGameState().getCurrentSiteNumber() == 5 && game.getGameState().getCurrentSiteBlock() == Block.HOBBIT) { + PlayCardResult playCardResult = (PlayCardResult) effectResult; + RequiredTriggerAction action = new RequiredTriggerAction(self); + action.appendEffect( + new ChooseAndExertCharactersEffect(action, game.getGameState().getCurrentPlayerId(), 2, 2, CardType.COMPANION, Culture.DWARVEN)); + return Collections.singletonList(action); + } + return null; + } + + + @Override + protected List getExtraPhaseActions(String playerId, LotroGame game, PhysicalCard self) { + if (PlayConditions.canUseShadowCardDuringPhase(game, Phase.SHADOW, self, 0)) { + ActivateCardAction action = new ActivateCardAction(self); + List possibleCosts = new LinkedList(); + possibleCosts.add( + new SelfDiscardEffect(self) { + @Override + public String getText(LotroGame game) { + return "Discard this condition"; + } + }); + possibleCosts.add( + new ChooseAndExertCharactersEffect(action, playerId, 3, 3, Race.SPIDER) { + @Override + public String getText(LotroGame game) { + return "Exert 3 Spiders"; + } + }); + action.appendCost( + new ChoiceEffect(action, playerId, possibleCosts)); + action.appendEffect( + new DrawCardsEffect(action, playerId, 3)); + action.appendEffect( + new SelfDiscardEffect(self)); + 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/spider/Card31_059.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set31/spider/Card31_059.java new file mode 100644 index 000000000..17d87974b --- /dev/null +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set31/spider/Card31_059.java @@ -0,0 +1,58 @@ +package com.gempukku.lotro.cards.set31.spider; + +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.SelfDiscardEffect; +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.modifiers.ModifiersQuerying; +import com.gempukku.lotro.logic.timing.EffectResult; +import com.gempukku.lotro.logic.timing.Action; + +import java.util.Collections; +import java.util.List; + +/** + * Set: The Short Rest + * Side: Shadow + * Culture: Spider + * Twilight Cost: 3 + * Type: Minion • Spider + * Strength: 8 + * Vitality: 2 + * Site: 5 + * Game Text: Fierce. The twilight cost of this minion is -1 for each doubt. Regroup: Discard this minion + * to add a doubt. + */ +public class Card31_059 extends AbstractMinion { + public Card31_059() { + super(3, 8, 2, 5, Race.SPIDER, Culture.SPIDER, "Fat Spider"); + addKeyword(Keyword.FIERCE); + } + + @Override + public int getTwilightCostModifier(GameState gameState, ModifiersQuerying modifiersQuerying, PhysicalCard self) { + return -gameState.getBurdens(); + } + + @Override + protected List getExtraPhaseActions(String playerId, LotroGame game, PhysicalCard self) { + if (PlayConditions.canUseShadowCardDuringPhase(game, Phase.REGROUP, self, 0) + && PlayConditions.canSelfDiscard(self, game)) { + ActivateCardAction action = new ActivateCardAction(self); + action.appendCost( + new SelfDiscardEffect(self)); + action.appendEffect( + new AddBurdenEffect(self.getOwner(), self, 1)); + 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/spider/Card31_060.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set31/spider/Card31_060.java new file mode 100644 index 000000000..d746cb2d7 --- /dev/null +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set31/spider/Card31_060.java @@ -0,0 +1,66 @@ +package com.gempukku.lotro.cards.set31.spider; + +import com.gempukku.lotro.cards.AbstractMinion; +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.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.GameState; +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.modifiers.KeywordModifier; +import com.gempukku.lotro.logic.modifiers.ModifiersQuerying; +import com.gempukku.lotro.logic.timing.EffectResult; +import com.gempukku.lotro.logic.timing.Action; + +import java.util.Collections; +import java.util.List; + +/** + * Set: The Short Rest + * Side: Shadow + * Culture: Spider + * Twilight Cost: 4 + * Type: Minion • Spider + * Strength: 9 + * Vitality: 2 + * Site: 5 + * Game Text: Fierce. The twilight cost of this minion is -1 for each Orc you spot. Skirmish: Discard an + * Orc to make a Spider damage +1. + */ +public class Card31_060 extends AbstractMinion { + public Card31_060() { + super(4, 9, 2, 5, Race.SPIDER, Culture.SPIDER, "Lazy Lob", null, true); + addKeyword(Keyword.FIERCE); + } + + @Override + public int getTwilightCostModifier(GameState gameState, ModifiersQuerying modifiersQuerying, PhysicalCard self) { + return -Filters.countActive(gameState, modifiersQuerying, Race.ORC); + } + + @Override + protected List getExtraPhaseActions(String playerId, LotroGame game, PhysicalCard self) { + if (PlayConditions.canUseShadowCardDuringPhase(game, Phase.SKIRMISH, self, 0) + && PlayConditions.canDiscardFromPlay(self, game, Race.ORC)) { + ActivateCardAction action = new ActivateCardAction(self); + action.appendCost( + new ChooseAndDiscardCardsFromPlayEffect(action, playerId, 1, 1, Race.ORC)); + action.appendEffect( + new ChooseActiveCardEffect(self, playerId, "Choose a Spider", Race.SPIDER) { + @Override + protected void cardSelected(LotroGame game, PhysicalCard card) { + action.appendEffect( + new AddUntilEndOfPhaseModifierEffect( + new KeywordModifier(self, card, Keyword.DAMAGE, 1))); + } + }); + 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/spider/Card31_061.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set31/spider/Card31_061.java new file mode 100644 index 000000000..fa0a7f4c3 --- /dev/null +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set31/spider/Card31_061.java @@ -0,0 +1,50 @@ +package com.gempukku.lotro.cards.set31.spider; + +import com.gempukku.lotro.cards.AbstractMinion; +import com.gempukku.lotro.cards.PlayConditions; +import com.gempukku.lotro.cards.TriggerConditions; +import com.gempukku.lotro.cards.effects.RemoveTwilightEffect; +import com.gempukku.lotro.cards.effects.choose.ChooseAndPlayCardFromDiscardEffect; +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: The Short Rest + * Side: Shadow + * Culture: Spider + * Twilight Cost: 4 + * Type: Minion • Spider + * Strength: 8 + * Vitality: 3 + * Site: 5 + * Game Text: Fierce. When you play this minion, you may remove (1) to play a Spider or an Orc from your + * discard pile. + */ +public class Card31_061 extends AbstractMinion { + public Card31_061() { + super(4, 8, 3, 5, Race.SPIDER, Culture.SPIDER, "Old Tomnoddy"); + addKeyword(Keyword.FIERCE); + } + + @Override + public List getOptionalAfterTriggers(String playerId, LotroGame game, EffectResult effectResult, PhysicalCard self) { + if (TriggerConditions.played(game, effectResult, self) + && PlayConditions.canPlayFromDiscard(playerId, game, 1, 0, Filters.or(Race.SPIDER, Race.ORC)) + && (game.getGameState().getTwilightPool() > 0)) { + OptionalTriggerAction action = new OptionalTriggerAction(self); + action.appendCost( + new RemoveTwilightEffect(1)); + action.appendEffect( + new ChooseAndPlayCardFromDiscardEffect(playerId, game, Filters.or(Race.SPIDER, Race.ORC))); + 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/spider/Card31_062.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set31/spider/Card31_062.java new file mode 100644 index 000000000..56eed23a3 --- /dev/null +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set31/spider/Card31_062.java @@ -0,0 +1,78 @@ +package com.gempukku.lotro.cards.set31.spider; + +import com.gempukku.lotro.cards.AbstractPermanent; +import com.gempukku.lotro.cards.PlayConditions; +import com.gempukku.lotro.cards.TriggerConditions; +import com.gempukku.lotro.cards.effects.ChoiceEffect; +import com.gempukku.lotro.cards.effects.choose.ChooseAndDiscardCardsFromPlayEffect; +import com.gempukku.lotro.cards.effects.choose.ChooseAndPlayCardFromDeckEffect; +import com.gempukku.lotro.cards.effects.choose.ChooseAndPlayCardFromDiscardEffect; +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.actions.ActivateCardAction; +import com.gempukku.lotro.logic.actions.OptionalTriggerAction; +import com.gempukku.lotro.logic.effects.AddThreatsEffect; +import com.gempukku.lotro.logic.timing.Action; +import com.gempukku.lotro.logic.timing.Effect; +import com.gempukku.lotro.logic.timing.EffectResult; + +import java.util.Collections; +import java.util.LinkedList; +import java.util.List; + +/** + * Set: The Short Rest + * Side: Shadow + * Culture: Spider + * Twilight Cost: 2 + * Type: Condition • Support Area + * Game Text: To play, spot a Spider. Assignment: Discard an Orc from play to play a spider from your + * draw deck or discard pile. Its twilight cost is -2 (or -4 at a forest). + */ +public class Card31_062 extends AbstractPermanent { + public Card31_062() { + super(Side.SHADOW, 2, CardType.CONDITION, Culture.SPIDER, Zone.SUPPORT, "Spider Nest"); + } + + + @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) + && Filters.canSpot(game.getGameState(), game.getModifiersQuerying(), Race.SPIDER); + } + + + @Override + protected List getExtraPhaseActions(String playerId, LotroGame game, PhysicalCard self) { + if (PlayConditions.canUseShadowCardDuringPhase(game, Phase.ASSIGNMENT, self, 0) + && PlayConditions.canSpot(game, Race.ORC)) { + ActivateCardAction action = new ActivateCardAction(self); + action.appendCost( + new ChooseAndDiscardCardsFromPlayEffect(action, playerId, 1, 1, Race.ORC)); + List possibleEffects = new LinkedList(); + possibleEffects.add( + new ChooseAndPlayCardFromDeckEffect(playerId, Race.SPIDER) { + @Override + public String getText(LotroGame game) { + return "Play a Spider from your draw deck"; + } + }); + if (PlayConditions.canPlayFromDiscard(playerId, game, Race.SPIDER)) { + possibleEffects.add( + new ChooseAndPlayCardFromDiscardEffect(playerId, game, Race.SPIDER) { + @Override + public String getText(LotroGame game) { + return "Play a Spider from your discard pile"; + } + }); + } + action.appendEffect( + new ChoiceEffect(action, playerId, possibleEffects)); + 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/spider/Card31_063.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set31/spider/Card31_063.java new file mode 100644 index 000000000..a00ba1140 --- /dev/null +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set31/spider/Card31_063.java @@ -0,0 +1,63 @@ +package com.gempukku.lotro.cards.set31.spider; + +import com.gempukku.lotro.cards.AbstractMinion; +import com.gempukku.lotro.cards.PlayConditions; +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.effects.ChooseActiveCardEffect; +import com.gempukku.lotro.logic.modifiers.StrengthModifier; +import com.gempukku.lotro.logic.timing.Action; + +import java.util.Collections; +import java.util.List; + +/** + * Set: The Short Rest + * Side: Shadow + * Culture: Spider + * Twilight Cost: 2 + * Type: Minion • Spider + * Strength: 7 + * Vitality: 2 + * Site: 5 + * Game Text: Fierce. Skirmish: Discard an Orc to make a Spider strength +3 (or +5 if you can spot 6 companions) + * until the regroup phase. + */ +public class Card31_063 extends AbstractMinion { + public Card31_063() { + super(2, 7, 2, 5, Race.SPIDER, Culture.SPIDER, "Wicked Spider"); + addKeyword(Keyword.FIERCE); + } + + @Override + protected List getExtraPhaseActions(String playerId, LotroGame game, PhysicalCard self) { + if (PlayConditions.canUseShadowCardDuringPhase(game, Phase.SKIRMISH, self, 0) + && PlayConditions.canDiscardFromPlay(self, game, Race.ORC)) { + ActivateCardAction action = new ActivateCardAction(self); + action.appendCost( + new ChooseAndDiscardCardsFromPlayEffect(action, playerId, 1, 1, Race.ORC)); + action.appendEffect( + new ChooseActiveCardEffect(self, playerId, "Choose a Spider", Race.SPIDER) { + @Override + protected void cardSelected(LotroGame game, PhysicalCard spider) { + if (PlayConditions.canSpot(game, 5, CardType.COMPANION)) { + action.appendEffect( + new AddUntilStartOfPhaseModifierEffect( + new StrengthModifier(self, Filters.sameCard(spider), 5), Phase.REGROUP)); + } else { + action.appendEffect( + new AddUntilStartOfPhaseModifierEffect( + new StrengthModifier(self, Filters.sameCard(spider), 3), Phase.REGROUP)); + } + } + }); + return Collections.singletonList(action); + } + return null; + } +} \ No newline at end of file