Merge pull request #10 from Tbiesty/master

Fix X-list errata and update playtesting formats
This commit is contained in:
Christian McCarty
2021-05-05 01:27:23 -05:00
committed by GitHub
9 changed files with 74 additions and 16 deletions

View File

@@ -117,7 +117,7 @@
"condition": [
{
"type": "canSpot",
"filter": "smeagol"
"filter": "name(smeagol)"
},
{
"type": "canSpot",

View File

@@ -15,7 +15,7 @@
"text": "Assign to Gandalf",
"effect": {
"type": "assignFpCharacterToSkirmish",
"fpCharacter": "choose(gandalf)",
"fpCharacter": "choose(name(gandalf))",
"against": "self"
}
}

View File

@@ -8,14 +8,14 @@
"effects": [
{
"type": "modifier",
"condition": {
"type": "haveInitiative",
"side": "free_people"
},
"modifier": {
"type": "addKeyword",
"filter": "dwarf",
"keyword": "damage+1"
"keyword": "damage+1",
"condition": {
"type": "haveInitiative",
"side": "free_people"
}
}
},
{

View File

@@ -45,7 +45,7 @@
},
"effect": {
"type": "transfer",
"filter": "choose(or(possession,condition)),attachedTo(character)",
"filter": "choose(or(possession,condition),attachedTo(character))",
"where": "choose(any)",
"checkTarget": true
}

View File

@@ -2,7 +2,7 @@
"83_188": {
"title": "Courtyard Parapet",
"type": "site",
"block": "Shadows and onwards",
"block": "Shadows",
"cost": 0,
"keyword": "Dwelling",
"direction": "left",

View File

@@ -23,6 +23,7 @@ public class EffectAppenderFactory {
effectAppenderProducers.put("modifystrength", new ModifyStrength());
effectAppenderProducers.put("addkeyword", new AddKeyword());
effectAppenderProducers.put("modifyarcherytotal", new ModifyArcheryTotal());
effectAppenderProducers.put("modifysitenumber", new ModifySiteNumber());
effectAppenderProducers.put("addburdens", new AddBurdens());
effectAppenderProducers.put("discardtopcardsfromdeck", new DiscardTopCardFromDeck());
effectAppenderProducers.put("addtwilight", new AddTwilight());

View File

@@ -0,0 +1,55 @@
package com.gempukku.lotro.cards.build.field.effect.appender;
import com.gempukku.lotro.cards.build.ActionContext;
import com.gempukku.lotro.cards.build.CardGenerationEnvironment;
import com.gempukku.lotro.cards.build.InvalidCardDefinitionException;
import com.gempukku.lotro.cards.build.ValueSource;
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.TimeResolver;
import com.gempukku.lotro.cards.build.field.effect.appender.resolver.ValueResolver;
import com.gempukku.lotro.filters.Filters;
import com.gempukku.lotro.game.PhysicalCard;
import com.gempukku.lotro.logic.actions.CostToEffectAction;
import com.gempukku.lotro.logic.effects.AddUntilModifierEffect;
import com.gempukku.lotro.logic.modifiers.MinionSiteNumberModifier;
import com.gempukku.lotro.logic.modifiers.StrengthModifier;
import com.gempukku.lotro.logic.modifiers.evaluator.Evaluator;
import com.gempukku.lotro.logic.timing.Effect;
import org.json.simple.JSONObject;
import java.util.Collection;
public class ModifySiteNumber implements EffectAppenderProducer {
@Override
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"), 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");
final TimeResolver.Time time = TimeResolver.resolveTime(effectObject.get("until"), "end(current)");
MultiEffectAppender result = new MultiEffectAppender();
result.addEffectAppender(
CardResolver.resolveCards(filter, valueSource, memory, "you", "Choose cards to modify site number of", environment));
result.addEffectAppender(
new DelayedAppender() {
@Override
protected Effect createEffect(boolean cost, CostToEffectAction action, ActionContext actionContext) {
final Collection<? extends PhysicalCard> cardsFromMemory = actionContext.getCardsFromMemory(memory);
final Evaluator evaluator = amountSource.getEvaluator(actionContext);
final int amount = evaluator.evaluateExpression(actionContext.getGame(), actionContext.getSource());
return new AddUntilModifierEffect(
new MinionSiteNumberModifier(actionContext.getSource(), Filters.in(cardsFromMemory), amount), time);
}
});
return result;
}
}

View File

@@ -10,6 +10,10 @@ public class MinionSiteNumberModifier extends AbstractModifier {
private Evaluator evaluator;
private boolean nonCardTextModifier;
public MinionSiteNumberModifier(PhysicalCard source, Filterable affectFilter, int modifier) {
this(source, affectFilter, null, modifier);
}
public MinionSiteNumberModifier(PhysicalCard source, Filterable affectFilter, Condition condition, int modifier) {
this(source, affectFilter, condition, new ConstantEvaluator(modifier));
}

View File

@@ -427,7 +427,6 @@
"set":[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19],
"hall":false
},
{
"name":"PLAYTEST - PC Fellowship Block",
"code":"test_pc_fotr_block",
@@ -444,8 +443,8 @@
"sites":"KING",
"hall":true,
"playtest":true,
"set":[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 51, 52, 53, 71, 72, 73, 101, 151],
"banned":["1_40", "1_45", "1_80", "1_108", "1_138", "1_139", "1_195", "1_234", "1_248", "1_311", "1_313", "1_316", "2_32", "2_75", "2_101", "2_108", "2_121", "3_17", "3_38", "3_42", "3_67", "3_68", "3_106", "3_108", "3_113", "7_49", "7_96", "8_1", "10_2", "10_91"],
"set":[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 51, 52, 53, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 101, 151],
"banned":["1_40", "1_45", "1_80", "1_108", "1_138", "1_139", "1_195", "1_234", "1_248", "1_311", "1_313", "1_316", "2_32", "2_75", "2_101", "2_108", "2_121", "3_17", "3_38", "3_42", "3_67", "3_68", "3_106", "3_108", "3_113", "4_73", "4_192", "4_276", "4_304", "7_49", "7_96", "8_1", "10_2", "10_11", "10_91"]
},
{
"name":"PLAYTEST - PC Expanded",
@@ -453,8 +452,7 @@
"sites":"SHADOWS",
"hall":true,
"playtest":true,
"banned":["1_40", "1_45", "1_80", "1_108", "1_138", "1_139", "1_195", "1_234", "1_248", "1_311", "1_313", "1_316", "2_32", "2_75", "2_101", "2_108", "2_121", "3_17", "3_38", "3_42", "3_67", "3_68", "3_106", "3_108", "3_113", "4_73", "7_49", "8_1", "10_2", "10_11", "10_91", "11_31", "11_100", "11_132"],
"restricted":["4_276", "4_304"],
"set":[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 51, 52, 53, 71, 72, 73, 101, 151]
},
"set":[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 51, 52, 53, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 101, 151],
"banned":["1_40", "1_45", "1_80", "1_108", "1_138", "1_139", "1_195", "1_234", "1_248", "1_311", "1_313", "1_316", "2_32", "2_75", "2_101", "2_108", "2_121", "3_17", "3_38", "3_42", "3_67", "3_68", "3_106", "3_108", "3_113", "4_73", "4_192", "4_276", "4_304", "7_49", "7_96", "8_1", "10_2", "10_11", "10_91", "11_31", "11_100", "11_114", "11_132", "13_188", "15_64"]
}
]