Defined no defaults for number values where they should be explicitly set

This commit is contained in:
marcin.sciesinski
2019-10-04 01:14:26 -07:00
parent 1da0a5a59f
commit 155ab94a6d
24 changed files with 34 additions and 27 deletions

View File

@@ -436,7 +436,8 @@
"condition": {
"type": "location",
"filter": "hasAttached(self)"
}
},
"amount": -2
}
},
{

View File

@@ -262,7 +262,8 @@
"condition": {
"type": "location",
"filter": "or(forest,river)"
}
},
"amount": 3
}
}
},

View File

@@ -379,6 +379,7 @@
{
"type": "modifyStrength",
"filter": "choose(elf)",
"amount": 1,
"memorize": "chosenElf"
},
{

View File

@@ -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");

View File

@@ -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);

View File

@@ -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() {

View File

@@ -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)

View File

@@ -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");

View File

@@ -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);

View File

@@ -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);

View File

@@ -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);

View File

@@ -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)

View File

@@ -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);

View File

@@ -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");

View File

@@ -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);

View File

@@ -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);

View File

@@ -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);

View File

@@ -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);

View File

@@ -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");

View File

@@ -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);

View File

@@ -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);

View File

@@ -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");

View File

@@ -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);

View File

@@ -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);