Fixing CanPlayFromDiscard bad definition. Rearranging requirements to put operations at the top
This commit is contained in:
@@ -101,7 +101,7 @@
|
||||
requires: {
|
||||
type: canPlayFromDiscard
|
||||
filter: corsair
|
||||
cost: {
|
||||
discount: {
|
||||
type: ForEachCultureToken
|
||||
culture: raider
|
||||
filter: self
|
||||
|
||||
@@ -1,23 +1,26 @@
|
||||
package com.gempukku.lotro.cards.build.field.effect.requirement;
|
||||
|
||||
import com.gempukku.lotro.cards.build.CardGenerationEnvironment;
|
||||
import com.gempukku.lotro.cards.build.FilterableSource;
|
||||
import com.gempukku.lotro.cards.build.InvalidCardDefinitionException;
|
||||
import com.gempukku.lotro.cards.build.Requirement;
|
||||
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.timing.PlayConditions;
|
||||
import org.json.simple.JSONObject;
|
||||
|
||||
public class CanPlayFromDiscard implements RequirementProducer {
|
||||
@Override
|
||||
public Requirement getPlayRequirement(JSONObject object, CardGenerationEnvironment environment) throws InvalidCardDefinitionException {
|
||||
FieldUtils.validateAllowedFields(object, "cost", "filter");
|
||||
FieldUtils.validateAllowedFields(object, "discount", "filter");
|
||||
|
||||
final int cost = FieldUtils.getInteger(object.get("count"), "count", 0);
|
||||
final ValueSource discountValue = ValueResolver.resolveEvaluator(object.get("discount"), 0, environment);
|
||||
final String filter = FieldUtils.getString(object.get("filter"), "filter");
|
||||
|
||||
final FilterableSource filterableSource = environment.getFilterFactory().generateFilter(filter, environment);
|
||||
|
||||
return (actionContext) -> PlayConditions.canPlayFromDiscard(actionContext.getPerformingPlayer(), actionContext.getGame(), cost, filterableSource.getFilterable(actionContext));
|
||||
return (actionContext) -> {
|
||||
final int discount = discountValue.getEvaluator(actionContext).evaluateExpression(actionContext.getGame(), null);
|
||||
|
||||
return PlayConditions.canPlayFromDiscard(actionContext.getPerformingPlayer(), actionContext.getGame(),
|
||||
discount, filterableSource.getFilterable(actionContext));
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
@@ -13,9 +13,16 @@ public class RequirementFactory {
|
||||
private final Map<String, RequirementProducer> requirementProducers = new HashMap<>();
|
||||
|
||||
public RequirementFactory() {
|
||||
requirementProducers.put("not", new NotRequirementProducer());
|
||||
requirementProducers.put("and", new AndRequirementProducer());
|
||||
requirementProducers.put("not", new NotRequirementProducer());
|
||||
requirementProducers.put("or", new OrRequirementProducer());
|
||||
requirementProducers.put("isequal", new IsEqual());
|
||||
requirementProducers.put("isnotequal", new IsNotEqual());
|
||||
requirementProducers.put("isgreaterthan", new IsGreaterThan());
|
||||
requirementProducers.put("isgreaterthanorequal", new IsGreaterThanOrEqual());
|
||||
requirementProducers.put("islessthan", new IsLessThan());
|
||||
requirementProducers.put("islessthanorequal", new IsLessThanOrEqual());
|
||||
|
||||
requirementProducers.put("canmove", new CanMove());
|
||||
requirementProducers.put("canplayfromdiscard", new CanPlayFromDiscard());
|
||||
requirementProducers.put("canselfbeplayed", new CanSelfBePlayed());
|
||||
@@ -47,12 +54,6 @@ public class RequirementFactory {
|
||||
requirementProducers.put("hasinzonedata", new HasInZoneData());
|
||||
requirementProducers.put("haveinitiative", new HaveInitiative());
|
||||
requirementProducers.put("isahead", new IsAhead());
|
||||
requirementProducers.put("isequal", new IsEqual());
|
||||
requirementProducers.put("isgreaterthan", new IsGreaterThan());
|
||||
requirementProducers.put("isgreaterthanorequal", new IsGreaterThanOrEqual());
|
||||
requirementProducers.put("islessthan", new IsLessThan());
|
||||
requirementProducers.put("islessthanorequal", new IsLessThanOrEqual());
|
||||
requirementProducers.put("isnotequal", new IsNotEqual());
|
||||
requirementProducers.put("isowner", new IsOwnerRequirementProducer());
|
||||
requirementProducers.put("isside", new IsSideRequirementProducer());
|
||||
requirementProducers.put("killedwithsurplusdamage", new KilledWithSurplusDamage());
|
||||
|
||||
Reference in New Issue
Block a user