"Concealment"
This commit is contained in:
@@ -0,0 +1,29 @@
|
||||
package com.gempukku.lotro.cards.modifiers;
|
||||
|
||||
import com.gempukku.lotro.game.PhysicalCard;
|
||||
import com.gempukku.lotro.game.state.GameState;
|
||||
import com.gempukku.lotro.logic.modifiers.AbstractModifier;
|
||||
import com.gempukku.lotro.logic.modifiers.Condition;
|
||||
import com.gempukku.lotro.logic.modifiers.ModifierEffect;
|
||||
import com.gempukku.lotro.logic.modifiers.ModifiersQuerying;
|
||||
import com.gempukku.lotro.logic.timing.Action;
|
||||
|
||||
public class OpponentsCantUseSpecialAbilitiesModifier extends AbstractModifier {
|
||||
private String _playerId;
|
||||
|
||||
public OpponentsCantUseSpecialAbilitiesModifier(PhysicalCard source, String playerId) {
|
||||
this(source, null, playerId);
|
||||
}
|
||||
|
||||
public OpponentsCantUseSpecialAbilitiesModifier(PhysicalCard source, Condition condition, String playerId) {
|
||||
super(source, null, null, condition, ModifierEffect.ACTION_MODIFIER);
|
||||
_playerId = playerId;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canPlayAction(GameState gameState, ModifiersQuerying modifiersQuerying, String performingPlayer, Action action) {
|
||||
if (!performingPlayer.equals(_playerId) && action.getType() == Action.Type.SPECIAL_ABILITY)
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,50 @@
|
||||
package com.gempukku.lotro.cards.set12.gondor;
|
||||
|
||||
import com.gempukku.lotro.cards.AbstractEvent;
|
||||
import com.gempukku.lotro.cards.actions.PlayEventAction;
|
||||
import com.gempukku.lotro.cards.effects.AddUntilEndOfPhaseModifierEffect;
|
||||
import com.gempukku.lotro.cards.modifiers.OpponentsCantUseSpecialAbilitiesModifier;
|
||||
import com.gempukku.lotro.common.Culture;
|
||||
import com.gempukku.lotro.common.Phase;
|
||||
import com.gempukku.lotro.common.Race;
|
||||
import com.gempukku.lotro.common.Side;
|
||||
import com.gempukku.lotro.filters.Filters;
|
||||
import com.gempukku.lotro.game.PhysicalCard;
|
||||
import com.gempukku.lotro.game.state.LotroGame;
|
||||
import com.gempukku.lotro.logic.effects.ChooseActiveCardEffect;
|
||||
import com.gempukku.lotro.logic.modifiers.StrengthModifier;
|
||||
|
||||
/**
|
||||
* Set: Black Rider
|
||||
* Side: Free
|
||||
* Culture: Gondor
|
||||
* Twilight Cost: 0
|
||||
* Type: Event • Skirmish
|
||||
* Game Text: Make a [GONDOR] Man strength +1. If he or she is skirmishing a roaming minion, your opponents cannot use
|
||||
* special abilities.
|
||||
*/
|
||||
public class Card12_044 extends AbstractEvent {
|
||||
public Card12_044() {
|
||||
super(Side.FREE_PEOPLE, 0, Culture.GONDOR, "Concealment", Phase.SKIRMISH);
|
||||
}
|
||||
|
||||
@Override
|
||||
public PlayEventAction getPlayCardAction(final String playerId, LotroGame game, final PhysicalCard self, int twilightModifier, boolean ignoreRoamingPenalty) {
|
||||
final PlayEventAction action = new PlayEventAction(self);
|
||||
action.appendEffect(
|
||||
new ChooseActiveCardEffect(self, playerId, "Choose a GONDOR Man", Culture.GONDOR, Race.MAN) {
|
||||
@Override
|
||||
protected void cardSelected(LotroGame game, PhysicalCard card) {
|
||||
action.appendEffect(
|
||||
new AddUntilEndOfPhaseModifierEffect(
|
||||
new StrengthModifier(self, card, 1), Phase.SKIRMISH));
|
||||
if (Filters.inSkirmishAgainst(Filters.roamingMinion).accepts(game.getGameState(), game.getModifiersQuerying(), card)) {
|
||||
action.appendEffect(
|
||||
new AddUntilEndOfPhaseModifierEffect(
|
||||
new OpponentsCantUseSpecialAbilitiesModifier(self, playerId), Phase.SKIRMISH));
|
||||
}
|
||||
}
|
||||
});
|
||||
return action;
|
||||
}
|
||||
}
|
||||
@@ -38,12 +38,12 @@ public class Card4_131 extends AbstractAttachableFPPossession {
|
||||
protected List<? extends Action> getExtraInPlayPhaseActions(String playerId, LotroGame game, PhysicalCard self) {
|
||||
if (PlayConditions.canUseFPCardDuringPhase(game, Phase.SKIRMISH, self)
|
||||
&& PlayConditions.canExert(self, game, self.getAttachedTo())
|
||||
&& Filters.countActive(game.getGameState(), game.getModifiersQuerying(), Filters.inSkirmishAgainst(Filters.hasAttached(self)), Filters.or(Race.MAN, Filters.roaminMinion)) > 0) {
|
||||
&& Filters.countActive(game.getGameState(), game.getModifiersQuerying(), Filters.inSkirmishAgainst(Filters.hasAttached(self)), Filters.or(Race.MAN, Filters.roamingMinion)) > 0) {
|
||||
ActivateCardAction action = new ActivateCardAction(self);
|
||||
action.appendCost(
|
||||
new ChooseAndExertCharactersEffect(action, playerId, 1, 1, Filters.hasAttached(self)));
|
||||
action.appendEffect(
|
||||
new ChooseAndWoundCharactersEffect(action, playerId, 1, 1, Filters.inSkirmishAgainst(Filters.hasAttached(self)), Filters.or(Race.MAN, Filters.roaminMinion)));
|
||||
new ChooseAndWoundCharactersEffect(action, playerId, 1, 1, Filters.inSkirmishAgainst(Filters.hasAttached(self)), Filters.or(Race.MAN, Filters.roamingMinion)));
|
||||
return Collections.singletonList(action);
|
||||
}
|
||||
return null;
|
||||
|
||||
@@ -43,7 +43,7 @@ public class Card4_134 extends AbstractAttachableFPPossession {
|
||||
Filters.inSkirmishAgainst(
|
||||
Filters.or(
|
||||
Race.MAN,
|
||||
Filters.roaminMinion
|
||||
Filters.roamingMinion
|
||||
)
|
||||
)
|
||||
), Keyword.DAMAGE));
|
||||
|
||||
@@ -36,7 +36,7 @@ public class Card4_135 extends AbstractOldEvent {
|
||||
new ChooseActiveCardEffect(self, playerId, "Choose a GONDOR Man", Culture.GONDOR, Race.MAN) {
|
||||
@Override
|
||||
protected void cardSelected(LotroGame game, PhysicalCard card) {
|
||||
boolean isAgainstRoaming = Filters.countActive(game.getGameState(), game.getModifiersQuerying(), Filters.roaminMinion, Filters.inSkirmishAgainst(Filters.sameCard(card))) > 0;
|
||||
boolean isAgainstRoaming = Filters.countActive(game.getGameState(), game.getModifiersQuerying(), Filters.roamingMinion, Filters.inSkirmishAgainst(Filters.sameCard(card))) > 0;
|
||||
int bonus = isAgainstRoaming ? 3 : 2;
|
||||
action.insertEffect(
|
||||
new AddUntilEndOfPhaseModifierEffect(
|
||||
|
||||
@@ -31,7 +31,7 @@ public class Card4_293 extends AbstractPermanent {
|
||||
|
||||
@Override
|
||||
public List<OptionalTriggerAction> getOptionalAfterTriggers(String playerId, LotroGame game, EffectResult effectResult, PhysicalCard self) {
|
||||
if (TriggerConditions.played(game, effectResult, Filters.roaminMinion)
|
||||
if (TriggerConditions.played(game, effectResult, Filters.roamingMinion)
|
||||
&& PlayConditions.canSpot(game, Keyword.VILLAGER)) {
|
||||
PlayCardResult result = (PlayCardResult) effectResult;
|
||||
OptionalTriggerAction action = new OptionalTriggerAction(self);
|
||||
|
||||
@@ -790,7 +790,7 @@ public class Filters {
|
||||
}
|
||||
|
||||
public static final Filter unboundCompanion = Filters.and(CardType.COMPANION, Filters.not(Keyword.RING_BOUND));
|
||||
public static final Filter roaminMinion = Filters.and(CardType.MINION, Keyword.ROAMING);
|
||||
public static final Filter roamingMinion = Filters.and(CardType.MINION, Keyword.ROAMING);
|
||||
public static final Filter mounted = Filters.hasAttached(PossessionClass.MOUNT);
|
||||
|
||||
private static class SpotFilterCardInPlayVisitor implements PhysicalCardVisitor {
|
||||
|
||||
Reference in New Issue
Block a user