Removed FPCantAssignToSkirmish. Expanded CantBeAssignedToSkirmish and associated modifier to accept a player value.

This commit is contained in:
Christian 'ketura' McCarty
2024-05-29 20:42:55 -05:00
parent 136bb0170c
commit 78cd84e775
5 changed files with 21 additions and 35 deletions

View File

@@ -23,8 +23,9 @@
{
type: modifier
modifier: {
type: fpCantAssignToSkirmish
type: CantBeAssignedToSkirmish
filter: self
player: freeps
}
}
{

View File

@@ -2,6 +2,7 @@ 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.logic.modifiers.CantBeAssignedToSkirmishModifier;
import com.gempukku.lotro.logic.modifiers.Modifier;
import org.json.simple.JSONObject;
@@ -10,20 +11,24 @@ public class CantBeAssignedToSkirmish implements ModifierSourceProducer {
@Override
public ModifierSource getModifierSource(JSONObject effectObject, CardGenerationEnvironment environment) throws InvalidCardDefinitionException {
FieldUtils.validateAllowedFields(effectObject, "filter", "requires");
FieldUtils.validateAllowedFields(effectObject, "filter", "player", "requires");
final String player = FieldUtils.getString(effectObject.get("player"), "player");
final JSONObject[] conditionArray = FieldUtils.getObjectArray(effectObject.get("requires"), "requires");
final String filter = FieldUtils.getString(effectObject.get("filter"), "filter");
final PlayerSource playerSource = player != null ? PlayerResolver.resolvePlayer(player, environment) : null;
final FilterableSource filterableSource = environment.getFilterFactory().generateFilter(filter, environment);
final Requirement[] requirements = environment.getRequirementFactory().getRequirements(conditionArray, environment);
return new ModifierSource() {
@Override
public Modifier getModifier(ActionContext actionContext) {
String bannedPlayer = (playerSource != null) ? playerSource.getPlayer(actionContext) : null;
return new CantBeAssignedToSkirmishModifier(actionContext.getSource(),
RequirementCondition.createCondition(requirements, actionContext),
filterableSource.getFilterable(actionContext));
bannedPlayer, filterableSource.getFilterable(actionContext));
}
};
}

View File

@@ -1,30 +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.logic.modifiers.FreePeoplePlayerMayNotAssignCharacterModifier;
import com.gempukku.lotro.logic.modifiers.Modifier;
import org.json.simple.JSONObject;
public class FPCantAssignToSkirmish implements ModifierSourceProducer {
@Override
public ModifierSource getModifierSource(JSONObject effectObject, CardGenerationEnvironment environment) throws InvalidCardDefinitionException {
FieldUtils.validateAllowedFields(effectObject, "filter", "requires");
final JSONObject[] conditionArray = FieldUtils.getObjectArray(effectObject.get("requires"), "requires");
final String filter = FieldUtils.getString(effectObject.get("filter"), "filter");
final FilterableSource filterableSource = environment.getFilterFactory().generateFilter(filter, environment);
final Requirement[] requirements = environment.getRequirementFactory().getRequirements(conditionArray, environment);
return new ModifierSource() {
@Override
public Modifier getModifier(ActionContext actionContext) {
return new FreePeoplePlayerMayNotAssignCharacterModifier(actionContext.getSource(),
RequirementCondition.createCondition(requirements, actionContext),
filterableSource.getFilterable(actionContext));
}
};
}
}

View File

@@ -63,7 +63,6 @@ public class ModifierSourceFactory {
modifierProducers.put("fpculturespot", new FPCultureSpot());
modifierProducers.put("fpusesresinsteadofstr", new FPUsesResInsteadOfStr());
modifierProducers.put("fpusesvitinsteadofstr", new FPUsesVitInsteadOfStr());
modifierProducers.put("fpcantassigntoskirmish", new FPCantAssignToSkirmish());
modifierProducers.put("hastomoveifable", new AddModifierFlag(ModifierFlag.HAS_TO_MOVE_IF_POSSIBLE));
modifierProducers.put("itemclassspot", new ItemClassSpot());
modifierProducers.put("modifyarcherytotal", new ModifyArcheryTotal());

View File

@@ -4,14 +4,25 @@ import com.gempukku.lotro.common.Filterable;
import com.gempukku.lotro.common.Side;
import com.gempukku.lotro.game.PhysicalCard;
import com.gempukku.lotro.game.state.LotroGame;
import com.gempukku.lotro.logic.GameUtils;
public class CantBeAssignedToSkirmishModifier extends AbstractModifier {
private final String _bannedPlayer;
public CantBeAssignedToSkirmishModifier(PhysicalCard source, Condition condition, Filterable affectFilter) {
this(source, condition, null, affectFilter);
}
public CantBeAssignedToSkirmishModifier(PhysicalCard source, Condition condition, String bannedPlayer, Filterable affectFilter) {
super(source, "Can't be assigned to skirmish", affectFilter, condition, ModifierEffect.ASSIGNMENT_MODIFIER);
this._bannedPlayer = bannedPlayer;
}
@Override
public boolean isPreventedFromBeingAssignedToSkirmish(LotroGame game, Side sidePlayer, PhysicalCard card) {
return true;
if(_bannedPlayer == null || GameUtils.getSide(game, _bannedPlayer) == sidePlayer)
return true;
return false;
}
}