Simplified check for playable cards, special abilities
This commit is contained in:
@@ -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;
|
||||
|
||||
@@ -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))));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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)));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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));
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@@ -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");
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
@@ -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));
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user