"Blades Drawn"
This commit is contained in:
@@ -27,8 +27,8 @@ public class StrengthModifier extends AbstractModifier {
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getText(GameState gameState, ModifiersQuerying modifiersQuerying) {
|
||||
final int value = _evaluator.evaluateExpression(gameState, modifiersQuerying);
|
||||
public String getText(GameState gameState, ModifiersQuerying modifiersQuerying, PhysicalCard self) {
|
||||
final int value = _evaluator.evaluateExpression(gameState, modifiersQuerying, self);
|
||||
if (value >= 0)
|
||||
return "Strength +" + value;
|
||||
else
|
||||
@@ -37,6 +37,6 @@ public class StrengthModifier extends AbstractModifier {
|
||||
|
||||
@Override
|
||||
public int getStrength(GameState gameState, ModifiersQuerying modifiersQuerying, PhysicalCard physicalCard, int result) {
|
||||
return result + _evaluator.evaluateExpression(gameState, modifiersQuerying);
|
||||
return result + _evaluator.evaluateExpression(gameState, modifiersQuerying, physicalCard);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package com.gempukku.lotro.cards.modifiers.evaluator;
|
||||
|
||||
import com.gempukku.lotro.game.PhysicalCard;
|
||||
import com.gempukku.lotro.game.state.GameState;
|
||||
import com.gempukku.lotro.logic.modifiers.ModifiersQuerying;
|
||||
|
||||
@@ -11,7 +12,7 @@ public class ConstantEvaluator implements Evaluator {
|
||||
}
|
||||
|
||||
@Override
|
||||
public int evaluateExpression(GameState gameState, ModifiersQuerying modifiersQuerying) {
|
||||
public int evaluateExpression(GameState gameState, ModifiersQuerying modifiersQuerying, PhysicalCard self) {
|
||||
return _value;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,6 +2,7 @@ package com.gempukku.lotro.cards.modifiers.evaluator;
|
||||
|
||||
import com.gempukku.lotro.filters.Filter;
|
||||
import com.gempukku.lotro.filters.Filters;
|
||||
import com.gempukku.lotro.game.PhysicalCard;
|
||||
import com.gempukku.lotro.game.state.GameState;
|
||||
import com.gempukku.lotro.logic.modifiers.ModifiersQuerying;
|
||||
|
||||
@@ -13,7 +14,7 @@ public class CountSpottableEvaluator implements Evaluator {
|
||||
}
|
||||
|
||||
@Override
|
||||
public int evaluateExpression(GameState gameState, ModifiersQuerying modifiersQuerying) {
|
||||
public int evaluateExpression(GameState gameState, ModifiersQuerying modifiersQuerying, PhysicalCard self) {
|
||||
return Filters.countSpottable(gameState, modifiersQuerying, _filter);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,8 +1,9 @@
|
||||
package com.gempukku.lotro.cards.modifiers.evaluator;
|
||||
|
||||
import com.gempukku.lotro.game.PhysicalCard;
|
||||
import com.gempukku.lotro.game.state.GameState;
|
||||
import com.gempukku.lotro.logic.modifiers.ModifiersQuerying;
|
||||
|
||||
public interface Evaluator {
|
||||
public int evaluateExpression(GameState gameState, ModifiersQuerying modifiersQuerying);
|
||||
public int evaluateExpression(GameState gameState, ModifiersQuerying modifiersQuerying, PhysicalCard self);
|
||||
}
|
||||
|
||||
@@ -39,7 +39,7 @@ public class Card4_052 extends AbstractPermanent {
|
||||
new StrengthModifier(self, Filters.name("Gimli"), null,
|
||||
new Evaluator() {
|
||||
@Override
|
||||
public int evaluateExpression(GameState gameState, ModifiersQuerying modifiersQuerying) {
|
||||
public int evaluateExpression(GameState gameState, ModifiersQuerying modifiersQuerying, PhysicalCard self) {
|
||||
PhysicalCard finalCount = Filters.findFirstActive(gameState, modifiersQuerying, Filters.name("Final Count"));
|
||||
if (finalCount != null)
|
||||
return Math.min(3, Math.max(gameState.getTokenCount(self, Token.DWARVEN), gameState.getTokenCount(finalCount, Token.ELVEN)));
|
||||
|
||||
@@ -0,0 +1,62 @@
|
||||
package com.gempukku.lotro.cards.set4.elven;
|
||||
|
||||
import com.gempukku.lotro.cards.AbstractPermanent;
|
||||
import com.gempukku.lotro.cards.modifiers.StrengthModifier;
|
||||
import com.gempukku.lotro.cards.modifiers.evaluator.Evaluator;
|
||||
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.logic.actions.RequiredTriggerAction;
|
||||
import com.gempukku.lotro.logic.effects.DiscardCardsFromPlayEffect;
|
||||
import com.gempukku.lotro.logic.modifiers.Modifier;
|
||||
import com.gempukku.lotro.logic.modifiers.ModifiersQuerying;
|
||||
import com.gempukku.lotro.logic.timing.EffectResult;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* Set: The Two Towers
|
||||
* Side: Free
|
||||
* Culture: Elven
|
||||
* Twilight Cost: 1
|
||||
* Type: Condition
|
||||
* Game Text: To play, spot 3 Elves. Plays to your support area.
|
||||
* For each wound on each minion, that minion is strength -2. Discard this condition during the regroup phase.
|
||||
*/
|
||||
public class Card4_060 extends AbstractPermanent {
|
||||
public Card4_060() {
|
||||
super(Side.FREE_PEOPLE, 1, CardType.CONDITION, Culture.ELVEN, Zone.SUPPORT, "Blades Drawn");
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean checkPlayRequirements(String playerId, LotroGame game, PhysicalCard self, int twilightModifier) {
|
||||
return super.checkPlayRequirements(playerId, game, self, twilightModifier)
|
||||
&& Filters.countSpottable(game.getGameState(), game.getModifiersQuerying(), Filters.race(Race.ELF)) >= 3;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<? extends Modifier> getAlwaysOnModifiers(PhysicalCard self) {
|
||||
return Collections.singletonList(
|
||||
new StrengthModifier(self, Filters.type(CardType.MINION), null,
|
||||
new Evaluator() {
|
||||
@Override
|
||||
public int evaluateExpression(GameState gameState, ModifiersQuerying modifiersQuerying, PhysicalCard self) {
|
||||
return -2 * gameState.getWounds(self);
|
||||
}
|
||||
}));
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<RequiredTriggerAction> getRequiredAfterTriggers(LotroGame game, EffectResult effectResult, PhysicalCard self) {
|
||||
if (game.getGameState().getCurrentPhase() == Phase.REGROUP) {
|
||||
RequiredTriggerAction action = new RequiredTriggerAction(self);
|
||||
action.appendEffect(
|
||||
new DiscardCardsFromPlayEffect(self, self));
|
||||
return Collections.singletonList(action);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
@@ -36,7 +36,7 @@ public abstract class AbstractModifier implements Modifier {
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getText(GameState gameState, ModifiersQuerying modifiersQuerying) {
|
||||
public String getText(GameState gameState, ModifiersQuerying modifiersQuerying, PhysicalCard self) {
|
||||
return _text;
|
||||
}
|
||||
|
||||
|
||||
@@ -14,7 +14,7 @@ import java.util.Map;
|
||||
public interface Modifier {
|
||||
public PhysicalCard getSource();
|
||||
|
||||
public String getText(GameState gameState, ModifiersQuerying modifiersQuerying);
|
||||
public String getText(GameState gameState, ModifiersQuerying modifiersQuerying, PhysicalCard self);
|
||||
|
||||
public ModifierEffect[] getModifierEffects();
|
||||
|
||||
|
||||
@@ -73,9 +73,9 @@ public class LotroGameMediator {
|
||||
for (Modifier modifier : modifiers) {
|
||||
PhysicalCard source = modifier.getSource();
|
||||
if (source != null)
|
||||
sb.append("<br><b>" + source.getBlueprint().getName() + ":</b> " + modifier.getText(_lotroGame.getGameState(), _lotroGame.getModifiersQuerying()));
|
||||
sb.append("<br><b>" + source.getBlueprint().getName() + ":</b> " + modifier.getText(_lotroGame.getGameState(), _lotroGame.getModifiersQuerying(), card));
|
||||
else
|
||||
sb.append("<br><b><i>System</i>:</b> " + modifier.getText(_lotroGame.getGameState(), _lotroGame.getModifiersQuerying()));
|
||||
sb.append("<br><b><i>System</i>:</b> " + modifier.getText(_lotroGame.getGameState(), _lotroGame.getModifiersQuerying(), card));
|
||||
}
|
||||
if (modifiers.size() == 0)
|
||||
sb.append("<br><i>nothing</i>");
|
||||
|
||||
Reference in New Issue
Block a user