diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/modifiers/RoamingPenaltyModifier.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/modifiers/RoamingPenaltyModifier.java index ea8e4965b..ab4ccad94 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/modifiers/RoamingPenaltyModifier.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/modifiers/RoamingPenaltyModifier.java @@ -4,6 +4,7 @@ import com.gempukku.lotro.common.Filterable; 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.Condition; import com.gempukku.lotro.logic.modifiers.ModifierEffect; import com.gempukku.lotro.logic.modifiers.ModifiersQuerying; @@ -15,6 +16,11 @@ public class RoamingPenaltyModifier extends AbstractModifier { _modifier = modifier; } + public RoamingPenaltyModifier(PhysicalCard source, Filterable affectFilter, Condition condition, int modifier) { + super(source, "Roaming penalty " + ((modifier > 0) ? ("+" + modifier) : modifier), affectFilter, condition, ModifierEffect.TWILIGHT_COST_MODIFIER); + _modifier = modifier; + } + @Override public int getRoamingPenaltyModifier(GameState gameState, ModifiersQuerying modifiersQuerying, PhysicalCard physicalCard) { return _modifier; diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/elven/Card1_031.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/elven/Card1_031.java index 047173c77..7e1cc34bd 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/elven/Card1_031.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/elven/Card1_031.java @@ -2,16 +2,14 @@ package com.gempukku.lotro.cards.set1.elven; import com.gempukku.lotro.cards.AbstractAttachableFPPossession; import com.gempukku.lotro.cards.effects.SelfDiscardEffect; +import com.gempukku.lotro.cards.modifiers.conditions.LocationCondition; 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.RequiredTriggerAction; -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.modifiers.StrengthModifier; import com.gempukku.lotro.logic.timing.EffectResult; @@ -50,12 +48,7 @@ public class Card1_031 extends AbstractAttachableFPPossession { @Override protected List getNonBasicStatsModifiers(PhysicalCard self) { return Collections.singletonList(new StrengthModifier(self, Filters.hasAttached(self), - new Condition() { - @Override - public boolean isFullfilled(GameState gameState, ModifiersQuerying modifiersQuerying) { - return modifiersQuerying.hasKeyword(gameState, gameState.getCurrentSite(), Keyword.PLAINS); - } - }, 2)); + new LocationCondition(Keyword.PLAINS), 2)); } @Override diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/gondor/Card1_113.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/gondor/Card1_113.java index 57c3de492..5ababbfc4 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/gondor/Card1_113.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/gondor/Card1_113.java @@ -6,6 +6,7 @@ import com.gempukku.lotro.cards.actions.PlayEventAction; import com.gempukku.lotro.cards.effects.ExhaustCharacterEffect; import com.gempukku.lotro.cards.effects.choose.ChooseAndExertCharactersEffect; 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.effects.ChooseActiveCardEffect; @@ -46,8 +47,7 @@ public class Card1_113 extends AbstractOldEvent { @Override public boolean checkPlayRequirements(String playerId, LotroGame game, PhysicalCard self, int withTwilightRemoved, int twilightModifier, boolean ignoreRoamingPenalty, boolean ignoreCheckingDeadPile) { return super.checkPlayRequirements(playerId, game, self, withTwilightRemoved, twilightModifier, ignoreRoamingPenalty, ignoreCheckingDeadPile) - && (game.getModifiersQuerying().hasKeyword(game.getGameState(), game.getGameState().getCurrentSite(), Keyword.RIVER) - || game.getModifiersQuerying().hasKeyword(game.getGameState(), game.getGameState().getCurrentSite(), Keyword.FOREST)) + && PlayConditions.location(game, Filters.or(Keyword.RIVER, Keyword.FOREST)) && PlayConditions.canExert(self, game, Keyword.RANGER); } } diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/isengard/Card1_129.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/isengard/Card1_129.java index 6358aa9ba..b34a7820d 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/isengard/Card1_129.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/isengard/Card1_129.java @@ -4,14 +4,12 @@ import com.gempukku.lotro.cards.AbstractPermanent; import com.gempukku.lotro.cards.PlayConditions; import com.gempukku.lotro.cards.actions.PlayPermanentAction; import com.gempukku.lotro.cards.effects.choose.ChooseAndExertCharactersEffect; +import com.gempukku.lotro.cards.modifiers.conditions.LocationCondition; +import com.gempukku.lotro.cards.modifiers.conditions.NotCondition; 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.modifiers.Modifier; -import com.gempukku.lotro.logic.modifiers.ModifiersQuerying; import com.gempukku.lotro.logic.modifiers.TwilightCostModifier; /** @@ -43,15 +41,7 @@ public class Card1_129 extends AbstractPermanent { @Override public Modifier getAlwaysOnModifier(PhysicalCard self) { - return new TwilightCostModifier(self, - Filters.and( - CardType.COMPANION, - new Filter() { - @Override - public boolean accepts(GameState gameState, ModifiersQuerying modifiersQuerying, PhysicalCard physicalCard) { - return !modifiersQuerying.hasKeyword(gameState, gameState.getCurrentSite(), Keyword.SANCTUARY); - } - } - ), 2); + return new TwilightCostModifier(self, CardType.COMPANION, + new NotCondition(new LocationCondition(Keyword.SANCTUARY)), 2); } } diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/isengard/Card1_135.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/isengard/Card1_135.java index bc4c9b719..da311e313 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/isengard/Card1_135.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/isengard/Card1_135.java @@ -5,15 +5,14 @@ import com.gempukku.lotro.cards.PlayConditions; import com.gempukku.lotro.cards.actions.AttachPermanentAction; import com.gempukku.lotro.cards.effects.SelfDiscardEffect; import com.gempukku.lotro.cards.effects.choose.ChooseAndExertCharactersEffect; +import com.gempukku.lotro.cards.modifiers.conditions.LocationCondition; 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.RequiredTriggerAction; import com.gempukku.lotro.logic.modifiers.Modifier; -import com.gempukku.lotro.logic.modifiers.ModifiersQuerying; import com.gempukku.lotro.logic.modifiers.StrengthModifier; import com.gempukku.lotro.logic.timing.EffectResult; @@ -57,17 +56,8 @@ public class Card1_135 extends AbstractAttachable { @Override public Modifier getAlwaysOnModifier(final PhysicalCard self) { - return new StrengthModifier(self, - Filters.and( - Race.HOBBIT, - CardType.COMPANION, - new Filter() { - @Override - public boolean accepts(GameState gameState, ModifiersQuerying modifiersQuerying, PhysicalCard physicalCard) { - return gameState.getCurrentSite() == self.getAttachedTo(); - } - } - ), -2); + return new StrengthModifier(self, Filters.and(Race.HOBBIT, CardType.COMPANION), + new LocationCondition(Filters.hasAttached(self)), -2); } @Override diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/site/Card1_328.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/site/Card1_328.java index 42f3e067e..cbf04b023 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/site/Card1_328.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/site/Card1_328.java @@ -2,14 +2,11 @@ package com.gempukku.lotro.cards.set1.site; import com.gempukku.lotro.cards.AbstractSite; import com.gempukku.lotro.cards.modifiers.RoamingPenaltyModifier; +import com.gempukku.lotro.cards.modifiers.conditions.LocationCondition; import com.gempukku.lotro.common.Block; import com.gempukku.lotro.common.Race; -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.Modifier; -import com.gempukku.lotro.logic.modifiers.ModifiersQuerying; /** * Set: The Fellowship of the Ring @@ -26,13 +23,6 @@ public class Card1_328 extends AbstractSite { @Override public Modifier getAlwaysOnModifier(final PhysicalCard self) { return new RoamingPenaltyModifier(self, - Filters.and( - Race.NAZGUL, - new Filter() { - @Override - public boolean accepts(GameState gameState, ModifiersQuerying modifiersQuerying, PhysicalCard physicalCard) { - return (gameState.getCurrentSite() == self); - } - }), -2); + Race.NAZGUL, new LocationCondition(self), -2); } } diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/site/Card1_332.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/site/Card1_332.java index 691655eac..b1f65be8a 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/site/Card1_332.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/site/Card1_332.java @@ -1,6 +1,7 @@ package com.gempukku.lotro.cards.set1.site; import com.gempukku.lotro.cards.AbstractSite; +import com.gempukku.lotro.cards.TriggerConditions; import com.gempukku.lotro.cards.effects.ExertCharactersEffect; import com.gempukku.lotro.common.Block; import com.gempukku.lotro.common.CardType; @@ -30,9 +31,7 @@ public class Card1_332 extends AbstractSite { @Override public List getRequiredAfterTriggers(LotroGame game, EffectResult effectResult, PhysicalCard self) { - if (effectResult.getType() == EffectResult.Type.WHEN_MOVE_TO - && game.getGameState().getCurrentSite() == self) { - + if (TriggerConditions.movesTo(game, effectResult, self)) { if (Filters.canSpot(game.getGameState(), game.getModifiersQuerying(), Race.HOBBIT, CardType.COMPANION)) { RequiredTriggerAction action = new RequiredTriggerAction(self); action.appendEffect(new ExertCharactersEffect(self, Filters.and(Race.HOBBIT, CardType.COMPANION))); diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/site/Card1_336.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/site/Card1_336.java index c4d62871f..7b916a649 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/site/Card1_336.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/site/Card1_336.java @@ -1,16 +1,13 @@ package com.gempukku.lotro.cards.set1.site; import com.gempukku.lotro.cards.AbstractSite; +import com.gempukku.lotro.cards.modifiers.conditions.LocationCondition; import com.gempukku.lotro.common.Block; import com.gempukku.lotro.common.Keyword; import com.gempukku.lotro.common.Race; -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.KeywordModifier; import com.gempukku.lotro.logic.modifiers.Modifier; -import com.gempukku.lotro.logic.modifiers.ModifiersQuerying; /** * Set: The Fellowship of the Ring @@ -26,15 +23,6 @@ public class Card1_336 extends AbstractSite { @Override public Modifier getAlwaysOnModifier(final PhysicalCard self) { - return new KeywordModifier(self, - Filters.and( - Race.NAZGUL, - new Filter() { - @Override - public boolean accepts(GameState gameState, ModifiersQuerying modifiersQuerying, PhysicalCard physicalCard) { - return gameState.getCurrentSite() == self; - } - } - ), Keyword.FIERCE); + return new KeywordModifier(self, Race.NAZGUL, new LocationCondition(self), Keyword.FIERCE, 1); } } diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/site/Card1_338.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/site/Card1_338.java index 3231fc636..c0f892587 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/site/Card1_338.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/site/Card1_338.java @@ -1,6 +1,7 @@ package com.gempukku.lotro.cards.set1.site; import com.gempukku.lotro.cards.AbstractSite; +import com.gempukku.lotro.cards.PlayConditions; import com.gempukku.lotro.cards.TriggerConditions; import com.gempukku.lotro.common.Block; import com.gempukku.lotro.common.Keyword; @@ -40,7 +41,7 @@ public class Card1_338 extends AbstractSite { new Filter() { @Override public boolean accepts(GameState gameState, ModifiersQuerying modifiersQuerying, PhysicalCard physicalCard) { - return gameState.getCurrentSite() == self && (self.getData() == null); + return (self.getData() == null); } }), -5); } @@ -48,7 +49,7 @@ public class Card1_338 extends AbstractSite { @Override public List getRequiredAfterTriggers(LotroGame game, EffectResult effectResult, PhysicalCard self) { if (TriggerConditions.played(game, effectResult, Race.NAZGUL) - && game.getGameState().getCurrentSite() == self) + && PlayConditions.location(game, self)) self.storeData(new Object()); return null; } diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/site/Card1_342.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/site/Card1_342.java index 6909ad1a9..91ae8c58f 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/site/Card1_342.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/site/Card1_342.java @@ -1,6 +1,7 @@ package com.gempukku.lotro.cards.set1.site; import com.gempukku.lotro.cards.AbstractSite; +import com.gempukku.lotro.cards.PlayConditions; import com.gempukku.lotro.cards.modifiers.MoveLimitModifier; import com.gempukku.lotro.common.Block; import com.gempukku.lotro.common.Keyword; @@ -28,7 +29,7 @@ public class Card1_342 extends AbstractSite { @Override public List getRequiredAfterTriggers(LotroGame game, EffectResult effectResult, PhysicalCard self) { - if (game.getGameState().getCurrentSite() == self + if (PlayConditions.location(game, self) && self.getData() == null && Filters.canSpot(game.getGameState(), game.getModifiersQuerying(), Keyword.RANGER)) { self.storeData(new Object()); diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/site/Card1_344.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/site/Card1_344.java index b2e484b90..84d9deb2a 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/site/Card1_344.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/site/Card1_344.java @@ -2,6 +2,7 @@ package com.gempukku.lotro.cards.set1.site; import com.gempukku.lotro.cards.AbstractSite; import com.gempukku.lotro.cards.PlayConditions; +import com.gempukku.lotro.cards.TriggerConditions; import com.gempukku.lotro.cards.effects.ChoiceEffect; import com.gempukku.lotro.cards.effects.ExertCharactersEffect; import com.gempukku.lotro.cards.effects.choose.ChooseAndExertCharactersEffect; @@ -34,8 +35,7 @@ public class Card1_344 extends AbstractSite { @Override public List getRequiredAfterTriggers(final LotroGame game, EffectResult effectResult, PhysicalCard self) { - if (effectResult.getType() == EffectResult.Type.WHEN_MOVE_TO - && game.getGameState().getCurrentSite() == self) { + if (TriggerConditions.movesTo(game, effectResult, self)) { String fpPlayerId = game.getGameState().getCurrentPlayerId(); boolean gimliCanExert = PlayConditions.canExert(self, game, Filters.gimli); boolean twoOtherCanExert = PlayConditions.canExert(self, game, 1, 2, Filters.not(Filters.gimli), CardType.COMPANION); diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/site/Card1_346.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/site/Card1_346.java index d2b0c07e7..8e36b58ff 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/site/Card1_346.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/site/Card1_346.java @@ -2,6 +2,7 @@ package com.gempukku.lotro.cards.set1.site; import com.gempukku.lotro.cards.AbstractSite; import com.gempukku.lotro.cards.PlayConditions; +import com.gempukku.lotro.cards.TriggerConditions; import com.gempukku.lotro.cards.effects.ChoiceEffect; import com.gempukku.lotro.cards.effects.ExertCharactersEffect; import com.gempukku.lotro.cards.effects.choose.ChooseAndExertCharactersEffect; @@ -34,8 +35,7 @@ public class Card1_346 extends AbstractSite { @Override public List getRequiredAfterTriggers(final LotroGame game, EffectResult effectResult, PhysicalCard self) { - if (effectResult.getType() == EffectResult.Type.WHEN_MOVE_TO - && game.getGameState().getCurrentSite() == self) { + if (TriggerConditions.movesTo(game, effectResult, self)) { String fpPlayerId = game.getGameState().getCurrentPlayerId(); boolean frodoCanExert = PlayConditions.canExert(self, game, Filters.frodo); boolean twoOtherCanExert = PlayConditions.canExert(self, game, 1, 2, Filters.not(Filters.frodo), CardType.COMPANION); diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/site/Card1_353.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/site/Card1_353.java index d5f3adf92..50790de53 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/site/Card1_353.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/site/Card1_353.java @@ -1,6 +1,7 @@ package com.gempukku.lotro.cards.set1.site; import com.gempukku.lotro.cards.AbstractSite; +import com.gempukku.lotro.cards.TriggerConditions; import com.gempukku.lotro.common.Block; import com.gempukku.lotro.common.CardType; import com.gempukku.lotro.common.Keyword; @@ -28,8 +29,7 @@ public class Card1_353 extends AbstractSite { @Override public List getRequiredAfterTriggers(LotroGame game, EffectResult effectResult, PhysicalCard self) { - if (effectResult.getType() == EffectResult.Type.WHEN_MOVE_TO - && game.getGameState().getCurrentSite() == self) { + if (TriggerConditions.movesTo(game, effectResult, self)) { RequiredTriggerAction action = new RequiredTriggerAction(self); action.appendEffect( new DiscardCardsFromPlayEffect(self, CardType.ALLY)); diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/site/Card1_355.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/site/Card1_355.java index 1681b377a..a477e98b6 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/site/Card1_355.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/site/Card1_355.java @@ -1,6 +1,7 @@ package com.gempukku.lotro.cards.set1.site; import com.gempukku.lotro.cards.AbstractSite; +import com.gempukku.lotro.cards.TriggerConditions; import com.gempukku.lotro.cards.effects.ExertCharactersEffect; import com.gempukku.lotro.common.Block; import com.gempukku.lotro.common.CardType; @@ -29,8 +30,7 @@ public class Card1_355 extends AbstractSite { @Override public List getRequiredAfterTriggers(LotroGame game, EffectResult effectResult, PhysicalCard self) { - if (effectResult.getType() == EffectResult.Type.WHEN_MOVE_TO - && game.getGameState().getCurrentSite() == self + if (TriggerConditions.movesTo(game, effectResult, self) && !Filters.canSpot(game.getGameState(), game.getModifiersQuerying(), Keyword.RANGER)) { RequiredTriggerAction action = new RequiredTriggerAction(self); action.appendEffect( diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/site/Card1_362.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/site/Card1_362.java index a7e6f01b3..fdefafc23 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/site/Card1_362.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/site/Card1_362.java @@ -1,6 +1,7 @@ package com.gempukku.lotro.cards.set1.site; import com.gempukku.lotro.cards.AbstractSite; +import com.gempukku.lotro.cards.TriggerConditions; import com.gempukku.lotro.common.Block; import com.gempukku.lotro.game.PhysicalCard; import com.gempukku.lotro.game.state.LotroGame; @@ -25,8 +26,7 @@ public class Card1_362 extends AbstractSite { @Override public List getOptionalAfterTriggers(String playerId, LotroGame game, EffectResult effectResult, PhysicalCard self) { - if (effectResult.getType() == EffectResult.Type.WHEN_MOVE_TO - && game.getGameState().getCurrentSite() == self) { + if (TriggerConditions.movesTo(game, effectResult, self)) { if (!playerId.equals(game.getGameState().getCurrentPlayerId())) { OptionalTriggerAction action = new OptionalTriggerAction(self); action.appendEffect( diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/wraith/Card1_208.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/wraith/Card1_208.java index 022c5fd42..c891741a9 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/wraith/Card1_208.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/wraith/Card1_208.java @@ -1,6 +1,7 @@ package com.gempukku.lotro.cards.set1.wraith; import com.gempukku.lotro.cards.AbstractAttachable; +import com.gempukku.lotro.cards.PlayConditions; import com.gempukku.lotro.cards.effects.SelfDiscardEffect; import com.gempukku.lotro.cards.modifiers.conditions.LocationCondition; import com.gempukku.lotro.common.*; @@ -48,7 +49,7 @@ public class Card1_208 extends AbstractAttachable { @Override public List getRequiredAfterTriggers(LotroGame game, EffectResult effectResult, PhysicalCard self) { - if (game.getModifiersQuerying().hasKeyword(game.getGameState(), game.getGameState().getCurrentSite(), Keyword.UNDERGROUND)) { + if (PlayConditions.location(game, Keyword.UNDERGROUND)) { RequiredTriggerAction action = new RequiredTriggerAction(self); action.appendEffect(new SelfDiscardEffect(self)); return Collections.singletonList(action); diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/wraith/Card1_222.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/wraith/Card1_222.java index 82e6531d5..37d48c2e2 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/wraith/Card1_222.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/wraith/Card1_222.java @@ -40,9 +40,8 @@ public class Card1_222 extends AbstractPermanent { if (PlayConditions.canUseShadowCardDuringPhase(game, Phase.SHADOW, self, 3)) { ActivateCardAction action = new ActivateCardAction(self); action.appendCost(new RemoveTwilightEffect(3)); - if (!game.getGameState().getCurrentSite().getOwner().equals(playerId)) - action.appendEffect( - new PlaySiteEffect(action, playerId, Block.FELLOWSHIP, game.getGameState().getCurrentSiteNumber())); + action.appendEffect( + new PlaySiteEffect(action, playerId, Block.FELLOWSHIP, game.getGameState().getCurrentSiteNumber())); return Collections.singletonList(action); } return null; diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set10/gondor/Card10_028.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set10/gondor/Card10_028.java index 0f867375e..29e74383b 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set10/gondor/Card10_028.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set10/gondor/Card10_028.java @@ -8,7 +8,6 @@ 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; @@ -44,7 +43,7 @@ public class Card10_028 extends AbstractCompanion { @Override protected List getExtraInPlayPhaseActions(String playerId, LotroGame game, PhysicalCard self) { if (PlayConditions.canUseFPCardDuringPhase(game, Phase.FELLOWSHIP, self) - && Filters.and(Keyword.SANCTUARY).accepts(game.getGameState(), game.getModifiersQuerying(), game.getGameState().getCurrentSite()) + && PlayConditions.location(game, Keyword.SANCTUARY) && PlayConditions.canSelfExert(self, game)) { final ActivateCardAction action = new ActivateCardAction(self); action.appendCost( diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set11/dwarven/Card11_009.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set11/dwarven/Card11_009.java index 45e532271..7013aa1ca 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set11/dwarven/Card11_009.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set11/dwarven/Card11_009.java @@ -47,7 +47,7 @@ public class Card11_009 extends AbstractAttachableFPPossession { protected List getExtraInPlayPhaseActions(String playerId, LotroGame game, PhysicalCard self) { if (PlayConditions.canUseFPCardDuringPhase(game, Phase.SKIRMISH, self) && PlayConditions.canExert(self, game, Filters.hasAttached(self), Filters.gimli) - && game.getModifiersQuerying().hasKeyword(game.getGameState(), game.getGameState().getCurrentSite(), Keyword.BATTLEGROUND)) { + && PlayConditions.location(game, Keyword.BATTLEGROUND)) { ActivateCardAction action = new ActivateCardAction(self); action.appendCost( new ChooseAndExertCharactersEffect(action, playerId, 1, 1, Filters.hasAttached(self))); diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set11/gandalf/Card11_029.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set11/gandalf/Card11_029.java index fe179c150..279c0ba8e 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set11/gandalf/Card11_029.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set11/gandalf/Card11_029.java @@ -2,13 +2,12 @@ package com.gempukku.lotro.cards.set11.gandalf; import com.gempukku.lotro.cards.AbstractEvent; import com.gempukku.lotro.cards.PlayConditions; -import com.gempukku.lotro.cards.effects.choose.ChooseAndExertCharactersEffect; -import com.gempukku.lotro.cards.effects.RemoveBurdenEffect; import com.gempukku.lotro.cards.actions.PlayEventAction; +import com.gempukku.lotro.cards.effects.RemoveBurdenEffect; +import com.gempukku.lotro.cards.effects.choose.ChooseAndExertCharactersEffect; import com.gempukku.lotro.common.*; -import com.gempukku.lotro.game.state.LotroGame; import com.gempukku.lotro.game.PhysicalCard; -import com.gempukku.lotro.filters.Filters; +import com.gempukku.lotro.game.state.LotroGame; /** * Set: Shadows @@ -34,7 +33,7 @@ public class Card11_029 extends AbstractEvent { PlayEventAction action = new PlayEventAction(self); action.appendCost( new ChooseAndExertCharactersEffect(action, playerId, 1, 1, Culture.GANDALF, Race.WIZARD)); - int count = Filters.and(Keyword.DWELLING).accepts(game.getGameState(), game.getModifiersQuerying(), game.getGameState().getCurrentSite()) ? 2 : 1; + int count = PlayConditions.location(game, Keyword.DWELLING) ? 2 : 1; action.appendEffect( new RemoveBurdenEffect(playerId, self, count)); return action; diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set11/gandalf/Card11_036.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set11/gandalf/Card11_036.java index 06774385f..89e2e9b14 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set11/gandalf/Card11_036.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set11/gandalf/Card11_036.java @@ -38,7 +38,7 @@ public class Card11_036 extends AbstractEvent { action.appendEffect( new RevealCardsFromHandEffect(self, playerId, new HashSet(game.getGameState().getHand(playerId)))); int companionCount = Filters.filter(game.getGameState().getHand(playerId), game.getGameState(), game.getModifiersQuerying(), CardType.COMPANION).size(); - int penalty = companionCount * ((Filters.and(Keyword.BATTLEGROUND).accepts(game.getGameState(), game.getModifiersQuerying(), game.getGameState().getCurrentSite())) ? -4 : -3); + int penalty = companionCount * (PlayConditions.location(game, Keyword.BATTLEGROUND) ? -4 : -3); action.appendEffect( new ChooseAndAddUntilEOPStrengthBonusEffect(action, self, playerId, penalty, CardType.MINION)); return action; diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set11/gollum/Card11_051.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set11/gollum/Card11_051.java index e3911501b..c399c8ec5 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set11/gollum/Card11_051.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set11/gollum/Card11_051.java @@ -10,7 +10,6 @@ import com.gempukku.lotro.cards.effects.SelfExertEffect; import com.gempukku.lotro.common.Culture; import com.gempukku.lotro.common.Keyword; import com.gempukku.lotro.common.Phase; -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; @@ -62,7 +61,7 @@ public class Card11_051 extends AbstractCompanion { protected List getExtraInPlayPhaseActions(String playerId, LotroGame game, PhysicalCard self) { if (PlayConditions.canUseFPCardDuringPhase(game, Phase.SKIRMISH, self) && PlayConditions.canSelfExert(self, game) - && Filters.and(Keyword.MARSH).accepts(game.getGameState(), game.getModifiersQuerying(), game.getGameState().getCurrentSite())) { + && PlayConditions.location(game, Keyword.MARSH)) { ActivateCardAction action = new ActivateCardAction(self); action.appendCost( new SelfExertEffect(self)); diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set11/gollum/Card11_052.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set11/gollum/Card11_052.java index b819c756d..4d046f37e 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set11/gollum/Card11_052.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set11/gollum/Card11_052.java @@ -5,7 +5,6 @@ import com.gempukku.lotro.cards.PlayConditions; import com.gempukku.lotro.cards.actions.PlayEventAction; import com.gempukku.lotro.cards.effects.choose.ChooseAndPlayCardFromDiscardEffect; import com.gempukku.lotro.common.*; -import com.gempukku.lotro.filters.Filters; import com.gempukku.lotro.game.PhysicalCard; import com.gempukku.lotro.game.state.LotroGame; @@ -26,7 +25,7 @@ public class Card11_052 extends AbstractEvent { public boolean checkPlayRequirements(String playerId, LotroGame game, PhysicalCard self, int withTwilightRemoved, int twilightModifier, boolean ignoreRoamingPenalty, boolean ignoreCheckingDeadPile) { return super.checkPlayRequirements(playerId, game, self, withTwilightRemoved, twilightModifier, ignoreRoamingPenalty, ignoreCheckingDeadPile) && PlayConditions.canSpot(game, Culture.GOLLUM, CardType.MINION) - && Filters.and(Keyword.MOUNTAIN).accepts(game.getGameState(), game.getModifiersQuerying(), game.getGameState().getCurrentSite()) + && PlayConditions.location(game, Keyword.MOUNTAIN) && PlayConditions.canPlayFromDiscard(playerId, game, CardType.MINION); } diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set11/men/Card11_082.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set11/men/Card11_082.java index 06a7d7b2f..f42e3ce14 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set11/men/Card11_082.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set11/men/Card11_082.java @@ -4,12 +4,10 @@ import com.gempukku.lotro.cards.AbstractMinion; import com.gempukku.lotro.common.Culture; import com.gempukku.lotro.common.Keyword; import com.gempukku.lotro.common.Race; -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.KeywordModifier; import com.gempukku.lotro.logic.modifiers.Modifier; -import com.gempukku.lotro.logic.modifiers.ModifiersQuerying; /** * Set: Shadows @@ -29,12 +27,6 @@ public class Card11_082 extends AbstractMinion { @Override public Modifier getAlwaysOnModifier(PhysicalCard self) { - return new KeywordModifier(self, - new Filter() { - @Override - public boolean accepts(GameState gameState, ModifiersQuerying modifiersQuerying, PhysicalCard physicalCard) { - return physicalCard == gameState.getCurrentSite(); - } - }, Keyword.PLAINS); + return new KeywordModifier(self, Filters.currentSite, Keyword.PLAINS); } } diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set11/orc/Card11_138.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set11/orc/Card11_138.java index 614e763d1..3e3e40a0b 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set11/orc/Card11_138.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set11/orc/Card11_138.java @@ -4,12 +4,10 @@ import com.gempukku.lotro.cards.AbstractMinion; import com.gempukku.lotro.common.Culture; import com.gempukku.lotro.common.Keyword; import com.gempukku.lotro.common.Race; -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.KeywordModifier; import com.gempukku.lotro.logic.modifiers.Modifier; -import com.gempukku.lotro.logic.modifiers.ModifiersQuerying; /** * Set: Shadows @@ -29,12 +27,6 @@ public class Card11_138 extends AbstractMinion { @Override public Modifier getAlwaysOnModifier(PhysicalCard self) { - return new KeywordModifier(self, - new Filter() { - @Override - public boolean accepts(GameState gameState, ModifiersQuerying modifiersQuerying, PhysicalCard physicalCard) { - return gameState.getCurrentSite() == physicalCard; - } - }, Keyword.UNDERGROUND); + return new KeywordModifier(self, Filters.currentSite, Keyword.UNDERGROUND); } } diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set2/dwarven/Card2_008.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set2/dwarven/Card2_008.java index 7743c3781..a8f6a96f5 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set2/dwarven/Card2_008.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set2/dwarven/Card2_008.java @@ -3,15 +3,13 @@ package com.gempukku.lotro.cards.set2.dwarven; import com.gempukku.lotro.cards.AbstractPermanent; import com.gempukku.lotro.cards.TriggerConditions; import com.gempukku.lotro.cards.effects.SelfDiscardEffect; +import com.gempukku.lotro.cards.modifiers.conditions.LocationCondition; 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.RequiredTriggerAction; import com.gempukku.lotro.logic.modifiers.Modifier; -import com.gempukku.lotro.logic.modifiers.ModifiersQuerying; import com.gempukku.lotro.logic.modifiers.TwilightCostModifier; import com.gempukku.lotro.logic.timing.EffectResult; @@ -41,16 +39,8 @@ public class Card2_008 extends AbstractPermanent { @Override public Modifier getAlwaysOnModifier(PhysicalCard self) { return new TwilightCostModifier(self, - Filters.and( - Culture.MORIA, - Race.ORC, - new Filter() { - @Override - public boolean accepts(GameState gameState, ModifiersQuerying modifiersQuerying, PhysicalCard physicalCard) { - return !modifiersQuerying.hasKeyword(gameState, gameState.getCurrentSite(), Keyword.UNDERGROUND); - } - } - ), 2); + Filters.and(Culture.MORIA, Race.ORC), + new LocationCondition(Filters.not(Keyword.UNDERGROUND)), 2); } @Override diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set2/dwarven/Card2_012.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set2/dwarven/Card2_012.java index 4cfa008ea..01bc0cd56 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set2/dwarven/Card2_012.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set2/dwarven/Card2_012.java @@ -47,7 +47,7 @@ public class Card2_012 extends AbstractPermanent { new CheckLimitEffect(action, self, 3, Phase.SKIRMISH, new AddUntilEndOfPhaseModifierEffect( new StrengthModifier(self, Filters.sameCard(dwarf), 1), Phase.SKIRMISH))); - if (game.getModifiersQuerying().hasKeyword(game.getGameState(), game.getGameState().getCurrentSite(), Keyword.UNDERGROUND)) + if (PlayConditions.location(game, Keyword.UNDERGROUND)) action.appendEffect( new CheckLimitEffect(action, self, 3, Phase.SKIRMISH, new AddUntilEndOfPhaseModifierEffect( diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set2/elven/Card2_019.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set2/elven/Card2_019.java index 38325b5a5..306bba58e 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set2/elven/Card2_019.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set2/elven/Card2_019.java @@ -40,7 +40,7 @@ public class Card2_019 extends AbstractOldEvent { new ChooseAndExertCharactersEffect(action, playerId, 1, 1, Race.ELF)); action.appendEffect( new WoundCharactersEffect(self, Race.NAZGUL)); - if (game.getModifiersQuerying().hasKeyword(game.getGameState(), game.getGameState().getCurrentSite(), Keyword.RIVER)) + if (PlayConditions.location(game, Keyword.RIVER)) action.appendEffect( new WoundCharactersEffect(self, Race.NAZGUL)); return action; diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set2/gondor/Card2_035.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set2/gondor/Card2_035.java index 33c73ba6a..00e0b3641 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set2/gondor/Card2_035.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set2/gondor/Card2_035.java @@ -2,14 +2,12 @@ package com.gempukku.lotro.cards.set2.gondor; import com.gempukku.lotro.cards.AbstractPermanent; import com.gempukku.lotro.cards.modifiers.ArcheryTotalModifier; +import com.gempukku.lotro.cards.modifiers.conditions.LocationCondition; 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.modifiers.Condition; import com.gempukku.lotro.logic.modifiers.Modifier; -import com.gempukku.lotro.logic.modifiers.ModifiersQuerying; /** * Set: Mines of Moria @@ -33,12 +31,6 @@ public class Card2_035 extends AbstractPermanent { @Override public Modifier getAlwaysOnModifier(PhysicalCard self) { - return new ArcheryTotalModifier(self, Side.SHADOW, - new Condition() { - @Override - public boolean isFullfilled(GameState gameState, ModifiersQuerying modifiersQuerying) { - return modifiersQuerying.hasKeyword(gameState, gameState.getCurrentSite(), Keyword.FOREST); - } - }, -2); + return new ArcheryTotalModifier(self, Side.SHADOW, new LocationCondition(Keyword.FOREST), -2); } }