From 9f42fbd55500b753db9fdba6d39b78429cf1ef87 Mon Sep 17 00:00:00 2001 From: Christian 'ketura' McCarty Date: Wed, 29 May 2024 22:07:56 -0500 Subject: [PATCH] Consolidating RemoveText -> DisableGameText. Refactoring away the three XUsesYInsteadOfZ stat altering modifiers. Making phase required in SkipPhase. --- .../cards/official/set15/set15-Men.hjson | 2 +- .../cards/official/set18/set18-Gondor.hjson | 2 +- .../pc/errata/set18/set18-Uruk-errata.hjson | 24 +++++++-------- .../second-edition/set40/set40-wraith.hjson | 7 ++--- .../effect/modifier/DisableGameText.java | 12 ++++++-- .../modifier/FPUsesResInsteadOfStr.java | 24 --------------- .../modifier/FPUsesVitInsteadOfStr.java | 24 --------------- .../modifier/ModifierSourceFactory.java | 4 --- .../field/effect/modifier/RemoveText.java | 29 ------------------- .../modifier/ShadowUsesVitInsteadOfStr.java | 24 --------------- .../field/effect/modifier/SkipPhase.java | 3 ++ 11 files changed, 28 insertions(+), 127 deletions(-) delete mode 100644 gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/field/effect/modifier/FPUsesResInsteadOfStr.java delete mode 100644 gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/field/effect/modifier/FPUsesVitInsteadOfStr.java delete mode 100644 gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/field/effect/modifier/RemoveText.java delete mode 100644 gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/field/effect/modifier/ShadowUsesVitInsteadOfStr.java diff --git a/gemp-lotr/gemp-lotr-cards/src/main/resources/cards/official/set15/set15-Men.hjson b/gemp-lotr/gemp-lotr-cards/src/main/resources/cards/official/set15/set15-Men.hjson index b7b5f2ccd..44e21dbde 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/resources/cards/official/set15/set15-Men.hjson +++ b/gemp-lotr/gemp-lotr-cards/src/main/resources/cards/official/set15/set15-Men.hjson @@ -349,7 +349,7 @@ { type: modifier modifier: { - type: removeText + type: DisableGameText filter: site,zone(adventure path),storedTitle } } diff --git a/gemp-lotr/gemp-lotr-cards/src/main/resources/cards/official/set18/set18-Gondor.hjson b/gemp-lotr/gemp-lotr-cards/src/main/resources/cards/official/set18/set18-Gondor.hjson index 81b2c5519..b6580de36 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/resources/cards/official/set18/set18-Gondor.hjson +++ b/gemp-lotr/gemp-lotr-cards/src/main/resources/cards/official/set18/set18-Gondor.hjson @@ -336,7 +336,7 @@ { type: modifier modifier: { - type: removeText + type: DisableGameText filter: bearer,name(Denethor) } } diff --git a/gemp-lotr/gemp-lotr-cards/src/main/resources/cards/unofficial/pc/errata/set18/set18-Uruk-errata.hjson b/gemp-lotr/gemp-lotr-cards/src/main/resources/cards/unofficial/pc/errata/set18/set18-Uruk-errata.hjson index 5d9167712..2b661e6f4 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/resources/cards/unofficial/pc/errata/set18/set18-Uruk-errata.hjson +++ b/gemp-lotr/gemp-lotr-cards/src/main/resources/cards/unofficial/pc/errata/set18/set18-Uruk-errata.hjson @@ -26,19 +26,17 @@ } effect: [ { - type: addModifier - modifier: { - type: FPUsesVitInsteadOfStr - filter: companion,InSkirmishAgainst(your,Uruk-hai) - } - } - { - type: addModifier - modifier: { - type: ShadowUsesVitInsteadOfStr - filter: your,Uruk-hai,InSkirmishAgainst(companion) - } - } + type: setFPStrengthOverride + amount: { + type: forEachVitality + } + } + { + type: setShadowStrengthOverride + amount: { + type: forEachVitality + } + } { type: addModifier modifier: { diff --git a/gemp-lotr/gemp-lotr-cards/src/main/resources/cards/unofficial/second-edition/set40/set40-wraith.hjson b/gemp-lotr/gemp-lotr-cards/src/main/resources/cards/unofficial/second-edition/set40/set40-wraith.hjson index d66102438..ef58c37ce 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/resources/cards/unofficial/second-edition/set40/set40-wraith.hjson +++ b/gemp-lotr/gemp-lotr-cards/src/main/resources/cards/unofficial/second-edition/set40/set40-wraith.hjson @@ -868,10 +868,9 @@ memorize: chosenCharacter } { - type: addModifier - modifier: { - type: FPUsesResInsteadOfStr - filter: memory(chosenCharacter) + type: setFPStrengthOverride + amount: { + type: forEachResistance } } ] diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/field/effect/modifier/DisableGameText.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/field/effect/modifier/DisableGameText.java index e6f67fdb9..dfb2ea339 100644 --- a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/field/effect/modifier/DisableGameText.java +++ b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/field/effect/modifier/DisableGameText.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.logic.modifiers.Modifier; import com.gempukku.lotro.logic.modifiers.RemoveGameTextModifier; import org.json.simple.JSONObject; @@ -16,8 +17,13 @@ public class DisableGameText implements ModifierSourceProducer { final FilterableSource filterableSource = environment.getFilterFactory().generateFilter(filter, environment); final Requirement[] requirements = environment.getRequirementFactory().getRequirements(conditionArray, environment); - return (actionContext) -> new RemoveGameTextModifier(actionContext.getSource(), - RequirementCondition.createCondition(requirements, actionContext), - filterableSource.getFilterable(actionContext)); + return new ModifierSource() { + @Override + public Modifier getModifier(ActionContext actionContext) { + return new RemoveGameTextModifier(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/FPUsesResInsteadOfStr.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/field/effect/modifier/FPUsesResInsteadOfStr.java deleted file mode 100644 index c241afb59..000000000 --- a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/field/effect/modifier/FPUsesResInsteadOfStr.java +++ /dev/null @@ -1,24 +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.FPSkirmishResistanceStrengthOverrideModifier; -import org.json.simple.JSONObject; - -public class FPUsesResInsteadOfStr implements ModifierSourceProducer { - @Override - public ModifierSource getModifierSource(JSONObject object, CardGenerationEnvironment environment) throws InvalidCardDefinitionException { - FieldUtils.validateAllowedFields(object, "filter", "requires"); - - final JSONObject[] conditionArray = FieldUtils.getObjectArray(object.get("requires"), "requires"); - final String filter = FieldUtils.getString(object.get("filter"), "filter"); - - final FilterableSource filterableSource = environment.getFilterFactory().generateFilter(filter, environment); - final Requirement[] requirements = environment.getRequirementFactory().getRequirements(conditionArray, environment); - - return (actionContext) -> - new FPSkirmishResistanceStrengthOverrideModifier(actionContext.getSource(), - filterableSource.getFilterable(actionContext), - RequirementCondition.createCondition(requirements, actionContext)); - } -} diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/field/effect/modifier/FPUsesVitInsteadOfStr.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/field/effect/modifier/FPUsesVitInsteadOfStr.java deleted file mode 100644 index 782b75f59..000000000 --- a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/field/effect/modifier/FPUsesVitInsteadOfStr.java +++ /dev/null @@ -1,24 +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.FPSkirmishVitalityStrengthOverrideModifier; -import org.json.simple.JSONObject; - -public class FPUsesVitInsteadOfStr implements ModifierSourceProducer { - @Override - public ModifierSource getModifierSource(JSONObject object, CardGenerationEnvironment environment) throws InvalidCardDefinitionException { - FieldUtils.validateAllowedFields(object, "filter", "requires"); - - final JSONObject[] conditionArray = FieldUtils.getObjectArray(object.get("requires"), "requires"); - final String filter = FieldUtils.getString(object.get("filter"), "filter"); - - final FilterableSource filterableSource = environment.getFilterFactory().generateFilter(filter, environment); - final Requirement[] requirements = environment.getRequirementFactory().getRequirements(conditionArray, environment); - - return (actionContext) -> - new FPSkirmishVitalityStrengthOverrideModifier(actionContext.getSource(), - filterableSource.getFilterable(actionContext), - RequirementCondition.createCondition(requirements, 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 f59a01030..84053f7b8 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 @@ -60,8 +60,6 @@ public class ModifierSourceFactory { modifierProducers.put("doesnotaddtoarcherytotal", new DoesNotAddToArcheryTotal()); modifierProducers.put("extracosttoplay", new ExtraCostToPlay()); modifierProducers.put("fpculturespot", new FPCultureSpot()); - modifierProducers.put("fpusesresinsteadofstr", new FPUsesResInsteadOfStr()); - modifierProducers.put("fpusesvitinsteadofstr", new FPUsesVitInsteadOfStr()); modifierProducers.put("hastomoveifable", new AddModifierFlag(ModifierFlag.HAS_TO_MOVE_IF_POSSIBLE)); modifierProducers.put("itemclassspot", new ItemClassSpot()); modifierProducers.put("modifyarcherytotal", new ModifyArcheryTotal()); @@ -80,12 +78,10 @@ public class ModifierSourceFactory { modifierProducers.put("removeallkeywords", new RemoveAllKeywords()); modifierProducers.put("removecardsgoingtodiscard", new AddModifierFlag(ModifierFlag.REMOVE_CARDS_GOING_TO_DISCARD)); modifierProducers.put("removekeyword", new RemoveKeyword()); - modifierProducers.put("removetext", new RemoveText()); modifierProducers.put("ringbearercanttakethreatwounds", new AddModifierFlag(ModifierFlag.RING_BEARER_CANT_TAKE_THREAT_WOUNDS)); modifierProducers.put("ringtextisinactive", new AddModifierFlag(ModifierFlag.RING_TEXT_INACTIVE)); modifierProducers.put("sarumanfirstsentenceinactive", new AddModifierFlag(ModifierFlag.SARUMAN_FIRST_SENTENCE_INACTIVE)); modifierProducers.put("shadowhasinitiative", new ShadowHasInitiative()); - modifierProducers.put("shadowusesvitinsteadofstr", new ShadowUsesVitInsteadOfStr()); modifierProducers.put("skipphase", new SkipPhase()); modifierProducers.put("skirmishesresolvedinorderbyfirstshadowplayer", new AddModifierFlag(ModifierFlag.SKIRMISH_ORDER_BY_FIRST_SHADOW_PLAYER)); modifierProducers.put("transferforfree", new AddModifierFlag(ModifierFlag.TRANSFERS_FOR_FREE)); diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/field/effect/modifier/RemoveText.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/field/effect/modifier/RemoveText.java deleted file mode 100644 index d468cc8be..000000000 --- a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/field/effect/modifier/RemoveText.java +++ /dev/null @@ -1,29 +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.Modifier; -import com.gempukku.lotro.logic.modifiers.RemoveGameTextModifier; -import org.json.simple.JSONObject; - -public class RemoveText implements ModifierSourceProducer { - @Override - public ModifierSource getModifierSource(JSONObject object, CardGenerationEnvironment environment) throws InvalidCardDefinitionException { - FieldUtils.validateAllowedFields(object, "filter", "requires"); - - final JSONObject[] conditionArray = FieldUtils.getObjectArray(object.get("requires"), "requires"); - final String filter = FieldUtils.getString(object.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 RemoveGameTextModifier(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/ShadowUsesVitInsteadOfStr.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/field/effect/modifier/ShadowUsesVitInsteadOfStr.java deleted file mode 100644 index e6e485eb6..000000000 --- a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/field/effect/modifier/ShadowUsesVitInsteadOfStr.java +++ /dev/null @@ -1,24 +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.ShadowSkirmishVitalityStrengthOverrideModifier; -import org.json.simple.JSONObject; - -public class ShadowUsesVitInsteadOfStr implements ModifierSourceProducer { - @Override - public ModifierSource getModifierSource(JSONObject object, CardGenerationEnvironment environment) throws InvalidCardDefinitionException { - FieldUtils.validateAllowedFields(object, "filter", "requires"); - - final JSONObject[] conditionArray = FieldUtils.getObjectArray(object.get("requires"), "requires"); - final String filter = FieldUtils.getString(object.get("filter"), "filter"); - - final FilterableSource filterableSource = environment.getFilterFactory().generateFilter(filter, environment); - final Requirement[] requirements = environment.getRequirementFactory().getRequirements(conditionArray, environment); - - return (actionContext) -> - new ShadowSkirmishVitalityStrengthOverrideModifier(actionContext.getSource(), - filterableSource.getFilterable(actionContext), - RequirementCondition.createCondition(requirements, actionContext)); - } -} diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/field/effect/modifier/SkipPhase.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/field/effect/modifier/SkipPhase.java index c17809e96..622a786ff 100644 --- a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/field/effect/modifier/SkipPhase.java +++ b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/field/effect/modifier/SkipPhase.java @@ -15,6 +15,9 @@ public class SkipPhase implements ModifierSourceProducer { final JSONObject[] conditionArray = FieldUtils.getObjectArray(object.get("requires"), "requires"); final Phase phase = FieldUtils.getEnum(Phase.class, object.get("phase"), "phase"); + if (phase == null) + throw new InvalidCardDefinitionException("'phase' is required for SkipPhase modifier."); + final Requirement[] requirements = environment.getRequirementFactory().getRequirements(conditionArray, environment); return new ModifierSource() {