From 010401554fc3360f637fdcfd2302327a32823e94 Mon Sep 17 00:00:00 2001 From: Marcin Sciesinski Date: Fri, 18 Oct 2024 13:28:54 +0700 Subject: [PATCH] Fixed issue with cards creating assignments --- .../lotro/cards/set7/wraith/Card7_174.java | 2 +- .../cards/official/set01/set1-wraith.hjson | 1 - .../appender/AssignFpCharacterToSkirmish.java | 7 +++---- .../java/com/gempukku/lotro/filters/Filters.java | 16 ++++++---------- .../lotro/logic/effects/AssignmentEffect.java | 2 +- .../ChooseAndAssignCharacterToMinionEffect.java | 2 +- .../ai/AIPlayerAssignsMinionsGameProcess.java | 2 +- ...reePeoplePlayerAssignsMinionsGameProcess.java | 4 ++-- ...ShadowPlayerAssignsHisMinionsGameProcess.java | 4 ++-- 9 files changed, 17 insertions(+), 23 deletions(-) diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set7/wraith/Card7_174.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set7/wraith/Card7_174.java index dbace6db2..3d37d7817 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set7/wraith/Card7_174.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set7/wraith/Card7_174.java @@ -36,7 +36,7 @@ public class Card7_174 extends AbstractPermanent { action.appendCost( new RemoveThreatsEffect(self, 5)); action.appendEffect( - new ChooseActiveCardEffect(self, playerId, "Choose a Nazgul", Race.NAZGUL, Filters.assignableToSkirmishAgainst(Side.SHADOW, Filters.and(CardType.COMPANION, Filters.not(Filters.ringBearer)), true, false, false)) { + new ChooseActiveCardEffect(self, playerId, "Choose a Nazgul", Race.NAZGUL, Filters.assignableToSkirmishAgainst(Side.SHADOW, Filters.and(CardType.COMPANION, Filters.not(Filters.ringBearer)), false, false)) { @Override protected void cardSelected(LotroGame game, final PhysicalCard nazgul) { action.insertEffect( diff --git a/gemp-lotr/gemp-lotr-cards/src/main/resources/cards/official/set01/set1-wraith.hjson b/gemp-lotr/gemp-lotr-cards/src/main/resources/cards/official/set01/set1-wraith.hjson index c79556469..53513a22d 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/resources/cards/official/set01/set1-wraith.hjson +++ b/gemp-lotr/gemp-lotr-cards/src/main/resources/cards/official/set01/set1-wraith.hjson @@ -695,7 +695,6 @@ type: assignFpCharacterToSkirmish fpCharacter: choose(ring bearer) against: choose(nazgul) - ignoreFierce: true } { type: addTrigger diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/field/effect/appender/AssignFpCharacterToSkirmish.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/field/effect/appender/AssignFpCharacterToSkirmish.java index db39a3d89..612d28c2f 100644 --- a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/field/effect/appender/AssignFpCharacterToSkirmish.java +++ b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/field/effect/appender/AssignFpCharacterToSkirmish.java @@ -23,12 +23,11 @@ import java.util.List; public class AssignFpCharacterToSkirmish implements EffectAppenderProducer { @Override public EffectAppender createEffectAppender(JSONObject effectObject, CardGenerationEnvironment environment) throws InvalidCardDefinitionException { - FieldUtils.validateAllowedFields(effectObject, "player", "fpCharacter", "against", "ignoreFierce"); + FieldUtils.validateAllowedFields(effectObject, "player", "fpCharacter", "against"); final String player = FieldUtils.getString(effectObject.get("player"), "player", "you"); final String fpCharacter = FieldUtils.getString(effectObject.get("fpCharacter"), "fpCharacter"); final String against = FieldUtils.getString(effectObject.get("against"), "against"); - final boolean ignoreFierce = FieldUtils.getBoolean(effectObject.get("ignoreFierce"), "ignoreFierce", false); final PlayerSource playerSource = PlayerResolver.resolvePlayer(player, environment); @@ -42,7 +41,7 @@ public class AssignFpCharacterToSkirmish implements EffectAppenderProducer { final String assigningPlayer = playerSource.getPlayer(actionContext); Side assigningSide = GameUtils.getSide(actionContext.getGame(), assigningPlayer); final Filterable filter = minionFilter.getFilterable(actionContext); - return Filters.assignableToSkirmishAgainst(assigningSide, filter, ignoreFierce); + return Filters.assignableToSkirmishAgainst(assigningSide, filter); }, "_tempFpCharacter", player, "Choose character to assign to skirmish", environment)); result.addEffectAppender( CardResolver.resolveCard(against, @@ -50,7 +49,7 @@ public class AssignFpCharacterToSkirmish implements EffectAppenderProducer { final String assigningPlayer = playerSource.getPlayer(actionContext); Side assigningSide = GameUtils.getSide(actionContext.getGame(), assigningPlayer); final Collection fpChar = actionContext.getCardsFromMemory("_tempFpCharacter"); - return Filters.assignableToSkirmishAgainst(assigningSide, Filters.in(fpChar), ignoreFierce); + return Filters.assignableToSkirmishAgainst(assigningSide, Filters.in(fpChar)); }, "_tempMinion", player, "Choose minion to assign to character", environment)); result.addEffectAppender( new DelayedAppender() { 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 d7d76850e..14f161963 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 @@ -282,11 +282,7 @@ public class Filters { } public static Filter assignableToSkirmishAgainst(final Side assignedBySide, final Filterable againstFilter) { - return assignableToSkirmishAgainst(assignedBySide, againstFilter, false); - } - - public static Filter assignableToSkirmishAgainst(final Side assignedBySide, final Filterable againstFilter, boolean ignoreFierce) { - return assignableToSkirmishAgainst(assignedBySide, againstFilter, ignoreFierce, false, false); + return assignableToSkirmishAgainst(assignedBySide, againstFilter, false, false); } public static Filter notPreventedByEffectToAssign(final Side assignedBySide, final PhysicalCard againstCard) { @@ -306,15 +302,15 @@ public class Filters { }; } - public static Filter assignableToSkirmishAgainst(final Side assignedBySide, final Filterable againstFilter, final boolean ignoreFierce, final boolean ignoreUnassigned, final boolean allowAllyToSkirmish) { + public static Filter assignableToSkirmishAgainst(final Side assignedBySide, final Filterable againstFilter, final boolean ignoreUnassigned, final boolean allowAllyToSkirmish) { return Filters.and( - assignableToSkirmish(assignedBySide, ignoreFierce, ignoreUnassigned, allowAllyToSkirmish), + assignableToSkirmish(assignedBySide, ignoreUnassigned, allowAllyToSkirmish), new Filter() { @Override public boolean accepts(LotroGame game, PhysicalCard physicalCard) { for (PhysicalCard card : Filters.filterActive(game, againstFilter)) { if (card.getBlueprint().getSide() != physicalCard.getBlueprint().getSide() - && Filters.assignableToSkirmish(assignedBySide, ignoreFierce, ignoreUnassigned, allowAllyToSkirmish).accepts(game, card)) { + && Filters.assignableToSkirmish(assignedBySide, ignoreUnassigned, allowAllyToSkirmish).accepts(game, card)) { Map> thisAssignment = new HashMap<>(); if (card.getBlueprint().getSide() == Side.FREE_PEOPLE) { if (thisAssignment.containsKey(card)) @@ -337,7 +333,7 @@ public class Filters { }); } - public static Filter assignableToSkirmish(final Side assignedBySide, final boolean ignoreFierce, final boolean ignoreUnassigned, final boolean allowAllyToSkirmish) { + public static Filter assignableToSkirmish(final Side assignedBySide, final boolean ignoreUnassigned, final boolean allowAllyToSkirmish) { Filter assignableFilter = Filters.or( Filters.and( CardType.ALLY, @@ -370,7 +366,7 @@ public class Filters { new Filter() { @Override public boolean accepts(LotroGame game, PhysicalCard physicalCard) { - return (ignoreFierce || !game.getGameState().isFierceSkirmishes()) || game.getModifiersQuerying().hasKeyword(game, physicalCard, Keyword.FIERCE); + return (game.getGameState().getCurrentPhase() != Phase.ASSIGNMENT || !game.getGameState().isFierceSkirmishes()) || game.getModifiersQuerying().hasKeyword(game, physicalCard, Keyword.FIERCE); } })); diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/effects/AssignmentEffect.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/effects/AssignmentEffect.java index 8e7d16919..da0c31aab 100644 --- a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/effects/AssignmentEffect.java +++ b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/effects/AssignmentEffect.java @@ -47,7 +47,7 @@ public class AssignmentEffect extends AbstractEffect { @Override public boolean isPlayableInFull(LotroGame game) { Side side = _playerId.equals(game.getGameState().getCurrentPlayerId()) ? Side.FREE_PEOPLE : Side.SHADOW; - return Filters.assignableToSkirmishAgainst(side, _fpChar, false, _ignoreSingleMinionRestriction, _skipAllyLocationCheck).accepts(game, _minion); + return Filters.assignableToSkirmishAgainst(side, _fpChar, _ignoreSingleMinionRestriction, _skipAllyLocationCheck).accepts(game, _minion); } @Override diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/effects/choose/ChooseAndAssignCharacterToMinionEffect.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/effects/choose/ChooseAndAssignCharacterToMinionEffect.java index 23d7c5c17..32e590e8c 100644 --- a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/effects/choose/ChooseAndAssignCharacterToMinionEffect.java +++ b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/effects/choose/ChooseAndAssignCharacterToMinionEffect.java @@ -33,7 +33,7 @@ public class ChooseAndAssignCharacterToMinionEffect extends ChooseActiveCardEffe @Override protected Filter getExtraFilterForPlaying(final LotroGame game) { final Side side = game.getGameState().getCurrentPlayerId().equals(_playerId) ? Side.FREE_PEOPLE : Side.SHADOW; - return Filters.assignableToSkirmishAgainst(side, _minion, false, false, _skipAllyLocationCheck); + return Filters.assignableToSkirmishAgainst(side, _minion, false, _skipAllyLocationCheck); } @Override diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/timing/processes/turn/ai/AIPlayerAssignsMinionsGameProcess.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/timing/processes/turn/ai/AIPlayerAssignsMinionsGameProcess.java index 6d88809da..06f769a88 100644 --- a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/timing/processes/turn/ai/AIPlayerAssignsMinionsGameProcess.java +++ b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/timing/processes/turn/ai/AIPlayerAssignsMinionsGameProcess.java @@ -30,7 +30,7 @@ public class AIPlayerAssignsMinionsGameProcess implements GameProcess { GameState gameState = game.getGameState(); Filter minionFilter = Filters.and(CardType.MINION, Filters.owner("AI"), Filters.in(_leftoverMinions)); - final Set minions = new HashSet<>(Filters.filterActive(game, minionFilter, Filters.assignableToSkirmish(Side.SHADOW, false, true, false))); + final Set minions = new HashSet<>(Filters.filterActive(game, minionFilter, Filters.assignableToSkirmish(Side.SHADOW, true, false))); if (minions.size() > 0) { final PhysicalCard ringBearer = game.getGameState().getRingBearer(game.getGameState().getCurrentPlayerId()); Map> assignments = Collections.singletonMap(ringBearer, minions); 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 b16a0be78..e5a6ad38e 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 @@ -44,14 +44,14 @@ public class FreePeoplePlayerAssignsMinionsGameProcess implements GameProcess { protected void doPlayEffect(final LotroGame game) { final GameState gameState = game.getGameState(); - final Collection minions = Filters.filterActive(game, CardType.MINION, Filters.assignableToSkirmish(Side.FREE_PEOPLE, false, true, false)); + final Collection minions = Filters.filterActive(game, CardType.MINION, Filters.assignableToSkirmish(Side.FREE_PEOPLE, true, false)); if (minions.size() > 0) { final Collection freePeopleTargets = Filters.filterActive(game, Filters.and( Filters.or( CardType.COMPANION, CardType.ALLY), - Filters.assignableToSkirmish(Side.FREE_PEOPLE, false, true, false))); + Filters.assignableToSkirmish(Side.FREE_PEOPLE, true, false))); game.getUserFeedback().sendAwaitingDecision(gameState.getCurrentPlayerId(), 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 ff37c74f7..188456da7 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 @@ -36,14 +36,14 @@ public class ShadowPlayerAssignsHisMinionsGameProcess implements GameProcess { GameState gameState = game.getGameState(); Filter minionFilter = Filters.and(CardType.MINION, Filters.owner(_playerId), Filters.in(_leftoverMinions)); - final Collection minions = Filters.filterActive(game, minionFilter, Filters.assignableToSkirmish(Side.SHADOW, false, true, false)); + final Collection minions = Filters.filterActive(game, minionFilter, Filters.assignableToSkirmish(Side.SHADOW, true, false)); if (minions.size() > 0) { final Collection freePeopleTargets = Filters.filterActive(game, Filters.and( Filters.or( CardType.COMPANION, CardType.ALLY), - Filters.assignableToSkirmish(Side.SHADOW, false, true, false))); + Filters.assignableToSkirmish(Side.SHADOW, true, false))); game.getUserFeedback().sendAwaitingDecision(_playerId, new PlayerAssignMinionsDecision(1, "Assign minions to companions or allies at home", freePeopleTargets, minions) {