Consolidating both CantUseSpecialAbilities and PlayerCantUseSpecialAbilities (formerly called CantPlaySpecialAbilities) under CantUseSpecialAbilities (but using the superior implementation of CantPlaySpecialAbilities).
This commit is contained in:
@@ -326,7 +326,7 @@
|
||||
{
|
||||
type: modifier
|
||||
modifier: {
|
||||
type: PlayerCantUseSpecialAbilities
|
||||
type: CantUseSpecialAbilities
|
||||
requires: {
|
||||
type: canSpot
|
||||
filter: another,culture(isengard),orc
|
||||
|
||||
@@ -61,7 +61,7 @@
|
||||
{
|
||||
type: addModifier
|
||||
modifier: {
|
||||
type: PlayerCantUseSpecialAbilities
|
||||
type: CantUseSpecialAbilities
|
||||
player: you
|
||||
phase: archery
|
||||
}
|
||||
@@ -245,7 +245,7 @@
|
||||
{
|
||||
type: addModifier
|
||||
modifier: {
|
||||
type: PlayerCantUseSpecialAbilities
|
||||
type: CantUseSpecialAbilities
|
||||
player: you
|
||||
phase: archery
|
||||
}
|
||||
|
||||
@@ -494,7 +494,7 @@
|
||||
{
|
||||
type: addModifier
|
||||
modifier: {
|
||||
type: PlayerCantUseSpecialAbilities
|
||||
type: CantUseSpecialAbilities
|
||||
player: free people
|
||||
phase: archery
|
||||
}
|
||||
|
||||
@@ -262,7 +262,7 @@
|
||||
{
|
||||
type: modifier
|
||||
modifier: {
|
||||
type: PlayerCantUseSpecialAbilities
|
||||
type: CantUseSpecialAbilities
|
||||
phase: skirmish
|
||||
}
|
||||
}
|
||||
|
||||
@@ -312,7 +312,7 @@
|
||||
{
|
||||
type: addModifier
|
||||
modifier: {
|
||||
type: PlayerCantUseSpecialAbilities
|
||||
type: CantUseSpecialAbilities
|
||||
phase: skirmish
|
||||
filter: or(memory(assignedCompanion),memory(assignedMinion))
|
||||
}
|
||||
|
||||
@@ -291,7 +291,7 @@
|
||||
{
|
||||
type: modifier
|
||||
modifier: {
|
||||
type: PlayerCantUseSpecialAbilities
|
||||
type: CantUseSpecialAbilities
|
||||
requires: {
|
||||
type: canSpot
|
||||
filter: bearer,unique,companion
|
||||
|
||||
@@ -514,7 +514,7 @@
|
||||
effect: {
|
||||
type: addModifier
|
||||
modifier: {
|
||||
type: PlayerCantUseSpecialAbilities
|
||||
type: CantUseSpecialAbilities
|
||||
filter: memory(spottedMinion)
|
||||
}
|
||||
until: regroup
|
||||
|
||||
@@ -3,6 +3,9 @@ package com.gempukku.lotro.cards.build.field.effect.modifier;
|
||||
import com.gempukku.lotro.cards.build.*;
|
||||
import com.gempukku.lotro.cards.build.field.FieldUtils;
|
||||
import com.gempukku.lotro.cards.build.field.effect.appender.resolver.PlayerResolver;
|
||||
import com.gempukku.lotro.common.Phase;
|
||||
import com.gempukku.lotro.logic.modifiers.CantUseSpecialAbilitiesModifier;
|
||||
import com.gempukku.lotro.logic.modifiers.Modifier;
|
||||
import com.gempukku.lotro.logic.modifiers.PlayerCantUseCardSpecialAbilitiesModifier;
|
||||
import com.gempukku.lotro.logic.modifiers.PlayersCantUseCardSpecialAbilitiesModifier;
|
||||
import org.json.simple.JSONObject;
|
||||
@@ -10,24 +13,25 @@ import org.json.simple.JSONObject;
|
||||
public class CantUseSpecialAbilities implements ModifierSourceProducer {
|
||||
@Override
|
||||
public ModifierSource getModifierSource(JSONObject object, CardGenerationEnvironment environment) throws InvalidCardDefinitionException {
|
||||
FieldUtils.validateAllowedFields(object, "filter", "requires", "player");
|
||||
FieldUtils.validateAllowedFields(object, "player", "phase", "requires", "filter");
|
||||
|
||||
String player = FieldUtils.getString(object.get("player"), "player");
|
||||
final Phase phase = FieldUtils.getEnum(Phase.class, object.get("phase"), "phase");
|
||||
|
||||
final JSONObject[] conditionArray = FieldUtils.getObjectArray(object.get("requires"), "requires");
|
||||
final String filter = FieldUtils.getString(object.get("filter"), "filter", "any");
|
||||
final String player = FieldUtils.getString(object.get("player"), "player");
|
||||
String filter = FieldUtils.getString(object.get("filter"), "filter", "any");
|
||||
|
||||
final Requirement[] requirements = environment.getRequirementFactory().getRequirements(conditionArray, environment);
|
||||
final FilterableSource filterableSource = environment.getFilterFactory().generateFilter(filter, environment);
|
||||
PlayerSource playerSource = player != null ? PlayerResolver.resolvePlayer(player, environment) : null;
|
||||
FilterableSource filterableSource = environment.getFilterFactory().generateFilter(filter, environment);
|
||||
|
||||
return actionContext -> {
|
||||
if (playerSource != null) {
|
||||
return new PlayerCantUseCardSpecialAbilitiesModifier(actionContext.getSource(),
|
||||
playerSource.getPlayer(actionContext),
|
||||
RequirementCondition.createCondition(requirements, actionContext), filterableSource.getFilterable(actionContext));
|
||||
} else {
|
||||
return new PlayersCantUseCardSpecialAbilitiesModifier(actionContext.getSource(),
|
||||
RequirementCondition.createCondition(requirements, actionContext), filterableSource.getFilterable(actionContext));
|
||||
return new ModifierSource() {
|
||||
@Override
|
||||
public Modifier getModifier(ActionContext actionContext) {
|
||||
String bannedPlayer = (playerSource != null) ? playerSource.getPlayer(actionContext) : null;
|
||||
|
||||
return new CantUseSpecialAbilitiesModifier(actionContext.getSource(),
|
||||
RequirementCondition.createCondition(requirements, actionContext), phase, bannedPlayer, filterableSource.getFilterable(actionContext));
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
@@ -57,7 +57,6 @@ public class ModifierSourceFactory {
|
||||
modifierProducers.put("canttakewoundsfromlosingskirmish", new CantTakeWoundsFromLosingSkirmish());
|
||||
modifierProducers.put("canttouchtokens", new AddModifierFlag(ModifierFlag.CANT_TOUCH_CULTURE_TOKENS));
|
||||
modifierProducers.put("cantusespecialabilities", new CantUseSpecialAbilities());
|
||||
modifierProducers.put("playercantusespecialabilities", new PlayerCantUseSpecialAbilities());
|
||||
modifierProducers.put("disablegametext", new DisableGameText());
|
||||
modifierProducers.put("doesnotaddtoarcherytotal", new DoesNotAddToArcheryTotal());
|
||||
modifierProducers.put("extracosttoplay", new ExtraCostToPlay());
|
||||
|
||||
@@ -1,36 +0,0 @@
|
||||
package com.gempukku.lotro.cards.build.field.effect.modifier;
|
||||
|
||||
import com.gempukku.lotro.cards.build.*;
|
||||
import com.gempukku.lotro.cards.build.field.FieldUtils;
|
||||
import com.gempukku.lotro.cards.build.field.effect.appender.resolver.PlayerResolver;
|
||||
import com.gempukku.lotro.common.Phase;
|
||||
import com.gempukku.lotro.logic.modifiers.CantUseSpecialAbilitiesModifier;
|
||||
import com.gempukku.lotro.logic.modifiers.Modifier;
|
||||
import org.json.simple.JSONObject;
|
||||
|
||||
public class PlayerCantUseSpecialAbilities implements ModifierSourceProducer {
|
||||
@Override
|
||||
public ModifierSource getModifierSource(JSONObject object, CardGenerationEnvironment environment) throws InvalidCardDefinitionException {
|
||||
FieldUtils.validateAllowedFields(object, "player", "phase", "requires", "filter");
|
||||
|
||||
String player = FieldUtils.getString(object.get("player"), "player");
|
||||
final Phase phase = FieldUtils.getEnum(Phase.class, object.get("phase"), "phase");
|
||||
|
||||
final JSONObject[] conditionArray = FieldUtils.getObjectArray(object.get("requires"), "requires");
|
||||
String filter = FieldUtils.getString(object.get("filter"), "filter", "any");
|
||||
|
||||
final Requirement[] requirements = environment.getRequirementFactory().getRequirements(conditionArray, environment);
|
||||
PlayerSource playerSource = player != null ? PlayerResolver.resolvePlayer(player, environment) : null;
|
||||
FilterableSource filterableSource = environment.getFilterFactory().generateFilter(filter, environment);
|
||||
|
||||
return new ModifierSource() {
|
||||
@Override
|
||||
public Modifier getModifier(ActionContext actionContext) {
|
||||
String bannedPlayer = (playerSource != null) ? playerSource.getPlayer(actionContext) : null;
|
||||
|
||||
return new CantUseSpecialAbilitiesModifier(actionContext.getSource(),
|
||||
RequirementCondition.createCondition(requirements, actionContext), phase, bannedPlayer, filterableSource.getFilterable(actionContext));
|
||||
}
|
||||
};
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user