"One Last Surprise"
This commit is contained in:
@@ -0,0 +1,60 @@
|
||||
package com.gempukku.lotro.cards.set15.gandalf;
|
||||
|
||||
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: The Hunters
|
||||
* Side: Free
|
||||
* Culture: Gandalf
|
||||
* Twilight Cost: 2
|
||||
* Type: Event • Skirmish
|
||||
* Game Text: Spell. Spot Gandalf and an unbound companion skirmishing a minion to use Gandalf’s resistance to resolve
|
||||
* that skirmish instead of that companion’s strength.
|
||||
*/
|
||||
public class Card15_033 extends AbstractEvent {
|
||||
public Card15_033() {
|
||||
super(Side.FREE_PEOPLE, 2, Culture.GANDALF, "One Last Surprise", Phase.SKIRMISH);
|
||||
addKeyword(Keyword.SPELL);
|
||||
}
|
||||
|
||||
@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.gandalf)
|
||||
&& PlayConditions.canSpot(game, Filters.unboundCompanion, Filters.inSkirmishAgainst(CardType.MINION));
|
||||
}
|
||||
|
||||
@Override
|
||||
public PlayEventAction getPlayCardAction(String playerId, LotroGame game, PhysicalCard self, int twilightModifier, boolean ignoreRoamingPenalty) {
|
||||
PlayEventAction action = new PlayEventAction(self);
|
||||
final PhysicalCard gandalf = Filters.findFirstActive(game.getGameState(), game.getModifiersQuerying(), Filters.gandalf);
|
||||
action.appendEffect(
|
||||
new UnrespondableEffect() {
|
||||
@Override
|
||||
protected void doPlayEffect(LotroGame game) {
|
||||
final Skirmish skirmish = game.getGameState().getSkirmish();
|
||||
if (skirmish != null) {
|
||||
skirmish.setFpStrengthOverrideEvaluator(
|
||||
new Evaluator() {
|
||||
@Override
|
||||
public int evaluateExpression(GameState gameState, ModifiersQuerying modifiersQuerying, PhysicalCard cardAffected) {
|
||||
return modifiersQuerying.getResistance(gameState, gandalf);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
return action;
|
||||
}
|
||||
}
|
||||
@@ -1,6 +1,7 @@
|
||||
package com.gempukku.lotro.game.state;
|
||||
|
||||
import com.gempukku.lotro.game.PhysicalCard;
|
||||
import com.gempukku.lotro.logic.modifiers.evaluator.Evaluator;
|
||||
|
||||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
@@ -10,6 +11,8 @@ public class Skirmish {
|
||||
private Set<PhysicalCard> _shadowCharacters;
|
||||
private boolean _cancelled;
|
||||
|
||||
private Evaluator _fpStrengthOverrideEvaluator;
|
||||
|
||||
private Set<PhysicalCard> _removedFromSkirmish = new HashSet<PhysicalCard>();
|
||||
|
||||
public Skirmish(PhysicalCard fellowshipCharacter, Set<PhysicalCard> shadowCharacters) {
|
||||
@@ -17,6 +20,14 @@ public class Skirmish {
|
||||
_shadowCharacters = shadowCharacters;
|
||||
}
|
||||
|
||||
public Evaluator getFpStrengthOverrideEvaluator() {
|
||||
return _fpStrengthOverrideEvaluator;
|
||||
}
|
||||
|
||||
public void setFpStrengthOverrideEvaluator(Evaluator fpStrengthOverrideEvaluator) {
|
||||
_fpStrengthOverrideEvaluator = fpStrengthOverrideEvaluator;
|
||||
}
|
||||
|
||||
public PhysicalCard getFellowshipCharacter() {
|
||||
return _fellowshipCharacter;
|
||||
}
|
||||
|
||||
@@ -8,7 +8,9 @@ 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;
|
||||
|
||||
public class RuleUtils {
|
||||
public static int calculateFellowshipArcheryTotal(LotroGame game) {
|
||||
@@ -64,10 +66,15 @@ public class RuleUtils {
|
||||
}
|
||||
|
||||
public static int getFellowshipSkirmishStrength(LotroGame game) {
|
||||
if (game.getGameState().getSkirmish() == null)
|
||||
final Skirmish skirmish = game.getGameState().getSkirmish();
|
||||
if (skirmish == null)
|
||||
return 0;
|
||||
|
||||
PhysicalCard fpChar = game.getGameState().getSkirmish().getFellowshipCharacter();
|
||||
final Evaluator overrideEvaluator = skirmish.getFpStrengthOverrideEvaluator();
|
||||
if (overrideEvaluator != null)
|
||||
return overrideEvaluator.evaluateExpression(game.getGameState(), game.getModifiersQuerying(), null);
|
||||
|
||||
PhysicalCard fpChar = skirmish.getFellowshipCharacter();
|
||||
if (fpChar == null)
|
||||
return 0;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user