From 6937821cf2dc04dcd3ad6d3b7ac589838dcfe9ba Mon Sep 17 00:00:00 2001 From: PhallenCassidy Date: Wed, 30 Nov 2016 12:50:11 -0500 Subject: [PATCH] Main Deck: Shire culture --- .../lotro/cards/set30/shire/Card30_044.java | 61 ++++++++++ .../lotro/cards/set30/shire/Card30_045.java | 75 +++++++++++++ .../lotro/cards/set30/shire/Card30_046.java | 86 ++++++++++++++ .../lotro/cards/set30/shire/Card30_047.java | 51 +++++++++ .../lotro/cards/set30/shire/Card30_048.java | 105 ++++++++++++++++++ 5 files changed, 378 insertions(+) create mode 100644 gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set30/shire/Card30_044.java create mode 100644 gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set30/shire/Card30_045.java create mode 100644 gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set30/shire/Card30_046.java create mode 100644 gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set30/shire/Card30_047.java create mode 100644 gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set30/shire/Card30_048.java diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set30/shire/Card30_044.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set30/shire/Card30_044.java new file mode 100644 index 000000000..d2e1bc974 --- /dev/null +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set30/shire/Card30_044.java @@ -0,0 +1,61 @@ +package com.gempukku.lotro.cards.set30.shire; + +import com.gempukku.lotro.cards.AbstractCompanion; +import com.gempukku.lotro.cards.PlayConditions; +import com.gempukku.lotro.cards.TriggerConditions; +import com.gempukku.lotro.cards.effects.OptionalEffect; +import com.gempukku.lotro.cards.effects.SelfExertEffect; +import com.gempukku.lotro.cards.effects.ShuffleDeckEffect; +import com.gempukku.lotro.cards.effects.choose.ChooseAndPutCardFromDeckIntoHandEffect; +import com.gempukku.lotro.cards.effects.choose.ChooseOpponentEffect; +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.effects.DrawCardsEffect; +import com.gempukku.lotro.logic.modifiers.Modifier; +import com.gempukku.lotro.logic.modifiers.StrengthModifier; +import com.gempukku.lotro.logic.timing.EffectResult; + +import java.util.Collections; +import java.util.List; + +/** + * Set: Main Deck + * Side: Free + * Culture: Shire + * Twilight Cost: 0 + * Type: Companion • Hobbit + * Strength: 3 + * Vitality: 4 + * Resistance: 8 + * Game Text: While skirmishing Gollum, Bilbo is strength +2. + * Each time Bilbo wins a skirmish, you may take a Free Peoples artifact into hand from your draw deck. + */ +public class Card30_044 extends AbstractCompanion { + public Card30_044() { + super(0, 3, 4, 8, Culture.SHIRE, Race.HOBBIT, null, "Bilbo", "Collector of Treasures", true); + addKeyword(Keyword.BURGLAR); + addKeyword(Keyword.CAN_START_WITH_RING); + } + + @Override + public Modifier getAlwaysOnModifier(LotroGame game, PhysicalCard self) { + return new StrengthModifier(self, Filters.and(self, Filters.inSkirmishAgainst(Filters.name("Gollum"))), 2); + } + + @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 ChooseAndPutCardFromDeckIntoHandEffect(action, playerId, 1, 1, Side.FREE_PEOPLE, CardType.ARTIFACT)); + action.appendEffect( + new ShuffleDeckEffect(playerId)); + 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/set30/shire/Card30_045.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set30/shire/Card30_045.java new file mode 100644 index 000000000..25826a8d1 --- /dev/null +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set30/shire/Card30_045.java @@ -0,0 +1,75 @@ +package com.gempukku.lotro.cards.set30.shire; + +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.logic.effects.ChooseActiveCardEffect; +import com.gempukku.lotro.cards.modifiers.evaluator.CardPhaseLimitEvaluator; +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.effects.ChooseAndDiscardCardsFromHandEffect; +import com.gempukku.lotro.logic.effects.DrawCardsEffect; +import com.gempukku.lotro.logic.modifiers.StrengthModifier; +import com.gempukku.lotro.logic.modifiers.evaluator.ConstantEvaluator; +import com.gempukku.lotro.logic.timing.EffectResult; + + +import java.util.Collections; +import java.util.List; + +/** + * Set: Main Deck + * Side: Free + * Culture: Shire + * Twilight Cost: 0 + * Type: Companion • Hobbit + * Strength: 3 + * Vitality: 4 + * Resistance: 8 + * Game Text: Burglar. Each time Bilbo wins a skirmish, you may draw 3 cards. Skirmish: Discard 2 cards from hand to make Gollum strength -2 (limit -4). + */ +public class Card30_045 extends AbstractCompanion { + public Card30_045() { + super(0, 3, 4, 8, Culture.SHIRE, Race.HOBBIT, null, "Bilbo", "Master in Riddles", true); + addKeyword(Keyword.BURGLAR); + addKeyword(Keyword.CAN_START_WITH_RING); + } + + @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 DrawCardsEffect(action, playerId, 3)); + return Collections.singletonList(action); + } + return null; + } + + @Override + protected List getExtraInPlayPhaseActions(String playerId, LotroGame game, PhysicalCard self) { + if (PlayConditions.canUseFPCardDuringPhase(game, Phase.SKIRMISH, self) + && PlayConditions.canDiscardFromHand(game, playerId, 2, Filters.any)) { + ActivateCardAction action = new ActivateCardAction(self); + action.appendCost( + new ChooseAndDiscardCardsFromHandEffect(action, playerId, false, 2)); + action.appendEffect( + new ChooseActiveCardEffect(self, playerId, "Choose Gollum", Filters.name("Gollum")) { + @Override + protected void cardSelected(LotroGame game, PhysicalCard card) { + action.insertEffect( + new AddUntilEndOfPhaseModifierEffect( + new StrengthModifier(self, Filters.sameCard(card), null, + new CardPhaseLimitEvaluator(game, self, Phase.SKIRMISH, -2, new ConstantEvaluator(-4))))); + } + }); + 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/set30/shire/Card30_046.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set30/shire/Card30_046.java new file mode 100644 index 000000000..4227f1e55 --- /dev/null +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set30/shire/Card30_046.java @@ -0,0 +1,86 @@ +package com.gempukku.lotro.cards.set30.shire; + +import com.gempukku.lotro.cards.AbstractCompanion; +import com.gempukku.lotro.cards.PlayConditions; +import com.gempukku.lotro.cards.TriggerConditions; +import com.gempukku.lotro.cards.effects.MakeRingBearerEffect; +import com.gempukku.lotro.cards.modifiers.OverwhelmedByMultiplierModifier; +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.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.modifiers.Condition; +import com.gempukku.lotro.logic.modifiers.Modifier; +import com.gempukku.lotro.logic.modifiers.ModifiersQuerying; +import com.gempukku.lotro.logic.timing.AbstractSuccessfulEffect; +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.actions.PlayerReconcilesAction; + +import java.util.Collections; +import java.util.List; + +/** + * Set: Main Deck + * Side: Free + * Culture: Shire + * Twilight Cost: 0 + * Type: Companion • Hobbit + * Strength: 3 + * Vitality: 4 + * Resistance: 8 + * Game Text: Burglar. Bilbo may not be overwhelmed by Gollum unless his strength + * is tripled. Response: If Bilbo wins a skirmish, reconcile your hand (limit once per turn). + */ + +public class Card30_046 extends AbstractCompanion { + public Card30_046() { + super(0, 3, 4, 8, Culture.SHIRE, Race.HOBBIT, null, "Bilbo", "Reliable Companion", true); + addKeyword(Keyword.BURGLAR); + addKeyword(Keyword.CAN_START_WITH_RING); + } + + @Override + public List getAlwaysOnModifiers(LotroGame game, PhysicalCard self) { + return Collections.singletonList( + new OverwhelmedByMultiplierModifier(self, self, + new Condition() { + @Override + public boolean isFullfilled(GameState gameState, ModifiersQuerying modifiersQuerying) { + return Filters.inSkirmishAgainst(Filters.gollum).accepts(gameState, modifiersQuerying, self); + } + }, 3)); + } + + @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 AbstractSuccessfulEffect() { + @Override + public String getText(LotroGame game) { + return "Reconcile hand"; + } + + @Override + public Effect.Type getType() { + return null; + } + + @Override + public void playEffect(LotroGame game) { + game.getActionsEnvironment().addActionToStack( + new PlayerReconcilesAction(game, playerId)); + } + }); + 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/set30/shire/Card30_047.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set30/shire/Card30_047.java new file mode 100644 index 000000000..2a47a2e84 --- /dev/null +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set30/shire/Card30_047.java @@ -0,0 +1,51 @@ +package com.gempukku.lotro.cards.set30.shire; + +import com.gempukku.lotro.cards.AbstractAttachableFPPossession; +import com.gempukku.lotro.cards.TriggerConditions; +import com.gempukku.lotro.cards.effects.choose.ChooseAndDiscardCardsFromPlayEffect; +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.OptionalTriggerAction; +import com.gempukku.lotro.logic.effects.DrawCardsEffect; +import com.gempukku.lotro.logic.timing.EffectResult; + +import java.util.Collections; +import java.util.List; + +/** + * Set: Main Deck + * Side: Free + * Culture: Shire + * Twilight Cost: 1 + * Type: Artifact • Hand Weapon + * Strength: +2 + * Game Text: Bearer must be Bilbo. Each time Bilbo wins a skirmish in which you played a [DWARVEN] event, you may + * discard a condition. + */ + +public class Card30_047 extends AbstractAttachableFPPossession { + public Card30_047() { + super(1, 2, 0, Culture.SHIRE, CardType.ARTIFACT, PossessionClass.HAND_WEAPON, "Sting", null, true); + } + + @Override + protected Filter getValidTargetFilter(String playerId, LotroGame game, PhysicalCard self) { + return Filters.name("Bilbo"); + } + + @Override + public List getOptionalAfterTriggers(String playerId, LotroGame game, EffectResult effectResult, PhysicalCard self) { + if (TriggerConditions.winsSkirmish(game, effectResult, self.getAttachedTo()) + && Filters.filter(game.getActionsEnvironment().getPlayedCardsInCurrentPhase(), game.getGameState(), game.getModifiersQuerying(), Filters.owner(playerId), Culture.DWARVEN, CardType.EVENT).size() > 0) { + OptionalTriggerAction action = new OptionalTriggerAction(self); + action.setText("Choose a condition"); + action.appendEffect( + new ChooseAndDiscardCardsFromPlayEffect(action, playerId, 1, 1, CardType.CONDITION)); + 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/set30/shire/Card30_048.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set30/shire/Card30_048.java new file mode 100644 index 000000000..04b47428d --- /dev/null +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set30/shire/Card30_048.java @@ -0,0 +1,105 @@ +package com.gempukku.lotro.cards.set30.shire; + +import com.gempukku.lotro.cards.AbstractAttachableFPPossession; +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.NegateWoundEffect; +import com.gempukku.lotro.cards.effects.PutOnTheOneRingEffect; +import com.gempukku.lotro.cards.effects.TakeOffTheOneRingEffect; +import com.gempukku.lotro.cards.modifiers.VitalityModifier; +import com.gempukku.lotro.cards.modifiers.ResistanceModifier; +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.GameState; +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.WoundCharactersEffect; +import com.gempukku.lotro.logic.modifiers.*; +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: Main Deck + * Side: Free + * Culture: Shire + * Twilight Cost: 2 + * Type: Artifact • Ring + * Vitality: +1 + * Resistance: +1 + * Game Text: Bearer must be Bilbo. While wearing The One Ring, Bilbo is strength +2, and each time he is about to take + * a wound in a skirmish, add a doubt instead. Skirmish: Add a doubt to wear The One Ring until the regroup phase. + */ +public class Card30_048 extends AbstractAttachableFPPossession { + public Card30_048() { + super(2, 0, 1, Culture.SHIRE, CardType.ARTIFACT, PossessionClass.RING, "The One Ring", null, true); + } + + @Override + protected Filterable getValidTargetFilter(String playerId, LotroGame game, PhysicalCard self) { + return Filters.name("Bilbo"); + } + + @Override + protected List getNonBasicStatsModifiers(PhysicalCard self) { + List modifiers = new LinkedList(); + modifiers.add(new ResistanceModifier(self, Filters.hasAttached(self), 1)); + modifiers.add( + new StrengthModifier(self, Filters.hasAttached(self), + new Condition() { + @Override + public boolean isFullfilled(GameState gameState, ModifiersQuerying modifiersQuerying) { + return !modifiersQuerying.hasFlagActive(gameState, ModifierFlag.RING_TEXT_INACTIVE) && gameState.isWearingRing(); + } + }, 2)); + + return modifiers; + } + + @Override + protected List getExtraInPlayPhaseActions(String playerId, LotroGame game, PhysicalCard self) { + if (PlayConditions.canUseFPCardDuringPhase(game, Phase.SKIRMISH, self) + && !game.getModifiersQuerying().hasFlagActive(game.getGameState(), ModifierFlag.RING_TEXT_INACTIVE)) { + ActivateCardAction action = new ActivateCardAction(self); + action.appendCost( + new AddBurdenEffect(self.getOwner(), self, 1)); + action.appendEffect( + new PutOnTheOneRingEffect()); + return Collections.singletonList(action); + } + return null; + } + + @Override + public List getRequiredBeforeTriggers(LotroGame game, Effect effect, PhysicalCard self) { + if (TriggerConditions.isGettingWounded(effect, game, Filters.hasAttached(self)) + && game.getGameState().isWearingRing() + && !game.getModifiersQuerying().hasFlagActive(game.getGameState(), ModifierFlag.RING_TEXT_INACTIVE)) { + WoundCharactersEffect woundEffect = (WoundCharactersEffect) effect; + RequiredTriggerAction action = new RequiredTriggerAction(self); + action.appendEffect(new NegateWoundEffect(woundEffect, self.getAttachedTo())); + action.appendEffect(new AddBurdenEffect(self.getOwner(), self, 1)); + return Collections.singletonList(action); + } + return null; + } + + @Override + public List getRequiredAfterTriggers(LotroGame game, EffectResult effectResult, PhysicalCard self) { + if ((TriggerConditions.startOfPhase(game, effectResult, Phase.REGROUP) || TriggerConditions.endOfPhase(game, effectResult, Phase.REGROUP)) + && game.getGameState().isWearingRing()) { + RequiredTriggerAction action = new RequiredTriggerAction(self); + action.appendEffect(new TakeOffTheOneRingEffect()); + return Collections.singletonList(action); + } + return null; + } +} \ No newline at end of file