Names.nertea, "Twilight Fiend"

This commit is contained in:
marcins78
2013-02-05 16:23:36 +00:00
parent fd3ec4539e
commit 87c049698f
8 changed files with 94 additions and 2 deletions

View File

@@ -0,0 +1,34 @@
package com.gempukku.lotro.cards.modifiers;
import com.gempukku.lotro.common.Filterable;
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.modifiers.evaluator.Evaluator;
public class FpSkirmishResistanceStrengthOverrideModifier extends AbstractModifier {
private static Evaluator _resistanceEvaluator =
new Evaluator() {
@Override
public int evaluateExpression(GameState gameState, ModifiersQuerying modifiersQuerying, PhysicalCard cardAffected) {
return modifiersQuerying.getResistance(gameState, cardAffected);
}
};
public FpSkirmishResistanceStrengthOverrideModifier(PhysicalCard source, Filterable affectFilter, Condition condition) {
super(source, null, affectFilter, condition, ModifierEffect.SKIRMISH_STRENGTH_EVALUATOR_MODIFIER);
}
@Override
public String getText(GameState gameState, ModifiersQuerying modifiersQuerying, PhysicalCard self) {
return "Uses resistance instead of strength when resolving skirmish";
}
@Override
public Evaluator getFpSkirmishStrengthOverrideEvaluator(GameState gameState, ModifiersQuerying modifiersQuerying, PhysicalCard fpCharacter) {
return _resistanceEvaluator;
}
}

View File

@@ -0,0 +1,30 @@
package com.gempukku.lotro.cards.set20.wraith;
import com.gempukku.lotro.cards.AbstractMinion;
import com.gempukku.lotro.cards.modifiers.FpSkirmishResistanceStrengthOverrideModifier;
import com.gempukku.lotro.common.Culture;
import com.gempukku.lotro.common.Keyword;
import com.gempukku.lotro.common.Names;
import com.gempukku.lotro.common.Race;
import com.gempukku.lotro.filters.Filters;
import com.gempukku.lotro.game.PhysicalCard;
import com.gempukku.lotro.logic.modifiers.Modifier;
/**
* 4
* •Ulaire Nertea, Twilight Fiend
* Ringwraith Minion • Nazgul
* 9 3 3
* Twilight. Characters skirmishing Ulaire Nertea use resistance instead of strength to resolve skirmishes.
*/
public class Card20_309 extends AbstractMinion {
public Card20_309() {
super(4, 9, 3, 3, Race.NAZGUL, Culture.WRAITH, Names.nertea, "Twilight Fiend", true);
addKeyword(Keyword.TWILIGHT);
}
@Override
public Modifier getAlwaysOnModifier(PhysicalCard self) {
return new FpSkirmishResistanceStrengthOverrideModifier(self, Filters.and(Filters.character, Filters.inSkirmishAgainst(self)), null);
}
}

View File

@@ -6,6 +6,7 @@ import com.gempukku.lotro.filters.Filters;
import com.gempukku.lotro.game.PhysicalCard;
import com.gempukku.lotro.game.state.GameState;
import com.gempukku.lotro.logic.actions.ActivateCardAction;
import com.gempukku.lotro.logic.modifiers.evaluator.Evaluator;
import com.gempukku.lotro.logic.timing.Action;
import com.gempukku.lotro.logic.timing.Effect;
@@ -349,7 +350,12 @@ public abstract class AbstractModifier implements Modifier {
}
@Override
public boolean lostAllKeywords(GameState gameState, ModifiersLogic modifiersLogic, PhysicalCard card) {
public boolean lostAllKeywords(GameState gameState, ModifiersQuerying modifiersQuerying, PhysicalCard card) {
return false;
}
@Override
public Evaluator getFpSkirmishStrengthOverrideEvaluator(GameState gameState, ModifiersQuerying modifiersQuerying, PhysicalCard fpCharacter) {
return null;
}
}

View File

