From dcb199934970709e0ac9840a248b575a328b5035 Mon Sep 17 00:00:00 2001 From: "marcins78@gmail.com" Date: Mon, 17 Oct 2011 10:58:57 +0000 Subject: [PATCH] "Horn of Helm" --- .../cards/modifiers/LocationCondition.java | 6 ++- .../lotro/cards/set5/dwarven/Card5_008.java | 45 +++++++++++++++++++ .../logic/modifiers/AbstractModifier.java | 8 ++-- .../modifiers/RemoveKeywordModifier.java | 9 +++- 4 files changed, 61 insertions(+), 7 deletions(-) create mode 100644 gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set5/dwarven/Card5_008.java diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/modifiers/LocationCondition.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/modifiers/LocationCondition.java index c81015fc3..ba1ee375f 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/modifiers/LocationCondition.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/modifiers/LocationCondition.java @@ -1,6 +1,8 @@ package com.gempukku.lotro.cards.modifiers; +import com.gempukku.lotro.common.Filterable; import com.gempukku.lotro.filters.Filter; +import com.gempukku.lotro.filters.Filters; import com.gempukku.lotro.game.state.GameState; import com.gempukku.lotro.logic.modifiers.Condition; import com.gempukku.lotro.logic.modifiers.ModifiersQuerying; @@ -8,8 +10,8 @@ import com.gempukku.lotro.logic.modifiers.ModifiersQuerying; public class LocationCondition implements Condition { private Filter _filter; - public LocationCondition(Filter filter) { - _filter = filter; + public LocationCondition(Filterable... filters) { + _filter = Filters.and(filters); } @Override diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set5/dwarven/Card5_008.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set5/dwarven/Card5_008.java new file mode 100644 index 000000000..758d5f20b --- /dev/null +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set5/dwarven/Card5_008.java @@ -0,0 +1,45 @@ +package com.gempukku.lotro.cards.set5.dwarven; + +import com.gempukku.lotro.cards.AbstractPermanent; +import com.gempukku.lotro.cards.PlayConditions; +import com.gempukku.lotro.cards.effects.AddUntilStartOfPhaseModifierEffect; +import com.gempukku.lotro.cards.effects.choose.ChooseAndExertCharactersEffect; +import com.gempukku.lotro.cards.modifiers.LocationCondition; +import com.gempukku.lotro.common.*; +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.RemoveKeywordModifier; +import com.gempukku.lotro.logic.timing.Action; + +import java.util.Collections; +import java.util.List; + +/** + * Set: Battle of Helm's Deep + * Side: Free + * Culture: Dwarven + * Twilight Cost: 2 + * Type: Possession + * Game Text: Plays to your support area. Maneuver: Exert a Dwarf companion to make each minion at a battleground lose + * all damage bonuses until the regroup phase. + */ +public class Card5_008 extends AbstractPermanent { + public Card5_008() { + super(Side.FREE_PEOPLE, 2, CardType.POSSESSION, Culture.DWARVEN, Zone.SUPPORT, "Horn of Helm", true); + } + + @Override + protected List getExtraPhaseActions(String playerId, LotroGame game, PhysicalCard self) { + if (PlayConditions.canExert(self, game, Race.DWARF, CardType.COMPANION)) { + ActivateCardAction action = new ActivateCardAction(self); + action.appendCost( + new ChooseAndExertCharactersEffect(action, playerId, 1, 1, Race.DWARF, CardType.COMPANION)); + action.appendEffect( + new AddUntilStartOfPhaseModifierEffect( + new RemoveKeywordModifier(self, CardType.MINION, new LocationCondition(Keyword.BATTLEGROUND), Keyword.DAMAGE), Phase.REGROUP)); + return Collections.singletonList(action); + } + return null; + } +} diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/modifiers/AbstractModifier.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/modifiers/AbstractModifier.java index c4728aa31..7d37eb4e3 100644 --- a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/modifiers/AbstractModifier.java +++ b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/modifiers/AbstractModifier.java @@ -1,9 +1,11 @@ package com.gempukku.lotro.logic.modifiers; +import com.gempukku.lotro.common.Filterable; import com.gempukku.lotro.common.Keyword; import com.gempukku.lotro.common.Phase; import com.gempukku.lotro.common.Side; 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.logic.timing.Action; @@ -18,14 +20,14 @@ public abstract class AbstractModifier implements Modifier { private Condition _condition; private ModifierEffect[] _effects; - protected AbstractModifier(PhysicalCard source, String text, Filter affectFilter, ModifierEffect[] effects) { + protected AbstractModifier(PhysicalCard source, String text, Filterable affectFilter, ModifierEffect[] effects) { this(source, text, affectFilter, null, effects); } - protected AbstractModifier(PhysicalCard source, String text, Filter affectFilter, Condition condition, ModifierEffect[] effects) { + protected AbstractModifier(PhysicalCard source, String text, Filterable affectFilter, Condition condition, ModifierEffect[] effects) { _physicalCard = source; _text = text; - _affectFilter = affectFilter; + _affectFilter = Filters.and(affectFilter); _condition = condition; _effects = effects; } diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/modifiers/RemoveKeywordModifier.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/modifiers/RemoveKeywordModifier.java index 84f18abc4..423ceadd6 100644 --- a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/modifiers/RemoveKeywordModifier.java +++ b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/modifiers/RemoveKeywordModifier.java @@ -1,18 +1,23 @@ package com.gempukku.lotro.logic.modifiers; +import com.gempukku.lotro.common.Filterable; import com.gempukku.lotro.common.Keyword; -import com.gempukku.lotro.filters.Filter; import com.gempukku.lotro.game.PhysicalCard; import com.gempukku.lotro.game.state.GameState; public class RemoveKeywordModifier extends AbstractModifier { private Keyword _keyword; - public RemoveKeywordModifier(PhysicalCard physicalCard, Filter affectFilter, Keyword keyword) { + public RemoveKeywordModifier(PhysicalCard physicalCard, Filterable affectFilter, Keyword keyword) { super(physicalCard, "Loses " + keyword.getHumanReadable() + "keyword(s)", affectFilter, new ModifierEffect[]{ModifierEffect.KEYWORD_MODIFIER}); _keyword = keyword; } + public RemoveKeywordModifier(PhysicalCard physicalCard, Filterable affectFilter, Condition condition, Keyword keyword) { + super(physicalCard, "Loses " + keyword.getHumanReadable() + "keyword(s)", affectFilter, condition, new ModifierEffect[]{ModifierEffect.KEYWORD_MODIFIER}); + _keyword = keyword; + } + @Override public boolean isKeywordRemoved(GameState gameState, ModifiersQuerying modifiersQuerying, PhysicalCard physicalCard, Keyword keyword) { return _keyword == keyword;