Simplified check for playable cards, special abilities

This commit is contained in:
marcin.sciesinski
2019-10-01 17:58:31 -07:00
parent 57244ab616
commit 7c2570fc23
25 changed files with 173 additions and 159 deletions

View File

@@ -11,9 +11,7 @@ import com.gempukku.lotro.logic.actions.PlayEventAction;
import com.gempukku.lotro.logic.cardtype.AbstractResponseEvent;
import com.gempukku.lotro.logic.effects.AddUntilEndOfPhaseModifierEffect;
import com.gempukku.lotro.logic.effects.ChooseAndDiscardCardsFromHandEffect;
import com.gempukku.lotro.logic.modifiers.AbstractModifier;
import com.gempukku.lotro.logic.modifiers.ModifierEffect;
import com.gempukku.lotro.logic.timing.Action;
import com.gempukku.lotro.logic.modifiers.PlayerCantPlayCardsModifier;
import com.gempukku.lotro.logic.timing.EffectResult;
import com.gempukku.lotro.logic.timing.PlayConditions;
import com.gempukku.lotro.logic.timing.TriggerConditions;
@@ -45,14 +43,7 @@ public class Card10_098 extends AbstractResponseEvent {
new ChooseAndDiscardCardsFromHandEffect(action, playerId, false, 1, Culture.SAURON, CardType.MINION));
action.appendEffect(
new AddUntilEndOfPhaseModifierEffect(
new AbstractModifier(self, null, null, ModifierEffect.ACTION_MODIFIER) {
@Override
public boolean canPlayAction(LotroGame game, String performingPlayer, Action action) {
if (action.getPerformingPlayer().equals(game.getGameState().getCurrentPlayerId()) && action.getType() == Action.Type.PLAY_CARD)
return false;
return true;
}
}));
new PlayerCantPlayCardsModifier(self, game.getGameState().getCurrentPlayerId())));
return Collections.singletonList(action);
}
return null;

View File

@@ -6,7 +6,7 @@ import com.gempukku.lotro.game.PhysicalCard;
import com.gempukku.lotro.game.state.LotroGame;
import com.gempukku.lotro.logic.cardtype.AbstractMinion;
import com.gempukku.lotro.logic.modifiers.Modifier;
import com.gempukku.lotro.logic.modifiers.RemoveSpecialAbilitiesModifier;
import com.gempukku.lotro.logic.modifiers.PlayersCantUseCardSpecialAbilitiesModifier;
import com.gempukku.lotro.logic.modifiers.SpotCondition;
import java.util.Collections;
@@ -32,8 +32,9 @@ public class Card11_186 extends AbstractMinion {
@Override
public List<? extends Modifier> getInPlayModifiers(LotroGame game, PhysicalCard self) {
return Collections.singletonList(new RemoveSpecialAbilitiesModifier(self,
new SpotCondition(self, Filters.assignedToSkirmish),
Filters.or(CardType.COMPANION, Filters.and(Side.FREE_PEOPLE, CardType.POSSESSION))));
}
return Collections.singletonList(
new PlayersCantUseCardSpecialAbilitiesModifier(self,
new SpotCondition(self, Filters.assignedToSkirmish),
Filters.or(CardType.COMPANION, Filters.and(Side.FREE_PEOPLE, CardType.POSSESSION))));
}
}

View File

@@ -8,7 +8,7 @@ import com.gempukku.lotro.logic.actions.ActivateCardAction;
import com.gempukku.lotro.logic.cardtype.AbstractPermanent;
import com.gempukku.lotro.logic.effects.TransferPermanentEffect;
import com.gempukku.lotro.logic.modifiers.Modifier;
import com.gempukku.lotro.logic.modifiers.RemoveSpecialAbilitiesModifier;
import com.gempukku.lotro.logic.modifiers.PlayersCantUseCardSpecialAbilitiesModifier;
import com.gempukku.lotro.logic.timing.PlayConditions;
import java.util.Collections;
@@ -44,6 +44,6 @@ public class Card12_169 extends AbstractPermanent {
@Override
public List<? extends Modifier> getInPlayModifiers(LotroGame game, PhysicalCard self) {
return Collections.singletonList(new RemoveSpecialAbilitiesModifier(self, Filters.hasAttached(self)));
}
return Collections.singletonList(new PlayersCantUseCardSpecialAbilitiesModifier(self, Filters.hasAttached(self)));
}
}

