diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/modifiers/PreventMinionBeingAssignedToCompanionModifier.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/modifiers/PreventMinionBeingAssignedToCharacterModifier.java similarity index 78% rename from gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/modifiers/PreventMinionBeingAssignedToCompanionModifier.java rename to gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/modifiers/PreventMinionBeingAssignedToCharacterModifier.java index 1fbd7e78d..28924dfcc 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/modifiers/PreventMinionBeingAssignedToCompanionModifier.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/modifiers/PreventMinionBeingAssignedToCharacterModifier.java @@ -10,11 +10,11 @@ import com.gempukku.lotro.logic.modifiers.ModifiersQuerying; import java.util.List; -public class PreventMinionBeingAssignedToCompanionModifier extends AbstractModifier { +public class PreventMinionBeingAssignedToCharacterModifier extends AbstractModifier { private Filter _minionFilter; - public PreventMinionBeingAssignedToCompanionModifier(PhysicalCard source, Filter companionFilter, Filter minionFilter) { - super(source, "Is affected by assignment restriction", companionFilter, new ModifierEffect[]{ModifierEffect.ASSIGNMENT_MODIFIER}); + public PreventMinionBeingAssignedToCharacterModifier(PhysicalCard source, Filter characterFilter, Filter minionFilter) { + super(source, "Is affected by assignment restriction", characterFilter, new ModifierEffect[]{ModifierEffect.ASSIGNMENT_MODIFIER}); _minionFilter = minionFilter; } diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/isengard/Card1_147.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/isengard/Card1_147.java index 754af5ae6..5185e44aa 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/isengard/Card1_147.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/isengard/Card1_147.java @@ -5,7 +5,7 @@ import com.gempukku.lotro.cards.PlayConditions; import com.gempukku.lotro.cards.costs.ExertCharactersCost; import com.gempukku.lotro.cards.effects.AddUntilEndOfPhaseModifierEffect; import com.gempukku.lotro.cards.effects.CardAffectsCardEffect; -import com.gempukku.lotro.cards.modifiers.PreventMinionBeingAssignedToCompanionModifier; +import com.gempukku.lotro.cards.modifiers.PreventMinionBeingAssignedToCharacterModifier; import com.gempukku.lotro.common.*; import com.gempukku.lotro.filters.Filters; import com.gempukku.lotro.game.PhysicalCard; @@ -48,7 +48,7 @@ public class Card1_147 extends AbstractMinion { action.appendEffect(new CardAffectsCardEffect(self, companion)); action.appendEffect( new AddUntilEndOfPhaseModifierEffect( - new PreventMinionBeingAssignedToCompanionModifier(self, Filters.sameCard(companion), Filters.sameCard(self)) + new PreventMinionBeingAssignedToCharacterModifier(self, Filters.sameCard(companion), Filters.sameCard(self)) , Phase.ASSIGNMENT)); } }); diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set2/wraith/Card2_075.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set2/wraith/Card2_075.java new file mode 100644 index 000000000..7adee6796 --- /dev/null +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set2/wraith/Card2_075.java @@ -0,0 +1,58 @@ +package com.gempukku.lotro.cards.set2.wraith; + +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.LotroGame; +import com.gempukku.lotro.logic.actions.RequiredTriggerAction; +import com.gempukku.lotro.logic.effects.DiscardCardsFromPlayEffect; +import com.gempukku.lotro.logic.modifiers.Modifier; +import com.gempukku.lotro.logic.modifiers.RemoveKeywordModifier; +import com.gempukku.lotro.logic.timing.EffectResult; + +import java.util.Collections; +import java.util.LinkedList; +import java.util.List; + +/** + * Set: Mines of Moria + * Side: Shadow + * Culture: Wraith + * Twilight Cost: 2 + * Type: Minion • Man + * Strength: 4 + * Vitality: 1 + * Site: 2 + * Game Text: Nazgul are not roaming. The Free Peoples player may not assign a character to skirmish Bill Ferny. + * Discard Bill Ferny if underground. + */ +public class Card2_075 extends AbstractMinion { + public Card2_075() { + super(2, 4, 1, 2, Race.MAN, Culture.WRAITH, "Bill Ferny", true); + } + + @Override + public List getAlwaysOnModifiers(PhysicalCard self) { + List modifiers = new LinkedList(); + modifiers.add(new RemoveKeywordModifier(self, Filters.race(Race.NAZGUL), Keyword.ROAMING)); + modifiers.add( + new PreventMinionBeingAssignedToCharacterModifier(self, Filters.or(Filters.type(CardType.COMPANION), Filters.type(CardType.ALLY)), Filters.sameCard(self))); + return modifiers; + } + + @Override + public List getRequiredAfterTriggers(LotroGame game, EffectResult effectResult, PhysicalCard self) { + if (game.getModifiersQuerying().hasKeyword(game.getGameState(), game.getGameState().getCurrentSite(), Keyword.UNDERGROUND)) { + RequiredTriggerAction action = new RequiredTriggerAction(self); + action.appendEffect( + new DiscardCardsFromPlayEffect(self, self)); + return Collections.singletonList(action); + } + return null; + } +} diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/timing/rules/RoamingRule.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/timing/rules/RoamingRule.java index d5b33c560..7d7c14f6c 100644 --- a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/timing/rules/RoamingRule.java +++ b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/timing/rules/RoamingRule.java @@ -6,10 +6,7 @@ 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.modifiers.AbstractModifier; -import com.gempukku.lotro.logic.modifiers.ModifierEffect; -import com.gempukku.lotro.logic.modifiers.ModifiersLogic; -import com.gempukku.lotro.logic.modifiers.ModifiersQuerying; +import com.gempukku.lotro.logic.modifiers.*; public class RoamingRule { private ModifiersLogic _modifiersLogic; @@ -27,21 +24,10 @@ public class RoamingRule { }); _modifiersLogic.addAlwaysOnModifier( - new AbstractModifier(null, "Is Roaming", roamingFilter, new ModifierEffect[]{ModifierEffect.KEYWORD_MODIFIER, ModifierEffect.TWILIGHT_COST_MODIFIER}) { - @Override - public int getKeywordCount(GameState gameState, ModifiersQuerying modifiersQuerying, PhysicalCard physicalCard, Keyword keyword, int result) { - if (keyword == Keyword.ROAMING) - return result + 1; - return result; - } - - @Override - public boolean hasKeyword(GameState gameState, ModifiersQuerying modifiersQuerying, PhysicalCard physicalCard, Keyword keyword, boolean result) { - if (keyword == Keyword.ROAMING) - return true; - return result; - } + new KeywordModifier(null, roamingFilter, Keyword.ROAMING)); + _modifiersLogic.addAlwaysOnModifier( + new AbstractModifier(null, "Roaming twilight cost increase", Filters.keyword(Keyword.ROAMING), new ModifierEffect[]{ModifierEffect.TWILIGHT_COST_MODIFIER}) { @Override public int getTwilightCost(GameState gameState, ModifiersQuerying modifiersLogic, PhysicalCard physicalCard, int result) { return result + Math.max(0, modifiersLogic.getRoamingPenalty(gameState, physicalCard));