Simplifying Modifiers.
This commit is contained in:
@@ -0,0 +1,22 @@
|
||||
package com.gempukku.lotro.cards.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.AbstractModifier;
|
||||
import com.gempukku.lotro.logic.modifiers.ModifiersQuerying;
|
||||
|
||||
public class OverwhelmedByMultiplierModifier extends AbstractModifier {
|
||||
private int _multiplier;
|
||||
|
||||
public OverwhelmedByMultiplierModifier(PhysicalCard source, Filter affectFilter, int multiplier) {
|
||||
super(source, "Cannot be overwhelmed unless his strength is *" + multiplier, affectFilter);
|
||||
_multiplier = multiplier;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isOverwhelmedByStrength(GameState gameState, ModifiersQuerying modifiersLogic, PhysicalCard physicalCard, int strength, int opposingStrength, boolean result) {
|
||||
return (opposingStrength >= strength * _multiplier);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -10,7 +10,7 @@ public class StrengthModifier extends AbstractModifier {
|
||||
private int _modifier;
|
||||
|
||||
public StrengthModifier(PhysicalCard source, Filter affectFilter, int modifier) {
|
||||
super(source, "Strength +" + modifier, affectFilter);
|
||||
super(source, "Strength " + ((modifier < 0) ? modifier : ("+" + modifier)), affectFilter);
|
||||
_modifier = modifier;
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,23 @@
|
||||
package com.gempukku.lotro.cards.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.AbstractModifier;
|
||||
import com.gempukku.lotro.logic.modifiers.ModifiersQuerying;
|
||||
|
||||
public class VitalityModifier extends AbstractModifier {
|
||||
private int _modifier;
|
||||
|
||||
public VitalityModifier(PhysicalCard source, Filter affectFilter, int modifier) {
|
||||
super(source, "Vitality " + ((modifier < 0) ? modifier : ("+" + modifier)), affectFilter);
|
||||
_modifier = modifier;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getVitality(GameState gameState, ModifiersQuerying modifiersQuerying, PhysicalCard physicalCard, int result) {
|
||||
if (affectsCard(gameState, modifiersQuerying, physicalCard))
|
||||
return result + _modifier;
|
||||
return result;
|
||||
}
|
||||
}
|
||||
@@ -4,6 +4,8 @@ import com.gempukku.lotro.cards.AbstractLotroCardBlueprint;
|
||||
import com.gempukku.lotro.cards.effects.AddBurdenEffect;
|
||||
import com.gempukku.lotro.cards.effects.AddUntilStartOfPhaseActionProxyEffect;
|
||||
import com.gempukku.lotro.cards.effects.CancelEffect;
|
||||
import com.gempukku.lotro.cards.modifiers.StrengthModifier;
|
||||
import com.gempukku.lotro.cards.modifiers.VitalityModifier;
|
||||
import com.gempukku.lotro.common.CardType;
|
||||
import com.gempukku.lotro.common.Keyword;
|
||||
import com.gempukku.lotro.common.Phase;
|
||||
@@ -11,12 +13,11 @@ import com.gempukku.lotro.common.Side;
|
||||
import com.gempukku.lotro.filters.Filters;
|
||||
import com.gempukku.lotro.game.AbstractActionProxy;
|
||||
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.CostToEffectAction;
|
||||
import com.gempukku.lotro.logic.modifiers.AbstractModifier;
|
||||
import com.gempukku.lotro.logic.modifiers.CompositeModifier;
|
||||
import com.gempukku.lotro.logic.modifiers.KeywordModifier;
|
||||
import com.gempukku.lotro.logic.modifiers.Modifier;
|
||||
import com.gempukku.lotro.logic.modifiers.ModifiersQuerying;
|
||||
import com.gempukku.lotro.logic.timing.Action;
|
||||
import com.gempukku.lotro.logic.timing.Effect;
|
||||
import com.gempukku.lotro.logic.timing.EffectResult;
|
||||
@@ -40,22 +41,13 @@ public class Card1_001 extends AbstractLotroCardBlueprint {
|
||||
|
||||
@Override
|
||||
public Modifier getAlwaysOnEffect(PhysicalCard self) {
|
||||
return new AbstractModifier(self, "Adds +1 Str and +1 Vit, bearer is Ring-Bound and Ring-Bearer", Filters.sameCard(self.getAttachedTo())) {
|
||||
@Override
|
||||
public boolean hasKeyword(GameState gameState, ModifiersQuerying modifiersQuerying, PhysicalCard physicalCard, Keyword keyword, boolean result) {
|
||||
return (result || (keyword == Keyword.RING_BOUND || keyword == Keyword.RING_BEARER));
|
||||
}
|
||||
List<Modifier> modifiers = new LinkedList<Modifier>();
|
||||
modifiers.add(new StrengthModifier(null, null, 1));
|
||||
modifiers.add(new VitalityModifier(null, null, 1));
|
||||
modifiers.add(new KeywordModifier(null, null, Keyword.RING_BEARER));
|
||||
modifiers.add(new KeywordModifier(null, null, Keyword.RING_BOUND));
|
||||
|
||||
@Override
|
||||
public int getStrength(GameState gameState, ModifiersQuerying modifiersQuerying, PhysicalCard physicalCard, int result) {
|
||||
return result + 1;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getVitality(GameState gameState, ModifiersQuerying modifiersQuerying, PhysicalCard physicalCard, int result) {
|
||||
return result + 1;
|
||||
}
|
||||
};
|
||||
return new CompositeModifier(self, Filters.sameCard(self.getAttachedTo()), modifiers);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -4,6 +4,7 @@ import com.gempukku.lotro.cards.AbstractLotroCardBlueprint;
|
||||
import com.gempukku.lotro.cards.effects.AddBurdenEffect;
|
||||
import com.gempukku.lotro.cards.effects.AddUntilStartOfPhaseActionProxyEffect;
|
||||
import com.gempukku.lotro.cards.effects.CancelEffect;
|
||||
import com.gempukku.lotro.cards.modifiers.StrengthModifier;
|
||||
import com.gempukku.lotro.common.CardType;
|
||||
import com.gempukku.lotro.common.Keyword;
|
||||
import com.gempukku.lotro.common.Phase;
|
||||
@@ -11,12 +12,11 @@ import com.gempukku.lotro.common.Side;
|
||||
import com.gempukku.lotro.filters.Filters;
|
||||
import com.gempukku.lotro.game.AbstractActionProxy;
|
||||
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.CostToEffectAction;
|
||||
import com.gempukku.lotro.logic.modifiers.AbstractModifier;
|
||||
import com.gempukku.lotro.logic.modifiers.CompositeModifier;
|
||||
import com.gempukku.lotro.logic.modifiers.KeywordModifier;
|
||||
import com.gempukku.lotro.logic.modifiers.Modifier;
|
||||
import com.gempukku.lotro.logic.modifiers.ModifiersQuerying;
|
||||
import com.gempukku.lotro.logic.timing.Action;
|
||||
import com.gempukku.lotro.logic.timing.Effect;
|
||||
import com.gempukku.lotro.logic.timing.EffectResult;
|
||||
@@ -40,17 +40,12 @@ public class Card1_002 extends AbstractLotroCardBlueprint {
|
||||
|
||||
@Override
|
||||
public Modifier getAlwaysOnEffect(PhysicalCard self) {
|
||||
return new AbstractModifier(self, "Adds +1 Str, bearer is Ring-Bound and Ring-Bearer", Filters.sameCard(self.getAttachedTo())) {
|
||||
@Override
|
||||
public boolean hasKeyword(GameState gameState, ModifiersQuerying modifiersQuerying, PhysicalCard physicalCard, Keyword keyword, boolean result) {
|
||||
return (result || (keyword == Keyword.RING_BOUND || keyword == Keyword.RING_BEARER));
|
||||
}
|
||||
List<Modifier> modifiers = new LinkedList<Modifier>();
|
||||
modifiers.add(new StrengthModifier(null, null, 1));
|
||||
modifiers.add(new KeywordModifier(null, null, Keyword.RING_BEARER));
|
||||
modifiers.add(new KeywordModifier(null, null, Keyword.RING_BOUND));
|
||||
|
||||
@Override
|
||||
public int getStrength(GameState gameState, ModifiersQuerying modifiersQuerying, PhysicalCard physicalCard, int result) {
|
||||
return result + 1;
|
||||
}
|
||||
};
|
||||
return new CompositeModifier(self, Filters.sameCard(self.getAttachedTo()), modifiers);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -1,16 +1,14 @@
|
||||
package com.gempukku.lotro.cards.set1.dwarven;
|
||||
|
||||
import com.gempukku.lotro.cards.AbstractAttachableFPPossession;
|
||||
import com.gempukku.lotro.cards.modifiers.OverwhelmedByMultiplierModifier;
|
||||
import com.gempukku.lotro.common.Culture;
|
||||
import com.gempukku.lotro.common.Keyword;
|
||||
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.game.state.LotroGame;
|
||||
import com.gempukku.lotro.logic.modifiers.AbstractModifier;
|
||||
import com.gempukku.lotro.logic.modifiers.Modifier;
|
||||
import com.gempukku.lotro.logic.modifiers.ModifiersQuerying;
|
||||
import com.gempukku.lotro.logic.timing.Action;
|
||||
|
||||
import java.util.LinkedList;
|
||||
@@ -44,11 +42,6 @@ public class Card1_008 extends AbstractAttachableFPPossession {
|
||||
|
||||
@Override
|
||||
public Modifier getAlwaysOnEffect(PhysicalCard self) {
|
||||
return new AbstractModifier(self, "Bearer may not be overwhelmed unless his strength is tripled", Filters.sameCard(self.getAttachedTo())) {
|
||||
@Override
|
||||
public boolean isOverwhelmedByStrength(GameState gameState, ModifiersQuerying modifiersLogic, PhysicalCard physicalCard, int strength, int opposingStrength, boolean result) {
|
||||
return (opposingStrength >= strength * 3);
|
||||
}
|
||||
};
|
||||
return new OverwhelmedByMultiplierModifier(self, Filters.sameCard(self.getAttachedTo()), 3);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,19 +2,19 @@ package com.gempukku.lotro.cards.set1.dwarven;
|
||||
|
||||
import com.gempukku.lotro.cards.AbstractAttachableFPPossession;
|
||||
import com.gempukku.lotro.cards.PlayConditions;
|
||||
import com.gempukku.lotro.cards.modifiers.StrengthModifier;
|
||||
import com.gempukku.lotro.common.Culture;
|
||||
import com.gempukku.lotro.common.Keyword;
|
||||
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.game.state.LotroGame;
|
||||
import com.gempukku.lotro.logic.actions.CostToEffectAction;
|
||||
import com.gempukku.lotro.logic.effects.ChooseActiveCardEffect;
|
||||
import com.gempukku.lotro.logic.effects.WoundEffect;
|
||||
import com.gempukku.lotro.logic.modifiers.AbstractModifier;
|
||||
import com.gempukku.lotro.logic.modifiers.CompositeModifier;
|
||||
import com.gempukku.lotro.logic.modifiers.KeywordModifier;
|
||||
import com.gempukku.lotro.logic.modifiers.Modifier;
|
||||
import com.gempukku.lotro.logic.modifiers.ModifiersQuerying;
|
||||
import com.gempukku.lotro.logic.timing.Action;
|
||||
import com.gempukku.lotro.logic.timing.EffectResult;
|
||||
|
||||
@@ -52,25 +52,10 @@ public class Card1_014 extends AbstractAttachableFPPossession {
|
||||
|
||||
@Override
|
||||
public Modifier getAlwaysOnEffect(PhysicalCard self) {
|
||||
return new AbstractModifier(self, "Strength +2, Damage +1", Filters.sameCard(self.getAttachedTo())) {
|
||||
@Override
|
||||
public int getStrength(GameState gameState, ModifiersQuerying modifiersQuerying, PhysicalCard physicalCard, int result) {
|
||||
return result + 2;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getKeywordCount(GameState gameState, ModifiersQuerying modifiersQuerying, PhysicalCard physicalCard, Keyword keyword, int result) {
|
||||
if (keyword == Keyword.DAMAGE)
|
||||
return result + 1;
|
||||
else
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasKeyword(GameState gameState, ModifiersQuerying modifiersQuerying, PhysicalCard physicalCard, Keyword keyword, boolean result) {
|
||||
return (result || keyword == Keyword.DAMAGE);
|
||||
}
|
||||
};
|
||||
List<Modifier> modifiers = new LinkedList<Modifier>();
|
||||
modifiers.add(new StrengthModifier(null, null, 2));
|
||||
modifiers.add(new KeywordModifier(null, null, Keyword.DAMAGE));
|
||||
return new CompositeModifier(self, Filters.sameCard(self.getAttachedTo()), modifiers);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -2,11 +2,11 @@ package com.gempukku.lotro.cards.set1.dwarven;
|
||||
|
||||
import com.gempukku.lotro.cards.AbstractLotroCardBlueprint;
|
||||
import com.gempukku.lotro.cards.actions.PlayPermanentFromHandAction;
|
||||
import com.gempukku.lotro.cards.modifiers.KeywordModifier;
|
||||
import com.gempukku.lotro.common.*;
|
||||
import com.gempukku.lotro.filters.Filters;
|
||||
import com.gempukku.lotro.game.PhysicalCard;
|
||||
import com.gempukku.lotro.game.state.LotroGame;
|
||||
import com.gempukku.lotro.logic.modifiers.KeywordModifier;
|
||||
import com.gempukku.lotro.logic.modifiers.Modifier;
|
||||
import com.gempukku.lotro.logic.timing.Action;
|
||||
|
||||
|
||||
@@ -1,13 +1,13 @@
|
||||
package com.gempukku.lotro.cards.set1.elven;
|
||||
|
||||
import com.gempukku.lotro.cards.AbstractAttachableFPPossession;
|
||||
import com.gempukku.lotro.cards.modifiers.KeywordModifier;
|
||||
import com.gempukku.lotro.common.Culture;
|
||||
import com.gempukku.lotro.common.Keyword;
|
||||
import com.gempukku.lotro.filters.Filter;
|
||||
import com.gempukku.lotro.filters.Filters;
|
||||
import com.gempukku.lotro.game.PhysicalCard;
|
||||
import com.gempukku.lotro.game.state.LotroGame;
|
||||
import com.gempukku.lotro.logic.modifiers.KeywordModifier;
|
||||
import com.gempukku.lotro.logic.modifiers.Modifier;
|
||||
import com.gempukku.lotro.logic.timing.Action;
|
||||
|
||||
|
||||
@@ -2,7 +2,6 @@ package com.gempukku.lotro.cards.set1.isengard;
|
||||
|
||||
import com.gempukku.lotro.cards.AbstractMinion;
|
||||
import com.gempukku.lotro.cards.effects.AddUntilStartOfPhaseModifierEffect;
|
||||
import com.gempukku.lotro.cards.modifiers.KeywordModifier;
|
||||
import com.gempukku.lotro.common.CardType;
|
||||
import com.gempukku.lotro.common.Culture;
|
||||
import com.gempukku.lotro.common.Keyword;
|
||||
@@ -11,6 +10,7 @@ import com.gempukku.lotro.filters.Filters;
|
||||
import com.gempukku.lotro.game.PhysicalCard;
|
||||
import com.gempukku.lotro.game.state.LotroGame;
|
||||
import com.gempukku.lotro.logic.actions.CostToEffectAction;
|
||||
import com.gempukku.lotro.logic.modifiers.KeywordModifier;
|
||||
import com.gempukku.lotro.logic.timing.Action;
|
||||
|
||||
import java.util.LinkedList;
|
||||
|
||||
@@ -8,6 +8,8 @@ public enum Keyword {
|
||||
|
||||
RING_BOUND, RING_BEARER,
|
||||
|
||||
ROAMING,
|
||||
|
||||
WEATHER, TALE,
|
||||
|
||||
RIVER, PLAINS, UNDERGROUND,
|
||||
|
||||
@@ -0,0 +1,133 @@
|
||||
package com.gempukku.lotro.logic.modifiers;
|
||||
|
||||
import com.gempukku.lotro.common.Keyword;
|
||||
import com.gempukku.lotro.common.Side;
|
||||
import com.gempukku.lotro.filters.Filter;
|
||||
import com.gempukku.lotro.game.PhysicalCard;
|
||||
import com.gempukku.lotro.game.state.GameState;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class CompositeModifier implements Modifier {
|
||||
private PhysicalCard _source;
|
||||
private Filter _affectFilter;
|
||||
private List<Modifier> _modifiers;
|
||||
|
||||
public CompositeModifier(PhysicalCard source, Filter affectFilter, List<Modifier> modifiers) {
|
||||
_source = source;
|
||||
_affectFilter = affectFilter;
|
||||
_modifiers = modifiers;
|
||||
}
|
||||
|
||||
@Override
|
||||
public PhysicalCard getSource() {
|
||||
return _source;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getText() {
|
||||
StringBuilder sb = new StringBuilder();
|
||||
boolean first = true;
|
||||
for (Modifier modifier : _modifiers) {
|
||||
if (!first)
|
||||
sb.append(", ");
|
||||
sb.append(modifier.getText());
|
||||
first = false;
|
||||
}
|
||||
|
||||
return sb.toString();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean affectsCard(GameState gameState, ModifiersQuerying modifiersQuerying, PhysicalCard physicalCard) {
|
||||
return _affectFilter.accepts(gameState, modifiersQuerying, physicalCard);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasKeyword(GameState gameState, ModifiersQuerying modifiersQuerying, PhysicalCard physicalCard, Keyword keyword, boolean result) {
|
||||
for (Modifier modifier : _modifiers)
|
||||
result = modifier.hasKeyword(gameState, modifiersQuerying, physicalCard, keyword, result);
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getKeywordCount(GameState gameState, ModifiersQuerying modifiersQuerying, PhysicalCard physicalCard, Keyword keyword, int result) {
|
||||
for (Modifier modifier : _modifiers)
|
||||
result = modifier.getKeywordCount(gameState, modifiersQuerying, physicalCard, keyword, result);
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getStrength(GameState gameState, ModifiersQuerying modifiersQuerying, PhysicalCard physicalCard, int result) {
|
||||
for (Modifier modifier : _modifiers)
|
||||
result = modifier.getStrength(gameState, modifiersQuerying, physicalCard, result);
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getVitality(GameState gameState, ModifiersQuerying modifiersQuerying, PhysicalCard physicalCard, int result) {
|
||||
for (Modifier modifier : _modifiers)
|
||||
result = modifier.getVitality(gameState, modifiersQuerying, physicalCard, result);
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getTwilightCost(GameState gameState, ModifiersQuerying modifiersQuerying, PhysicalCard physicalCard, int result) {
|
||||
for (Modifier modifier : _modifiers)
|
||||
result = modifier.getTwilightCost(gameState, modifiersQuerying, physicalCard, result);
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getPlayOnTwilightCost(GameState gameState, ModifiersQuerying modifiersQuerying, PhysicalCard physicalCard, PhysicalCard target, int result) {
|
||||
for (Modifier modifier : _modifiers)
|
||||
result = modifier.getPlayOnTwilightCost(gameState, modifiersQuerying, physicalCard, target, result);
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isOverwhelmedByStrength(GameState gameState, ModifiersQuerying modifiersQuerying, PhysicalCard physicalCard, int strength, int opposingStrength, boolean result) {
|
||||
for (Modifier modifier : _modifiers)
|
||||
result = modifier.isOverwhelmedByStrength(gameState, modifiersQuerying, physicalCard, strength, opposingStrength, result);
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canTakeWound(GameState gameState, ModifiersQuerying modifiersQuerying, PhysicalCard physicalCard, boolean result) {
|
||||
for (Modifier modifier : _modifiers)
|
||||
result = modifier.canTakeWound(gameState, modifiersQuerying, physicalCard, result);
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isAllyOnCurrentSite(GameState gameState, ModifiersQuerying modifiersQuerying, PhysicalCard card, boolean allyOnCurrentSite) {
|
||||
for (Modifier modifier : _modifiers)
|
||||
allyOnCurrentSite = modifier.isAllyOnCurrentSite(gameState, modifiersQuerying, card, allyOnCurrentSite);
|
||||
|
||||
return allyOnCurrentSite;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getArcheryTotal(GameState gameState, ModifiersQuerying modifiersQuerying, Side side, int result) {
|
||||
for (Modifier modifier : _modifiers)
|
||||
result = modifier.getArcheryTotal(gameState, modifiersQuerying, side, result);
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getMoveLimit(GameState gameState, ModifiersQuerying modifiersQuerying, int result) {
|
||||
for (Modifier modifier : _modifiers)
|
||||
result = modifier.getMoveLimit(gameState, modifiersQuerying, result);
|
||||
|
||||
return result;
|
||||
}
|
||||
}
|
||||
@@ -1,11 +1,9 @@
|
||||
package com.gempukku.lotro.cards.modifiers;
|
||||
package com.gempukku.lotro.logic.modifiers;
|
||||
|
||||
import com.gempukku.lotro.common.Keyword;
|
||||
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.AbstractModifier;
|
||||
import com.gempukku.lotro.logic.modifiers.ModifiersQuerying;
|
||||
|
||||
public class KeywordModifier extends AbstractModifier {
|
||||
private Keyword _keyword;
|
||||
@@ -0,0 +1,19 @@
|
||||
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;
|
||||
|
||||
public class TwilightCostModifier extends AbstractModifier {
|
||||
private int _twilightCostModifier;
|
||||
|
||||
public TwilightCostModifier(PhysicalCard source, Filter affectFilter, int twilightCostModifier) {
|
||||
super(source, "Twilight cost " + ((twilightCostModifier < 0) ? twilightCostModifier : ("+" + twilightCostModifier)), affectFilter);
|
||||
_twilightCostModifier = twilightCostModifier;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getTwilightCost(GameState gameState, ModifiersQuerying modifiersLogic, PhysicalCard physicalCard, int result) {
|
||||
return result + _twilightCostModifier;
|
||||
}
|
||||
}
|
||||
@@ -1,13 +1,15 @@
|
||||
package com.gempukku.lotro.logic.timing.rules;
|
||||
|
||||
import com.gempukku.lotro.common.CardType;
|
||||
import com.gempukku.lotro.common.Keyword;
|
||||
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.AbstractModifier;
|
||||
import com.gempukku.lotro.logic.modifiers.ModifiersLogic;
|
||||
import com.gempukku.lotro.logic.modifiers.ModifiersQuerying;
|
||||
import com.gempukku.lotro.logic.modifiers.*;
|
||||
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
|
||||
public class RoamingRule {
|
||||
private ModifiersLogic _modifiersLogic;
|
||||
@@ -17,18 +19,18 @@ public class RoamingRule {
|
||||
}
|
||||
|
||||
public void applyRule() {
|
||||
Filter roamingFilter = Filters.and(Filters.type(CardType.MINION), new Filter() {
|
||||
@Override
|
||||
public boolean accepts(GameState gameState, ModifiersQuerying modifiersQuerying, PhysicalCard physicalCard) {
|
||||
return (physicalCard.getBlueprint().getSiteNumber() > gameState.getCurrentSiteNumber());
|
||||
}
|
||||
});
|
||||
|
||||
List<Modifier> modifiers = new LinkedList<Modifier>();
|
||||
modifiers.add(new KeywordModifier(null, null, Keyword.ROAMING));
|
||||
modifiers.add(new TwilightCostModifier(null, null, 2));
|
||||
|
||||
_modifiersLogic.addAlwaysOnModifier(
|
||||
new AbstractModifier(null, "Roaming - +2 Twilight cost", Filters.and(Filters.type(CardType.MINION), new Filter() {
|
||||
@Override
|
||||
public boolean accepts(GameState gameState, ModifiersQuerying modifiersQuerying, PhysicalCard physicalCard) {
|
||||
return (physicalCard.getBlueprint().getSiteNumber() > gameState.getCurrentSiteNumber());
|
||||
}
|
||||
})) {
|
||||
@Override
|
||||
public int getTwilightCost(GameState gameState, ModifiersQuerying modifiersLogic, PhysicalCard physicalCard, int result) {
|
||||
return 2 + result;
|
||||
}
|
||||
}
|
||||
);
|
||||
new CompositeModifier(null, roamingFilter, modifiers));
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user