This commit is contained in:
marcins78@gmail.com
2011-08-30 16:15:09 +00:00
parent 5f6aa4b141
commit f88efd8fc4
6 changed files with 95 additions and 3 deletions

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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