Few more migrated cards

This commit is contained in:
marcin.sciesinski
2019-08-24 20:06:14 -07:00
parent 127393e652
commit b8673a43ea
19 changed files with 318 additions and 38 deletions

View File

@@ -43,5 +43,66 @@
}
}
]
},
"40_4": {
"title": "Balin's Revenge",
"side": "free people",
"culture": "dwarven",
"cost": 0,
"type": "event",
"keyword": "skirmish",
"effects": {
"type": "event",
"requirement": {
"type": "canExert",
"filter": "dwarf"
},
"cost": {
"type": "exert",
"filter": "choose(dwarf)"
},
"effect": {
"type": "wound",
"count": "0-2",
"filter": "choose(goblin)"
}
}
},
"40_5": {
"title": "Battle Fever",
"side": "free people",
"culture": "dwarven",
"cost": 2,
"type": "event",
"keyword": "skirmish",
"effects": {
"type": "event",
"requirement": {
"type": "canExert",
"filter": "name(Gimli)"
},
"cost": {
"type": "exert",
"filter": "choose(name(Gimli))",
"memory": "exertedGimli"
},
"effect": [
{
"type": "replaceInSkirmish",
"filter": "unbound,companion",
"with": "memory(exertedGimli)"
},
{
"type": "addStrength",
"filter": "memory(exertedGimli)",
"amount": 2
},
{
"type": "addKeyword",
"filter": "memory(exertedGimli)",
"keyword": "damage+1"
}
]
}
}
}

View File

@@ -4,4 +4,8 @@ public class InvalidCardDefinitionException extends Exception {
public InvalidCardDefinitionException(String message) {
super(message);
}
public InvalidCardDefinitionException(String message, Throwable cause) {
super(message, cause);
}
}

View File

@@ -6,6 +6,7 @@ import com.gempukku.lotro.cards.build.FieldProcessor;
import com.gempukku.lotro.cards.build.InvalidCardDefinitionException;
import com.gempukku.lotro.cards.build.field.effect.ActivatedEffectProcessor;
import com.gempukku.lotro.cards.build.field.effect.ActivatedTriggerEffectProcessor;
import com.gempukku.lotro.cards.build.field.effect.EventEffectProcessor;
import com.gempukku.lotro.cards.build.field.effect.TriggerEffectProcessor;
import org.json.simple.JSONObject;
@@ -19,6 +20,7 @@ public class EffectFieldProcessor implements FieldProcessor {
effectProcessors.put("trigger", new TriggerEffectProcessor());
effectProcessors.put("activatedtrigger", new ActivatedTriggerEffectProcessor());
effectProcessors.put("activated", new ActivatedEffectProcessor());
effectProcessors.put("event", new EventEffectProcessor());
}
@Override

View File

