From 794a7c481d21fadc50289aa1d8a134e418472c06 Mon Sep 17 00:00:00 2001 From: PhallenCassidy Date: Wed, 30 Nov 2016 12:56:19 -0500 Subject: [PATCH] The Short Rest: Gundabad culture --- .../cards/set31/gundabad/Card31_024.java | 50 ++++++++++ .../cards/set31/gundabad/Card31_025.java | 72 +++++++++++++++ .../cards/set31/gundabad/Card31_026.java | 92 +++++++++++++++++++ .../cards/set31/gundabad/Card31_027.java | 73 +++++++++++++++ .../cards/set31/gundabad/Card31_028.java | 73 +++++++++++++++ 5 files changed, 360 insertions(+) create mode 100644 gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set31/gundabad/Card31_024.java create mode 100644 gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set31/gundabad/Card31_025.java create mode 100644 gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set31/gundabad/Card31_026.java create mode 100644 gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set31/gundabad/Card31_027.java create mode 100644 gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set31/gundabad/Card31_028.java diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set31/gundabad/Card31_024.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set31/gundabad/Card31_024.java new file mode 100644 index 000000000..8d9be2ecd --- /dev/null +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set31/gundabad/Card31_024.java @@ -0,0 +1,50 @@ +package com.gempukku.lotro.cards.set31.gundabad; + +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.SelfExertEffect; +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.OptionalTriggerAction; +import com.gempukku.lotro.logic.modifiers.evaluator.Evaluator; +import com.gempukku.lotro.logic.timing.EffectResult; + +import java.util.Collections; +import java.util.List; + +/** + * Set: The Short Rest + * Side: Shadow + * Culture: Gundabad + * Twilight Cost: 4 + * Type: Minion • Orc + * Strength: 9 + * Vitality: 3 + * Site: 3 + * Game Text: Each times Bolg wins a skirmish, you may exert him twice to add a doubt. + */ +public class Card31_024 extends AbstractMinion { + public Card31_024() { + super(4, 9, 3, 3, null, Culture.GUNDABAD, "Bolg", "Son of Azog", true); + addKeyword(Keyword.DAMAGE, 1); + } + + @Override + public List getOptionalAfterTriggers(String playerId, LotroGame game, EffectResult effectResult, PhysicalCard self) { + if (TriggerConditions.winsSkirmish(game, effectResult, self) + && PlayConditions.canExert(self, game, 2, self)) { + OptionalTriggerAction action = new OptionalTriggerAction(self); + action.appendCost(new SelfExertEffect(action, self)); + action.appendCost(new SelfExertEffect(action, 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/gundabad/Card31_025.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set31/gundabad/Card31_025.java new file mode 100644 index 000000000..d5e9064e6 --- /dev/null +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set31/gundabad/Card31_025.java @@ -0,0 +1,72 @@ +package com.gempukku.lotro.cards.set31.gundabad; + +import com.gempukku.lotro.cards.AbstractAttachable; +import com.gempukku.lotro.cards.PlayConditions; +import com.gempukku.lotro.cards.TriggerConditions; +import com.gempukku.lotro.cards.effects.CancelActivatedEffect; +import com.gempukku.lotro.cards.effects.choose.ChooseAndExertCharactersEffect; +import com.gempukku.lotro.cards.modifiers.VitalityModifier; +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.modifiers.KeywordModifier; +import com.gempukku.lotro.logic.modifiers.Modifier; +import com.gempukku.lotro.logic.modifiers.StrengthModifier; +import com.gempukku.lotro.logic.timing.Action; +import com.gempukku.lotro.logic.timing.EffectResult; +import com.gempukku.lotro.logic.timing.results.ActivateCardResult; + +import java.util.Collections; +import java.util.LinkedList; +import java.util.List; + +/** + * Set: The Short Rest + * Side: Shadow + * Culture: Gundabad + * Twilight Cost: 3 + * Type: Possession • Mount + * Strength: +2 + * Vitality: +1 + * Game Text: Bearer must an Orc. Bearer is fierce. Each time Bearer wins a skirmish, the Free Peoples player + * must exert a [DWARVEN] companion for each 2 [GANDALF] cards you spot. + */ +public class Card31_025 extends AbstractAttachable { + public Card31_025() { + super(Side.SHADOW, CardType.POSSESSION, 3, Culture.GUNDABAD, PossessionClass.MOUNT, "Savage Warg"); + } + + @Override + public List getAlwaysOnModifiers(LotroGame game, PhysicalCard self) { + List modifiers = new LinkedList(); + modifiers.add( + new StrengthModifier(self, Filters.hasAttached(self), 2)); + modifiers.add( + new VitalityModifier(self, Filters.hasAttached(self), 1)); + modifiers.add( + new KeywordModifier(self, Filters.hasAttached(self), Keyword.FIERCE)); + return modifiers; + } + + @Override + protected Filterable getValidTargetFilter(String playerId, LotroGame game, PhysicalCard self) { + return Filters.and(Culture.GUNDABAD,Race.ORC); + } + + + @Override + public List getRequiredAfterTriggers(LotroGame game, EffectResult effectResult, PhysicalCard self) { + if (TriggerConditions.winsSkirmish(game, effectResult, self.getAttachedTo())) { + RequiredTriggerAction action = new RequiredTriggerAction(self); + int gandalfCardsSpotted = Filters.countActive(game.getGameState(), game.getModifiersQuerying(), Culture.GANDALF); + for (int i = 1; i < gandalfCardsSpotted; i += 2) + action.appendEffect( + new ChooseAndExertCharactersEffect(action, game.getGameState().getCurrentPlayerId(), 1, 1, Race.DWARF, CardType.COMPANION)); + return Collections.singletonList(action); + } + return null; +} +} diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set31/gundabad/Card31_026.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set31/gundabad/Card31_026.java new file mode 100644 index 000000000..ad889bf26 --- /dev/null +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set31/gundabad/Card31_026.java @@ -0,0 +1,92 @@ +package com.gempukku.lotro.cards.set31.gundabad; + +import com.gempukku.lotro.cards.AbstractAttachable; +import com.gempukku.lotro.cards.PlayConditions; +import com.gempukku.lotro.cards.TriggerConditions; +import com.gempukku.lotro.cards.effects.CancelActivatedEffect; +import com.gempukku.lotro.cards.effects.ChoiceEffect; +import com.gempukku.lotro.cards.effects.RemoveBurdenEffect; +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.cards.modifiers.VitalityModifier; +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.modifiers.KeywordModifier; +import com.gempukku.lotro.logic.modifiers.Modifier; +import com.gempukku.lotro.logic.modifiers.StrengthModifier; +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.ActivateCardResult; + +import java.util.Collections; +import java.util.LinkedList; +import java.util.List; + +/** + * Set: The Short Rest + * Side: Shadow + * Culture: Gundabad + * Twilight Cost: 4 + * Type: Possession • Mount + * Strength: +4 + * Vitality: +2 + * Game Text: Bearer must a [GUNDABAD] Orc. Bearer is fierce. Assignment: Exert bearer twice or remove 2 + * doubts to assign bearer to Thorin. + */ +public class Card31_026 extends AbstractAttachable { + public Card31_026() { + super(Side.SHADOW, CardType.POSSESSION, 4, Culture.GUNDABAD, PossessionClass.MOUNT, "Threatening Warg"); + } + + @Override + public List getAlwaysOnModifiers(LotroGame game, PhysicalCard self) { + List modifiers = new LinkedList(); + modifiers.add( + new StrengthModifier(self, Filters.hasAttached(self), 4)); + modifiers.add( + new VitalityModifier(self, Filters.hasAttached(self), 2)); + modifiers.add( + new KeywordModifier(self, Filters.hasAttached(self), Keyword.FIERCE)); + return modifiers; + } + + @Override + protected Filterable getValidTargetFilter(String playerId, LotroGame game, PhysicalCard self) { + return Filters.and(Culture.GUNDABAD,Race.ORC); + } + + @Override + protected List getExtraPhaseActions(String playerId, LotroGame game, PhysicalCard self) { + if (PlayConditions.canUseShadowCardDuringPhase(game, Phase.ASSIGNMENT, self, 0) + && (PlayConditions.canExert(self, game, 2, self.getAttachedTo()) + || game.getGameState().getBurdens() >= 2)) { + ActivateCardAction action = new ActivateCardAction(self); + List possibleCosts = new LinkedList(); + possibleCosts.add( + new SelfExertEffect(action, self.getAttachedTo()) { + @Override + public String getText(LotroGame game) { + return "Exert bearer twice"; + } + }); + possibleCosts.add( + new RemoveBurdenEffect(playerId, self, 2) { + @Override + public String getText(LotroGame game) { + return "Remove two doubts"; + } + }); + action.appendCost( + new ChoiceEffect(action, playerId, possibleCosts)); + action.appendEffect( + new ChooseAndAssignCharacterToMinionEffect(action, playerId, self.getAttachedTo(), Filters.name("Thorin"))); + return Collections.singletonList(action); + } + return null; + } +} diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set31/gundabad/Card31_027.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set31/gundabad/Card31_027.java new file mode 100644 index 000000000..cf57fe66d --- /dev/null +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set31/gundabad/Card31_027.java @@ -0,0 +1,73 @@ +package com.gempukku.lotro.cards.set31.gundabad; + +import com.gempukku.lotro.cards.AbstractAttachable; +import com.gempukku.lotro.cards.PlayConditions; +import com.gempukku.lotro.cards.TriggerConditions; +import com.gempukku.lotro.cards.effects.CancelActivatedEffect; +import com.gempukku.lotro.cards.effects.choose.ChooseAndExertCharactersEffect; +import com.gempukku.lotro.cards.modifiers.VitalityModifier; +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.ChooseAndWoundCharactersEffect; +import com.gempukku.lotro.logic.modifiers.KeywordModifier; +import com.gempukku.lotro.logic.modifiers.Modifier; +import com.gempukku.lotro.logic.modifiers.StrengthModifier; +import com.gempukku.lotro.logic.timing.Action; +import com.gempukku.lotro.logic.timing.EffectResult; +import com.gempukku.lotro.logic.timing.results.ActivateCardResult; + +import java.util.Collections; +import java.util.LinkedList; +import java.util.List; + +/** + * Set: The Short Rest + * Side: Shadow + * Culture: Gundabad + * Twilight Cost: 2 + * Type: Possession • Mount + * Strength: +2 + * Vitality: +1 + * Game Text: Bearer must a [GUNDABAD] Orc. Bearer is fierce. Regroup: If you cannot spot Thorin, + * exert bearer to wound an ally. + */ +public class Card31_027 extends AbstractAttachable { + public Card31_027() { + super(Side.SHADOW, CardType.POSSESSION, 2, Culture.GUNDABAD, PossessionClass.MOUNT, "Warg"); + } + + @Override + public List getAlwaysOnModifiers(LotroGame game, PhysicalCard self) { + List modifiers = new LinkedList(); + modifiers.add( + new StrengthModifier(self, Filters.hasAttached(self), 2)); + modifiers.add( + new VitalityModifier(self, Filters.hasAttached(self), 1)); + modifiers.add( + new KeywordModifier(self, Filters.hasAttached(self), Keyword.FIERCE)); + return modifiers; + } + + @Override + protected Filterable getValidTargetFilter(String playerId, LotroGame game, PhysicalCard self) { + return Filters.and(Culture.GUNDABAD,Race.ORC); + } + + @Override + protected List getExtraPhaseActions(String playerId, LotroGame game, PhysicalCard self) { + if (PlayConditions.canUseShadowCardDuringPhase(game, Phase.REGROUP, self, 0) + && !PlayConditions.canSpot(game, Filters.name("Thorin")) + && PlayConditions.canExert(self, game, Filters.hasAttached(self))) { + ActivateCardAction action = new ActivateCardAction(self); + action.appendCost( + new ChooseAndExertCharactersEffect(action, playerId, 1, 1, Filters.hasAttached(self))); + action.appendEffect( + new ChooseAndWoundCharactersEffect(action, playerId, 1, 1, CardType.ALLY)); + return Collections.singletonList(action); + } + return null; + } +} diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set31/gundabad/Card31_028.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set31/gundabad/Card31_028.java new file mode 100644 index 000000000..e675adc21 --- /dev/null +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set31/gundabad/Card31_028.java @@ -0,0 +1,73 @@ +package com.gempukku.lotro.cards.set31.gundabad; + +import com.gempukku.lotro.cards.AbstractAttachable; +import com.gempukku.lotro.cards.PlayConditions; +import com.gempukku.lotro.cards.TriggerConditions; +import com.gempukku.lotro.cards.effects.CancelActivatedEffect; +import com.gempukku.lotro.cards.effects.choose.ChooseAndExertCharactersEffect; +import com.gempukku.lotro.cards.modifiers.VitalityModifier; +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.ChooseAndWoundCharactersEffect; +import com.gempukku.lotro.logic.modifiers.KeywordModifier; +import com.gempukku.lotro.logic.modifiers.Modifier; +import com.gempukku.lotro.logic.modifiers.StrengthModifier; +import com.gempukku.lotro.logic.timing.Action; +import com.gempukku.lotro.logic.timing.EffectResult; +import com.gempukku.lotro.logic.timing.results.ActivateCardResult; + +import java.util.Collections; +import java.util.LinkedList; +import java.util.List; + +/** + * Set: The Short Rest + * Side: Shadow + * Culture: Gundabad + * Twilight Cost: 3 + * Type: Possession • Mount + * Strength: +3 + * Vitality: +2 + * Game Text: Bearer must a [GUNDABAD] Orc. Bearer is fierce. Regroup: If you cannot spot Thorin, + * exert bearer to make the Free Peoples player wound a companion. + */ +public class Card31_028 extends AbstractAttachable { + public Card31_028() { + super(Side.SHADOW, CardType.POSSESSION, 3, Culture.ISENGARD, PossessionClass.MOUNT, "War-warg"); + } + + @Override + public List getAlwaysOnModifiers(LotroGame game, PhysicalCard self) { + List modifiers = new LinkedList(); + modifiers.add( + new StrengthModifier(self, Filters.hasAttached(self), 3)); + modifiers.add( + new VitalityModifier(self, Filters.hasAttached(self), 2)); + modifiers.add( + new KeywordModifier(self, Filters.hasAttached(self), Keyword.FIERCE)); + return modifiers; + } + + @Override + protected Filterable getValidTargetFilter(String playerId, LotroGame game, PhysicalCard self) { + return Filters.and(Culture.GUNDABAD,Race.ORC); + } + + @Override + protected List getExtraPhaseActions(String playerId, LotroGame game, PhysicalCard self) { + if (PlayConditions.canUseShadowCardDuringPhase(game, Phase.REGROUP, self, 0) + && !PlayConditions.canSpot(game, Filters.name("Thorin")) + && PlayConditions.canExert(self, game, Filters.hasAttached(self))) { + ActivateCardAction action = new ActivateCardAction(self); + action.appendCost( + new ChooseAndExertCharactersEffect(action, playerId, 1, 1, Filters.hasAttached(self))); + action.appendEffect( + new ChooseAndWoundCharactersEffect(action, game.getGameState().getCurrentPlayerId(), 1, 1, CardType.COMPANION)); + return Collections.singletonList(action); + } + return null; + } +}