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;
|
package com.gempukku.lotro.cards.build.field.effect.modifier;
|
||||||
|
|
||||||
import com.gempukku.lotro.cards.build.CardGenerationEnvironment;
|
import com.gempukku.lotro.cards.build.*;
|
||||||
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.field.FieldUtils;
|
import com.gempukku.lotro.cards.build.field.FieldUtils;
|
||||||
import com.gempukku.lotro.cards.build.field.effect.appender.resolver.ValueResolver;
|
import com.gempukku.lotro.cards.build.field.effect.appender.resolver.ValueResolver;
|
||||||
import com.gempukku.lotro.logic.modifiers.MoveLimitModifier;
|
import com.gempukku.lotro.logic.modifiers.MoveLimitModifier;
|
||||||
@@ -13,13 +10,18 @@ import org.json.simple.JSONObject;
|
|||||||
public class ModifyMoveLimit implements ModifierSourceProducer {
|
public class ModifyMoveLimit implements ModifierSourceProducer {
|
||||||
@Override
|
@Override
|
||||||
public ModifierSource getModifierSource(JSONObject object, CardGenerationEnvironment environment) throws InvalidCardDefinitionException {
|
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 ValueSource valueSource = ValueResolver.resolveEvaluator(object.get("amount"), environment);
|
||||||
|
|
||||||
|
final Requirement[] requirements = environment.getRequirementFactory().getRequirements(requiresArray, environment);
|
||||||
|
|
||||||
return (actionContext) -> {
|
return (actionContext) -> {
|
||||||
final Evaluator evaluator = valueSource.getEvaluator(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;
|
private final Evaluator _moveLimitModifier;
|
||||||
|
|
||||||
public MoveLimitModifier(PhysicalCard source, int 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);
|
_moveLimitModifier = new ConstantEvaluator(moveLimitModifier);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user