@@ -18,8 +18,11 @@ public class EffectAppenderFactory {
effectAppenderProducers.put("preventdiscardfromplay", new PreventCardEffectAppender());
effectAppenderProducers.put("exert", new Exert());
effectAppenderProducers.put("addstrength", new AddStrength());
effectAppenderProducers.put("addkeyword", new AddStrength());
effectAppenderProducers.put("discardtopcardfromdeck", new DiscardTopCardFromDeck());
effectAppenderProducers.put("addtwilight", new AddTwilight());
effectAppenderProducers.put("wound", new Wound());
effectAppenderProducers.put("replaceinskirmish", new ReplaceInSkirmish());
}
public EffectAppender getEffectAppender(JSONObject effectObject, CardGenerationEnvironment environment) throws InvalidCardDefinitionException {

View File

@@ -0,0 +1,17 @@
package com.gempukku.lotro.cards.build.field.effect;
import com.gempukku.lotro.cards.build.BuiltLotroCardBlueprint;
import com.gempukku.lotro.cards.build.CardGenerationEnvironment;
import com.gempukku.lotro.cards.build.InvalidCardDefinitionException;
import com.gempukku.lotro.cards.build.field.EffectProcessor;
import org.json.simple.JSONObject;
public class EventEffectProcessor implements EffectProcessor {
@Override
public void processEffect(JSONObject value, BuiltLotroCardBlueprint blueprint, CardGenerationEnvironment environment) throws InvalidCardDefinitionException {
DefaultActionSource actionSource = new DefaultActionSource();
EffectUtils.processRequirementsCostsAndEffects(value, environment, actionSource);
blueprint.setPlayEventAction(actionSource);
}
}

View File

@@ -0,0 +1,54 @@
package com.gempukku.lotro.cards.build.field.effect.appender;
import com.gempukku.lotro.cards.build.CardGenerationEnvironment;
import com.gempukku.lotro.cards.build.InvalidCardDefinitionException;
import com.gempukku.lotro.cards.build.field.FieldUtils;
import com.gempukku.lotro.cards.build.field.effect.EffectAppender;
import com.gempukku.lotro.cards.build.field.effect.EffectAppenderProducer;
import com.gempukku.lotro.cards.build.field.effect.appender.resolver.CardResolver;
import com.gempukku.lotro.cards.build.field.effect.appender.resolver.CountResolver;
import com.gempukku.lotro.common.Keyword;
import com.gempukku.lotro.filters.Filters;
import com.gempukku.lotro.game.PhysicalCard;
import com.gempukku.lotro.game.state.LotroGame;
import com.gempukku.lotro.logic.actions.CostToEffectAction;
import com.gempukku.lotro.logic.effects.AddUntilEndOfPhaseModifierEffect;
import com.gempukku.lotro.logic.modifiers.KeywordModifier;
import com.gempukku.lotro.logic.timing.Effect;
import com.gempukku.lotro.logic.timing.EffectResult;
import org.json.simple.JSONObject;
import java.util.Collection;
public class AddKeyword implements EffectAppenderProducer {
@Override
public EffectAppender createEffectAppender(JSONObject effectObject, CardGenerationEnvironment environment) throws InvalidCardDefinitionException {
final CountResolver.Count count = CountResolver.resolveCount(effectObject.get("count"), 1);
final String filter = FieldUtils.getString(effectObject.get("filter"), "filter");
final String memory = FieldUtils.getString(effectObject.get("memory"), "memory", "_temp");
final String keywordString = FieldUtils.getString(effectObject.get("keyword"), "keyword");
final String[] keywordSplit = keywordString.split("\\+");
Keyword keyword = FieldUtils.getEnum(Keyword.class, keywordSplit[0], "keyword");
int value = 1;
if (keywordSplit.length == 2)
value = Integer.parseInt(keywordSplit[1]);
final int keywordValue = value;
MultiEffectAppender result = new MultiEffectAppender();
result.addEffectAppender(
CardResolver.resolveCards(filter, count.getMin(), count.getMax(), memory, "Choose cards to add keywork to", environment));
result.addEffectAppender(
new DelayedAppender() {
@Override
protected Effect createEffect(CostToEffectAction action, String playerId, LotroGame game, PhysicalCard self, EffectResult effectResult, Effect effect) {
final Collection<? extends PhysicalCard> cardsFromMemory = action.getCardsFromMemory(memory);
return new AddUntilEndOfPhaseModifierEffect(
new KeywordModifier(self, Filters.in(cardsFromMemory), keyword, keywordValue));
}
});
return result;
}
}

View File

@@ -5,6 +5,8 @@ import com.gempukku.lotro.cards.build.InvalidCardDefinitionException;
import com.gempukku.lotro.cards.build.field.FieldUtils;
import com.gempukku.lotro.cards.build.field.effect.EffectAppender;
import com.gempukku.lotro.cards.build.field.effect.EffectAppenderProducer;
import com.gempukku.lotro.cards.build.field.effect.appender.resolver.CardResolver;
import com.gempukku.lotro.cards.build.field.effect.appender.resolver.CountResolver;
import com.gempukku.lotro.filters.Filters;
import com.gempukku.lotro.game.PhysicalCard;
import com.gempukku.lotro.game.state.LotroGame;
@@ -21,20 +23,19 @@ public class AddStrength implements EffectAppenderProducer {
@Override
public EffectAppender createEffectAppender(JSONObject effectObject, CardGenerationEnvironment environment) throws InvalidCardDefinitionException {
final int amount = FieldUtils.getInteger(effectObject.get("amount"), "amount");
final int count = FieldUtils.getInteger(effectObject.get("count"), "count");
final CountResolver.Count count = CountResolver.resolveCount(effectObject.get("count"), 1);
final String filter = FieldUtils.getString(effectObject.get("filter"), "filter");
final String memory = FieldUtils.getString(effectObject.get("memory"), "memory", "_temp");
MultiEffectAppender result = new MultiEffectAppender();
String discardMemory = "_temp";
result.addEffectAppender(
CardResolver.resolveCards(filter, count, discardMemory, "Choose cards to add strength to", environment));
CardResolver.resolveCards(filter, count.getMin(), count.getMax(), memory, "Choose cards to add strength to", environment));
result.addEffectAppender(
new DelayedAppender() {
@Override
protected Effect createEffect(CostToEffectAction action, String playerId, LotroGame game, PhysicalCard self, EffectResult effectResult, Effect effect) {
final Collection<? extends PhysicalCard> cardsFromMemory = action.getCardsFromMemory(discardMemory);
final Collection<? extends PhysicalCard> cardsFromMemory = action.getCardsFromMemory(memory);
return new AddUntilEndOfPhaseModifierEffect(
new StrengthModifier(self, Filters.in(cardsFromMemory), amount));
}

View File

@@ -5,6 +5,8 @@ import com.gempukku.lotro.cards.build.InvalidCardDefinitionException;
import com.gempukku.lotro.cards.build.field.FieldUtils;
import com.gempukku.lotro.cards.build.field.effect.EffectAppender;
import com.gempukku.lotro.cards.build.field.effect.EffectAppenderProducer;
import com.gempukku.lotro.cards.build.field.effect.appender.resolver.CardResolver;
import com.gempukku.lotro.cards.build.field.effect.appender.resolver.CountResolver;
import com.gempukku.lotro.filters.Filters;
import com.gempukku.lotro.game.PhysicalCard;
import com.gempukku.lotro.game.state.LotroGame;
@@ -19,22 +21,21 @@ import java.util.Collection;
public class DiscardFromPlay implements EffectAppenderProducer {
@Override
public EffectAppender createEffectAppender(JSONObject effectObject, CardGenerationEnvironment environment) throws InvalidCardDefinitionException {
final int count = FieldUtils.getInteger(effectObject.get("count"), "count", 1);
final CountResolver.Count count = CountResolver.resolveCount(effectObject.get("count"), 1);
final String filter = FieldUtils.getString(effectObject.get("filter"), "filter");
final String memory = FieldUtils.getString(effectObject.get("memory"), "memory", "_temp");
MultiEffectAppender result = new MultiEffectAppender();
String discardMemory = "_temp";
result.addEffectAppender(
CardResolver.resolveCards(filter,
(playerId, game, source, effectResult, effect) -> Filters.canBeDiscarded(playerId, source),
count, discardMemory, "Choose cards to discard", environment));
count.getMin(), count.getMax(), memory, "Choose cards to discard", environment));
result.addEffectAppender(
new DelayedAppender() {
@Override
protected Effect createEffect(CostToEffectAction action, String playerId, LotroGame game, PhysicalCard self, EffectResult effectResult, Effect effect) {
final Collection<? extends PhysicalCard> cardsFromMemory = action.getCardsFromMemory(discardMemory);
final Collection<? extends PhysicalCard> cardsFromMemory = action.getCardsFromMemory(memory);
return new DiscardCardsFromPlayEffect(playerId, self, Filters.in(cardsFromMemory));
}
});

View File

@@ -5,6 +5,7 @@ import com.gempukku.lotro.cards.build.InvalidCardDefinitionException;
import com.gempukku.lotro.cards.build.field.FieldUtils;
import com.gempukku.lotro.cards.build.field.effect.EffectAppender;
import com.gempukku.lotro.cards.build.field.effect.EffectAppenderProducer;
import com.gempukku.lotro.cards.build.field.effect.appender.resolver.PlayerResolver;
import com.gempukku.lotro.game.PhysicalCard;
import com.gempukku.lotro.game.state.LotroGame;
import com.gempukku.lotro.logic.actions.CostToEffectAction;

View File

@@ -5,6 +5,8 @@ import com.gempukku.lotro.cards.build.InvalidCardDefinitionException;
import com.gempukku.lotro.cards.build.field.FieldUtils;
import com.gempukku.lotro.cards.build.field.effect.EffectAppender;
import com.gempukku.lotro.cards.build.field.effect.EffectAppenderProducer;
import com.gempukku.lotro.cards.build.field.effect.appender.resolver.CardResolver;
import com.gempukku.lotro.cards.build.field.effect.appender.resolver.CountResolver;
import com.gempukku.lotro.filters.Filters;
import com.gempukku.lotro.game.PhysicalCard;
import com.gempukku.lotro.game.state.LotroGame;
@@ -19,23 +21,22 @@ import java.util.Collection;
public class Exert implements EffectAppenderProducer {
@Override
public EffectAppender createEffectAppender(JSONObject effectObject, CardGenerationEnvironment environment) throws InvalidCardDefinitionException {
final int count = FieldUtils.getInteger(effectObject.get("count"), "count", 1);
final CountResolver.Count count = CountResolver.resolveCount(effectObject.get("count"), 1);
final int times = FieldUtils.getInteger(effectObject.get("times"), "times", 1);
final String filter = FieldUtils.getString(effectObject.get("filter"), "filter");
final String memory = FieldUtils.getString(effectObject.get("memory"), "memory", "_temp");
MultiEffectAppender result = new MultiEffectAppender();
String discardMemory = "_temp";
result.addEffectAppender(
CardResolver.resolveCards(filter,
(playerId, game, source, effectResult, effect) -> Filters.canExert(source, times),
count, discardMemory, "Choose cards to exert", environment));
count.getMin(), count.getMax(), memory, "Choose cards to exert", environment));
result.addEffectAppender(
new DelayedAppender() {
@Override
protected Effect createEffect(CostToEffectAction action, String playerId, LotroGame game, PhysicalCard self, EffectResult effectResult, Effect effect) {
final Collection<? extends PhysicalCard> cardsFromMemory = action.getCardsFromMemory(discardMemory);
final Collection<? extends PhysicalCard> cardsFromMemory = action.getCardsFromMemory(memory);
return new ExertCharactersEffect(action, self, cardsFromMemory.toArray(new PhysicalCard[0]));
}
});

View File

@@ -5,6 +5,7 @@ import com.gempukku.lotro.cards.build.InvalidCardDefinitionException;
import com.gempukku.lotro.cards.build.field.FieldUtils;
import com.gempukku.lotro.cards.build.field.effect.EffectAppender;
import com.gempukku.lotro.cards.build.field.effect.EffectAppenderProducer;
import com.gempukku.lotro.cards.build.field.effect.appender.resolver.CardResolver;
import com.gempukku.lotro.filters.Filters;
import com.gempukku.lotro.game.PhysicalCard;
import com.gempukku.lotro.game.state.LotroGame;
@@ -19,17 +20,18 @@ public class PreventCardEffectAppender implements EffectAppenderProducer {
@Override
public EffectAppender createEffectAppender(JSONObject effectObject, CardGenerationEnvironment environment) throws InvalidCardDefinitionException {
String filter = FieldUtils.getString(effectObject.get("filter"), "filter");
final String memory = FieldUtils.getString(effectObject.get("memory"), "memory", "_temp");
MultiEffectAppender result = new MultiEffectAppender();
result.addEffectAppender(
CardResolver.resolveCard(filter,
(playerId, game, source, effectResult, effect) -> Filters.in(((PreventableCardEffect) effect).getAffectedCardsMinusPrevented(game)),
"_temp", "Choose card to prevent effect on", environment));
memory, "Choose card to prevent effect on", environment));
result.addEffectAppender(
new DelayedAppender() {
@Override
protected Effect createEffect(CostToEffectAction action, String playerId, LotroGame game, PhysicalCard self, EffectResult effectResult, Effect effect) {
return new PreventCardEffect((PreventableCardEffect) effect, action.getCardFromMemory("_temp"));
return new PreventCardEffect((PreventableCardEffect) effect, action.getCardFromMemory(memory));
}
});

View File

@@ -0,0 +1,40 @@
package com.gempukku.lotro.cards.build.field.effect.appender;
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.field.FieldUtils;
import com.gempukku.lotro.cards.build.field.effect.EffectAppender;
import com.gempukku.lotro.cards.build.field.effect.EffectAppenderProducer;
import com.gempukku.lotro.cards.build.field.effect.appender.resolver.CardResolver;
import com.gempukku.lotro.game.PhysicalCard;
import com.gempukku.lotro.game.state.LotroGame;
import com.gempukku.lotro.logic.actions.CostToEffectAction;
import com.gempukku.lotro.logic.effects.ReplaceInSkirmishEffect;
import com.gempukku.lotro.logic.timing.Effect;
import com.gempukku.lotro.logic.timing.EffectResult;
import org.json.simple.JSONObject;
public class ReplaceInSkirmish implements EffectAppenderProducer {
@Override
public EffectAppender createEffectAppender(JSONObject effectObject, CardGenerationEnvironment environment) throws InvalidCardDefinitionException {
final String filter = FieldUtils.getString(effectObject.get("filter"), "filter");
final String with = FieldUtils.getString(effectObject.get("with"), "with");
final FilterableSource filterableSource = environment.getFilterFactory().generateFilter(filter);
MultiEffectAppender result = new MultiEffectAppender();
result.addEffectAppender(
CardResolver.resolveCard(with, "_temp", "Choose character to replace with in skirmish", environment));
result.addEffectAppender(
new DelayedAppender() {
@Override
protected Effect createEffect(CostToEffectAction action, String playerId, LotroGame game, PhysicalCard self, EffectResult effectResult, Effect effect) {
final PhysicalCard card = action.getCardFromMemory("_temp");
return new ReplaceInSkirmishEffect(card, filterableSource.getFilterable(playerId, game, self, effectResult, effect));
}
});
return result;
}
}

View File

@@ -5,6 +5,8 @@ import com.gempukku.lotro.cards.build.InvalidCardDefinitionException;
import com.gempukku.lotro.cards.build.field.FieldUtils;
import com.gempukku.lotro.cards.build.field.effect.EffectAppender;
import com.gempukku.lotro.cards.build.field.effect.EffectAppenderProducer;
import com.gempukku.lotro.cards.build.field.effect.appender.resolver.CardResolver;
import com.gempukku.lotro.cards.build.field.effect.appender.resolver.PlayerResolver;
import com.gempukku.lotro.game.PhysicalCard;
import com.gempukku.lotro.game.state.LotroGame;
import com.gempukku.lotro.logic.actions.CostToEffectAction;

View File

@@ -0,0 +1,46 @@
package com.gempukku.lotro.cards.build.field.effect.appender;
import com.gempukku.lotro.cards.build.CardGenerationEnvironment;
import com.gempukku.lotro.cards.build.InvalidCardDefinitionException;
import com.gempukku.lotro.cards.build.field.FieldUtils;
import com.gempukku.lotro.cards.build.field.effect.EffectAppender;
import com.gempukku.lotro.cards.build.field.effect.EffectAppenderProducer;
import com.gempukku.lotro.cards.build.field.effect.appender.resolver.CardResolver;
import com.gempukku.lotro.cards.build.field.effect.appender.resolver.CountResolver;
import com.gempukku.lotro.filters.Filters;
import com.gempukku.lotro.game.PhysicalCard;
import com.gempukku.lotro.game.state.LotroGame;
import com.gempukku.lotro.logic.actions.CostToEffectAction;
import com.gempukku.lotro.logic.effects.WoundCharactersEffect;
import com.gempukku.lotro.logic.timing.Effect;
import com.gempukku.lotro.logic.timing.EffectResult;
import org.json.simple.JSONObject;
import java.util.Collection;
public class Wound implements EffectAppenderProducer {
@Override
public EffectAppender createEffectAppender(JSONObject effectObject, CardGenerationEnvironment environment) throws InvalidCardDefinitionException {
final CountResolver.Count count = CountResolver.resolveCount(effectObject.get("count"), 1);
final int times = FieldUtils.getInteger(effectObject.get("times"), "times", 1);
final String filter = FieldUtils.getString(effectObject.get("filter"), "filter");
final String memory = FieldUtils.getString(effectObject.get("memory"), "memory", "_temp");
MultiEffectAppender result = new MultiEffectAppender();
result.addEffectAppender(
CardResolver.resolveCards(filter,
(playerId, game, source, effectResult, effect) -> Filters.canTakeWounds(source, times),
count.getMin(), count.getMax(), memory, "Choose cards to wound", environment));
result.addEffectAppender(
new DelayedAppender() {
@Override
protected Effect createEffect(CostToEffectAction action, String playerId, LotroGame game, PhysicalCard self, EffectResult effectResult, Effect effect) {
final Collection<? extends PhysicalCard> cardsFromMemory = action.getCardsFromMemory(memory);
return new WoundCharactersEffect(self, cardsFromMemory.toArray(new PhysicalCard[0]));
}
});
return result;
}
}

View File

@@ -1,9 +1,10 @@
package com.gempukku.lotro.cards.build.field.effect.appender;
package com.gempukku.lotro.cards.build.field.effect.appender.resolver;
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.field.effect.EffectAppender;
import com.gempukku.lotro.cards.build.field.effect.appender.AbstractEffectAppender;
import com.gempukku.lotro.common.Filterable;
import com.gempukku.lotro.filters.Filters;
import com.gempukku.lotro.game.PhysicalCard;
@@ -70,7 +71,7 @@ public class CardResolver {
return resolveCard(type, null, memory, choiceText, environment);
}
public static EffectAppender resolveCards(String type, FilterableSource additionalFilter, int count, String memory, String choiceText, CardGenerationEnvironment environment) throws InvalidCardDefinitionException {
public static EffectAppender resolveCards(String type, FilterableSource additionalFilter, int min, int max, String memory, String choiceText, CardGenerationEnvironment environment) throws InvalidCardDefinitionException {
if (type.equals("self")) {
return new AbstractEffectAppender() {
@Override
@@ -106,7 +107,7 @@ public class CardResolver {
Filterable additionalFilterable = Filters.any;
if (additionalFilter != null)
additionalFilterable = additionalFilter.getFilterable(playerId, game, self, effectResult, effect);
return new ChooseActiveCardsEffect(self, playerId, choiceText, count, count, filterable, additionalFilterable) {
return new ChooseActiveCardsEffect(self, playerId, choiceText, min, max, filterable, additionalFilterable) {
@Override
protected void cardsSelected(LotroGame game, Collection<PhysicalCard> cards) {
action.setCardMemory(memory, cards);
@@ -118,7 +119,7 @@ public class CardResolver {
throw new RuntimeException("Unable to resolve card resolver of type: " + type);
}
public static EffectAppender resolveCards(String type, int count, String memory, String choiceText, CardGenerationEnvironment environment) throws InvalidCardDefinitionException {
return resolveCards(type, null, count, memory, choiceText, environment);
public static EffectAppender resolveCards(String type, int min, int max, String memory, String choiceText, CardGenerationEnvironment environment) throws InvalidCardDefinitionException {
return resolveCards(type, null, min, max, memory, choiceText, environment);
}
}

View File

@@ -0,0 +1,50 @@
package com.gempukku.lotro.cards.build.field.effect.appender.resolver;
import com.gempukku.lotro.cards.build.InvalidCardDefinitionException;
public class CountResolver {
public static Count resolveCount(Object value, int defaultValue) throws InvalidCardDefinitionException {
if (value == null)
return new Count(defaultValue, defaultValue);
try {
if (value instanceof String) {
String stringValue = (String) value;
if (stringValue.contains("-")) {
final String[] split = stringValue.split("-", 2);
final int min = Integer.parseInt(split[0]);
final int max = Integer.parseInt(split[1]);
if (min > max || min < 0 || max < 1)
throw new InvalidCardDefinitionException("Unable to resolve count: " + value);
return new Count(min, max);
} else {
int v = Integer.parseInt(stringValue);
return new Count(v, v);
}
} else if (value instanceof Number) {
return new Count(((Number) value).intValue(), ((Number) value).intValue());
}
} catch (NumberFormatException exp) {
throw new InvalidCardDefinitionException("Unable to resolve count: " + value, exp);
}
throw new InvalidCardDefinitionException("Unable to resolve count: " + value);
}
public static class Count {
private int min;
private int max;
private Count(int min, int max) {
this.min = min;
this.max = max;
}
public int getMin() {
return min;
}
public int getMax() {
return max;
}
}
}

View File

@@ -1,9 +1,10 @@
package com.gempukku.lotro.cards.build.field.effect.appender;
package com.gempukku.lotro.cards.build.field.effect.appender.resolver;
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.field.effect.EffectAppender;
import com.gempukku.lotro.cards.build.field.effect.appender.AbstractEffectAppender;
import com.gempukku.lotro.common.Filterable;
import com.gempukku.lotro.filters.Filters;
import com.gempukku.lotro.game.PhysicalCard;

View File

@@ -4,10 +4,6 @@ import com.gempukku.lotro.cards.build.FilterableSource;
import com.gempukku.lotro.cards.build.InvalidCardDefinitionException;
import com.gempukku.lotro.common.*;
import com.gempukku.lotro.filters.Filters;
import com.gempukku.lotro.game.PhysicalCard;
import com.gempukku.lotro.game.state.LotroGame;
import com.gempukku.lotro.logic.timing.Effect;
import com.gempukku.lotro.logic.timing.EffectResult;
import com.gempukku.lotro.logic.timing.results.CharacterLostSkirmishResult;
import java.util.HashMap;
@@ -34,13 +30,13 @@ public class FilterFactory {
simpleFilters.put("self", (playerId, game, source, effectResult, effect) -> source);
simpleFilters.put("your", (playerId, game, source, effectResult, effect) -> Filters.owner(source.getOwner()));
simpleFilters.put("skirmishloser",
new FilterableSource() {
@Override
public Filterable getFilterable(String playerId, LotroGame game, PhysicalCard source, EffectResult effectResult, Effect effect) {
final CharacterLostSkirmishResult lostSkirmish = (CharacterLostSkirmishResult) effectResult;
return lostSkirmish.getLoser();
}
(playerId, game, source, effectResult, effect) -> {
final CharacterLostSkirmishResult lostSkirmish = (CharacterLostSkirmishResult) effectResult;
return lostSkirmish.getLoser();
});
simpleFilters.put("unbound",
(playerId, game, source, effectResult, effect) -> Filters.not(Keyword.RING_BOUND));
parameterFilters.put("culture", (parameter, filterFactory) -> {
final Culture culture = Culture.valueOf(parameter.toUpperCase());
if (culture == null)
@@ -53,6 +49,8 @@ public class FilterFactory {
final FilterableSource filterableSource = filterFactory.generateFilter(parameter);
return (playerId, game, source, effectResult, effect) -> Filters.hasAttached(filterableSource.getFilterable(playerId, game, source, effectResult, effect));
});
parameterFilters.put("name",
(parameter, filterFactory) -> (playerId, game, source, effectResult, effect) -> Filters.name(parameter));
}
private void appendFilter(Filterable value) {

View File

@@ -1,5 +0,0 @@
package com.gempukku.lotro.logic.timing;
public class PlayUtil {
}