From 136bb0170ca8a864e05e1a0d0def7afe20a15951 Mon Sep 17 00:00:00 2001 From: Christian 'ketura' McCarty Date: Wed, 29 May 2024 19:59:36 -0500 Subject: [PATCH] Consolidating both CantUseSpecialAbilities and PlayerCantUseSpecialAbilities (formerly called CantPlaySpecialAbilities) under CantUseSpecialAbilities (but using the superior implementation of CantPlaySpecialAbilities). --- .../cards/official/set03/set3-isengard.hjson | 2 +- .../cards/official/set08/set08-Elven.hjson | 4 +-- .../cards/official/set08/set08-Sauron.hjson | 2 +- .../cards/official/set11/set11-Sites.hjson | 2 +- .../cards/official/set13/set13-Elven.hjson | 2 +- .../cards/official/set18/set18-Elven.hjson | 2 +- .../cards/official/set18/set18-Gandalf.hjson | 2 +- .../modifier/CantUseSpecialAbilities.java | 28 ++++++++------- .../modifier/ModifierSourceFactory.java | 1 - .../PlayerCantUseSpecialAbilities.java | 36 ------------------- 10 files changed, 24 insertions(+), 57 deletions(-) delete mode 100644 gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/field/effect/modifier/PlayerCantUseSpecialAbilities.java diff --git a/gemp-lotr/gemp-lotr-cards/src/main/resources/cards/official/set03/set3-isengard.hjson b/gemp-lotr/gemp-lotr-cards/src/main/resources/cards/official/set03/set3-isengard.hjson index 55600ea2b..5eda323f0 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/resources/cards/official/set03/set3-isengard.hjson +++ b/gemp-lotr/gemp-lotr-cards/src/main/resources/cards/official/set03/set3-isengard.hjson @@ -326,7 +326,7 @@ { type: modifier modifier: { - type: PlayerCantUseSpecialAbilities + type: CantUseSpecialAbilities requires: { type: canSpot filter: another,culture(isengard),orc diff --git a/gemp-lotr/gemp-lotr-cards/src/main/resources/cards/official/set08/set08-Elven.hjson b/gemp-lotr/gemp-lotr-cards/src/main/resources/cards/official/set08/set08-Elven.hjson index 0a56ea7a2..b82bbd843 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/resources/cards/official/set08/set08-Elven.hjson +++ b/gemp-lotr/gemp-lotr-cards/src/main/resources/cards/official/set08/set08-Elven.hjson @@ -61,7 +61,7 @@ { type: addModifier modifier: { - type: PlayerCantUseSpecialAbilities + type: CantUseSpecialAbilities player: you phase: archery } @@ -245,7 +245,7 @@ { type: addModifier modifier: { - type: PlayerCantUseSpecialAbilities + type: CantUseSpecialAbilities player: you phase: archery } diff --git a/gemp-lotr/gemp-lotr-cards/src/main/resources/cards/official/set08/set08-Sauron.hjson b/gemp-lotr/gemp-lotr-cards/src/main/resources/cards/official/set08/set08-Sauron.hjson index 57a1a0383..82ea79228 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/resources/cards/official/set08/set08-Sauron.hjson +++ b/gemp-lotr/gemp-lotr-cards/src/main/resources/cards/official/set08/set08-Sauron.hjson @@ -494,7 +494,7 @@ { type: addModifier modifier: { - type: PlayerCantUseSpecialAbilities + type: CantUseSpecialAbilities player: free people phase: archery } diff --git a/gemp-lotr/gemp-lotr-cards/src/main/resources/cards/official/set11/set11-Sites.hjson b/gemp-lotr/gemp-lotr-cards/src/main/resources/cards/official/set11/set11-Sites.hjson index 3424cae3b..3a2f93207 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/resources/cards/official/set11/set11-Sites.hjson +++ b/gemp-lotr/gemp-lotr-cards/src/main/resources/cards/official/set11/set11-Sites.hjson @@ -262,7 +262,7 @@ { type: modifier modifier: { - type: PlayerCantUseSpecialAbilities + type: CantUseSpecialAbilities phase: skirmish } } diff --git a/gemp-lotr/gemp-lotr-cards/src/main/resources/cards/official/set13/set13-Elven.hjson b/gemp-lotr/gemp-lotr-cards/src/main/resources/cards/official/set13/set13-Elven.hjson index e54a817de..d96e02363 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/resources/cards/official/set13/set13-Elven.hjson +++ b/gemp-lotr/gemp-lotr-cards/src/main/resources/cards/official/set13/set13-Elven.hjson @@ -312,7 +312,7 @@ { type: addModifier modifier: { - type: PlayerCantUseSpecialAbilities + type: CantUseSpecialAbilities phase: skirmish filter: or(memory(assignedCompanion),memory(assignedMinion)) } diff --git a/gemp-lotr/gemp-lotr-cards/src/main/resources/cards/official/set18/set18-Elven.hjson b/gemp-lotr/gemp-lotr-cards/src/main/resources/cards/official/set18/set18-Elven.hjson index 31cf5b2a7..bed23947a 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/resources/cards/official/set18/set18-Elven.hjson +++ b/gemp-lotr/gemp-lotr-cards/src/main/resources/cards/official/set18/set18-Elven.hjson @@ -291,7 +291,7 @@ { type: modifier modifier: { - type: PlayerCantUseSpecialAbilities + type: CantUseSpecialAbilities requires: { type: canSpot filter: bearer,unique,companion diff --git a/gemp-lotr/gemp-lotr-cards/src/main/resources/cards/official/set18/set18-Gandalf.hjson b/gemp-lotr/gemp-lotr-cards/src/main/resources/cards/official/set18/set18-Gandalf.hjson index 19403ee53..0ca72ca07 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/resources/cards/official/set18/set18-Gandalf.hjson +++ b/gemp-lotr/gemp-lotr-cards/src/main/resources/cards/official/set18/set18-Gandalf.hjson @@ -514,7 +514,7 @@ effect: { type: addModifier modifier: { - type: PlayerCantUseSpecialAbilities + type: CantUseSpecialAbilities filter: memory(spottedMinion) } until: regroup diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/field/effect/modifier/CantUseSpecialAbilities.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/field/effect/modifier/CantUseSpecialAbilities.java index 66b2ac8de..796c87de6 100644 --- a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/field/effect/modifier/CantUseSpecialAbilities.java +++ b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/field/effect/modifier/CantUseSpecialAbilities.java @@ -3,6 +3,9 @@ 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.common.Phase; +import com.gempukku.lotro.logic.modifiers.CantUseSpecialAbilitiesModifier; +import com.gempukku.lotro.logic.modifiers.Modifier; import com.gempukku.lotro.logic.modifiers.PlayerCantUseCardSpecialAbilitiesModifier; import com.gempukku.lotro.logic.modifiers.PlayersCantUseCardSpecialAbilitiesModifier; import org.json.simple.JSONObject; @@ -10,24 +13,25 @@ import org.json.simple.JSONObject; public class CantUseSpecialAbilities implements ModifierSourceProducer { @Override public ModifierSource getModifierSource(JSONObject object, CardGenerationEnvironment environment) throws InvalidCardDefinitionException { - FieldUtils.validateAllowedFields(object, "filter", "requires", "player"); + FieldUtils.validateAllowedFields(object, "player", "phase", "requires", "filter"); + + String player = FieldUtils.getString(object.get("player"), "player"); + final Phase phase = FieldUtils.getEnum(Phase.class, object.get("phase"), "phase"); final JSONObject[] conditionArray = FieldUtils.getObjectArray(object.get("requires"), "requires"); - final String filter = FieldUtils.getString(object.get("filter"), "filter", "any"); - final String player = FieldUtils.getString(object.get("player"), "player"); + String filter = FieldUtils.getString(object.get("filter"), "filter", "any"); final Requirement[] requirements = environment.getRequirementFactory().getRequirements(conditionArray, environment); - final FilterableSource filterableSource = environment.getFilterFactory().generateFilter(filter, environment); PlayerSource playerSource = player != null ? PlayerResolver.resolvePlayer(player, environment) : null; + FilterableSource filterableSource = environment.getFilterFactory().generateFilter(filter, environment); - return actionContext -> { - if (playerSource != null) { - return new PlayerCantUseCardSpecialAbilitiesModifier(actionContext.getSource(), - playerSource.getPlayer(actionContext), - RequirementCondition.createCondition(requirements, actionContext), filterableSource.getFilterable(actionContext)); - } else { - return new PlayersCantUseCardSpecialAbilitiesModifier(actionContext.getSource(), - RequirementCondition.createCondition(requirements, actionContext), filterableSource.getFilterable(actionContext)); + return new ModifierSource() { + @Override + public Modifier getModifier(ActionContext actionContext) { + String bannedPlayer = (playerSource != null) ? playerSource.getPlayer(actionContext) : null; + + return new CantUseSpecialAbilitiesModifier(actionContext.getSource(), + RequirementCondition.createCondition(requirements, actionContext), phase, bannedPlayer, 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 76e7b550f..82d0b08f1 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 @@ -57,7 +57,6 @@ public class ModifierSourceFactory { modifierProducers.put("canttakewoundsfromlosingskirmish", new CantTakeWoundsFromLosingSkirmish()); modifierProducers.put("canttouchtokens", new AddModifierFlag(ModifierFlag.CANT_TOUCH_CULTURE_TOKENS)); modifierProducers.put("cantusespecialabilities", new CantUseSpecialAbilities()); - modifierProducers.put("playercantusespecialabilities", new PlayerCantUseSpecialAbilities()); modifierProducers.put("disablegametext", new DisableGameText()); modifierProducers.put("doesnotaddtoarcherytotal", new DoesNotAddToArcheryTotal()); modifierProducers.put("extracosttoplay", new ExtraCostToPlay()); diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/field/effect/modifier/PlayerCantUseSpecialAbilities.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/field/effect/modifier/PlayerCantUseSpecialAbilities.java deleted file mode 100644 index c96e1c24d..000000000 --- a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/field/effect/modifier/PlayerCantUseSpecialAbilities.java +++ /dev/null @@ -1,36 +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.cards.build.field.effect.appender.resolver.PlayerResolver; -import com.gempukku.lotro.common.Phase; -import com.gempukku.lotro.logic.modifiers.CantUseSpecialAbilitiesModifier; -import com.gempukku.lotro.logic.modifiers.Modifier; -import org.json.simple.JSONObject; - -public class PlayerCantUseSpecialAbilities implements ModifierSourceProducer { - @Override - public ModifierSource getModifierSource(JSONObject object, CardGenerationEnvironment environment) throws InvalidCardDefinitionException { - FieldUtils.validateAllowedFields(object, "player", "phase", "requires", "filter"); - - String player = FieldUtils.getString(object.get("player"), "player"); - final Phase phase = FieldUtils.getEnum(Phase.class, object.get("phase"), "phase"); - - final JSONObject[] conditionArray = FieldUtils.getObjectArray(object.get("requires"), "requires"); - String filter = FieldUtils.getString(object.get("filter"), "filter", "any"); - - final Requirement[] requirements = environment.getRequirementFactory().getRequirements(conditionArray, environment); - PlayerSource playerSource = player != null ? PlayerResolver.resolvePlayer(player, environment) : null; - FilterableSource filterableSource = environment.getFilterFactory().generateFilter(filter, environment); - - return new ModifierSource() { - @Override - public Modifier getModifier(ActionContext actionContext) { - String bannedPlayer = (playerSource != null) ? playerSource.getPlayer(actionContext) : null; - - return new CantUseSpecialAbilitiesModifier(actionContext.getSource(), - RequirementCondition.createCondition(requirements, actionContext), phase, bannedPlayer, filterableSource.getFilterable(actionContext)); - } - }; - } -}