Consolidating RemoveText -> DisableGameText. Refactoring away the three XUsesYInsteadOfZ stat altering modifiers. Making phase required in SkipPhase.

This commit is contained in:
Christian 'ketura' McCarty
2024-05-29 22:07:56 -05:00
parent 0e61865213
commit 9f42fbd555
11 changed files with 28 additions and 127 deletions

View File

@@ -349,7 +349,7 @@
{
type: modifier
modifier: {
type: removeText
type: DisableGameText
filter: site,zone(adventure path),storedTitle
}
}

View File

@@ -336,7 +336,7 @@
{
type: modifier
modifier: {
type: removeText
type: DisableGameText
filter: bearer,name(Denethor)
}
}

View File

@@ -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: {

View File

@@ -868,10 +868,9 @@
memorize: chosenCharacter
}
{
type: addModifier
modifier: {
type: FPUsesResInsteadOfStr
filter: memory(chosenCharacter)
type: setFPStrengthOverride
amount: {
type: forEachResistance
}
}
]

View File

@@ -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));
}
};
}
}

View File

@@ -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));
}
}

View File

@@ -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));
}
}

View File

@@ -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));

View File

@@ -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));
}
};
}
}

View File

@@ -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));
}
}

View File

@@ -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() {