Defined no defaults for number values where they should be explicitly set
This commit is contained in:
@@ -436,7 +436,8 @@
|
||||
"condition": {
|
||||
"type": "location",
|
||||
"filter": "hasAttached(self)"
|
||||
}
|
||||
},
|
||||
"amount": -2
|
||||
}
|
||||
},
|
||||
{
|
||||
|
||||
@@ -262,7 +262,8 @@
|
||||
"condition": {
|
||||
"type": "location",
|
||||
"filter": "or(forest,river)"
|
||||
}
|
||||
},
|
||||
"amount": 3
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
@@ -379,6 +379,7 @@
|
||||
{
|
||||
"type": "modifyStrength",
|
||||
"filter": "choose(elf)",
|
||||
"amount": 1,
|
||||
"memorize": "chosenElf"
|
||||
},
|
||||
{
|
||||
|
||||
@@ -15,7 +15,7 @@ public class PotentialDiscount implements EffectProcessor {
|
||||
public void processEffect(JSONObject value, BuiltLotroCardBlueprint blueprint, CardGenerationEnvironment environment) throws InvalidCardDefinitionException {
|
||||
FieldUtils.validateAllowedFields(value, "amount", "discount");
|
||||
|
||||
final ValueSource amountSource = ValueResolver.resolveEvaluator(value.get("amount"), 0, environment);
|
||||
final ValueSource amountSource = ValueResolver.resolveEvaluator(value.get("amount"), environment);
|
||||
final JSONObject discount = (JSONObject) value.get("discount");
|
||||
|
||||
final String discountType = FieldUtils.getString(discount.get("type"), "type");
|
||||
|
||||
@@ -21,7 +21,7 @@ public class Duplicate implements EffectAppenderProducer {
|
||||
public EffectAppender createEffectAppender(JSONObject effectObject, CardGenerationEnvironment environment) throws InvalidCardDefinitionException {
|
||||
FieldUtils.validateAllowedFields(effectObject, "amount", "effect");
|
||||
|
||||
final ValueSource amountSource = ValueResolver.resolveEvaluator(effectObject.get("amount"), 1, environment);
|
||||
final ValueSource amountSource = ValueResolver.resolveEvaluator(effectObject.get("amount"), environment);
|
||||
final JSONObject effect = (JSONObject) effectObject.get("effect");
|
||||
|
||||
final EffectAppender effectAppender = environment.getEffectAppenderFactory().getEffectAppender(effect, environment);
|
||||
|
||||
@@ -19,7 +19,7 @@ public class MemorizeNumber implements EffectAppenderProducer {
|
||||
public EffectAppender createEffectAppender(JSONObject effectObject, CardGenerationEnvironment environment) throws InvalidCardDefinitionException {
|
||||
FieldUtils.validateAllowedFields(effectObject, "amount", "memory");
|
||||
|
||||
final ValueSource amountSource = ValueResolver.resolveEvaluator(effectObject.get("amount"), 0, environment);
|
||||
final ValueSource amountSource = ValueResolver.resolveEvaluator(effectObject.get("amount"), environment);
|
||||
final String memory = FieldUtils.getString(effectObject.get("memory"), "memory");
|
||||
|
||||
return new DelayedAppender() {
|
||||
|
||||
@@ -21,7 +21,7 @@ public class ModifyArcheryTotal implements EffectAppenderProducer {
|
||||
public EffectAppender createEffectAppender(JSONObject effectObject, CardGenerationEnvironment environment) throws InvalidCardDefinitionException {
|
||||
FieldUtils.validateAllowedFields(effectObject, "amount", "side");
|
||||
|
||||
final ValueSource valueSource = ValueResolver.resolveEvaluator(effectObject.get("amount"), 0, environment);
|
||||
final ValueSource valueSource = ValueResolver.resolveEvaluator(effectObject.get("amount"), environment);
|
||||
final Side side = FieldUtils.getEnum(Side.class, effectObject.get("side"), "side");
|
||||
|
||||
if (side == null)
|
||||
|
||||
@@ -26,7 +26,7 @@ public class ModifyStrength implements EffectAppenderProducer {
|
||||
public EffectAppender createEffectAppender(JSONObject effectObject, CardGenerationEnvironment environment) throws InvalidCardDefinitionException {
|
||||
FieldUtils.validateAllowedFields(effectObject, "amount", "count", "filter", "until", "memorize");
|
||||
|
||||
final ValueSource amountSource = ValueResolver.resolveEvaluator(effectObject.get("amount"), 0, environment);
|
||||
final ValueSource amountSource = ValueResolver.resolveEvaluator(effectObject.get("amount"), environment);
|
||||
final ValueSource valueSource = ValueResolver.resolveEvaluator(effectObject.get("count"), 1, environment);
|
||||
final String filter = FieldUtils.getString(effectObject.get("filter"), "filter");
|
||||
final String memory = FieldUtils.getString(effectObject.get("memorize"), "memorize", "_temp");
|
||||
|
||||
@@ -22,7 +22,7 @@ public class PlaySite implements EffectAppenderProducer {
|
||||
FieldUtils.validateAllowedFields(effectObject, "block", "filter", "number", "memorize");
|
||||
final SitesBlock block = FieldUtils.getEnum(SitesBlock.class, effectObject.get("block"), "block");
|
||||
final String filter = FieldUtils.getString(effectObject.get("filter"), "filter", "any");
|
||||
final ValueSource valueSource = ValueResolver.resolveEvaluator(effectObject.get("number"), 0, environment);
|
||||
final ValueSource valueSource = ValueResolver.resolveEvaluator(effectObject.get("number"), environment);
|
||||
final String memorize = FieldUtils.getString(effectObject.get("memorize"), "memorize");
|
||||
|
||||
final FilterableSource filterableSource = environment.getFilterFactory().generateFilter(filter, environment);
|
||||
|
||||
@@ -31,7 +31,7 @@ public class PutCardsFromHandOnBottomOfDeck implements EffectAppenderProducer {
|
||||
|
||||
ValueSource valueSource;
|
||||
if (optional)
|
||||
valueSource = ValueResolver.resolveEvaluator("0-1", 1, environment);
|
||||
valueSource = ValueResolver.resolveEvaluator("0-1", environment);
|
||||
else
|
||||
valueSource = new ConstantEvaluator(1);
|
||||
|
||||
|
||||
@@ -31,7 +31,7 @@ public class PutCardsFromHandOnTopOfDeck implements EffectAppenderProducer {
|
||||
|
||||
ValueSource valueSource;
|
||||
if (optional)
|
||||
valueSource = ValueResolver.resolveEvaluator("0-1", 1, environment);
|
||||
valueSource = ValueResolver.resolveEvaluator("0-1", environment);
|
||||
else
|
||||
valueSource = new ConstantEvaluator(1);
|
||||
|
||||
|
||||
@@ -16,7 +16,13 @@ import org.json.simple.JSONObject;
|
||||
import java.util.Collection;
|
||||
|
||||
public class ValueResolver {
|
||||
public static ValueSource resolveEvaluator(Object value, int defaultValue, CardGenerationEnvironment environment) throws InvalidCardDefinitionException {
|
||||
public static ValueSource resolveEvaluator(Object value, CardGenerationEnvironment environment) throws InvalidCardDefinitionException {
|
||||
return resolveEvaluator(value, null, environment);
|
||||
}
|
||||
|
||||
public static ValueSource resolveEvaluator(Object value, Integer defaultValue, CardGenerationEnvironment environment) throws InvalidCardDefinitionException {
|
||||
if (value == null && defaultValue == null)
|
||||
throw new InvalidCardDefinitionException("Value not defined");
|
||||
if (value == null)
|
||||
return new ConstantEvaluator(defaultValue);
|
||||
if (value instanceof Number)
|
||||
|
||||
@@ -243,7 +243,7 @@ public class FilterFactory {
|
||||
return Filters.maxPrintedTwilightCost(value);
|
||||
};
|
||||
} else {
|
||||
final ValueSource valueSource = ValueResolver.resolveEvaluator(parameter, 0, environment);
|
||||
final ValueSource valueSource = ValueResolver.resolveEvaluator(parameter, environment);
|
||||
return actionContext -> {
|
||||
final int value = valueSource.getEvaluator(actionContext).evaluateExpression(actionContext.getGame(), null);
|
||||
return Filters.maxPrintedTwilightCost(value);
|
||||
@@ -259,7 +259,7 @@ public class FilterFactory {
|
||||
return Filters.minPrintedTwilightCost(value);
|
||||
};
|
||||
} else {
|
||||
final ValueSource valueSource = ValueResolver.resolveEvaluator(parameter, 0, environment);
|
||||
final ValueSource valueSource = ValueResolver.resolveEvaluator(parameter, environment);
|
||||
return actionContext -> {
|
||||
final int value = valueSource.getEvaluator(actionContext).evaluateExpression(actionContext.getGame(), null);
|
||||
return Filters.minPrintedTwilightCost(value);
|
||||
|
||||
@@ -13,7 +13,7 @@ public class ModifyArcheryTotal implements ModifierSourceProducer {
|
||||
public ModifierSource getModifierSource(JSONObject object, CardGenerationEnvironment environment) throws InvalidCardDefinitionException {
|
||||
FieldUtils.validateAllowedFields(object, "side", "condition", "amount");
|
||||
|
||||
final ValueSource valueSource = ValueResolver.resolveEvaluator(object.get("amount"), 1, environment);
|
||||
final ValueSource valueSource = ValueResolver.resolveEvaluator(object.get("amount"), environment);
|
||||
final JSONObject[] conditionArray = FieldUtils.getObjectArray(object.get("condition"), "condition");
|
||||
final Side side = FieldUtils.getEnum(Side.class, object.get("side"), "side");
|
||||
|
||||
|
||||
@@ -18,7 +18,7 @@ public class ModifyCost implements ModifierSourceProducer {
|
||||
|
||||
final Requirement[] conditions = environment.getRequirementFactory().getRequirements(conditionArray, environment);
|
||||
final FilterableSource filterableSource = environment.getFilterFactory().generateFilter(filter, environment);
|
||||
final ValueSource amountSource = ValueResolver.resolveEvaluator(object.get("amount"), 0, environment);
|
||||
final ValueSource amountSource = ValueResolver.resolveEvaluator(object.get("amount"), environment);
|
||||
|
||||
return actionContext -> {
|
||||
final Filterable filterable = filterableSource.getFilterable(actionContext);
|
||||
|
||||
@@ -15,7 +15,7 @@ public class ModifyMoveLimit implements ModifierSourceProducer {
|
||||
public ModifierSource getModifierSource(JSONObject object, CardGenerationEnvironment environment) throws InvalidCardDefinitionException {
|
||||
FieldUtils.validateAllowedFields(object, "amount");
|
||||
|
||||
final ValueSource valueSource = ValueResolver.resolveEvaluator(object.get("amount"), 1, environment);
|
||||
final ValueSource valueSource = ValueResolver.resolveEvaluator(object.get("amount"), environment);
|
||||
|
||||
return (actionContext) -> {
|
||||
final Evaluator evaluator = valueSource.getEvaluator(actionContext);
|
||||
|
||||
@@ -14,7 +14,7 @@ public class ModifyOwnCost implements EffectProcessor {
|
||||
FieldUtils.validateAllowedFields(value, "amount", "condition", "on");
|
||||
|
||||
final String onFilter = FieldUtils.getString(value.get("on"), "on", "any");
|
||||
final ValueSource amountSource = ValueResolver.resolveEvaluator(value.get("amount"), 0, environment);
|
||||
final ValueSource amountSource = ValueResolver.resolveEvaluator(value.get("amount"), environment);
|
||||
final JSONObject[] conditionArray = FieldUtils.getObjectArray(value.get("condition"), "condition");
|
||||
|
||||
final FilterableSource onFilterableSource = environment.getFilterFactory().generateFilter(onFilter, environment);
|
||||
|
||||
@@ -24,7 +24,7 @@ public class ModifyPlayOnCost implements ModifierSourceProducer {
|
||||
final Requirement[] conditions = environment.getRequirementFactory().getRequirements(conditionArray, environment);
|
||||
final FilterableSource filterableSource = environment.getFilterFactory().generateFilter(filter, environment);
|
||||
final FilterableSource onFilterableSource = environment.getFilterFactory().generateFilter(onFilter, environment);
|
||||
final ValueSource amountSource = ValueResolver.resolveEvaluator(object.get("amount"), 0, environment);
|
||||
final ValueSource amountSource = ValueResolver.resolveEvaluator(object.get("amount"), environment);
|
||||
|
||||
return actionContext -> {
|
||||
final Filterable filterable = filterableSource.getFilterable(actionContext);
|
||||
|
||||
@@ -12,7 +12,7 @@ public class ModifyResistance implements ModifierSourceProducer {
|
||||
public ModifierSource getModifierSource(JSONObject object, CardGenerationEnvironment environment) throws InvalidCardDefinitionException {
|
||||
FieldUtils.validateAllowedFields(object, "filter", "condition", "amount");
|
||||
|
||||
final ValueSource valueSource = ValueResolver.resolveEvaluator(object.get("amount"), 1, environment);
|
||||
final ValueSource valueSource = ValueResolver.resolveEvaluator(object.get("amount"), environment);
|
||||
final JSONObject[] conditionArray = FieldUtils.getObjectArray(object.get("condition"), "condition");
|
||||
final String filter = FieldUtils.getString(object.get("filter"), "filter");
|
||||
|
||||
|
||||
@@ -3,8 +3,6 @@ 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.common.Phase;
|
||||
import com.gempukku.lotro.logic.modifiers.CantTakeMoreThanXWoundsModifier;
|
||||
import com.gempukku.lotro.logic.modifiers.SanctuaryHealModifier;
|
||||
import org.json.simple.JSONObject;
|
||||
|
||||
@@ -13,7 +11,7 @@ public class ModifySanctuaryHeal implements ModifierSourceProducer {
|
||||
public ModifierSource getModifierSource(JSONObject object, CardGenerationEnvironment environment) throws InvalidCardDefinitionException {
|
||||
FieldUtils.validateAllowedFields(object, "condition", "amount");
|
||||
|
||||
final ValueSource amountSource = ValueResolver.resolveEvaluator(object.get("amount"), 1, environment);
|
||||
final ValueSource amountSource = ValueResolver.resolveEvaluator(object.get("amount"), environment);
|
||||
final JSONObject[] conditionArray = FieldUtils.getObjectArray(object.get("condition"), "condition");
|
||||
|
||||
final Requirement[] requirements = environment.getRequirementFactory().getRequirements(conditionArray, environment);
|
||||
|
||||
@@ -14,7 +14,7 @@ public class ModifySiteNumber implements ModifierSourceProducer {
|
||||
|
||||
final JSONObject[] conditionArray = FieldUtils.getObjectArray(object.get("condition"), "condition");
|
||||
final String filter = FieldUtils.getString(object.get("filter"), "filter");
|
||||
final ValueSource amount = ValueResolver.resolveEvaluator(object.get("amount"), 0, environment);
|
||||
final ValueSource amount = ValueResolver.resolveEvaluator(object.get("amount"), environment);
|
||||
|
||||
final FilterableSource filterableSource = environment.getFilterFactory().generateFilter(filter, environment);
|
||||
final Requirement[] requirements = environment.getRequirementFactory().getRequirements(conditionArray, environment);
|
||||
|
||||
@@ -12,7 +12,7 @@ public class ModifyStrength implements ModifierSourceProducer {
|
||||
public ModifierSource getModifierSource(JSONObject object, CardGenerationEnvironment environment) throws InvalidCardDefinitionException {
|
||||
FieldUtils.validateAllowedFields(object, "filter", "condition", "amount");
|
||||
|
||||
final ValueSource valueSource = ValueResolver.resolveEvaluator(object.get("amount"), 1, environment);
|
||||
final ValueSource valueSource = ValueResolver.resolveEvaluator(object.get("amount"), environment);
|
||||
final JSONObject[] conditionArray = FieldUtils.getObjectArray(object.get("condition"), "condition");
|
||||
final String filter = FieldUtils.getString(object.get("filter"), "filter");
|
||||
|
||||
|
||||
@@ -13,7 +13,7 @@ public class CardsInDeckCount implements RequirementProducer {
|
||||
|
||||
final String deck = FieldUtils.getString(object.get("deck"), "deck", "you");
|
||||
final PlayerSource playerSource = PlayerResolver.resolvePlayer(deck, environment);
|
||||
final ValueSource valueSource = ValueResolver.resolveEvaluator(object.get("count"), 0, environment);
|
||||
final ValueSource valueSource = ValueResolver.resolveEvaluator(object.get("count"), environment);
|
||||
|
||||
return actionContext -> {
|
||||
final String player = playerSource.getPlayer(actionContext);
|
||||
|
||||
@@ -13,8 +13,8 @@ public class IsMore implements RequirementProducer {
|
||||
public Requirement getPlayRequirement(JSONObject object, CardGenerationEnvironment environment) throws InvalidCardDefinitionException {
|
||||
FieldUtils.validateAllowedFields(object, "firstNumber", "secondNumber");
|
||||
|
||||
final ValueSource firstNumber = ValueResolver.resolveEvaluator(object.get("firstNumber"), 0, environment);
|
||||
final ValueSource secondNumber = ValueResolver.resolveEvaluator(object.get("secondNumber"), 0, environment);
|
||||
final ValueSource firstNumber = ValueResolver.resolveEvaluator(object.get("firstNumber"), environment);
|
||||
final ValueSource secondNumber = ValueResolver.resolveEvaluator(object.get("secondNumber"), environment);
|
||||
|
||||
return actionContext -> {
|
||||
final int first = firstNumber.getEvaluator(actionContext).evaluateExpression(actionContext.getGame(), null);
|
||||
|
||||
Reference in New Issue
Block a user