Effect tweaks
- Converted PreventExert to a generic PreventCardEffectAppender - Deleted ReduceArcheryTotal and converted the relevant cards to use a choosenumber/modifyarchery effect combo - Altered PlaySite to use SiteBlock's existing parsing instead of the generic enum parse - Deleted unused parameter on RemoveAllTokens
This commit is contained in:
@@ -128,10 +128,24 @@
|
||||
# phase: archery
|
||||
# cost: [
|
||||
# {
|
||||
# type: reduceArcheryTotal
|
||||
# side: free people
|
||||
# memorize: reducedBy
|
||||
# }
|
||||
# type: chooseANumber
|
||||
# text: Choose X (reduce fellowship archery total)
|
||||
# from: 0
|
||||
# to: {
|
||||
# type: archeryTotal
|
||||
# side: free peoples
|
||||
# }
|
||||
# memorize: x
|
||||
# }
|
||||
# {
|
||||
# type: modifyArcheryTotal
|
||||
# side: free peoples
|
||||
# amount: {
|
||||
# type: fromMemory
|
||||
# memory: x
|
||||
# multiplier: -1
|
||||
# }
|
||||
# }
|
||||
# ]
|
||||
# effect: [
|
||||
# {
|
||||
@@ -139,7 +153,7 @@
|
||||
# filter: self
|
||||
# amount: {
|
||||
# type: fromMemory
|
||||
# memory: reducedBy
|
||||
# memory: x
|
||||
# }
|
||||
# until:start(regroup)
|
||||
# }
|
||||
|
||||
@@ -16,16 +16,32 @@
|
||||
type: canSpot
|
||||
filter: elf,archer,companion
|
||||
}
|
||||
cost: {
|
||||
type: reduceArcheryTotal
|
||||
side: free people
|
||||
memorize: reducedBy
|
||||
}
|
||||
cost: [
|
||||
{
|
||||
type: chooseANumber
|
||||
text: Choose X (reduce fellowship archery total)
|
||||
from: 0
|
||||
to: {
|
||||
type: archeryTotal
|
||||
side: free people
|
||||
}
|
||||
memorize: x
|
||||
}
|
||||
{
|
||||
type: modifyArcheryTotal
|
||||
side: free people
|
||||
amount: {
|
||||
type: fromMemory
|
||||
memory: x
|
||||
multiplier: -1
|
||||
}
|
||||
}
|
||||
]
|
||||
effect: {
|
||||
type: discard
|
||||
count: {
|
||||
type: fromMemory
|
||||
memory: reducedBy
|
||||
memory: x
|
||||
}
|
||||
select: choose(side(shadow),condition)
|
||||
}
|
||||
|
||||
@@ -2,6 +2,7 @@ package com.gempukku.lotro.cards.build.field;
|
||||
|
||||
import com.gempukku.lotro.cards.build.InvalidCardDefinitionException;
|
||||
import com.gempukku.lotro.common.Side;
|
||||
import com.gempukku.lotro.common.SitesBlock;
|
||||
import org.hjson.JsonValue;
|
||||
import org.json.simple.JSONArray;
|
||||
import org.json.simple.JSONObject;
|
||||
@@ -76,6 +77,16 @@ public class FieldUtils {
|
||||
}
|
||||
}
|
||||
|
||||
public static SitesBlock getBlock(Object value, String key) throws InvalidCardDefinitionException {
|
||||
final String string = getString(value, key);
|
||||
if (string == null)
|
||||
throw new InvalidCardDefinitionException("Unknown block '" + string + "' in " + key + " field");
|
||||
final SitesBlock block = SitesBlock.findBlock(string);
|
||||
if (block == null)
|
||||
throw new InvalidCardDefinitionException("Unknown block '" + string + "' in " + key + " field");
|
||||
return block;
|
||||
}
|
||||
|
||||
public static Side getSide(Object value, String key) throws InvalidCardDefinitionException {
|
||||
final String string = getString(value, key);
|
||||
if (string == null)
|
||||
|
||||
@@ -109,12 +109,12 @@ public class EffectAppenderFactory {
|
||||
effectAppenderProducers.put("preventaddingallburdens", new PreventAddingAllBurdens());
|
||||
effectAppenderProducers.put("preventallwounds", new PreventAllWounds());
|
||||
effectAppenderProducers.put("preventburden", new PreventEffect());
|
||||
effectAppenderProducers.put("preventdiscard", new PreventCardEffectAppender());
|
||||
effectAppenderProducers.put("preventeffect", new PreventEffect());
|
||||
effectAppenderProducers.put("preventexert", new PreventExert());
|
||||
effectAppenderProducers.put("preventtwilight", new PreventEffect());
|
||||
effectAppenderProducers.put("preventdiscard", new PreventCardEffectAppender());
|
||||
effectAppenderProducers.put("preventexert", new PreventCardEffectAppender());
|
||||
effectAppenderProducers.put("preventheal", new PreventCardEffectAppender());
|
||||
effectAppenderProducers.put("preventspecialability", new PreventSpecialAbility());
|
||||
effectAppenderProducers.put("preventtwilight", new PreventEffect());
|
||||
effectAppenderProducers.put("preventwound", new PreventWound());
|
||||
effectAppenderProducers.put("putcardsfromdeckintohand", new PutCardsFromDeckIntoHand());
|
||||
effectAppenderProducers.put("putcardsfromdeckontopofdeck", new PutCardsFromDeckOnTopOfDeck());
|
||||
@@ -133,7 +133,6 @@ public class EffectAppenderFactory {
|
||||
effectAppenderProducers.put("putrandomcardfromhandbeneathdrawdeck", new PutRandomCardFromHandBeneathDrawDeck());
|
||||
effectAppenderProducers.put("putstackedcardsintohand", new PutStackedCardsIntoHand());
|
||||
effectAppenderProducers.put("reconcilehand", new ReconcileHand());
|
||||
effectAppenderProducers.put("reducearcherytotal", new ReduceArcheryTotal());
|
||||
effectAppenderProducers.put("refreshself", new RefreshSelf());
|
||||
effectAppenderProducers.put("reinforcetokens", new ReinforceTokens());
|
||||
effectAppenderProducers.put("removealltokens", new RemoveAllTokens());
|
||||
|
||||
@@ -21,7 +21,7 @@ public class PlaySite implements EffectAppenderProducer {
|
||||
@Override
|
||||
public EffectAppender createEffectAppender(JSONObject effectObject, CardGenerationEnvironment environment) throws InvalidCardDefinitionException {
|
||||
FieldUtils.validateAllowedFields(effectObject, "block", "filter", "number", "memorize", "player");
|
||||
final SitesBlock block = FieldUtils.getEnum(SitesBlock.class, effectObject.get("block"), "block");
|
||||
final SitesBlock block = FieldUtils.getBlock(effectObject.get("block"), "block");
|
||||
final String filter = FieldUtils.getString(effectObject.get("filter"), "filter", "any");
|
||||
final ValueSource valueSource = ValueResolver.resolveEvaluator(effectObject.get("number"), environment);
|
||||
final String memorize = FieldUtils.getString(effectObject.get("memorize"), "memorize");
|
||||
|
||||
@@ -24,7 +24,7 @@ import java.util.Map;
|
||||
public class RemoveAllTokens implements EffectAppenderProducer {
|
||||
@Override
|
||||
public EffectAppender createEffectAppender(JSONObject effectObject, CardGenerationEnvironment environment) throws InvalidCardDefinitionException {
|
||||
FieldUtils.validateAllowedFields(effectObject, "select", "memorize");
|
||||
FieldUtils.validateAllowedFields(effectObject, "select");
|
||||
|
||||
final String select = FieldUtils.getString(effectObject.get("select"), "select", "self");
|
||||
|
||||
|
||||
Reference in New Issue
Block a user