@@ -4,6 +4,7 @@ import com.gempukku.lotro.common.*;
import com.gempukku.lotro.game.PhysicalCard;
import com.gempukku.lotro.game.state.GameState;
import com.gempukku.lotro.logic.actions.ActivateCardAction;
import com.gempukku.lotro.logic.modifiers.evaluator.Evaluator;
import com.gempukku.lotro.logic.timing.Action;
import com.gempukku.lotro.logic.timing.Effect;
@@ -139,5 +140,7 @@ public interface Modifier {
public int getInitiativeHandSizeModifier(GameState gameState, ModifiersQuerying modifiersQuerying);
public boolean lostAllKeywords(GameState gameState, ModifiersLogic modifiersLogic, PhysicalCard card);
public boolean lostAllKeywords(GameState gameState, ModifiersQuerying modifiersQuerying, PhysicalCard card);
Evaluator getFpSkirmishStrengthOverrideEvaluator(GameState gameState, ModifiersQuerying modifiersQuerying, PhysicalCard fpCharacter);
}

View File

@@ -2,6 +2,7 @@ package com.gempukku.lotro.logic.modifiers;
public enum ModifierEffect {
SIGNET_MODIFIER, STRENGTH_MODIFIER,
SKIRMISH_STRENGTH_EVALUATOR_MODIFIER,
STRENGTH_BONUS_SOURCE_MODIFIER,
STRENGTH_BONUS_TARGET_MODIFIER,
VITALITY_MODIFIER, RESISTANCE_MODIFIER, SITE_NUMBER_MODIFIER, TWILIGHT_COST_MODIFIER, OVERWHELM_MODIFIER,

View File

@@ -4,6 +4,7 @@ import com.gempukku.lotro.common.*;
import com.gempukku.lotro.game.PhysicalCard;
import com.gempukku.lotro.game.state.GameState;
import com.gempukku.lotro.logic.actions.ActivateCardAction;
import com.gempukku.lotro.logic.modifiers.evaluator.Evaluator;
import com.gempukku.lotro.logic.timing.Action;
import com.gempukku.lotro.logic.timing.Effect;
@@ -233,6 +234,16 @@ public class ModifiersLogic implements ModifiersEnvironment, ModifiersQuerying {
return result;
}
@Override
public Evaluator getFpStrengthOverrideEvaluator(GameState gameState, PhysicalCard fpCharacter) {
for (Modifier modifier : getModifiersAffectingCard(gameState, ModifierEffect.SKIRMISH_STRENGTH_EVALUATOR_MODIFIER, fpCharacter)) {
Evaluator evaluator = modifier.getFpSkirmishStrengthOverrideEvaluator(gameState, this, fpCharacter);
if (evaluator != null)
return evaluator;
}
return null;
}
private boolean affectsCardWithSkipSet(GameState gameState, PhysicalCard physicalCard, Modifier modifier) {
if (!_skipSet.contains(modifier) && physicalCard != null) {
_skipSet.add(modifier);

View File

@@ -4,6 +4,7 @@ import com.gempukku.lotro.common.*;
import com.gempukku.lotro.game.PhysicalCard;
import com.gempukku.lotro.game.state.GameState;
import com.gempukku.lotro.logic.actions.ActivateCardAction;
import com.gempukku.lotro.logic.modifiers.evaluator.Evaluator;
import com.gempukku.lotro.logic.timing.Action;
import com.gempukku.lotro.logic.timing.Effect;
@@ -25,6 +26,8 @@ public interface ModifiersQuerying {
public Collection<Modifier> getModifiersAffecting(GameState gameState, PhysicalCard card);
public Evaluator getFpStrengthOverrideEvaluator(GameState gameState, PhysicalCard fpCharacter);
public boolean hasTextRemoved(GameState gameState, PhysicalCard card);
// Keywords

View File

@@ -74,6 +74,10 @@ public class RuleUtils {
if (fpChar == null)
return 0;
final Evaluator fpStrengthOverrideEvaluator = game.getModifiersQuerying().getFpStrengthOverrideEvaluator(game.getGameState(), fpChar);
if (fpStrengthOverrideEvaluator != null)
return fpStrengthOverrideEvaluator.evaluateExpression(game.getGameState(), game.getModifiersQuerying(), fpChar);
final Evaluator overrideEvaluator = skirmish.getFpStrengthOverrideEvaluator();
if (overrideEvaluator != null)
return overrideEvaluator.evaluateExpression(game.getGameState(), game.getModifiersQuerying(), fpChar);