From 78cd84e7755e17895f5c3283ac7064f2ca713131 Mon Sep 17 00:00:00 2001 From: Christian 'ketura' McCarty Date: Wed, 29 May 2024 20:42:55 -0500 Subject: [PATCH] Removed FPCantAssignToSkirmish. Expanded CantBeAssignedToSkirmish and associated modifier to accept a player value. --- .../cards/official/set02/set2-wraith.hjson | 3 +- .../modifier/CantBeAssignedToSkirmish.java | 9 ++++-- .../modifier/FPCantAssignToSkirmish.java | 30 ------------------- .../modifier/ModifierSourceFactory.java | 1 - .../CantBeAssignedToSkirmishModifier.java | 13 +++++++- 5 files changed, 21 insertions(+), 35 deletions(-) delete mode 100644 gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/field/effect/modifier/FPCantAssignToSkirmish.java diff --git a/gemp-lotr/gemp-lotr-cards/src/main/resources/cards/official/set02/set2-wraith.hjson b/gemp-lotr/gemp-lotr-cards/src/main/resources/cards/official/set02/set2-wraith.hjson index 6dfb4a219..cc84b8984 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/resources/cards/official/set02/set2-wraith.hjson +++ b/gemp-lotr/gemp-lotr-cards/src/main/resources/cards/official/set02/set2-wraith.hjson @@ -23,8 +23,9 @@ { type: modifier modifier: { - type: fpCantAssignToSkirmish + type: CantBeAssignedToSkirmish filter: self + player: freeps } } { diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/field/effect/modifier/CantBeAssignedToSkirmish.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/field/effect/modifier/CantBeAssignedToSkirmish.java index 04cda4488..d251b6bca 100644 --- a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/field/effect/modifier/CantBeAssignedToSkirmish.java +++ b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/field/effect/modifier/CantBeAssignedToSkirmish.java @@ -2,6 +2,7 @@ package com.gempukku.lotro.cards.build.field.effect.modifier; import com.gempukku.lotro.cards.build.*; import com.gempukku.lotro.cards.build.field.FieldUtils; +import com.gempukku.lotro.cards.build.field.effect.appender.resolver.PlayerResolver; import com.gempukku.lotro.logic.modifiers.CantBeAssignedToSkirmishModifier; import com.gempukku.lotro.logic.modifiers.Modifier; import org.json.simple.JSONObject; @@ -10,20 +11,24 @@ public class CantBeAssignedToSkirmish implements ModifierSourceProducer { @Override public ModifierSource getModifierSource(JSONObject effectObject, CardGenerationEnvironment environment) throws InvalidCardDefinitionException { - FieldUtils.validateAllowedFields(effectObject, "filter", "requires"); + FieldUtils.validateAllowedFields(effectObject, "filter", "player", "requires"); + final String player = FieldUtils.getString(effectObject.get("player"), "player"); final JSONObject[] conditionArray = FieldUtils.getObjectArray(effectObject.get("requires"), "requires"); final String filter = FieldUtils.getString(effectObject.get("filter"), "filter"); + final PlayerSource playerSource = player != null ? PlayerResolver.resolvePlayer(player, environment) : null; final FilterableSource filterableSource = environment.getFilterFactory().generateFilter(filter, environment); final Requirement[] requirements = environment.getRequirementFactory().getRequirements(conditionArray, environment); return new ModifierSource() { @Override public Modifier getModifier(ActionContext actionContext) { + String bannedPlayer = (playerSource != null) ? playerSource.getPlayer(actionContext) : null; + return new CantBeAssignedToSkirmishModifier(actionContext.getSource(), RequirementCondition.createCondition(requirements, actionContext), - filterableSource.getFilterable(actionContext)); + bannedPlayer, filterableSource.getFilterable(actionContext)); } }; } diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/field/effect/modifier/FPCantAssignToSkirmish.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/field/effect/modifier/FPCantAssignToSkirmish.java deleted file mode 100644 index 0a15465eb..000000000 --- a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/field/effect/modifier/FPCantAssignToSkirmish.java +++ /dev/null @@ -1,30 +0,0 @@ -package com.gempukku.lotro.cards.build.field.effect.modifier; - -import com.gempukku.lotro.cards.build.*; -import com.gempukku.lotro.cards.build.field.FieldUtils; -import com.gempukku.lotro.logic.modifiers.FreePeoplePlayerMayNotAssignCharacterModifier; -import com.gempukku.lotro.logic.modifiers.Modifier; -import org.json.simple.JSONObject; - -public class FPCantAssignToSkirmish implements ModifierSourceProducer { - - @Override - public ModifierSource getModifierSource(JSONObject effectObject, CardGenerationEnvironment environment) throws InvalidCardDefinitionException { - FieldUtils.validateAllowedFields(effectObject, "filter", "requires"); - - final JSONObject[] conditionArray = FieldUtils.getObjectArray(effectObject.get("requires"), "requires"); - final String filter = FieldUtils.getString(effectObject.get("filter"), "filter"); - - final FilterableSource filterableSource = environment.getFilterFactory().generateFilter(filter, environment); - final Requirement[] requirements = environment.getRequirementFactory().getRequirements(conditionArray, environment); - - return new ModifierSource() { - @Override - public Modifier getModifier(ActionContext actionContext) { - return new FreePeoplePlayerMayNotAssignCharacterModifier(actionContext.getSource(), - RequirementCondition.createCondition(requirements, actionContext), - filterableSource.getFilterable(actionContext)); - } - }; - } -} diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/field/effect/modifier/ModifierSourceFactory.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/field/effect/modifier/ModifierSourceFactory.java index 82d0b08f1..f14aa6379 100644 --- a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/field/effect/modifier/ModifierSourceFactory.java +++ b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/field/effect/modifier/ModifierSourceFactory.java @@ -63,7 +63,6 @@ public class ModifierSourceFactory { modifierProducers.put("fpculturespot", new FPCultureSpot()); modifierProducers.put("fpusesresinsteadofstr", new FPUsesResInsteadOfStr()); modifierProducers.put("fpusesvitinsteadofstr", new FPUsesVitInsteadOfStr()); - modifierProducers.put("fpcantassigntoskirmish", new FPCantAssignToSkirmish()); modifierProducers.put("hastomoveifable", new AddModifierFlag(ModifierFlag.HAS_TO_MOVE_IF_POSSIBLE)); modifierProducers.put("itemclassspot", new ItemClassSpot()); modifierProducers.put("modifyarcherytotal", new ModifyArcheryTotal()); diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/modifiers/CantBeAssignedToSkirmishModifier.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/modifiers/CantBeAssignedToSkirmishModifier.java index 4722c1e5c..64272753a 100644 --- a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/modifiers/CantBeAssignedToSkirmishModifier.java +++ b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/modifiers/CantBeAssignedToSkirmishModifier.java @@ -4,14 +4,25 @@ import com.gempukku.lotro.common.Filterable; import com.gempukku.lotro.common.Side; import com.gempukku.lotro.game.PhysicalCard; import com.gempukku.lotro.game.state.LotroGame; +import com.gempukku.lotro.logic.GameUtils; public class CantBeAssignedToSkirmishModifier extends AbstractModifier { + private final String _bannedPlayer; + public CantBeAssignedToSkirmishModifier(PhysicalCard source, Condition condition, Filterable affectFilter) { + this(source, condition, null, affectFilter); + } + + public CantBeAssignedToSkirmishModifier(PhysicalCard source, Condition condition, String bannedPlayer, Filterable affectFilter) { super(source, "Can't be assigned to skirmish", affectFilter, condition, ModifierEffect.ASSIGNMENT_MODIFIER); + this._bannedPlayer = bannedPlayer; } @Override public boolean isPreventedFromBeingAssignedToSkirmish(LotroGame game, Side sidePlayer, PhysicalCard card) { - return true; + if(_bannedPlayer == null || GameUtils.getSide(game, _bannedPlayer) == sidePlayer) + return true; + + return false; } }