"Final Triumph"

This commit is contained in:
marcins78@gmail.com
2012-03-08 16:29:47 +00:00
parent f16cdf8a23
commit 5d6f6ce75e
3 changed files with 78 additions and 2 deletions

View File

@@ -0,0 +1,58 @@
package com.gempukku.lotro.cards.set18.uruk_hai;
import com.gempukku.lotro.cards.AbstractEvent;
import com.gempukku.lotro.cards.PlayConditions;
import com.gempukku.lotro.cards.actions.PlayEventAction;
import com.gempukku.lotro.common.*;
import com.gempukku.lotro.filters.Filters;
import com.gempukku.lotro.game.PhysicalCard;
import com.gempukku.lotro.game.state.GameState;
import com.gempukku.lotro.game.state.LotroGame;
import com.gempukku.lotro.game.state.Skirmish;
import com.gempukku.lotro.logic.modifiers.ModifiersQuerying;
import com.gempukku.lotro.logic.modifiers.evaluator.Evaluator;
import com.gempukku.lotro.logic.timing.UnrespondableEffect;
/**
* Set: Treachery & Deceit
* Side: Shadow
* Culture: Uruk-Hai
* Twilight Cost: 4
* Type: Event • Skirmish
* Game Text: Spot your Uruk-hai skirmishing a companion to use vitality to resolve that skirmish instead of strength.
*/
public class Card18_115 extends AbstractEvent {
public Card18_115() {
super(Side.SHADOW, 4, Culture.URUK_HAI, "Final Triumph", Phase.SKIRMISH);
}
@Override
public boolean checkPlayRequirements(String playerId, LotroGame game, PhysicalCard self, int withTwilightRemoved, int twilightModifier, boolean ignoreRoamingPenalty, boolean ignoreCheckingDeadPile) {
return super.checkPlayRequirements(playerId, game, self, withTwilightRemoved, twilightModifier, ignoreRoamingPenalty, ignoreCheckingDeadPile)
&& PlayConditions.canSpot(game, Filters.owner(playerId), Race.URUK_HAI, Filters.inSkirmishAgainst(CardType.COMPANION));
}
@Override
public PlayEventAction getPlayCardAction(String playerId, LotroGame game, PhysicalCard self, int twilightModifier, boolean ignoreRoamingPenalty) {
PlayEventAction action = new PlayEventAction(self);
action.appendEffect(
new UnrespondableEffect() {
@Override
protected void doPlayEffect(LotroGame game) {
final Skirmish skirmish = game.getGameState().getSkirmish();
if (skirmish != null) {
Evaluator vitalityEvaluator = new Evaluator() {
@Override
public int evaluateExpression(GameState gameState, ModifiersQuerying modifiersQuerying, PhysicalCard cardAffected) {
return modifiersQuerying.getVitality(gameState, cardAffected);
}
};
skirmish.setFpStrengthOverrideEvaluator(vitalityEvaluator);
skirmish.setShadowStrengthOverrideEvaluator(vitalityEvaluator);
}
}
});
return action;
}
}

View File

@@ -12,6 +12,7 @@ public class Skirmish {
private boolean _cancelled;
private Evaluator _fpStrengthOverrideEvaluator;
private Evaluator _shadowStrengthOverrideEvaluator;
private Set<PhysicalCard> _removedFromSkirmish = new HashSet<PhysicalCard>();
@@ -28,6 +29,14 @@ public class Skirmish {
_fpStrengthOverrideEvaluator = fpStrengthOverrideEvaluator;
}
public Evaluator getShadowStrengthOverrideEvaluator() {
return _shadowStrengthOverrideEvaluator;
}
public void setShadowStrengthOverrideEvaluator(Evaluator shadowStrengthOverrideEvaluator) {
_shadowStrengthOverrideEvaluator = shadowStrengthOverrideEvaluator;
}
public PhysicalCard getFellowshipCharacter() {
return _fellowshipCharacter;
}

View File

@@ -82,11 +82,20 @@ public class RuleUtils {
}
public static int getShadowSkirmishStrength(LotroGame game) {
if (game.getGameState().getSkirmish() == null)
final Skirmish skirmish = game.getGameState().getSkirmish();
if (skirmish == null)
return 0;
final Evaluator overrideEvaluator = skirmish.getShadowStrengthOverrideEvaluator();
if (overrideEvaluator != null) {
int total = 0;
for (PhysicalCard physicalCard : skirmish.getShadowCharacters())
total += overrideEvaluator.evaluateExpression(game.getGameState(), game.getModifiersQuerying(), physicalCard);
return total;
}
int totalStrength = 0;
for (PhysicalCard physicalCard : game.getGameState().getSkirmish().getShadowCharacters())
for (PhysicalCard physicalCard : skirmish.getShadowCharacters())
totalStrength += game.getModifiersQuerying().getStrength(game.getGameState(), physicalCard);
return totalStrength;