From 491294f3994653992b009b4d4f9d874ad6138830 Mon Sep 17 00:00:00 2001 From: "marcins78@gmail.com" Date: Fri, 21 Oct 2011 13:50:36 +0000 Subject: [PATCH] "The Balrog" --- ...inionBeingAssignedToCharacterModifier.java | 8 +-- .../lotro/cards/set6/moria/Card6_076.java | 50 +++++++++++++++++++ .../com/gempukku/lotro/filters/Filters.java | 9 ++++ 3 files changed, 63 insertions(+), 4 deletions(-) create mode 100644 gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set6/moria/Card6_076.java diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/modifiers/PreventMinionBeingAssignedToCharacterModifier.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/modifiers/PreventMinionBeingAssignedToCharacterModifier.java index fedf6552e..98f8b2b51 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/modifiers/PreventMinionBeingAssignedToCharacterModifier.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/modifiers/PreventMinionBeingAssignedToCharacterModifier.java @@ -1,7 +1,7 @@ package com.gempukku.lotro.cards.modifiers; +import com.gempukku.lotro.common.Filterable; 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; @@ -13,9 +13,9 @@ import java.util.List; public class PreventMinionBeingAssignedToCharacterModifier extends AbstractModifier { private Side _side; - private Filter _minionFilter; + private Filterable _minionFilter; - public PreventMinionBeingAssignedToCharacterModifier(PhysicalCard source, Side side, Filter characterFilter, Filter minionFilter) { + public PreventMinionBeingAssignedToCharacterModifier(PhysicalCard source, Side side, Filterable characterFilter, Filterable minionFilter) { super(source, "Is affected by assignment restriction", characterFilter, new ModifierEffect[]{ModifierEffect.ASSIGNMENT_MODIFIER}); _side = side; _minionFilter = minionFilter; @@ -23,7 +23,7 @@ public class PreventMinionBeingAssignedToCharacterModifier extends AbstractModif @Override public boolean isValidAssignments(GameState gameState, Side side, ModifiersQuerying modifiersQuerying, PhysicalCard companion, List minions, boolean result) { - if (side == _side && Filters.filter(minions, gameState, modifiersQuerying, _minionFilter).size() > 0) + if ((_side == null || side == _side) && Filters.filter(minions, gameState, modifiersQuerying, _minionFilter).size() > 0) return false; return result; diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set6/moria/Card6_076.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set6/moria/Card6_076.java new file mode 100644 index 000000000..9d58cf173 --- /dev/null +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set6/moria/Card6_076.java @@ -0,0 +1,50 @@ +package com.gempukku.lotro.cards.set6.moria; + +import com.gempukku.lotro.cards.AbstractMinion; +import com.gempukku.lotro.cards.modifiers.PreventMinionBeingAssignedToCharacterModifier; +import com.gempukku.lotro.common.CardType; +import com.gempukku.lotro.common.Culture; +import com.gempukku.lotro.common.Keyword; +import com.gempukku.lotro.common.Race; +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.modifiers.Modifier; +import com.gempukku.lotro.logic.modifiers.ModifiersQuerying; + +import java.util.Collections; +import java.util.List; + +/** + * Set: Ents of Fangorn + * Side: Shadow + * Culture: Moria + * Twilight Cost: 14 + * Type: Minion • Balrog + * Strength: 17 + * Vitality: 5 + * Site: 4 + * Game Text: Damage +2. The twilight cost of The Balrog is -3 if you can spot a [MORIA] minion. The Balrog cannot + * be assigned to skirmish companions or allies of strength less than 6. + */ +public class Card6_076 extends AbstractMinion { + public Card6_076() { + super(14, 17, 5, 4, Race.BALROG, Culture.MORIA, "The Balrog", true); + addKeyword(Keyword.DAMAGE, 2); + } + + @Override + public int getTwilightCostModifier(GameState gameState, ModifiersQuerying modifiersQuerying, PhysicalCard self) { + if (Filters.canSpot(gameState, modifiersQuerying, Culture.MORIA, CardType.MINION)) + return -3; + return 0; + } + + @Override + public List getAlwaysOnModifiers(LotroGame game, PhysicalCard self) { + return Collections.singletonList( + new PreventMinionBeingAssignedToCharacterModifier(self, null, + Filters.and(Filters.or(CardType.COMPANION, CardType.ALLY), Filters.lessStrengthThan(6)), self)); + } +} diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/filters/Filters.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/filters/Filters.java index 4ffae7762..820a56429 100644 --- a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/filters/Filters.java +++ b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/filters/Filters.java @@ -58,6 +58,15 @@ public class Filters { // Filters available + public static Filter lessStrengthThan(final int strength) { + return new Filter() { + @Override + public boolean accepts(GameState gameState, ModifiersQuerying modifiersQuerying, PhysicalCard physicalCard) { + return modifiersQuerying.getStrength(gameState, physicalCard) < strength; + } + }; + } + public static Filter lessStrengthThan(final PhysicalCard card) { return new Filter() { @Override