"Parry"
This commit is contained in:
@@ -0,0 +1,18 @@
|
||||
package com.gempukku.lotro.cards.modifiers;
|
||||
|
||||
import com.gempukku.lotro.filters.Filter;
|
||||
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.ModifiersLogic;
|
||||
|
||||
public class CancelStrengthBonusModifier extends AbstractModifier {
|
||||
public CancelStrengthBonusModifier(PhysicalCard source, Filter affectFilter) {
|
||||
super(source, "Cancel strength bonus", affectFilter);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean appliesStrengthModifier(GameState gameState, ModifiersLogic modifiersLogic, PhysicalCard modifierSource, boolean result) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,57 @@
|
||||
package com.gempukku.lotro.cards.set1.isengard;
|
||||
|
||||
import com.gempukku.lotro.cards.AbstractLotroCardBlueprint;
|
||||
import com.gempukku.lotro.cards.PlayConditions;
|
||||
import com.gempukku.lotro.cards.actions.PlayEventAction;
|
||||
import com.gempukku.lotro.cards.effects.AddUntilStartOfPhaseModifierEffect;
|
||||
import com.gempukku.lotro.cards.modifiers.CancelStrengthBonusModifier;
|
||||
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.effects.ChooseActiveCardEffect;
|
||||
import com.gempukku.lotro.logic.timing.Action;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* Set: The Fellowship of the Ring
|
||||
* Side: Shadow
|
||||
* Culture: Isengard
|
||||
* Twilight Cost: 2
|
||||
* Type: Event
|
||||
* Game Text: Maneuver: Spot an Uruk-hai to cancel the strength bonus from a possession until the regroup phase.
|
||||
*/
|
||||
public class Card1_132 extends AbstractLotroCardBlueprint {
|
||||
public Card1_132() {
|
||||
super(Side.SHADOW, CardType.EVENT, Culture.ISENGARD, "Parry", "1_132");
|
||||
addKeyword(Keyword.MANEUVER);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getTwilightCost() {
|
||||
return 2;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<? extends Action> getPlayablePhaseActions(String playerId, LotroGame game, final PhysicalCard self) {
|
||||
if (PlayConditions.canPlayShadowCardDuringPhase(game.getGameState(), game.getModifiersQuerying(), Phase.MANEUVER, self)
|
||||
&& Filters.canSpot(game.getGameState(), game.getModifiersQuerying(), Filters.keyword(Keyword.URUK_HAI))) {
|
||||
final PlayEventAction action = new PlayEventAction(self);
|
||||
action.addEffect(
|
||||
new ChooseActiveCardEffect(playerId, "Choose possession", Filters.type(CardType.POSSESSION)) {
|
||||
@Override
|
||||
protected void cardSelected(LotroGame game, PhysicalCard possession) {
|
||||
action.addEffect(
|
||||
new AddUntilStartOfPhaseModifierEffect(
|
||||
new CancelStrengthBonusModifier(self, Filters.sameCard(possession)), Phase.REGROUP));
|
||||
}
|
||||
}
|
||||
);
|
||||
|
||||
return Collections.singletonList(action);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
@@ -45,6 +45,11 @@ public abstract class AbstractModifier implements Modifier {
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean appliesStrengthModifier(GameState gameState, ModifiersLogic modifiersLogic, PhysicalCard modifierSource, boolean result) {
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getVitality(GameState gameState, ModifiersQuerying modifiersQuerying, PhysicalCard physicalCard, int result) {
|
||||
return result;
|
||||
|
||||
@@ -18,6 +18,8 @@ public interface Modifier {
|
||||
|
||||
public int getStrength(GameState gameState, ModifiersQuerying modifiersQuerying, PhysicalCard physicalCard, int result);
|
||||
|
||||
public boolean appliesStrengthModifier(GameState gameState, ModifiersLogic modifiersLogic, PhysicalCard modifierSource, boolean result);
|
||||
|
||||
public int getVitality(GameState gameState, ModifiersQuerying modifiersQuerying, PhysicalCard physicalCard, int result);
|
||||
|
||||
public int getTwilightCost(GameState gameState, ModifiersQuerying modifiersQuerying, PhysicalCard physicalCard, int result);
|
||||
|
||||
@@ -134,12 +134,22 @@ public class ModifiersLogic implements ModifiersEnvironment, ModifiersQuerying {
|
||||
public int getStrength(GameState gameState, PhysicalCard physicalCard) {
|
||||
int result = physicalCard.getBlueprint().getStrength();
|
||||
for (Modifier modifier : _modifiers) {
|
||||
if (affectsCardWithSkipSet(gameState, physicalCard, modifier))
|
||||
if (affectsCardWithSkipSet(gameState, physicalCard, modifier)
|
||||
&& appliesStrengthModifier(gameState, modifier.getSource()))
|
||||
result = modifier.getStrength(gameState, this, physicalCard, result);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
private boolean appliesStrengthModifier(GameState gameState, PhysicalCard modifierSource) {
|
||||
boolean result = true;
|
||||
for (Modifier modifier : _modifiers) {
|
||||
if (affectsCardWithSkipSet(gameState, modifierSource, modifier))
|
||||
result = modifier.appliesStrengthModifier(gameState, this, modifierSource, result);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getVitality(GameState gameState, PhysicalCard physicalCard) {
|
||||
int result = physicalCard.getBlueprint().getVitality();
|
||||
|
||||
@@ -22,10 +22,10 @@ public interface ModifiersQuerying {
|
||||
|
||||
public int getPlayOnTwilightCost(GameState gameState, PhysicalCard physicalCard, PhysicalCard target);
|
||||
|
||||
public int getVitality(GameState gameState, PhysicalCard physicalCard);
|
||||
|
||||
public int getStrength(GameState gameState, PhysicalCard physicalCard);
|
||||
|
||||
public int getVitality(GameState gameState, PhysicalCard physicalCard);
|
||||
|
||||
public boolean isOverwhelmedByStrength(GameState gameState, PhysicalCard card, int strength, int opposingStrength);
|
||||
|
||||
public boolean canTakeWound(GameState gameState, PhysicalCard card);
|
||||
|
||||
Reference in New Issue
Block a user