Adding requires parameters to the move limit modifier

This commit is contained in:
Christian 'ketura' McCarty
2024-12-01 23:36:51 -06:00
parent 0c54bd3892
commit e216e3d57e
2 changed files with 13 additions and 7 deletions

View File

@@ -1,9 +1,6 @@
package com.gempukku.lotro.cards.build.field.effect.modifier;
import com.gempukku.lotro.cards.build.CardGenerationEnvironment;
import com.gempukku.lotro.cards.build.InvalidCardDefinitionException;
import com.gempukku.lotro.cards.build.ModifierSource;
import com.gempukku.lotro.cards.build.ValueSource;
import com.gempukku.lotro.cards.build.*;
import com.gempukku.lotro.cards.build.field.FieldUtils;
import com.gempukku.lotro.cards.build.field.effect.appender.resolver.ValueResolver;
import com.gempukku.lotro.logic.modifiers.MoveLimitModifier;
@@ -13,13 +10,18 @@ import org.json.simple.JSONObject;
public class ModifyMoveLimit implements ModifierSourceProducer {
@Override
public ModifierSource getModifierSource(JSONObject object, CardGenerationEnvironment environment) throws InvalidCardDefinitionException {
FieldUtils.validateAllowedFields(object, "amount");
FieldUtils.validateAllowedFields(object, "requires", "amount");
final JSONObject[] requiresArray = FieldUtils.getObjectArray(object.get("requires"), "requires");
final ValueSource valueSource = ValueResolver.resolveEvaluator(object.get("amount"), environment);
final Requirement[] requirements = environment.getRequirementFactory().getRequirements(requiresArray, environment);
return (actionContext) -> {
final Evaluator evaluator = valueSource.getEvaluator(actionContext);
return new MoveLimitModifier(actionContext.getSource(), evaluator.evaluateExpression(actionContext.getGame(), null));
return new MoveLimitModifier(actionContext.getSource(),
evaluator.evaluateExpression(actionContext.getGame(), null),
RequirementCondition.createCondition(requirements, actionContext));
};
}
}

View File

@@ -9,7 +9,11 @@ public class MoveLimitModifier extends AbstractModifier {
private final Evaluator _moveLimitModifier;
public MoveLimitModifier(PhysicalCard source, int moveLimitModifier) {
super(source, null, null, null, ModifierEffect.MOVE_LIMIT_MODIFIER);
this(source, moveLimitModifier, null);
}
public MoveLimitModifier(PhysicalCard source, int moveLimitModifier, Condition condition) {
super(source, null, null, condition, ModifierEffect.MOVE_LIMIT_MODIFIER);
_moveLimitModifier = new ConstantEvaluator(moveLimitModifier);
}