View File

@@ -13,9 +13,7 @@ import com.gempukku.lotro.logic.effects.AddUntilStartOfPhaseModifierEffect;
import com.gempukku.lotro.logic.effects.AssignmentEffect;
import com.gempukku.lotro.logic.effects.ChooseActiveCardEffect;
import com.gempukku.lotro.logic.effects.SelfDiscardEffect;
import com.gempukku.lotro.logic.modifiers.AbstractModifier;
import com.gempukku.lotro.logic.modifiers.ModifierEffect;
import com.gempukku.lotro.logic.timing.Action;
import com.gempukku.lotro.logic.modifiers.PlayersCantUseCardPhaseSpecialAbilitiesModifier;
import com.gempukku.lotro.logic.timing.PlayConditions;
import java.util.Collections;
@@ -53,15 +51,8 @@ public class Card13_013 extends AbstractPermanent {
new AssignmentEffect(playerId, companion, minion));
action.appendEffect(
new AddUntilStartOfPhaseModifierEffect(
new AbstractModifier(self, "Can't use skirmish special abilities", null, ModifierEffect.ACTION_MODIFIER) {
@Override
public boolean canPlayAction(LotroGame game, String performingPlayer, Action action) {
if (action.getActionTimeword() == Phase.SKIRMISH && action.getType() == Action.Type.SPECIAL_ABILITY
&& (action.getActionSource() == minion || action.getActionSource() == companion))
return false;
return true;
}
}, Phase.REGROUP));
new PlayersCantUseCardPhaseSpecialAbilitiesModifier(
self, Phase.SKIRMISH, Filters.or(minion, companion)), Phase.REGROUP));
}
});
}

View File

@@ -1,24 +1,20 @@
package com.gempukku.lotro.cards.set13.gondor;
import com.gempukku.lotro.logic.cardtype.AbstractPermanent;
import com.gempukku.lotro.logic.timing.TriggerConditions;
import com.gempukku.lotro.logic.effects.AddUntilEndOfPhaseModifierEffect;
import com.gempukku.lotro.logic.effects.AddUntilStartOfPhaseModifierEffect;
import com.gempukku.lotro.logic.effects.choose.ChooseAndExertCharactersEffect;
import com.gempukku.lotro.logic.modifiers.RemoveSpecialAbilitiesModifier;
import com.gempukku.lotro.common.CardType;
import com.gempukku.lotro.common.Culture;
import com.gempukku.lotro.common.Keyword;
import com.gempukku.lotro.common.Phase;
import com.gempukku.lotro.common.Side;
import com.gempukku.lotro.common.*;
import com.gempukku.lotro.filters.Filters;
import com.gempukku.lotro.game.PhysicalCard;
import com.gempukku.lotro.game.state.LotroGame;
import com.gempukku.lotro.logic.actions.OptionalTriggerAction;
import com.gempukku.lotro.logic.actions.RequiredTriggerAction;
import com.gempukku.lotro.logic.cardtype.AbstractPermanent;
import com.gempukku.lotro.logic.effects.AddUntilEndOfPhaseModifierEffect;
import com.gempukku.lotro.logic.effects.AddUntilStartOfPhaseModifierEffect;
import com.gempukku.lotro.logic.effects.ChooseActiveCardEffect;
import com.gempukku.lotro.logic.effects.choose.ChooseAndExertCharactersEffect;
import com.gempukku.lotro.logic.modifiers.KeywordModifier;
import com.gempukku.lotro.logic.modifiers.PlayersCantUseCardSpecialAbilitiesModifier;
import com.gempukku.lotro.logic.timing.EffectResult;
import com.gempukku.lotro.logic.timing.TriggerConditions;
import com.gempukku.lotro.logic.timing.results.ExertResult;
import java.util.Collections;
@@ -68,7 +64,7 @@ public class Card13_075 extends AbstractPermanent {
protected void cardSelected(LotroGame game, PhysicalCard card) {
action.appendEffect(
new AddUntilStartOfPhaseModifierEffect(
new RemoveSpecialAbilitiesModifier(self, card), Phase.REGROUP));
new PlayersCantUseCardSpecialAbilitiesModifier(self, card), Phase.REGROUP));
}
});
action.setText("Spot a minion to prevent it from using special abilities");

View File

