Adding requires parameters to the move limit modifier
This commit is contained in:
@@ -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));
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user