"Concealment"

This commit is contained in:
marcins78@gmail.com
2011-12-12 10:36:25 +00:00
parent cec828d408
commit 6f8ac44562
7 changed files with 85 additions and 6 deletions

View File

@@ -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;
}
}

View File

@@ -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;
}
}

View File

@@ -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;

View File

@@ -43,7 +43,7 @@ public class Card4_134 extends AbstractAttachableFPPossession {
Filters.inSkirmishAgainst(
Filters.or(
Race.MAN,
Filters.roaminMinion
Filters.roamingMinion
)
)
), Keyword.DAMAGE));

View File

@@ -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(

View File

@@ -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);

View File

@@ -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 {