@@ -8,7 +8,7 @@ import com.gempukku.lotro.logic.actions.PlayEventAction;
import com.gempukku.lotro.logic.cardtype.AbstractEvent;
import com.gempukku.lotro.logic.effects.AddUntilStartOfPhaseModifierEffect;
import com.gempukku.lotro.logic.effects.choose.ChooseAndExertCharactersEffect;
import com.gempukku.lotro.logic.modifiers.RemoveSpecialAbilitiesModifier;
import com.gempukku.lotro.logic.modifiers.PlayersCantUseCardSpecialAbilitiesModifier;
import com.gempukku.lotro.logic.timing.PlayConditions;
/**
@@ -40,7 +40,7 @@ public class Card20_249 extends AbstractEvent {
protected void forEachCardExertedCallback(PhysicalCard character) {
action.appendEffect(
new AddUntilStartOfPhaseModifierEffect(
new RemoveSpecialAbilitiesModifier(self, character), Phase.REGROUP));
new PlayersCantUseCardSpecialAbilitiesModifier(self, character), Phase.REGROUP));
}
});
return action;

View File

@@ -1,16 +1,13 @@
package com.gempukku.lotro.cards.set3.site;
import com.gempukku.lotro.common.CardType;
import com.gempukku.lotro.common.Keyword;
import com.gempukku.lotro.common.Phase;
import com.gempukku.lotro.common.SitesBlock;
import com.gempukku.lotro.game.PhysicalCard;
import com.gempukku.lotro.game.state.LotroGame;
import com.gempukku.lotro.logic.cardtype.AbstractSite;
import com.gempukku.lotro.logic.modifiers.AbstractModifier;
import com.gempukku.lotro.logic.modifiers.Modifier;
import com.gempukku.lotro.logic.modifiers.ModifierEffect;
import com.gempukku.lotro.logic.timing.Action;
import com.gempukku.lotro.logic.modifiers.PlayersCantPlayPhaseEventsModifier;
import java.util.Collections;
import java.util.List;
@@ -31,14 +28,6 @@ public class Card3_117 extends AbstractSite {
@Override
public List<? extends Modifier> getInPlayModifiers(LotroGame game, PhysicalCard self) {
return Collections.singletonList(
new AbstractModifier(self, "Maneuver events may not be played", null, ModifierEffect.ACTION_MODIFIER) {
@Override
public boolean canPlayAction(LotroGame game, String performingPlayer, Action action) {
PhysicalCard source = action.getActionSource();
if (source != null && action.getActionTimeword() == Phase.MANEUVER && source.getBlueprint().getCardType() == CardType.EVENT)
return false;
return true;
}
});
new PlayersCantPlayPhaseEventsModifier(self, Phase.MANEUVER));
}
}

View File

@@ -5,10 +5,9 @@ import com.gempukku.lotro.filters.Filters;
import com.gempukku.lotro.game.PhysicalCard;
import com.gempukku.lotro.game.state.LotroGame;
import com.gempukku.lotro.logic.cardtype.AbstractCompanion;
import com.gempukku.lotro.logic.modifiers.AbstractModifier;
import com.gempukku.lotro.logic.modifiers.Modifier;
import com.gempukku.lotro.logic.modifiers.ModifierEffect;
import com.gempukku.lotro.logic.timing.Action;
import com.gempukku.lotro.logic.modifiers.OpponentsCantPlayPhaseEventsOrPhaseSpecialAbilitiesModifier;
import com.gempukku.lotro.logic.modifiers.SpotCondition;
import java.util.Collections;
import java.util.List;
@@ -36,17 +35,7 @@ public class Card4_117 extends AbstractCompanion {
@Override
public List<? extends Modifier> getInPlayModifiers(LotroGame game, final PhysicalCard self) {
return Collections.singletonList(
new AbstractModifier(self, "Can't play skimirhs events or skirmish special abilities", null, ModifierEffect.ACTION_MODIFIER) {
@Override
public boolean canPlayAction(LotroGame game, String performingPlayer, Action action) {
if (!Filters.inSkirmish.accepts(game, self))
return true;
if (performingPlayer != null && performingPlayer.equals(self.getOwner()))
return true;
if (action.getActionTimeword() == Phase.SKIRMISH)
return false;
return true;
}
});
new OpponentsCantPlayPhaseEventsOrPhaseSpecialAbilitiesModifier(self,
new SpotCondition(self, Filters.inSkirmish), self.getOwner(), Phase.SKIRMISH));
}
}

View File

@@ -6,10 +6,8 @@ import com.gempukku.lotro.game.state.LotroGame;
import com.gempukku.lotro.logic.actions.RequiredTriggerAction;
import com.gempukku.lotro.logic.cardtype.AbstractPermanent;
import com.gempukku.lotro.logic.effects.SelfDiscardEffect;
import com.gempukku.lotro.logic.modifiers.AbstractModifier;
import com.gempukku.lotro.logic.modifiers.Modifier;
import com.gempukku.lotro.logic.modifiers.ModifierEffect;
import com.gempukku.lotro.logic.timing.Action;
import com.gempukku.lotro.logic.modifiers.PlayerCantPlayPhaseEventsOrPhaseSpecialAbilitiesModifier;
import com.gempukku.lotro.logic.timing.EffectResult;
import com.gempukku.lotro.logic.timing.PlayConditions;
@@ -49,16 +47,7 @@ public class Card4_147 extends AbstractPermanent {
@Override
public List<? extends Modifier> getInPlayModifiers(LotroGame game, PhysicalCard self) {
return Collections.singletonList(
new AbstractModifier(self, null, null, ModifierEffect.ACTION_MODIFIER) {
@Override
public boolean canPlayAction(LotroGame game, String performingPlayer, Action action) {
if (!performingPlayer.equals(game.getGameState().getCurrentPlayerId()))
return true;
if (action.getActionTimeword() == Phase.ARCHERY)
return false;
return true;
}
});
new PlayerCantPlayPhaseEventsOrPhaseSpecialAbilitiesModifier(
self, game.getGameState().getCurrentPlayerId(), Phase.ARCHERY));
}
}

View File

@@ -7,11 +7,9 @@ import com.gempukku.lotro.game.PhysicalCard;
import com.gempukku.lotro.game.state.LotroGame;
import com.gempukku.lotro.logic.cardtype.AbstractAttachable;
import com.gempukku.lotro.logic.modifiers.AbstractExtraPlayCostModifier;
import com.gempukku.lotro.logic.modifiers.AbstractModifier;
import com.gempukku.lotro.logic.modifiers.Modifier;
import com.gempukku.lotro.logic.modifiers.ModifierEffect;
import com.gempukku.lotro.logic.modifiers.PlayersCantUseCardSpecialAbilitiesModifier;
import com.gempukku.lotro.logic.modifiers.cost.ExertExtraPlayCostModifier;
import com.gempukku.lotro.logic.timing.Action;
import com.gempukku.lotro.logic.timing.PlayConditions;
import java.util.Collections;
@@ -59,14 +57,7 @@ public class Card4_157 extends AbstractAttachable {
public List<? extends Modifier> getInPlayModifiers(LotroGame game, final PhysicalCard self) {
List<Modifier> modifiers = new LinkedList<Modifier>();
modifiers.add(
new AbstractModifier(self, null, null, ModifierEffect.ACTION_MODIFIER) {
@Override
public boolean canPlayAction(LotroGame game, String performingPlayer, Action action) {
if (action.getActionSource() == self.getAttachedTo())
return false;
return true;
}
});
new PlayersCantUseCardSpecialAbilitiesModifier(self, Filters.hasAttached(self)));
return modifiers;
}
}

View File

@@ -6,10 +6,8 @@ import com.gempukku.lotro.common.SitesBlock;
import com.gempukku.lotro.game.PhysicalCard;
import com.gempukku.lotro.game.state.LotroGame;
import com.gempukku.lotro.logic.cardtype.AbstractSite;
import com.gempukku.lotro.logic.modifiers.AbstractModifier;
import com.gempukku.lotro.logic.modifiers.Modifier;
import com.gempukku.lotro.logic.modifiers.ModifierEffect;
import com.gempukku.lotro.logic.timing.Action;
import com.gempukku.lotro.logic.modifiers.PlayersCantPlayPhaseEventsOrPhaseSpecialAbilitiesModifier;
import java.util.Collections;
import java.util.List;
@@ -30,13 +28,6 @@ public class Card4_355 extends AbstractSite {
@Override
public List<? extends Modifier> getInPlayModifiers(LotroGame game, PhysicalCard self) {
return Collections.singletonList(
new AbstractModifier(self, null, null, ModifierEffect.ACTION_MODIFIER) {
@Override
public boolean canPlayAction(LotroGame game, String performingPlayer, Action action) {
if (action.getActionTimeword() == Phase.SKIRMISH)
return false;
return true;
}
});
new PlayersCantPlayPhaseEventsOrPhaseSpecialAbilitiesModifier(self, Phase.SKIRMISH));
}
}

View File

@@ -7,10 +7,8 @@ import com.gempukku.lotro.logic.actions.ActivateCardAction;
import com.gempukku.lotro.logic.cardtype.AbstractMinion;
import com.gempukku.lotro.logic.effects.AddUntilEndOfPhaseModifierEffect;
import com.gempukku.lotro.logic.effects.ReturnCardsToHandEffect;
import com.gempukku.lotro.logic.modifiers.AbstractModifier;
import com.gempukku.lotro.logic.modifiers.ArcheryTotalModifier;
import com.gempukku.lotro.logic.modifiers.ModifierEffect;
import com.gempukku.lotro.logic.timing.Action;
import com.gempukku.lotro.logic.modifiers.PlayerCantUsePhaseSpecialAbilitiesModifier;
import com.gempukku.lotro.logic.timing.PlayConditions;
import java.util.Collections;
@@ -45,16 +43,7 @@ public class Card8_100 extends AbstractMinion {
new ArcheryTotalModifier(self, Side.FREE_PEOPLE, -2)));
action.appendEffect(
new AddUntilEndOfPhaseModifierEffect(
new AbstractModifier(self, null, null, ModifierEffect.ACTION_MODIFIER) {
@Override
public boolean canPlayAction(LotroGame game, String performingPlayer, Action action) {
if (performingPlayer.equals(game.getGameState().getCurrentPlayerId())
&& action.getType() == Action.Type.SPECIAL_ABILITY
&& action.getActionTimeword() == Phase.ARCHERY)
return false;
return true;
}
}));
new PlayerCantUsePhaseSpecialAbilitiesModifier(self, game.getGameState().getCurrentPlayerId(), Phase.ARCHERY)));
return Collections.singletonList(action);
}
return null;

View File

@@ -230,11 +230,13 @@ public class DefaultActionsEnvironment implements ActionsEnvironment {
public List<Action> getPhaseActions(String playerId) {
List<Action> result = new LinkedList<Action>();
final Phase currentPhase = _lotroGame.getGameState().getCurrentPhase();
for (ActionProxy actionProxy : _actionProxies) {
List<? extends Action> actions = actionProxy.getPhaseActions(playerId, _lotroGame);
if (actions != null) {
for (Action action : actions) {
action.setPerformingPlayer(playerId);
action.setActionTimeword(currentPhase);
if (_lotroGame.getModifiersQuerying().canPlayAction(_lotroGame, playerId, action))
result.add(action);
}

View File

@@ -0,0 +1,29 @@
package com.gempukku.lotro.logic.modifiers;
import com.gempukku.lotro.common.Phase;
import com.gempukku.lotro.game.PhysicalCard;
import com.gempukku.lotro.game.state.LotroGame;
import com.gempukku.lotro.logic.timing.Action;
public class OpponentsCantPlayPhaseEventsOrPhaseSpecialAbilitiesModifier extends AbstractModifier {
private String _playerId;
private Phase _phase;
public OpponentsCantPlayPhaseEventsOrPhaseSpecialAbilitiesModifier(PhysicalCard source, String playerId, Phase phase) {
this(source, null, playerId, phase);
}
public OpponentsCantPlayPhaseEventsOrPhaseSpecialAbilitiesModifier(PhysicalCard source, Condition condition, String playerId, Phase phase) {
super(source, null, null, condition, ModifierEffect.ACTION_MODIFIER);
_playerId = playerId;
_phase = phase;
}
@Override
public boolean canPlayAction(LotroGame game, String performingPlayer, Action action) {
if ((action.getType() == Action.Type.PLAY_CARD || action.getType() == Action.Type.SPECIAL_ABILITY)
&& !performingPlayer.equals(_playerId) && action.getActionTimeword() == _phase)
return false;
return true;
}
}

View File

@@ -21,7 +21,8 @@ public class OpponentsCantUsePhaseSpecialAbilitiesModifier extends AbstractModif
@Override
public boolean canPlayAction(LotroGame game, String performingPlayer, Action action) {
if (!performingPlayer.equals(_playerId) && action.getActionTimeword() == _phase && action.getType() == Action.Type.SPECIAL_ABILITY)
if (action.getType() == Action.Type.SPECIAL_ABILITY
&& !performingPlayer.equals(_playerId) && action.getActionTimeword() == _phase)
return false;
return true;
}

View File

@@ -18,7 +18,8 @@ public class OpponentsCantUseSpecialAbilitiesModifier extends AbstractModifier {
@Override
public boolean canPlayAction(LotroGame game, String performingPlayer, Action action) {
if (!performingPlayer.equals(_playerId) && action.getType() == Action.Type.SPECIAL_ABILITY)
if (action.getType() == Action.Type.SPECIAL_ABILITY
&& !performingPlayer.equals(_playerId))
return false;
return true;
}

View File

@@ -0,0 +1,26 @@
package com.gempukku.lotro.logic.modifiers;
import com.gempukku.lotro.game.PhysicalCard;
import com.gempukku.lotro.game.state.LotroGame;
import com.gempukku.lotro.logic.timing.Action;
public class PlayerCantPlayCardsModifier extends AbstractModifier {
private String _playerId;
public PlayerCantPlayCardsModifier(PhysicalCard source, String playerId) {
this(source, null, playerId);
}
public PlayerCantPlayCardsModifier(PhysicalCard source, Condition condition, String playerId) {
super(source, null, null, condition, ModifierEffect.ACTION_MODIFIER);
_playerId = playerId;
}
@Override
public boolean canPlayAction(LotroGame game, String performingPlayer, Action action) {
if (action.getType() == Action.Type.PLAY_CARD
&& performingPlayer.equals(_playerId))
return false;
return true;
}
}

View File

@@ -21,7 +21,8 @@ public class PlayerCantPlayPhaseEventsOrPhaseSpecialAbilitiesModifier extends Ab
@Override
public boolean canPlayAction(LotroGame game, String performingPlayer, Action action) {
if (performingPlayer.equals(_playerId) && action.getActionTimeword() == _phase)
if ((action.getType() == Action.Type.PLAY_CARD || action.getType() == Action.Type.SPECIAL_ABILITY)
&& performingPlayer.equals(_playerId) && action.getActionTimeword() == _phase)
return false;
return true;
}

View File

@@ -21,7 +21,8 @@ public class PlayerCantUsePhaseSpecialAbilitiesModifier extends AbstractModifier
@Override
public boolean canPlayAction(LotroGame game, String performingPlayer, Action action) {
if (performingPlayer.equals(_playerId) && action.getActionTimeword() == _phase && action.getType() == Action.Type.SPECIAL_ABILITY)
if (action.getType() == Action.Type.SPECIAL_ABILITY
&& performingPlayer.equals(_playerId) && action.getActionTimeword() == _phase)
return false;
return true;
}

View File

@@ -0,0 +1,27 @@
package com.gempukku.lotro.logic.modifiers;
import com.gempukku.lotro.common.Phase;
import com.gempukku.lotro.game.PhysicalCard;
import com.gempukku.lotro.game.state.LotroGame;
import com.gempukku.lotro.logic.timing.Action;
public class PlayersCantPlayPhaseEventsModifier extends AbstractModifier {
private Phase _phase;
public PlayersCantPlayPhaseEventsModifier(PhysicalCard source, Phase phase) {
this(source, null, phase);
}
public PlayersCantPlayPhaseEventsModifier(PhysicalCard source, Condition condition, Phase phase) {
super(source, null, null, condition, ModifierEffect.ACTION_MODIFIER);
_phase = phase;
}
@Override
public boolean canPlayAction(LotroGame game, String performingPlayer, Action action) {
if (action.getType() == Action.Type.PLAY_CARD
&& action.getActionTimeword() == _phase)
return false;
return true;
}
}

View File

@@ -19,7 +19,8 @@ public class PlayersCantPlayPhaseEventsOrPhaseSpecialAbilitiesModifier extends A
@Override
public boolean canPlayAction(LotroGame game, String performingPlayer, Action action) {
if (action.getActionTimeword() == _phase)
if ((action.getType() == Action.Type.PLAY_CARD || action.getType() == Action.Type.SPECIAL_ABILITY)
&& action.getActionTimeword() == _phase)
return false;
return true;
}

View File

@@ -9,7 +9,6 @@ import com.gempukku.lotro.game.state.LotroGame;
import com.gempukku.lotro.logic.timing.Action;
public class PlayersCantUseCardPhaseSpecialAbilitiesModifier extends AbstractModifier {
private Phase _phase;
private Filter _sourceFilters;
@@ -18,7 +17,7 @@ public class PlayersCantUseCardPhaseSpecialAbilitiesModifier extends AbstractMod
}
public PlayersCantUseCardPhaseSpecialAbilitiesModifier(PhysicalCard source, Condition condition, Phase phase, Filterable... sourceFilters) {
super(source, null, null, condition, ModifierEffect.ACTION_MODIFIER);
super(source, "Can't use " + phase.getHumanReadable() + " special abilities", null, condition, ModifierEffect.ACTION_MODIFIER);
_phase = phase;
_sourceFilters = Filters.and(sourceFilters);
}

View File

@@ -19,7 +19,8 @@ public class PlayersCantUsePhaseSpecialAbilitiesModifier extends AbstractModifie
@Override
public boolean canPlayAction(LotroGame game, String performingPlayer, Action action) {
if (action.getActionTimeword() == _phase && action.getType() == Action.Type.SPECIAL_ABILITY)
if (action.getType() == Action.Type.SPECIAL_ABILITY
&& action.getActionTimeword() == _phase && action.getType() == Action.Type.SPECIAL_ABILITY)
return false;
return true;
}

View File

@@ -1,29 +0,0 @@
package com.gempukku.lotro.logic.modifiers;
import com.gempukku.lotro.common.Filterable;
import com.gempukku.lotro.filters.Filter;
import com.gempukku.lotro.filters.Filters;
import com.gempukku.lotro.game.PhysicalCard;
import com.gempukku.lotro.game.state.LotroGame;
import com.gempukku.lotro.logic.timing.Action;
public class RemoveSpecialAbilitiesModifier extends AbstractModifier {
private Filter _affectFilter;
public RemoveSpecialAbilitiesModifier(PhysicalCard source, Filterable affectFilter) {
this(source, null, affectFilter);
}
public RemoveSpecialAbilitiesModifier(PhysicalCard source, Condition condition, Filterable affectFilter) {
super(source, "Removed special abilities", affectFilter, condition, ModifierEffect.ACTION_MODIFIER);
_affectFilter = Filters.and(affectFilter);
}
@Override
public boolean canPlayAction(LotroGame game, String performingPlayer, Action action) {
if (action.getType() == Action.Type.SPECIAL_ABILITY
&& action.getActionSource() != null && _affectFilter.accepts(game, action.getActionSource()))
return false;
return true;
}
}

View File

@@ -0,0 +1,37 @@
package com.gempukku.lotro.logic.modifiers.cost;
import com.gempukku.lotro.common.Filterable;
import com.gempukku.lotro.filters.Filters;
import com.gempukku.lotro.game.PhysicalCard;
import com.gempukku.lotro.game.state.LotroGame;
import com.gempukku.lotro.logic.actions.CostToEffectAction;
import com.gempukku.lotro.logic.effects.ChooseAndWoundCharactersEffect;
import com.gempukku.lotro.logic.modifiers.AbstractExtraPlayCostModifier;
import com.gempukku.lotro.logic.modifiers.Condition;
import com.gempukku.lotro.logic.timing.PlayConditions;
public class WoundExtraPlayCostModifier extends AbstractExtraPlayCostModifier {
private int count;
private Filterable[] wounding;
public WoundExtraPlayCostModifier(PhysicalCard source, Filterable affects, Condition condition, Filterable... wounding) {
this(source, affects, condition, 1, wounding);
}
public WoundExtraPlayCostModifier(PhysicalCard source, Filterable affects, Condition condition, int count, Filterable... wounding) {
super(source, "Wound to play", Filters.and(affects), condition);
this.count = count;
this.wounding = wounding;
}
@Override
public boolean canPayExtraCostsToPlay(LotroGame game, PhysicalCard card) {
return PlayConditions.canWound(card, game, 1, count, wounding);
}
@Override
public void appendExtraCosts(LotroGame game, CostToEffectAction action, PhysicalCard card) {
action.appendCost(
new ChooseAndWoundCharactersEffect(action, card.getOwner(), count, count, wounding));
}
}