"Fill With Fear"
This commit is contained in:
@@ -4,10 +4,12 @@ import com.gempukku.lotro.common.Phase;
|
||||
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;
|
||||
|
||||
public class ShouldSkipPhaseModifier extends AbstractModifier {
|
||||
private Condition _condition;
|
||||
private Phase _phase;
|
||||
private String _playerId;
|
||||
|
||||
@@ -16,9 +18,15 @@ public class ShouldSkipPhaseModifier extends AbstractModifier {
|
||||
_phase = phase;
|
||||
}
|
||||
|
||||
public ShouldSkipPhaseModifier(PhysicalCard source, Condition condition, Phase phase) {
|
||||
super(source, "Skip " + phase.toString() + " phase", null, new ModifierEffect[]{ModifierEffect.ACTION_MODIFIER});
|
||||
_condition = condition;
|
||||
_phase = phase;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean shouldSkipPhase(GameState gameState, ModifiersQuerying modifiersQuerying, Phase phase, String playerId, boolean result) {
|
||||
if (phase == _phase && (_playerId == null || _playerId.equals(playerId)))
|
||||
if (phase == _phase && (_playerId == null || _playerId.equals(playerId)) && (_condition == null || _condition.isFullfilled(gameState, modifiersQuerying)))
|
||||
return true;
|
||||
return result;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,54 @@
|
||||
package com.gempukku.lotro.cards.set2.moria;
|
||||
|
||||
import com.gempukku.lotro.cards.AbstractPermanent;
|
||||
import com.gempukku.lotro.cards.PlayConditions;
|
||||
import com.gempukku.lotro.cards.costs.ChooseAndExertCharactersCost;
|
||||
import com.gempukku.lotro.cards.effects.ChooseAndDiscardCardsFromPlayEffect;
|
||||
import com.gempukku.lotro.cards.modifiers.ShouldSkipPhaseModifier;
|
||||
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.ActivateCardAction;
|
||||
import com.gempukku.lotro.logic.modifiers.Modifier;
|
||||
import com.gempukku.lotro.logic.modifiers.SpotCondition;
|
||||
import com.gempukku.lotro.logic.timing.Action;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* Set: Mines of Moria
|
||||
* Side: Shadow
|
||||
* Culture: Moria
|
||||
* Twilight Cost: 0
|
||||
* Type: Condition
|
||||
* Game Text: Plays to your support area. While you can spot The Balrog, skip the archery phase. Maneuver: Exert
|
||||
* The Balrog to discard a ranged weapon.
|
||||
*/
|
||||
public class Card2_056 extends AbstractPermanent {
|
||||
public Card2_056() {
|
||||
super(Side.SHADOW, 0, CardType.CONDITION, Culture.MORIA, Zone.SHADOW_SUPPORT, "Fill With Fear");
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<? extends Modifier> getAlwaysOnModifiers(PhysicalCard self) {
|
||||
return Collections.singletonList(
|
||||
new ShouldSkipPhaseModifier(self,
|
||||
new SpotCondition(Filters.name("The Balrog")), Phase.ARCHERY));
|
||||
}
|
||||
|
||||
@Override
|
||||
protected List<? extends Action> getExtraPhaseActions(String playerId, LotroGame game, PhysicalCard self) {
|
||||
if (PlayConditions.canUseShadowCardDuringPhase(game.getGameState(), Phase.MANEUVER, self, 0)
|
||||
&& Filters.canSpot(game.getGameState(), game.getModifiersQuerying(), Filters.name("The Balrog"), Filters.canExert())) {
|
||||
ActivateCardAction action = new ActivateCardAction(self, Keyword.MANEUVER);
|
||||
action.appendCost(
|
||||
new ChooseAndExertCharactersCost(action, playerId, 1, 1, Filters.name("The Balrog")));
|
||||
action.appendEffect(
|
||||
new ChooseAndDiscardCardsFromPlayEffect(action, playerId, 1, 1, Filters.keyword(Keyword.RANGED_WEAPON)));
|
||||
return Collections.singletonList(action);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
package com.gempukku.lotro.logic.modifiers;
|
||||
|
||||
import com.gempukku.lotro.filters.Filter;
|
||||
import com.gempukku.lotro.filters.Filters;
|
||||
import com.gempukku.lotro.game.state.GameState;
|
||||
|
||||
public class SpotCondition implements Condition {
|
||||
private Filter _filter;
|
||||
|
||||
public SpotCondition(Filter filter) {
|
||||
_filter = filter;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isFullfilled(GameState gameState, ModifiersQuerying modifiersQuerying) {
|
||||
return Filters.canSpot(gameState, modifiersQuerying, _filter);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user