Altering ModifyRoamingPenalty to accept an evaluated value rather than an integer.
This commit is contained in:
@@ -2,8 +2,10 @@ 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.cards.build.field.effect.appender.resolver.ValueResolver;
|
||||
import com.gempukku.lotro.logic.modifiers.Modifier;
|
||||
import com.gempukku.lotro.logic.modifiers.RoamingPenaltyModifier;
|
||||
import com.gempukku.lotro.logic.modifiers.evaluator.Evaluator;
|
||||
import org.json.simple.JSONObject;
|
||||
|
||||
public class ModifyRoamingPenalty implements ModifierSourceProducer {
|
||||
@@ -11,7 +13,7 @@ public class ModifyRoamingPenalty implements ModifierSourceProducer {
|
||||
public ModifierSource getModifierSource(JSONObject object, CardGenerationEnvironment environment) throws InvalidCardDefinitionException {
|
||||
FieldUtils.validateAllowedFields(object, "filter", "requires", "amount");
|
||||
|
||||
final int amount = FieldUtils.getInteger(object.get("amount"), "amount");
|
||||
final ValueSource valueSource = ValueResolver.resolveEvaluator(object.get("amount"), environment);
|
||||
final JSONObject[] conditionArray = FieldUtils.getObjectArray(object.get("requires"), "requires");
|
||||
final String filter = FieldUtils.getString(object.get("filter"), "filter");
|
||||
|
||||
@@ -21,9 +23,10 @@ public class ModifyRoamingPenalty implements ModifierSourceProducer {
|
||||
return new ModifierSource() {
|
||||
@Override
|
||||
public Modifier getModifier(ActionContext actionContext) {
|
||||
final Evaluator evaluator = valueSource.getEvaluator(actionContext);
|
||||
return new RoamingPenaltyModifier(actionContext.getSource(),
|
||||
filterableSource.getFilterable(actionContext),
|
||||
RequirementCondition.createCondition(requirements, actionContext), amount);
|
||||
RequirementCondition.createCondition(requirements, actionContext), evaluator);
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
@@ -3,17 +3,29 @@ package com.gempukku.lotro.logic.modifiers;
|
||||
import com.gempukku.lotro.common.Filterable;
|
||||
import com.gempukku.lotro.game.PhysicalCard;
|
||||
import com.gempukku.lotro.game.state.LotroGame;
|
||||
import com.gempukku.lotro.logic.modifiers.evaluator.ConstantEvaluator;
|
||||
import com.gempukku.lotro.logic.modifiers.evaluator.Evaluator;
|
||||
|
||||
public class RoamingPenaltyModifier extends AbstractModifier {
|
||||
private final int _modifier;
|
||||
private final Evaluator _evaluator;
|
||||
|
||||
public RoamingPenaltyModifier(PhysicalCard source, Filterable affectFilter, Condition condition, int modifier) {
|
||||
super(source, "Roaming penalty " + ((modifier > 0) ? ("+" + modifier) : modifier), affectFilter, condition, ModifierEffect.TWILIGHT_COST_MODIFIER);
|
||||
_modifier = modifier;
|
||||
this(source, affectFilter, condition, new ConstantEvaluator(modifier));
|
||||
}
|
||||
|
||||
public RoamingPenaltyModifier(PhysicalCard source, Filterable affectFilter, Condition condition, Evaluator evaluator) {
|
||||
super(source, null, affectFilter, condition, ModifierEffect.TWILIGHT_COST_MODIFIER);
|
||||
_evaluator = evaluator;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getText(LotroGame game, PhysicalCard self) {
|
||||
int modifier = _evaluator.evaluateExpression(game, self);
|
||||
return "Roaming penalty " + ((modifier > 0) ? ("+" + modifier) : modifier);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getRoamingPenaltyModifier(LotroGame game, PhysicalCard physicalCard) {
|
||||
return _modifier;
|
||||
return _evaluator.evaluateExpression(game, physicalCard);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user