"Blades Drawn"

This commit is contained in:
marcins78@gmail.com
2011-10-06 18:48:39 +00:00
parent af88e1700c
commit f0382f1a34
9 changed files with 76 additions and 11 deletions

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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