JSON interface cleanup

- Renamed ClassSpot -> ItemClassSpot
- Fixed MemoryLike being case sensitive
- Added default filter to CantRemoveBurdens
- Renamed FreePlayerStartedAssigning -> FPStartedAssigning
- Renamed RevealCardFromTopOfDrawDeck -> RevealsCardFromTopOfDrawDeck
- Remove unused filter field on Moves, PutsOnRing, TakesOffRing, and FreePlayerStartedAssigning trigger
- Consolidated Activated into UsesSpecialAbility (much better name)
This commit is contained in:
Christian 'ketura' McCarty
2022-12-26 23:23:01 -06:00
parent ef62792005
commit 9e00df6163
15 changed files with 32 additions and 69 deletions

View File

@@ -116,7 +116,7 @@
{
type: trigger
trigger: {
type: freeplayerstartedassigning
type: fpstartedassigning
}
effect: [
{

View File

@@ -676,7 +676,7 @@
effects: {
type: trigger
trigger: {
type: revealCardFromTopOfDrawDeck
type: revealsCardFromTopOfDrawDeck
filter: culture(elven)
}
optional: true
@@ -942,7 +942,7 @@
effects: {
type: trigger
trigger: {
type: revealCardFromTopOfDrawDeck
type: revealsCardFromTopOfDrawDeck
}
optional: true
cost: {

View File

@@ -410,7 +410,7 @@
{
type: modifier
modifier: {
type: classSpot
type: ItemClassSpot
class: pipe
}
}

View File

@@ -11,7 +11,7 @@ public class CantRemoveBurdens implements ModifierSourceProducer {
FieldUtils.validateAllowedFields(object, "filter", "requires");
final JSONObject[] conditionArray = FieldUtils.getObjectArray(object.get("requires"), "requires");
final String filter = FieldUtils.getString(object.get("filter"), "filter");
final String filter = FieldUtils.getString(object.get("filter"), "filter", "any");
final FilterableSource filterableSource = environment.getFilterFactory().generateFilter(filter, environment);
final Requirement[] requirements = environment.getRequirementFactory().getRequirements(conditionArray, environment);

View File

@@ -10,7 +10,7 @@ import com.gempukku.lotro.logic.modifiers.Modifier;
import com.gempukku.lotro.logic.modifiers.PossessionClassSpotModifier;
import org.json.simple.JSONObject;
public class ClassSpot implements ModifierSourceProducer {
public class ItemClassSpot implements ModifierSourceProducer {
@Override
public ModifierSource getModifierSource(JSONObject object, CardGenerationEnvironment environment) throws InvalidCardDefinitionException {
FieldUtils.validateAllowedFields(object, "class");

View File

@@ -45,12 +45,12 @@ public class ModifierSourceFactory {
modifierProducers.put("canttakemorewoundsthan", new CantTakeMoreWoundsThan());
modifierProducers.put("canttakewounds", new CantTakeWounds());
modifierProducers.put("cantusespecialabilities", new CantUseSpecialAbilities());
modifierProducers.put("classspot", new ClassSpot());
modifierProducers.put("extracosttoplay", new ExtraCostToPlay());
modifierProducers.put("fpculturespot", new FPCultureSpot());
modifierProducers.put("fpusesresinsteadofstr", new FPUsesResInsteadOfStr());
modifierProducers.put("fpusesvitinsteadofstr", new FPUsesVitInsteadOfStr());
modifierProducers.put("hastomoveifable", new HasToMoveIfAble());
modifierProducers.put("itemclassspot", new ItemClassSpot());
modifierProducers.put("modifyarcherytotal", new ModifyArcheryTotal());
modifierProducers.put("modifycost", new ModifyCost());
modifierProducers.put("modifymovelimit", new ModifyMoveLimit());

View File

@@ -16,7 +16,7 @@ public class MemoryLike implements RequirementProducer {
return (actionContext) -> {
String valueFromMemory = actionContext.getValueFromMemory(memory);
return valueFromMemory != null && valueFromMemory.contains(value);
return valueFromMemory != null && valueFromMemory.toLowerCase().contains(value.toLowerCase());
};
}
}

View File

@@ -1,45 +0,0 @@
package com.gempukku.lotro.cards.build.field.effect.trigger;
import com.gempukku.lotro.cards.build.ActionContext;
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.common.Filterable;
import com.gempukku.lotro.game.PhysicalCard;
import com.gempukku.lotro.logic.timing.TriggerConditions;
import com.gempukku.lotro.logic.timing.results.ActivateCardResult;
import org.json.simple.JSONObject;
public class ActivatedTriggerCheckerProducer implements TriggerCheckerProducer {
@Override
public TriggerChecker getTriggerChecker(JSONObject value, CardGenerationEnvironment environment) throws InvalidCardDefinitionException {
FieldUtils.validateAllowedFields(value, "filter", "memorize");
final String filterString = FieldUtils.getString(value.get("filter"), "filter");
final String memorize = FieldUtils.getString(value.get("memorize"), "memorize");
final FilterableSource filter = environment.getFilterFactory().generateFilter(filterString, environment);
return new TriggerChecker() {
@Override
public boolean accepts(ActionContext actionContext) {
final Filterable filterable = filter.getFilterable(actionContext);
boolean activated = TriggerConditions.activated(actionContext.getGame(), actionContext.getEffectResult(), filterable);
if (activated) {
ActivateCardResult activateCardResult = (ActivateCardResult) actionContext.getEffectResult();
if (memorize != null) {
PhysicalCard playedCard = activateCardResult.getSource();
actionContext.setCardMemory(memorize, playedCard);
}
}
return activated;
}
@Override
public boolean isBefore() {
return false;
}
};
}
}

View File

@@ -2,19 +2,15 @@ package com.gempukku.lotro.cards.build.field.effect.trigger;
import com.gempukku.lotro.cards.build.ActionContext;
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.logic.timing.TriggerConditions;
import org.json.simple.JSONObject;
public class FreePlayerStartedAssigning implements TriggerCheckerProducer {
public class FPStartedAssigning implements TriggerCheckerProducer {
@Override
public TriggerChecker getTriggerChecker(JSONObject value, CardGenerationEnvironment environment) throws InvalidCardDefinitionException {
FieldUtils.validateAllowedFields(value, "filter");
String filter = FieldUtils.getString(value.get("filter"), "filter", "any");
final FilterableSource fpFilter = environment.getFilterFactory().generateFilter(filter, environment);
FieldUtils.validateAllowedFields(value);
return new TriggerChecker() {
@Override

View File

@@ -10,7 +10,7 @@ import org.json.simple.JSONObject;
public class Moves implements TriggerCheckerProducer {
@Override
public TriggerChecker getTriggerChecker(JSONObject value, CardGenerationEnvironment environment) throws InvalidCardDefinitionException {
FieldUtils.validateAllowedFields(value, "filter");
FieldUtils.validateAllowedFields(value);
return new TriggerChecker() {
@Override

View File

@@ -10,7 +10,7 @@ import org.json.simple.JSONObject;
public class PutsOnRing implements TriggerCheckerProducer {
@Override
public TriggerChecker getTriggerChecker(JSONObject value, CardGenerationEnvironment environment) throws InvalidCardDefinitionException {
FieldUtils.validateAllowedFields(value, "filter");
FieldUtils.validateAllowedFields(value);
return new TriggerChecker() {
@Override

View File

@@ -12,7 +12,7 @@ import com.gempukku.lotro.logic.timing.TriggerConditions;
import com.gempukku.lotro.logic.timing.results.RevealCardFromTopOfDeckResult;
import org.json.simple.JSONObject;
public class RevealCardFromTopOfDrawDeck implements TriggerCheckerProducer {
public class RevealsCardFromTopOfDrawDeck implements TriggerCheckerProducer {
@Override
public TriggerChecker getTriggerChecker(JSONObject value, CardGenerationEnvironment environment) throws InvalidCardDefinitionException {
FieldUtils.validateAllowedFields(value, "filter");

View File

@@ -10,7 +10,7 @@ import org.json.simple.JSONObject;
public class TakesOffRing implements TriggerCheckerProducer {
@Override
public TriggerChecker getTriggerChecker(JSONObject value, CardGenerationEnvironment environment) throws InvalidCardDefinitionException {
FieldUtils.validateAllowedFields(value, "filter");
FieldUtils.validateAllowedFields(value);
return new TriggerChecker() {
@Override

View File

@@ -18,7 +18,6 @@ public class TriggerCheckerFactory {
triggerCheckers.put("abouttoheal", new AboutToHeal());
triggerCheckers.put("abouttomoveto", new AboutToMoveTo());
triggerCheckers.put("abouttotakewound", new AboutToTakeWound());
triggerCheckers.put("activated", new ActivatedTriggerCheckerProducer());
triggerCheckers.put("addsburden", new AddsBurden());
triggerCheckers.put("addsthreat", new AddsThreat());
triggerCheckers.put("assignedagainst", new AssignedAgainst());
@@ -33,7 +32,7 @@ public class TriggerCheckerFactory {
triggerCheckers.put("endofturn", new EndOfTurn());
triggerCheckers.put("exertedby", new ExertedBy());
triggerCheckers.put("exerts", new Exerts());
triggerCheckers.put("freeplayerstartedassigning", new FreePlayerStartedAssigning());
triggerCheckers.put("fpstartedassigning", new FPStartedAssigning());
triggerCheckers.put("heals", new Heals());
triggerCheckers.put("killed", new Killed());
triggerCheckers.put("losesinitiative", new LosesInitiative());
@@ -46,7 +45,7 @@ public class TriggerCheckerFactory {
triggerCheckers.put("putsonring", new PutsOnRing());
triggerCheckers.put("reconciles", new Reconciles());
triggerCheckers.put("removesburden", new RemovesBurden());
triggerCheckers.put("revealcardfromtopofdrawdeck", new RevealCardFromTopOfDrawDeck());
triggerCheckers.put("revealscardfromtopofdrawdeck", new RevealsCardFromTopOfDrawDeck());
triggerCheckers.put("startofphase", new StartOfPhase());
triggerCheckers.put("startofturn", new StartOfTurn());
triggerCheckers.put("takesoffring", new TakesOffRing());

View File

@@ -5,17 +5,20 @@ 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.game.PhysicalCard;
import com.gempukku.lotro.logic.timing.TriggerConditions;
import com.gempukku.lotro.logic.timing.results.ActivateCardResult;
import org.json.simple.JSONObject;
public class UsesSpecialAbility implements TriggerCheckerProducer {
@Override
public TriggerChecker getTriggerChecker(JSONObject value, CardGenerationEnvironment environment) throws InvalidCardDefinitionException {
FieldUtils.validateAllowedFields(value, "filter");
String filter = FieldUtils.getString(value.get("filter"), "filter", "any");
FieldUtils.validateAllowedFields(value, "filter", "memorize");
String filter = FieldUtils.getString(value.get("filter"), "filter", "any");
final FilterableSource filterableSource = environment.getFilterFactory().generateFilter(filter, environment);
final String memorize = FieldUtils.getString(value.get("memorize"), "memorize");
return new TriggerChecker() {
@Override
public boolean isBefore() {
@@ -24,7 +27,17 @@ public class UsesSpecialAbility implements TriggerCheckerProducer {
@Override
public boolean accepts(ActionContext actionContext) {
return TriggerConditions.activated(actionContext.getGame(), actionContext.getEffectResult(), filterableSource.getFilterable(actionContext));
boolean activated = TriggerConditions.activated(actionContext.getGame(), actionContext.getEffectResult(), filterableSource.getFilterable(actionContext));
if (activated) {
ActivateCardResult activateCardResult = (ActivateCardResult) actionContext.getEffectResult();
if (memorize != null) {
PhysicalCard playedCard = activateCardResult.getSource();
actionContext.setCardMemory(memorize, playedCard);
}
}
return activated;
}
};
}