diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/modifiers/ModifiersLogic.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/modifiers/ModifiersLogic.java index 0d97b6937..2f37b6231 100644 --- a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/modifiers/ModifiersLogic.java +++ b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/modifiers/ModifiersLogic.java @@ -137,7 +137,18 @@ public class ModifiersLogic implements ModifiersEnvironment, ModifiersQuerying { else { LinkedList liveModifiers = new LinkedList<>(); for (Modifier modifier : modifiers) { - if (keyword == null || ((KeywordAffectingModifier) modifier).getKeyword() == keyword || ((KeywordAffectingModifier) modifier).getKeyword() == null) { + boolean keywordMatches = false; + + if(modifier instanceof KeywordAffectingModifier keyModifier) { + keywordMatches = keyModifier.getKeyword() == null || keyModifier.getKeyword() == keyword; + } + else if(modifier instanceof DelegateModifier delegateModifier) { + if(delegateModifier.delegate instanceof KeywordAffectingModifier keyModifier) { + keywordMatches = keyModifier.getKeyword() == null || keyModifier.getKeyword() == keyword; + } + } + + if (keyword == null || keywordMatches) { if (!_skipSet.contains(modifier)) { _skipSet.add(modifier); Condition condition = modifier.getCondition(); diff --git a/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/cards/GenericCardTestHelper.java b/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/cards/GenericCardTestHelper.java index 2bb6a7f59..6baaa90f1 100644 --- a/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/cards/GenericCardTestHelper.java +++ b/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/cards/GenericCardTestHelper.java @@ -14,7 +14,9 @@ import com.gempukku.lotro.logic.actions.RequiredTriggerAction; import com.gempukku.lotro.logic.decisions.AwaitingDecision; import com.gempukku.lotro.logic.decisions.DecisionResultInvalidException; import com.gempukku.lotro.logic.effects.DiscardCardsFromPlayEffect; +import com.gempukku.lotro.logic.effects.TakeControlOfASiteEffect; import com.gempukku.lotro.logic.modifiers.Modifier; +import com.gempukku.lotro.logic.timing.Effect; import com.gempukku.lotro.logic.timing.EffectResult; import com.gempukku.lotro.logic.timing.PlayConditions; import com.gempukku.lotro.logic.timing.RuleUtils; @@ -23,6 +25,8 @@ import org.junit.Assert; import java.util.*; +import static org.junit.Assert.assertTrue; + public class GenericCardTestHelper extends AbstractAtTest { private final int LastCardID = 100; @@ -1089,6 +1093,17 @@ public class GenericCardTestHelper extends AbstractAtTest { _game.getActionsEnvironment().addUntilEndOfTurnActionProxy(action); } + public void ShadowTakeControlOfSite() throws DecisionResultInvalidException { + ShadowExecuteAdHocEffect(new TakeControlOfASiteEffect(null, P2)); + } + + public void FreepsExecuteAdHocEffect(Effect effect) throws DecisionResultInvalidException { ExecuteAdHocEffect(P1, effect); } + public void ShadowExecuteAdHocEffect(Effect effect) throws DecisionResultInvalidException { ExecuteAdHocEffect(P2, effect); } + public void ExecuteAdHocEffect(String playerId, Effect effect) throws DecisionResultInvalidException { + carryOutEffectInPhaseActionByPlayer(playerId, effect); + assertTrue(effect.wasCarriedOut()); + } + public void FreepsChoose(String choice) throws DecisionResultInvalidException { playerDecided(P1, choice); } public void FreepsChoose(String...choices) throws DecisionResultInvalidException { playerDecided(P1, String.join(",", choices)); } public void ShadowChoose(String choice) throws DecisionResultInvalidException { playerDecided(P2, choice); } diff --git a/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/cards/official/set07/Card_07_275_Tests.java b/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/cards/official/set07/Card_07_275_Tests.java index 954ea1124..ecc715f16 100644 --- a/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/cards/official/set07/Card_07_275_Tests.java +++ b/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/cards/official/set07/Card_07_275_Tests.java @@ -17,8 +17,8 @@ public class Card_07_275_Tests return new GenericCardTestHelper( new HashMap<>() {{ - put("card", "7_275"); - // put other cards in here as needed for the test case + put("pillager", "7_275"); + put("troop", "7_279"); }}, GenericCardTestHelper.FellowshipSites, GenericCardTestHelper.FOTRFrodo, @@ -46,7 +46,7 @@ public class Card_07_275_Tests var scn = GetScenario(); - var card = scn.GetFreepsCard("card"); + var card = scn.GetFreepsCard("pillager"); assertEquals("Gorgoroth Pillager", card.getBlueprint().getTitle()); assertNull(card.getBlueprint().getSubtitle()); @@ -62,18 +62,28 @@ public class Card_07_275_Tests assertEquals(5, card.getBlueprint().getSiteNumber()); } - // Uncomment any @Test markers below once this is ready to be used - //@Test - public void GorgorothPillagerTest1() throws DecisionResultInvalidException, CardNotFoundException { + @Test + public void GorgorothPillagerMakesBesiegersFierceWhenStackedOnSiteYouControl() throws DecisionResultInvalidException, CardNotFoundException { //Pre-game setup var scn = GetScenario(); - var card = scn.GetFreepsCard("card"); - scn.FreepsMoveCardToHand(card); + var site1 = scn.GetFreepsSite(1); + + var pillager = scn.GetShadowCard("pillager"); + var troop = scn.GetShadowCard("troop"); + scn.ShadowMoveCardToDiscard(pillager, troop); scn.StartGame(); - scn.FreepsPlayCard(card); - assertEquals(4, scn.GetTwilight()); + scn.SkipToSite(2); + scn.FreepsPassCurrentPhaseAction(); + + scn.ShadowTakeControlOfSite(); + assertTrue(scn.IsSiteControlled(site1)); + + scn.ShadowMoveCharToTable(troop); + scn.StackCardsOn(site1, pillager); + + assertTrue(scn.hasKeyword(troop, Keyword.FIERCE)); } }