diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/modifiers/AllyOnCurrentSiteModifier.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/modifiers/AllyParticipatesInArcheryFireAndSkirmishesModifier.java similarity index 51% rename from gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/modifiers/AllyOnCurrentSiteModifier.java rename to gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/modifiers/AllyParticipatesInArcheryFireAndSkirmishesModifier.java index ad5c4c42a..4bc6b2607 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/modifiers/AllyOnCurrentSiteModifier.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/modifiers/AllyParticipatesInArcheryFireAndSkirmishesModifier.java @@ -7,13 +7,18 @@ import com.gempukku.lotro.logic.modifiers.AbstractModifier; import com.gempukku.lotro.logic.modifiers.ModifierEffect; import com.gempukku.lotro.logic.modifiers.ModifiersQuerying; -public class AllyOnCurrentSiteModifier extends AbstractModifier { - public AllyOnCurrentSiteModifier(PhysicalCard source, Filter affectFilter) { +public class AllyParticipatesInArcheryFireAndSkirmishesModifier extends AbstractModifier { + public AllyParticipatesInArcheryFireAndSkirmishesModifier(PhysicalCard source, Filter affectFilter) { super(source, "Can participate in archery and skirmishes", affectFilter, new ModifierEffect[]{ModifierEffect.PRESENCE_MODIFIER}); } @Override - public boolean isAllyOnCurrentSite(GameState gameState, ModifiersQuerying modifiersLogic, PhysicalCard card, boolean allyOnCurrentSite) { + public boolean isAllyParticipateInArcheryFire(GameState gameState, ModifiersQuerying modifiersQuerying, PhysicalCard card) { + return true; + } + + @Override + public boolean isAllyParticipateInSkirmishes(GameState gameState, ModifiersQuerying modifiersQuerying, PhysicalCard card) { return true; } } diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/modifiers/CantBeAssignedToSkirmishModifier.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/modifiers/CantBeAssignedToSkirmishModifier.java index f82beb676..e26d7b80b 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/modifiers/CantBeAssignedToSkirmishModifier.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/modifiers/CantBeAssignedToSkirmishModifier.java @@ -1,5 +1,6 @@ package com.gempukku.lotro.cards.modifiers; +import com.gempukku.lotro.common.Side; import com.gempukku.lotro.filters.Filter; import com.gempukku.lotro.game.PhysicalCard; import com.gempukku.lotro.game.state.GameState; @@ -13,7 +14,7 @@ public class CantBeAssignedToSkirmishModifier extends AbstractModifier { } @Override - public boolean canBeAssignedToSkirmish(GameState gameState, ModifiersQuerying modifiersQuerying, PhysicalCard card, boolean result) { + public boolean canBeAssignedToSkirmish(GameState gameState, Side sidePlayer, ModifiersQuerying modifiersQuerying, PhysicalCard card) { return false; } } diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/dwarven/Card1_027.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/dwarven/Card1_027.java index 513bf74de..af2d32c92 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/dwarven/Card1_027.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/dwarven/Card1_027.java @@ -4,7 +4,7 @@ import com.gempukku.lotro.cards.AbstractAlly; import com.gempukku.lotro.cards.PlayConditions; import com.gempukku.lotro.cards.effects.AddUntilStartOfPhaseModifierEffect; import com.gempukku.lotro.cards.effects.ExertCharactersEffect; -import com.gempukku.lotro.cards.modifiers.AllyOnCurrentSiteModifier; +import com.gempukku.lotro.cards.modifiers.AllyParticipatesInArcheryFireAndSkirmishesModifier; import com.gempukku.lotro.common.*; import com.gempukku.lotro.filters.Filters; import com.gempukku.lotro.game.PhysicalCard; @@ -40,7 +40,7 @@ public class Card1_027 extends AbstractAlly { action.appendCost(new ExertCharactersEffect(self, self)); action.appendEffect( new AddUntilStartOfPhaseModifierEffect( - new AllyOnCurrentSiteModifier(self, Filters.sameCard(self)), Phase.REGROUP)); + new AllyParticipatesInArcheryFireAndSkirmishesModifier(self, Filters.sameCard(self)), Phase.REGROUP)); return Collections.singletonList(action); } diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/elven/Card1_064.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/elven/Card1_064.java index 4e03b12ad..e456538dd 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/elven/Card1_064.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/elven/Card1_064.java @@ -5,7 +5,7 @@ import com.gempukku.lotro.cards.PlayConditions; import com.gempukku.lotro.cards.actions.PlayEventAction; import com.gempukku.lotro.cards.effects.AddUntilStartOfPhaseModifierEffect; import com.gempukku.lotro.cards.effects.ChooseAndExertCharactersEffect; -import com.gempukku.lotro.cards.modifiers.AllyOnCurrentSiteModifier; +import com.gempukku.lotro.cards.modifiers.AllyParticipatesInArcheryFireAndSkirmishesModifier; import com.gempukku.lotro.cards.modifiers.StrengthModifier; import com.gempukku.lotro.common.*; import com.gempukku.lotro.filters.Filters; @@ -50,7 +50,7 @@ public class Card1_064 extends AbstractEvent { , Phase.REGROUP)); action.appendEffect( new AddUntilStartOfPhaseModifierEffect( - new AllyOnCurrentSiteModifier(self, Filters.sameCard(elfAlly)) + new AllyParticipatesInArcheryFireAndSkirmishesModifier(self, Filters.sameCard(elfAlly)) , Phase.REGROUP)); } } diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/elven/Card1_065.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/elven/Card1_065.java index f73870141..3eba70717 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/elven/Card1_065.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/elven/Card1_065.java @@ -5,7 +5,7 @@ import com.gempukku.lotro.cards.PlayConditions; import com.gempukku.lotro.cards.actions.PlayEventAction; import com.gempukku.lotro.cards.effects.AddUntilStartOfPhaseModifierEffect; import com.gempukku.lotro.cards.effects.ChooseAndExertCharactersEffect; -import com.gempukku.lotro.cards.modifiers.AllyOnCurrentSiteModifier; +import com.gempukku.lotro.cards.modifiers.AllyParticipatesInArcheryFireAndSkirmishesModifier; import com.gempukku.lotro.cards.modifiers.StrengthModifier; import com.gempukku.lotro.common.*; import com.gempukku.lotro.filters.Filters; @@ -50,7 +50,7 @@ public class Card1_065 extends AbstractEvent { , Phase.REGROUP)); action.appendEffect( new AddUntilStartOfPhaseModifierEffect( - new AllyOnCurrentSiteModifier(self, Filters.sameCard(elfAlly)) + new AllyParticipatesInArcheryFireAndSkirmishesModifier(self, Filters.sameCard(elfAlly)) , Phase.REGROUP)); } } diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/gondor/Card1_109.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/gondor/Card1_109.java index 493c11728..0014fcc17 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/gondor/Card1_109.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/gondor/Card1_109.java @@ -5,7 +5,7 @@ import com.gempukku.lotro.cards.PlayConditions; import com.gempukku.lotro.cards.actions.PlayEventAction; import com.gempukku.lotro.cards.effects.AddUntilStartOfPhaseModifierEffect; import com.gempukku.lotro.cards.effects.ChooseAndExertCharactersEffect; -import com.gempukku.lotro.cards.modifiers.AllyOnCurrentSiteModifier; +import com.gempukku.lotro.cards.modifiers.AllyParticipatesInArcheryFireAndSkirmishesModifier; import com.gempukku.lotro.cards.modifiers.StrengthModifier; import com.gempukku.lotro.common.CardType; import com.gempukku.lotro.common.Culture; @@ -53,7 +53,7 @@ public class Card1_109 extends AbstractEvent { , Phase.REGROUP)); action.appendEffect( new AddUntilStartOfPhaseModifierEffect( - new AllyOnCurrentSiteModifier(self, Filters.sameCard(ally)) + new AllyParticipatesInArcheryFireAndSkirmishesModifier(self, Filters.sameCard(ally)) , Phase.REGROUP)); } } diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/moria/Card1_169.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/moria/Card1_169.java index 32455a8c0..2aac7f9d7 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/moria/Card1_169.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/moria/Card1_169.java @@ -35,9 +35,9 @@ public class Card1_169 extends AbstractEvent { final PlayEventAction action = new PlayEventAction(self); final PhysicalCard ringBearer = game.getGameState().getRingBearer(game.getGameState().getCurrentPlayerId()); - if (Filters.filterActive(game.getGameState(), game.getModifiersQuerying(), Filters.keyword(Keyword.RING_BEARER), Filters.canBeAssignedToSkirmish()).size() > 0) { + if (Filters.filterActive(game.getGameState(), game.getModifiersQuerying(), Filters.keyword(Keyword.RING_BEARER), Filters.canBeAssignedToSkirmish(Side.SHADOW)).size() > 0) { action.appendEffect( - new ChooseActiveCardEffect(self, game.getGameState().getCurrentPlayerId(), "Choose minion to assign Ring-Bearer to", Filters.type(CardType.MINION), Filters.canBeAssignedToSkirmish()) { + new ChooseActiveCardEffect(self, game.getGameState().getCurrentPlayerId(), "Choose minion to assign Ring-Bearer to", Filters.type(CardType.MINION), Filters.canBeAssignedToSkirmish(Side.SHADOW)) { @Override protected void cardSelected(PhysicalCard minion) { action.appendEffect( diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/moria/Card1_171.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/moria/Card1_171.java index 17cb1bdfe..2aea4573a 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/moria/Card1_171.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/moria/Card1_171.java @@ -28,11 +28,11 @@ public class Card1_171 extends AbstractEvent { public PlayEventAction getPlayCardAction(final String playerId, final LotroGame game, final PhysicalCard self, int twilightModifier) { final PlayEventAction action = new PlayEventAction(self); action.appendEffect( - new ChooseActiveCardEffect(self, playerId, "Choose exhausted companion", Filters.type(CardType.COMPANION), Filters.exhausted(), Filters.canBeAssignedToSkirmish()) { + new ChooseActiveCardEffect(self, playerId, "Choose exhausted companion", Filters.type(CardType.COMPANION), Filters.exhausted(), Filters.canBeAssignedToSkirmish(Side.SHADOW)) { @Override protected void cardSelected(final PhysicalCard companion) { action.appendEffect( - new ChooseActiveCardEffect(self, playerId, "Choose MORIA Orc", Filters.culture(Culture.MORIA), Filters.race(Race.ORC), Filters.canBeAssignedToSkirmish()) { + new ChooseActiveCardEffect(self, playerId, "Choose MORIA Orc", Filters.culture(Culture.MORIA), Filters.race(Race.ORC), Filters.canBeAssignedToSkirmish(Side.SHADOW)) { @Override protected void cardSelected(PhysicalCard moriaOrc) { action.appendEffect( diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/sauron/Card1_262.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/sauron/Card1_262.java index 15122acbb..cf7ca763a 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/sauron/Card1_262.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/sauron/Card1_262.java @@ -43,10 +43,10 @@ public class Card1_262 extends AbstractMinion { protected List getExtraPhaseActions(final String playerId, LotroGame game, final PhysicalCard self) { if (PlayConditions.canUseShadowCardDuringPhase(game.getGameState(), Phase.ASSIGNMENT, self, 0) && Filters.countSpottable(game.getGameState(), game.getModifiersQuerying(), Filters.race(Race.HOBBIT), Filters.type(CardType.COMPANION)) >= 2 - && Filters.canSpot(game.getGameState(), game.getModifiersQuerying(), Filters.sameCard(self), Filters.canBeAssignedToSkirmish())) { + && Filters.canSpot(game.getGameState(), game.getModifiersQuerying(), Filters.sameCard(self), Filters.canBeAssignedToSkirmish(Side.SHADOW))) { final ActivateCardAction action = new ActivateCardAction(self, Keyword.ASSIGNMENT); action.appendEffect( - new ChooseActiveCardEffect(self, game.getGameState().getCurrentPlayerId(), "Choose a Hobbit", Filters.race(Race.HOBBIT), Filters.type(CardType.COMPANION), Filters.canBeAssignedToSkirmish()) { + new ChooseActiveCardEffect(self, game.getGameState().getCurrentPlayerId(), "Choose a Hobbit", Filters.race(Race.HOBBIT), Filters.type(CardType.COMPANION), Filters.canBeAssignedToSkirmish(Side.SHADOW)) { @Override protected void cardSelected(PhysicalCard hobbit) { action.appendEffect(new AssignmentEffect(hobbit.getOwner(), hobbit, Collections.singletonList(self), "Orc Assassin effect")); diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/wraith/Card1_224.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/wraith/Card1_224.java index ec609cadf..ce38d947e 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/wraith/Card1_224.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/wraith/Card1_224.java @@ -48,7 +48,7 @@ public class Card1_224 extends AbstractResponseEvent { for (Skirmish assignment : assignments) game.getGameState().removeAssignment(assignment); - if (Filters.countActive(game.getGameState(), game.getModifiersQuerying(), Filters.keyword(Keyword.RING_BEARER), Filters.canBeAssignedToSkirmish()) > 0) { + if (Filters.countActive(game.getGameState(), game.getModifiersQuerying(), Filters.keyword(Keyword.RING_BEARER), Filters.canBeAssignedToSkirmish(Side.SHADOW)) > 0) { action.appendEffect( new ChooseActiveCardEffect(self, playerId, "Choose a Nazgul to skirmish the Ring-Bearer", Filters.race(Race.NAZGUL)) { @Override diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/wraith/Card1_236.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/wraith/Card1_236.java index f54231844..7c2852a83 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/wraith/Card1_236.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/wraith/Card1_236.java @@ -37,9 +37,9 @@ public class Card1_236 extends AbstractMinion { if (PlayConditions.canUseShadowCardDuringPhase(game.getGameState(), Phase.ASSIGNMENT, self, 0) && game.getGameState().getBurdens() >= 4) { final ActivateCardAction action = new ActivateCardAction(self, Keyword.ASSIGNMENT); - if (Filters.canSpot(game.getGameState(), game.getModifiersQuerying(), Filters.sameCard(self), Filters.notAssigned())) { + if (Filters.canSpot(game.getGameState(), game.getModifiersQuerying(), Filters.sameCard(self), Filters.notAssigned(), Filters.canBeAssignedToSkirmish(Side.SHADOW))) { action.appendEffect( - new ChooseActiveCardEffect(self, playerId, "Choose a companion (except the Ring-Bearer", Filters.type(CardType.COMPANION), Filters.not(Filters.keyword(Keyword.RING_BEARER)), Filters.canBeAssignedToSkirmish()) { + new ChooseActiveCardEffect(self, playerId, "Choose a companion (except the Ring-Bearer", Filters.type(CardType.COMPANION), Filters.not(Filters.keyword(Keyword.RING_BEARER)), Filters.canBeAssignedToSkirmish(Side.SHADOW)) { @Override protected void cardSelected(PhysicalCard companion) { action.appendEffect( diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set3/gondor/Card3_042.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set3/gondor/Card3_042.java index e0afdbc6b..2d0f14c58 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set3/gondor/Card3_042.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set3/gondor/Card3_042.java @@ -4,7 +4,7 @@ import com.gempukku.lotro.cards.AbstractAttachableFPPossession; import com.gempukku.lotro.cards.PlayConditions; import com.gempukku.lotro.cards.effects.AddUntilStartOfPhaseModifierEffect; import com.gempukku.lotro.cards.effects.ChooseAndExertCharactersEffect; -import com.gempukku.lotro.cards.modifiers.AllyOnCurrentSiteModifier; +import com.gempukku.lotro.cards.modifiers.AllyParticipatesInArcheryFireAndSkirmishesModifier; import com.gempukku.lotro.cards.modifiers.StrengthModifier; import com.gempukku.lotro.common.CardType; import com.gempukku.lotro.common.Culture; @@ -57,7 +57,7 @@ public class Card3_042 extends AbstractAttachableFPPossession { new StrengthModifier(self, Filters.sameCard(card), 3), Phase.REGROUP)); action.insertEffect( new AddUntilStartOfPhaseModifierEffect( - new AllyOnCurrentSiteModifier(self, Filters.sameCard(card)), Phase.REGROUP)); + new AllyParticipatesInArcheryFireAndSkirmishesModifier(self, Filters.sameCard(card)), Phase.REGROUP)); } }); return Collections.singletonList(action); diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set3/isengard/Card3_069.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set3/isengard/Card3_069.java index f69aa2b48..4ceb3d001 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set3/isengard/Card3_069.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set3/isengard/Card3_069.java @@ -67,11 +67,11 @@ public class Card3_069 extends AbstractMinion { action.appendCost( new ExertCharactersEffect(self, self)); action.appendEffect( - new ChooseActiveCardEffect(self, playerId, "Choose ISENGARD minion", Filters.culture(Culture.ISENGARD), Filters.type(CardType.MINION), Filters.canBeAssignedToSkirmish()) { + new ChooseActiveCardEffect(self, playerId, "Choose ISENGARD minion", Filters.culture(Culture.ISENGARD), Filters.type(CardType.MINION), Filters.canBeAssignedToSkirmish(Side.SHADOW)) { @Override protected void cardSelected(final PhysicalCard minion) { action.appendEffect( - new ChooseActiveCardEffect(self, playerId, "Choose non Ring-bearer companion", Filters.type(CardType.COMPANION), Filters.not(Filters.keyword(Keyword.RING_BEARER)), Filters.canBeAssignedToSkirmish()) { + new ChooseActiveCardEffect(self, playerId, "Choose non Ring-bearer companion", Filters.type(CardType.COMPANION), Filters.not(Filters.keyword(Keyword.RING_BEARER)), Filters.canBeAssignedToSkirmish(Side.SHADOW)) { @Override protected void cardSelected(PhysicalCard companion) { action.appendEffect( diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/dunland/Card4_015.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/dunland/Card4_015.java index 54aacb08c..4b4fba56c 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/dunland/Card4_015.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/dunland/Card4_015.java @@ -48,11 +48,11 @@ public class Card4_015 extends AbstractMinion { @Override protected List getExtraPhaseActions(final String playerId, LotroGame game, final PhysicalCard self) { if (PlayConditions.canUseShadowCardDuringPhase(game.getGameState(), Phase.ASSIGNMENT, self, 0) - && Filters.canSpot(game.getGameState(), game.getModifiersQuerying(), Filters.type(CardType.ALLY))) { + && Filters.canSpot(game.getGameState(), game.getModifiersQuerying(), Filters.type(CardType.ALLY), Filters.canBeAssignedToSkirmish(Side.SHADOW))) { final ActivateCardAction action = new ActivateCardAction(self, Keyword.ASSIGNMENT); if (Filters.canSpot(game.getGameState(), game.getModifiersQuerying(), Filters.sameCard(self), Filters.notAssigned())) { action.appendEffect( - new ChooseActiveCardEffect(self, playerId, "Choose an ally", Filters.type(CardType.ALLY), Filters.canBeAssignedToSkirmish()) { + new ChooseActiveCardEffect(self, playerId, "Choose an ally", Filters.type(CardType.ALLY), Filters.canBeAssignedToSkirmish(Side.SHADOW)) { @Override protected void cardSelected(PhysicalCard ally) { action.appendEffect( diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/dunland/Card4_018.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/dunland/Card4_018.java index 94d6a6806..0a726ec89 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/dunland/Card4_018.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/dunland/Card4_018.java @@ -38,7 +38,7 @@ public class Card4_018 extends AbstractMinion { final ActivateCardAction action = new ActivateCardAction(self, Keyword.ASSIGNMENT); if (Filters.canSpot(game.getGameState(), game.getModifiersQuerying(), Filters.sameCard(self), Filters.notAssigned())) { action.appendEffect( - new ChooseActiveCardEffect(self, playerId, "Choose an ally", Filters.type(CardType.ALLY), Filters.canBeAssignedToSkirmish()) { + new ChooseActiveCardEffect(self, playerId, "Choose an ally", Filters.type(CardType.ALLY), Filters.canBeAssignedToSkirmish(Side.SHADOW)) { @Override protected void cardSelected(PhysicalCard ally) { action.appendEffect( diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/dunland/Card4_031.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/dunland/Card4_031.java index 91dbb6132..d932c1c72 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/dunland/Card4_031.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/dunland/Card4_031.java @@ -37,11 +37,11 @@ public class Card4_031 extends AbstractPermanent { action.appendCost( new RemoveTwilightEffect(2)); action.appendEffect( - new ChooseActiveCardEffect(self, playerId, "Choose DUNLAND Man", Filters.culture(Culture.DUNLAND), Filters.race(Race.MAN), Filters.canBeAssignedToSkirmish()) { + new ChooseActiveCardEffect(self, playerId, "Choose DUNLAND Man", Filters.culture(Culture.DUNLAND), Filters.race(Race.MAN), Filters.canBeAssignedToSkirmish(Side.SHADOW)) { @Override protected void cardSelected(final PhysicalCard dunlandMan) { action.insertEffect( - new ChooseActiveCardEffect(self, playerId, "Choose unbound companion", Filters.unboundCompanion(), Filters.canBeAssignedToSkirmish()) { + new ChooseActiveCardEffect(self, playerId, "Choose unbound companion", Filters.unboundCompanion(), Filters.canBeAssignedToSkirmish(Side.SHADOW)) { @Override protected void cardSelected(PhysicalCard unboundCompanion) { action.insertEffect( diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/gandalf/Card4_101.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/gandalf/Card4_101.java index 1fe415ace..9abb93afe 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/gandalf/Card4_101.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/gandalf/Card4_101.java @@ -3,7 +3,7 @@ package com.gempukku.lotro.cards.set4.gandalf; import com.gempukku.lotro.cards.AbstractEvent; import com.gempukku.lotro.cards.actions.PlayEventAction; import com.gempukku.lotro.cards.effects.AddUntilStartOfPhaseModifierEffect; -import com.gempukku.lotro.cards.modifiers.AllyOnCurrentSiteModifier; +import com.gempukku.lotro.cards.modifiers.AllyParticipatesInArcheryFireAndSkirmishesModifier; import com.gempukku.lotro.common.*; import com.gempukku.lotro.filters.Filters; import com.gempukku.lotro.game.PhysicalCard; @@ -49,7 +49,7 @@ public class Card4_101 extends AbstractEvent { new KeywordModifier(self, Filters.sameCard(card), Keyword.DAMAGE, 2), Phase.REGROUP)); action.appendEffect( new AddUntilStartOfPhaseModifierEffect( - new AllyOnCurrentSiteModifier(self, Filters.sameCard(card)), Phase.REGROUP)); + new AllyParticipatesInArcheryFireAndSkirmishesModifier(self, Filters.sameCard(card)), Phase.REGROUP)); } }); return action; 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 6609e7069..b62886577 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 @@ -66,7 +66,7 @@ public class Filters { }; } - public static Filter canBeAssignedToSkirmish() { + public static Filter canBeAssignedToSkirmish(final Side sidePlayer) { return new Filter() { @Override public boolean accepts(GameState gameState, ModifiersQuerying modifiersQuerying, PhysicalCard physicalCard) { @@ -77,7 +77,7 @@ public class Filters { return false; } } - return modifiersQuerying.canBeAssignedToSkirmish(gameState, physicalCard); + return modifiersQuerying.canBeAssignedToSkirmish(gameState, sidePlayer, physicalCard); } }; } 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 4ffe902d6..829aaa5f1 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 @@ -116,8 +116,13 @@ public abstract class AbstractModifier implements Modifier { } @Override - public boolean isAllyOnCurrentSite(GameState gameState, ModifiersQuerying modifiersQuerying, PhysicalCard card, boolean allyOnCurrentSite) { - return allyOnCurrentSite; + public boolean isAllyParticipateInArcheryFire(GameState gameState, ModifiersQuerying modifiersQuerying, PhysicalCard card) { + return false; + } + + @Override + public boolean isAllyParticipateInSkirmishes(GameState gameState, ModifiersQuerying modifiersQuerying, PhysicalCard card) { + return false; } @Override @@ -166,7 +171,7 @@ public abstract class AbstractModifier implements Modifier { } @Override - public boolean canBeAssignedToSkirmish(GameState gameState, ModifiersQuerying modifiersQuerying, PhysicalCard card, boolean result) { + public boolean canBeAssignedToSkirmish(GameState gameState, Side sidePlayer, ModifiersQuerying modifiersQuerying, PhysicalCard card) { return true; } diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/modifiers/Modifier.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/modifiers/Modifier.java index 13ed10641..d9adaa64c 100644 --- a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/modifiers/Modifier.java +++ b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/modifiers/Modifier.java @@ -48,7 +48,9 @@ public interface Modifier { public boolean canBeExerted(GameState gameState, ModifiersLogic modifiersLogic, PhysicalCard source, PhysicalCard card, boolean result); - public boolean isAllyOnCurrentSite(GameState gameState, ModifiersQuerying modifiersQuerying, PhysicalCard card, boolean allyOnCurrentSite); + public boolean isAllyParticipateInArcheryFire(GameState gameState, ModifiersQuerying modifiersQuerying, PhysicalCard card); + + public boolean isAllyParticipateInSkirmishes(GameState gameState, ModifiersQuerying modifiersQuerying, PhysicalCard card); public int getArcheryTotal(GameState gameState, ModifiersQuerying modifiersQuerying, Side side, int result); @@ -68,7 +70,7 @@ public interface Modifier { public boolean isValidAssignments(GameState gameState, Side Side, ModifiersQuerying modifiersQuerying, Map> assignments, boolean result); - public boolean canBeAssignedToSkirmish(GameState gameState, ModifiersQuerying modifiersQuerying, PhysicalCard card, boolean result); + public boolean canBeAssignedToSkirmish(GameState gameState, Side sidePlayer, ModifiersQuerying modifiersQuerying, PhysicalCard card); public boolean canBeDiscardedFromPlay(GameState gameState, ModifiersQuerying modifiersQuerying, PhysicalCard card, PhysicalCard source, boolean result); 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 27afc8976..d2e4b1d3e 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 @@ -1,6 +1,5 @@ package com.gempukku.lotro.logic.modifiers; -import com.gempukku.lotro.common.CardType; import com.gempukku.lotro.common.Keyword; import com.gempukku.lotro.common.Phase; import com.gempukku.lotro.common.Side; @@ -319,15 +318,23 @@ public class ModifiersLogic implements ModifiersEnvironment, ModifiersQuerying { } @Override - public boolean isAllyOnCurrentSite(GameState gameState, PhysicalCard card) { - boolean allyOnCurrentSite = (card.getBlueprint().getCardType() == CardType.ALLY - && gameState.getCurrentSiteNumber() == card.getBlueprint().getSiteNumber() - && gameState.getCurrentSite().getBlueprint().getSiteBlock() == card.getBlueprint().getSiteBlock()); + public boolean isAllyParticipateInArcheryFire(GameState gameState, PhysicalCard card) { for (Modifier modifier : getModifiers(ModifierEffect.PRESENCE_MODIFIER)) { if (affectsCardWithSkipSet(gameState, card, modifier)) - allyOnCurrentSite = modifier.isAllyOnCurrentSite(gameState, this, card, allyOnCurrentSite); + if (modifier.isAllyParticipateInArcheryFire(gameState, this, card)) + return true; } - return allyOnCurrentSite; + return false; + } + + @Override + public boolean isAllyParticipateInSkirmishes(GameState gameState, PhysicalCard card) { + for (Modifier modifier : getModifiers(ModifierEffect.PRESENCE_MODIFIER)) { + if (affectsCardWithSkipSet(gameState, card, modifier)) + if (modifier.isAllyParticipateInSkirmishes(gameState, this, card)) + return true; + } + return false; } @Override @@ -389,13 +396,12 @@ public class ModifiersLogic implements ModifiersEnvironment, ModifiersQuerying { } @Override - public boolean canBeAssignedToSkirmish(GameState gameState, PhysicalCard card) { - boolean result = true; - + public boolean canBeAssignedToSkirmish(GameState gameState, Side sidePlayer, PhysicalCard card) { for (Modifier modifier : getModifiers(ModifierEffect.ASSIGNMENT_MODIFIER)) if (affectsCardWithSkipSet(gameState, card, modifier)) - result = modifier.canBeAssignedToSkirmish(gameState, this, card, result); - return result; + if (!modifier.canBeAssignedToSkirmish(gameState, sidePlayer, this, card)) + return false; + return true; } @Override diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/modifiers/ModifiersQuerying.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/modifiers/ModifiersQuerying.java index b40a70e51..9381f343e 100644 --- a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/modifiers/ModifiersQuerying.java +++ b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/modifiers/ModifiersQuerying.java @@ -15,20 +15,27 @@ import java.util.Map; public interface ModifiersQuerying { public Collection getModifiersAffecting(GameState gameState, PhysicalCard card); + // Keywords public boolean hasKeyword(GameState gameState, PhysicalCard physicalCard, Keyword keyword); public int getKeywordCount(GameState gameState, PhysicalCard physicalCard, Keyword keyword); + // Archery public int getArcheryTotal(GameState gameState, Side side, int baseArcheryTotal); + public boolean addsToArcheryTotal(GameState gameState, PhysicalCard card); + + public int getMoveLimit(GameState gameState, int baseMoveLimit); + // Twilight cost public int getTwilightCost(GameState gameState, PhysicalCard physicalCard); public int getPlayOnTwilightCost(GameState gameState, PhysicalCard physicalCard, PhysicalCard target); public int getRoamingPenalty(GameState gameState, PhysicalCard physicalCard); + // Stats public int getStrength(GameState gameState, PhysicalCard physicalCard); public int getVitality(GameState gameState, PhysicalCard physicalCard); @@ -37,14 +44,23 @@ public interface ModifiersQuerying { public boolean isOverwhelmedByStrength(GameState gameState, PhysicalCard card, int strength, int opposingStrength); + // Wounds/exertions public boolean canTakeWound(GameState gameState, PhysicalCard card); public boolean canBeExerted(GameState gameState, PhysicalCard exertionSource, PhysicalCard card); - public boolean isAllyOnCurrentSite(GameState gameState, PhysicalCard card); + public boolean canBeHealed(GameState gameState, PhysicalCard card); - public boolean addsToArcheryTotal(GameState gameState, PhysicalCard card); + // Assignments + public boolean canBeAssignedToSkirmish(GameState gameState, Side playerSide, PhysicalCard card); + public boolean isAllyParticipateInSkirmishes(GameState gameState, PhysicalCard card); + + public boolean isAllyParticipateInArcheryFire(GameState gameState, PhysicalCard card); + + public boolean isValidAssignments(GameState gameState, Side side, Map> assignments); + + // Playing actions public boolean canPlayAction(GameState gameState, Action action); public boolean canHavePlayedOn(GameState gameState, PhysicalCard playedCard, PhysicalCard target); @@ -53,14 +69,9 @@ public interface ModifiersQuerying { public boolean shouldSkipPhase(GameState gameState, Phase phase, String playerId); - public boolean isValidAssignments(GameState gameState, Side side, Map> assignments); - - public boolean canBeAssignedToSkirmish(GameState gameState, PhysicalCard card); - + // Others public boolean canBeDiscardedFromPlay(GameState gameState, PhysicalCard card, PhysicalCard source); - public boolean canBeHealed(GameState gameState, PhysicalCard card); - public boolean canDrawCardAndIncrement(GameState gameState, String playerId); public boolean canLookOrRevealCardsInHand(GameState gameState, String playerId); diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/timing/processes/turn/archery/ArcheryFireGameProcess.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/timing/processes/turn/archery/ArcheryFireGameProcess.java index 713309514..b1ca434d3 100644 --- a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/timing/processes/turn/archery/ArcheryFireGameProcess.java +++ b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/timing/processes/turn/archery/ArcheryFireGameProcess.java @@ -36,12 +36,20 @@ public class ArcheryFireGameProcess implements GameProcess { }, Filters.or( Filters.type(CardType.COMPANION), - new Filter() { - @Override - public boolean accepts(GameState gameState, ModifiersQuerying modifiersQuerying, PhysicalCard physicalCard) { - return modifiersQuerying.isAllyOnCurrentSite(gameState, physicalCard); - } - })); + Filters.and( + Filters.type(CardType.ALLY), + Filters.or( + Filters.and( + Filters.siteNumber(_game.getGameState().getCurrentSiteNumber()), + Filters.siteBlock(_game.getGameState().getCurrentSiteBlock())) + ), + new Filter() { + @Override + public boolean accepts(GameState gameState, ModifiersQuerying modifiersQuerying, PhysicalCard physicalCard) { + return modifiersQuerying.isAllyParticipateInArcheryFire(gameState, physicalCard); + } + } + ))); _fellowshipArcheryTotal = _game.getModifiersQuerying().getArcheryTotal(gameState, Side.FREE_PEOPLE, _fellowshipArcheryTotal); diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/timing/processes/turn/archery/FellowshipPlayerAssignsArcheryDamageGameProcess.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/timing/processes/turn/archery/FellowshipPlayerAssignsArcheryDamageGameProcess.java index 0a1e7a796..de86f914b 100644 --- a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/timing/processes/turn/archery/FellowshipPlayerAssignsArcheryDamageGameProcess.java +++ b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/timing/processes/turn/archery/FellowshipPlayerAssignsArcheryDamageGameProcess.java @@ -28,14 +28,24 @@ public class FellowshipPlayerAssignsArcheryDamageGameProcess implements GameProc public void process() { if (_woundsToAssign > 0) { - Filter filter = Filters.or( - Filters.type(CardType.COMPANION), - new Filter() { - @Override - public boolean accepts(GameState gameState, ModifiersQuerying modifiersQuerying, PhysicalCard physicalCard) { - return modifiersQuerying.isAllyOnCurrentSite(gameState, physicalCard); - } - }); + Filter filter = + Filters.or( + Filters.type(CardType.COMPANION), + Filters.and( + Filters.type(CardType.ALLY), + Filters.or( + Filters.and( + Filters.siteNumber(_game.getGameState().getCurrentSiteNumber()), + Filters.siteBlock(_game.getGameState().getCurrentSiteBlock())) + ), + new Filter() { + @Override + public boolean accepts(GameState gameState, ModifiersQuerying modifiersQuerying, PhysicalCard physicalCard) { + return modifiersQuerying.isAllyParticipateInArcheryFire(gameState, physicalCard); + } + } + ) + ); RequiredTriggerAction action = new RequiredTriggerAction(null) { @Override diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/timing/processes/turn/assign/FreePeoplePlayerAssignsMinionsGameProcess.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/timing/processes/turn/assign/FreePeoplePlayerAssignsMinionsGameProcess.java index de34cc1cb..e346e5a98 100644 --- a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/timing/processes/turn/assign/FreePeoplePlayerAssignsMinionsGameProcess.java +++ b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/timing/processes/turn/assign/FreePeoplePlayerAssignsMinionsGameProcess.java @@ -39,18 +39,28 @@ public class FreePeoplePlayerAssignsMinionsGameProcess implements GameProcess { Filters.keyword(Keyword.FIERCE), minionFilter); - final Collection minions = Filters.filterActive(gameState, _game.getModifiersQuerying(), minionFilter, Filters.canBeAssignedToSkirmish()); + final Collection minions = Filters.filterActive(gameState, _game.getModifiersQuerying(), minionFilter, Filters.canBeAssignedToSkirmish(Side.FREE_PEOPLE)); if (minions.size() > 0) { final Collection freePeopleTargets = Filters.filterActive(gameState, _game.getModifiersQuerying(), Filters.or( Filters.type(CardType.COMPANION), - new Filter() { - @Override - public boolean accepts(GameState gameState, ModifiersQuerying modifiersQuerying, PhysicalCard physicalCard) { - return modifiersQuerying.isAllyOnCurrentSite(gameState, physicalCard); - } - }), - Filters.canBeAssignedToSkirmish()); + Filters.and( + Filters.type(CardType.ALLY), + Filters.or( + Filters.and( + Filters.siteNumber(gameState.getCurrentSiteNumber()), + Filters.siteBlock(gameState.getCurrentSiteBlock()) + ), + new Filter() { + @Override + public boolean accepts(GameState gameState, ModifiersQuerying modifiersQuerying, PhysicalCard physicalCard) { + return modifiersQuerying.isAllyParticipateInSkirmishes(gameState, physicalCard); + } + } + ) + ) + ), + Filters.canBeAssignedToSkirmish(Side.FREE_PEOPLE)); _game.getUserFeedback().sendAwaitingDecision(gameState.getCurrentPlayerId(), new PlayerAssignMinionsDecision(1, "Assign minions to companions or allies at home", freePeopleTargets, minions) { diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/timing/processes/turn/assign/ShadowPlayerAssignsHisMinionsGameProcess.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/timing/processes/turn/assign/ShadowPlayerAssignsHisMinionsGameProcess.java index 8a3ef82d7..db8c15e84 100644 --- a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/timing/processes/turn/assign/ShadowPlayerAssignsHisMinionsGameProcess.java +++ b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/timing/processes/turn/assign/ShadowPlayerAssignsHisMinionsGameProcess.java @@ -42,18 +42,28 @@ public class ShadowPlayerAssignsHisMinionsGameProcess implements GameProcess { Filters.keyword(Keyword.FIERCE), minionFilter); - final Collection minions = Filters.filterActive(gameState, _game.getModifiersQuerying(), minionFilter, Filters.canBeAssignedToSkirmish()); + final Collection minions = Filters.filterActive(gameState, _game.getModifiersQuerying(), minionFilter, Filters.canBeAssignedToSkirmish(Side.SHADOW)); if (minions.size() > 0) { final Collection freePeopleTargets = Filters.filterActive(gameState, _game.getModifiersQuerying(), Filters.or( Filters.type(CardType.COMPANION), - new Filter() { - @Override - public boolean accepts(GameState gameState, ModifiersQuerying modifiersQuerying, PhysicalCard physicalCard) { - return modifiersQuerying.isAllyOnCurrentSite(gameState, physicalCard); - } - } - ), Filters.canBeAssignedToSkirmish()); + Filters.and( + Filters.type(CardType.ALLY), + Filters.or( + Filters.and( + Filters.siteNumber(gameState.getCurrentSiteNumber()), + Filters.siteBlock(gameState.getCurrentSiteBlock()) + ), + new Filter() { + @Override + public boolean accepts(GameState gameState, ModifiersQuerying modifiersQuerying, PhysicalCard physicalCard) { + return modifiersQuerying.isAllyParticipateInSkirmishes(gameState, physicalCard); + } + } + ) + ) + ), + Filters.canBeAssignedToSkirmish(Side.SHADOW)); _game.getUserFeedback().sendAwaitingDecision(_playerId, new PlayerAssignMinionsDecision(1, "Assign minions to companions or allies at home", freePeopleTargets, minions) {