From fb0066a26360e1d21f77fd3df8e595cd0a3fbb83 Mon Sep 17 00:00:00 2001 From: "marcins78@gmail.com" Date: Fri, 7 Oct 2011 08:36:28 +0000 Subject: [PATCH] "Legolas" --- .../cards/modifiers/StrengthModifier.java | 4 +- .../evaluator/CountSpottableEvaluator.java | 1 + .../lotro/cards/set4/dwarven/Card4_052.java | 2 +- .../lotro/cards/set4/elven/Card4_060.java | 2 +- .../lotro/cards/set4/elven/Card4_069.java | 2 +- .../lotro/cards/set4/elven/Card4_073.java | 46 +++++++++++++++++++ .../logic/modifiers/TwilightCostModifier.java | 23 ++++++++-- .../evaluator/ConstantEvaluator.java | 2 +- .../logic}/modifiers/evaluator/Evaluator.java | 2 +- 9 files changed, 73 insertions(+), 11 deletions(-) create mode 100644 gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/elven/Card4_073.java rename gemp-lotr/{gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards => gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic}/modifiers/evaluator/ConstantEvaluator.java (89%) rename gemp-lotr/{gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards => gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic}/modifiers/evaluator/Evaluator.java (84%) diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/modifiers/StrengthModifier.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/modifiers/StrengthModifier.java index c336a0d96..8d2bfc6ab 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/modifiers/StrengthModifier.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/modifiers/StrengthModifier.java @@ -1,7 +1,5 @@ package com.gempukku.lotro.cards.modifiers; -import com.gempukku.lotro.cards.modifiers.evaluator.ConstantEvaluator; -import com.gempukku.lotro.cards.modifiers.evaluator.Evaluator; import com.gempukku.lotro.filters.Filter; import com.gempukku.lotro.game.PhysicalCard; import com.gempukku.lotro.game.state.GameState; @@ -9,6 +7,8 @@ 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.ConstantEvaluator; +import com.gempukku.lotro.logic.modifiers.evaluator.Evaluator; public class StrengthModifier extends AbstractModifier { private Evaluator _evaluator; diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/modifiers/evaluator/CountSpottableEvaluator.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/modifiers/evaluator/CountSpottableEvaluator.java index 0bd30faf9..9bc9764d3 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/modifiers/evaluator/CountSpottableEvaluator.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/modifiers/evaluator/CountSpottableEvaluator.java @@ -5,6 +5,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.modifiers.ModifiersQuerying; +import com.gempukku.lotro.logic.modifiers.evaluator.Evaluator; public class CountSpottableEvaluator implements Evaluator { private Filter _filter; diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/dwarven/Card4_052.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/dwarven/Card4_052.java index a372998d9..79cc53f11 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/dwarven/Card4_052.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/dwarven/Card4_052.java @@ -4,7 +4,6 @@ import com.gempukku.lotro.cards.AbstractPermanent; import com.gempukku.lotro.cards.PlayConditions; import com.gempukku.lotro.cards.effects.AddTokenEffect; 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; @@ -13,6 +12,7 @@ import com.gempukku.lotro.game.state.LotroGame; import com.gempukku.lotro.logic.actions.RequiredTriggerAction; import com.gempukku.lotro.logic.modifiers.Modifier; import com.gempukku.lotro.logic.modifiers.ModifiersQuerying; +import com.gempukku.lotro.logic.modifiers.evaluator.Evaluator; import com.gempukku.lotro.logic.timing.EffectResult; import java.util.Collections; diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/elven/Card4_060.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/elven/Card4_060.java index 34d35f563..a5a0aff31 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/elven/Card4_060.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/elven/Card4_060.java @@ -2,7 +2,6 @@ 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; @@ -12,6 +11,7 @@ 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.modifiers.evaluator.Evaluator; import com.gempukku.lotro.logic.timing.EffectResult; import java.util.Collections; diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/elven/Card4_069.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/elven/Card4_069.java index 7160aaec0..8a23ed83c 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/elven/Card4_069.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/elven/Card4_069.java @@ -4,7 +4,6 @@ import com.gempukku.lotro.cards.AbstractPermanent; import com.gempukku.lotro.cards.PlayConditions; import com.gempukku.lotro.cards.effects.AddTokenEffect; 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; @@ -13,6 +12,7 @@ import com.gempukku.lotro.game.state.LotroGame; import com.gempukku.lotro.logic.actions.RequiredTriggerAction; import com.gempukku.lotro.logic.modifiers.Modifier; import com.gempukku.lotro.logic.modifiers.ModifiersQuerying; +import com.gempukku.lotro.logic.modifiers.evaluator.Evaluator; import com.gempukku.lotro.logic.timing.EffectResult; import java.util.Collections; diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/elven/Card4_073.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/elven/Card4_073.java new file mode 100644 index 000000000..6afc3e933 --- /dev/null +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/elven/Card4_073.java @@ -0,0 +1,46 @@ +package com.gempukku.lotro.cards.set4.elven; + +import com.gempukku.lotro.cards.AbstractCompanion; +import com.gempukku.lotro.cards.modifiers.evaluator.CountSpottableEvaluator; +import com.gempukku.lotro.common.*; +import com.gempukku.lotro.filters.Filters; +import com.gempukku.lotro.game.PhysicalCard; +import com.gempukku.lotro.logic.modifiers.Modifier; +import com.gempukku.lotro.logic.modifiers.TwilightCostModifier; + +import java.util.Collections; +import java.util.List; + +/** + * Set: The Two Towers + * Side: Free + * Culture: Elven + * Twilight Cost: 2 + * Type: Companion • Elf + * Strength: 6 + * Vitality: 3 + * Resistance: 6 + * Signet: Aragorn + * Game Text: Archer. + * The twilight cost of each Shadow event and Shadow condition is +1 for each unbound Hobbit you can spot. + */ +public class Card4_073 extends AbstractCompanion { + public Card4_073() { + super(2, 6, 3, Culture.ELVEN, Race.ELF, Signet.ARAGORN, "Legolas", true); + addKeyword(Keyword.ARCHER); + } + + @Override + public List getAlwaysOnModifiers(PhysicalCard self) { + return Collections.singletonList( + new TwilightCostModifier(self, + Filters.and( + Filters.side(Side.SHADOW), + Filters.or( + Filters.type(CardType.EVENT), + Filters.type(CardType.CONDITION) + ) + ), null, + new CountSpottableEvaluator(Filters.and(Filters.unboundCompanion(), Filters.race(Race.HOBBIT))))); + } +} diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/modifiers/TwilightCostModifier.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/modifiers/TwilightCostModifier.java index 7bccaedb8..9baff3c1e 100644 --- a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/modifiers/TwilightCostModifier.java +++ b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/modifiers/TwilightCostModifier.java @@ -3,21 +3,36 @@ package com.gempukku.lotro.logic.modifiers; import com.gempukku.lotro.filters.Filter; import com.gempukku.lotro.game.PhysicalCard; import com.gempukku.lotro.game.state.GameState; +import com.gempukku.lotro.logic.modifiers.evaluator.ConstantEvaluator; +import com.gempukku.lotro.logic.modifiers.evaluator.Evaluator; public class TwilightCostModifier extends AbstractModifier { - private int _twilightCostModifier; + private Evaluator _evaluator; public TwilightCostModifier(PhysicalCard source, Filter affectFilter, int twilightCostModifier) { this(source, affectFilter, null, twilightCostModifier); } public TwilightCostModifier(PhysicalCard source, Filter affectFilter, Condition condition, int twilightCostModifier) { - super(source, "Twilight cost " + ((twilightCostModifier < 0) ? twilightCostModifier : ("+" + twilightCostModifier)), affectFilter, condition, new ModifierEffect[]{ModifierEffect.TWILIGHT_COST_MODIFIER}); - _twilightCostModifier = twilightCostModifier; + this(source, affectFilter, condition, new ConstantEvaluator(twilightCostModifier)); + } + + public TwilightCostModifier(PhysicalCard source, Filter affectFilter, Condition condition, Evaluator evaluator) { + super(source, null, affectFilter, condition, new ModifierEffect[]{ModifierEffect.TWILIGHT_COST_MODIFIER}); + _evaluator = evaluator; + } + + @Override + public String getText(GameState gameState, ModifiersQuerying modifiersQuerying, PhysicalCard self) { + final int value = _evaluator.evaluateExpression(gameState, modifiersQuerying, self); + if (value >= 0) + return "Twilight cost +" + value; + else + return "Twilight cost " + value; } @Override public int getTwilightCost(GameState gameState, ModifiersQuerying modifiersLogic, PhysicalCard physicalCard, int result) { - return result + _twilightCostModifier; + return result + _evaluator.evaluateExpression(gameState, modifiersLogic, physicalCard); } } diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/modifiers/evaluator/ConstantEvaluator.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/modifiers/evaluator/ConstantEvaluator.java similarity index 89% rename from gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/modifiers/evaluator/ConstantEvaluator.java rename to gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/modifiers/evaluator/ConstantEvaluator.java index 85cbb5554..4c674c034 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/modifiers/evaluator/ConstantEvaluator.java +++ b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/modifiers/evaluator/ConstantEvaluator.java @@ -1,4 +1,4 @@ -package com.gempukku.lotro.cards.modifiers.evaluator; +package com.gempukku.lotro.logic.modifiers.evaluator; import com.gempukku.lotro.game.PhysicalCard; import com.gempukku.lotro.game.state.GameState; diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/modifiers/evaluator/Evaluator.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/modifiers/evaluator/Evaluator.java similarity index 84% rename from gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/modifiers/evaluator/Evaluator.java rename to gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/modifiers/evaluator/Evaluator.java index 711ad44d0..9fc0bcfcf 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/modifiers/evaluator/Evaluator.java +++ b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/modifiers/evaluator/Evaluator.java @@ -1,4 +1,4 @@ -package com.gempukku.lotro.cards.modifiers.evaluator; +package com.gempukku.lotro.logic.modifiers.evaluator; import com.gempukku.lotro.game.PhysicalCard; import com.gempukku.lotro.game.state.GameState;