diff --git a/gemp-lotr/gemp-lotr-cards/src/main/resources/cards/official/set08/set08-Raider.hjson b/gemp-lotr/gemp-lotr-cards/src/main/resources/cards/official/set08/set08-Raider.hjson index ba93025c7..c5da54f27 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/resources/cards/official/set08/set08-Raider.hjson +++ b/gemp-lotr/gemp-lotr-cards/src/main/resources/cards/official/set08/set08-Raider.hjson @@ -101,7 +101,7 @@ requires: { type: canPlayFromDiscard filter: corsair - cost: { + discount: { type: ForEachCultureToken culture: raider filter: self diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/field/effect/requirement/CanPlayFromDiscard.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/field/effect/requirement/CanPlayFromDiscard.java index c27c09128..192d91690 100644 --- a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/field/effect/requirement/CanPlayFromDiscard.java +++ b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/field/effect/requirement/CanPlayFromDiscard.java @@ -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)); + }; } } diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/field/effect/requirement/RequirementFactory.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/field/effect/requirement/RequirementFactory.java index e522cfb2b..c6704b448 100644 --- a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/field/effect/requirement/RequirementFactory.java +++ b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/field/effect/requirement/RequirementFactory.java @@ -13,9 +13,16 @@ public class RequirementFactory { private final Map 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());