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;
|
private int _modifier;
|
||||||
|
|
||||||
public StrengthModifier(PhysicalCard source, Filter affectFilter, 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;
|
_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.AddBurdenEffect;
|
||||||
import com.gempukku.lotro.cards.effects.AddUntilStartOfPhaseActionProxyEffect;
|
import com.gempukku.lotro.cards.effects.AddUntilStartOfPhaseActionProxyEffect;
|
||||||
import com.gempukku.lotro.cards.effects.CancelEffect;
|
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.CardType;
|
||||||
import com.gempukku.lotro.common.Keyword;
|
import com.gempukku.lotro.common.Keyword;
|
||||||
import com.gempukku.lotro.common.Phase;
|
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.filters.Filters;
|
||||||
import com.gempukku.lotro.game.AbstractActionProxy;
|
import com.gempukku.lotro.game.AbstractActionProxy;
|
||||||
import com.gempukku.lotro.game.PhysicalCard;
|
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.LotroGame;
|
||||||
import com.gempukku.lotro.logic.actions.CostToEffectAction;
|
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.Modifier;
|
||||||
import com.gempukku.lotro.logic.modifiers.ModifiersQuerying;
|
|
||||||
import com.gempukku.lotro.logic.timing.Action;
|
import com.gempukku.lotro.logic.timing.Action;
|
||||||
import com.gempukku.lotro.logic.timing.Effect;
|
import com.gempukku.lotro.logic.timing.Effect;
|
||||||
import com.gempukku.lotro.logic.timing.EffectResult;
|
import com.gempukku.lotro.logic.timing.EffectResult;
|
||||||
@@ -40,22 +41,13 @@ public class Card1_001 extends AbstractLotroCardBlueprint {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Modifier getAlwaysOnEffect(PhysicalCard self) {
|
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())) {
|
List<Modifier> modifiers = new LinkedList<Modifier>();
|
||||||
@Override
|
modifiers.add(new StrengthModifier(null, null, 1));
|
||||||
public boolean hasKeyword(GameState gameState, ModifiersQuerying modifiersQuerying, PhysicalCard physicalCard, Keyword keyword, boolean result) {
|
modifiers.add(new VitalityModifier(null, null, 1));
|
||||||
return (result || (keyword == Keyword.RING_BOUND || keyword == Keyword.RING_BEARER));
|
modifiers.add(new KeywordModifier(null, null, Keyword.RING_BEARER));
|
||||||
}
|
modifiers.add(new KeywordModifier(null, null, Keyword.RING_BOUND));
|
||||||
|
|
||||||
@Override
|
return new CompositeModifier(self, Filters.sameCard(self.getAttachedTo()), modifiers);
|
||||||
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;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ import com.gempukku.lotro.cards.AbstractLotroCardBlueprint;
|
|||||||
import com.gempukku.lotro.cards.effects.AddBurdenEffect;
|
import com.gempukku.lotro.cards.effects.AddBurdenEffect;
|
||||||
import com.gempukku.lotro.cards.effects.AddUntilStartOfPhaseActionProxyEffect;
|
import com.gempukku.lotro.cards.effects.AddUntilStartOfPhaseActionProxyEffect;
|
||||||
import com.gempukku.lotro.cards.effects.CancelEffect;
|
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.CardType;
|
||||||
import com.gempukku.lotro.common.Keyword;
|
import com.gempukku.lotro.common.Keyword;
|
||||||
import com.gempukku.lotro.common.Phase;
|
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.filters.Filters;
|
||||||
import com.gempukku.lotro.game.AbstractActionProxy;
|
import com.gempukku.lotro.game.AbstractActionProxy;
|
||||||
import com.gempukku.lotro.game.PhysicalCard;
|
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.LotroGame;
|
||||||
import com.gempukku.lotro.logic.actions.CostToEffectAction;
|
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.Modifier;
|
||||||
import com.gempukku.lotro.logic.modifiers.ModifiersQuerying;
|
|
||||||
import com.gempukku.lotro.logic.timing.Action;
|
import com.gempukku.lotro.logic.timing.Action;
|
||||||
import com.gempukku.lotro.logic.timing.Effect;
|
import com.gempukku.lotro.logic.timing.Effect;
|
||||||
import com.gempukku.lotro.logic.timing.EffectResult;
|
import com.gempukku.lotro.logic.timing.EffectResult;
|
||||||
@@ -40,17 +40,12 @@ public class Card1_002 extends AbstractLotroCardBlueprint {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Modifier getAlwaysOnEffect(PhysicalCard self) {
|
public Modifier getAlwaysOnEffect(PhysicalCard self) {
|
||||||
return new AbstractModifier(self, "Adds +1 Str, bearer is Ring-Bound and Ring-Bearer", Filters.sameCard(self.getAttachedTo())) {
|
List<Modifier> modifiers = new LinkedList<Modifier>();
|
||||||
@Override
|
modifiers.add(new StrengthModifier(null, null, 1));
|
||||||
public boolean hasKeyword(GameState gameState, ModifiersQuerying modifiersQuerying, PhysicalCard physicalCard, Keyword keyword, boolean result) {
|
modifiers.add(new KeywordModifier(null, null, Keyword.RING_BEARER));
|
||||||
return (result || (keyword == Keyword.RING_BOUND || keyword == Keyword.RING_BEARER));
|
modifiers.add(new KeywordModifier(null, null, Keyword.RING_BOUND));
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
return new CompositeModifier(self, Filters.sameCard(self.getAttachedTo()), modifiers);
|
||||||
public int getStrength(GameState gameState, ModifiersQuerying modifiersQuerying, PhysicalCard physicalCard, int result) {
|
|
||||||
return result + 1;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -1,16 +1,14 @@
|
|||||||
package com.gempukku.lotro.cards.set1.dwarven;
|
package com.gempukku.lotro.cards.set1.dwarven;
|
||||||
|
|
||||||
import com.gempukku.lotro.cards.AbstractAttachableFPPossession;
|
import com.gempukku.lotro.cards.AbstractAttachableFPPossession;
|
||||||
|
import com.gempukku.lotro.cards.modifiers.OverwhelmedByMultiplierModifier;
|
||||||
import com.gempukku.lotro.common.Culture;
|
import com.gempukku.lotro.common.Culture;
|
||||||
import com.gempukku.lotro.common.Keyword;
|
import com.gempukku.lotro.common.Keyword;
|
||||||
import com.gempukku.lotro.filters.Filter;
|
import com.gempukku.lotro.filters.Filter;
|
||||||
import com.gempukku.lotro.filters.Filters;
|
import com.gempukku.lotro.filters.Filters;
|
||||||
import com.gempukku.lotro.game.PhysicalCard;
|
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.LotroGame;
|
||||||
import com.gempukku.lotro.logic.modifiers.AbstractModifier;
|
|
||||||
import com.gempukku.lotro.logic.modifiers.Modifier;
|
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.Action;
|
||||||
|
|
||||||
import java.util.LinkedList;
|
import java.util.LinkedList;
|
||||||
@@ -44,11 +42,6 @@ public class Card1_008 extends AbstractAttachableFPPossession {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Modifier getAlwaysOnEffect(PhysicalCard self) {
|
public Modifier getAlwaysOnEffect(PhysicalCard self) {
|
||||||
return new AbstractModifier(self, "Bearer may not be overwhelmed unless his strength is tripled", Filters.sameCard(self.getAttachedTo())) {
|
return new OverwhelmedByMultiplierModifier(self, Filters.sameCard(self.getAttachedTo()), 3);
|
||||||
@Override
|
|
||||||
public boolean isOverwhelmedByStrength(GameState gameState, ModifiersQuerying modifiersLogic, PhysicalCard physicalCard, int strength, int opposingStrength, boolean result) {
|
|
||||||
return (opposingStrength >= strength * 3);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,19 +2,19 @@ package com.gempukku.lotro.cards.set1.dwarven;
|
|||||||
|
|
||||||
import com.gempukku.lotro.cards.AbstractAttachableFPPossession;
|
import com.gempukku.lotro.cards.AbstractAttachableFPPossession;
|
||||||
import com.gempukku.lotro.cards.PlayConditions;
|
import com.gempukku.lotro.cards.PlayConditions;
|
||||||
|
import com.gempukku.lotro.cards.modifiers.StrengthModifier;
|
||||||
import com.gempukku.lotro.common.Culture;
|
import com.gempukku.lotro.common.Culture;
|
||||||
import com.gempukku.lotro.common.Keyword;
|
import com.gempukku.lotro.common.Keyword;
|
||||||
import com.gempukku.lotro.filters.Filter;
|
import com.gempukku.lotro.filters.Filter;
|
||||||
import com.gempukku.lotro.filters.Filters;
|
import com.gempukku.lotro.filters.Filters;
|
||||||
import com.gempukku.lotro.game.PhysicalCard;
|
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.LotroGame;
|
||||||
import com.gempukku.lotro.logic.actions.CostToEffectAction;
|
import com.gempukku.lotro.logic.actions.CostToEffectAction;
|
||||||
import com.gempukku.lotro.logic.effects.ChooseActiveCardEffect;
|
import com.gempukku.lotro.logic.effects.ChooseActiveCardEffect;
|
||||||
import com.gempukku.lotro.logic.effects.WoundEffect;
|
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.Modifier;
|
||||||
import com.gempukku.lotro.logic.modifiers.ModifiersQuerying;
|
|
||||||
import com.gempukku.lotro.logic.timing.Action;
|
import com.gempukku.lotro.logic.timing.Action;
|
||||||
import com.gempukku.lotro.logic.timing.EffectResult;
|
import com.gempukku.lotro.logic.timing.EffectResult;
|
||||||
|
|
||||||
@@ -52,25 +52,10 @@ public class Card1_014 extends AbstractAttachableFPPossession {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Modifier getAlwaysOnEffect(PhysicalCard self) {
|
public Modifier getAlwaysOnEffect(PhysicalCard self) {
|
||||||
return new AbstractModifier(self, "Strength +2, Damage +1", Filters.sameCard(self.getAttachedTo())) {
|
List<Modifier> modifiers = new LinkedList<Modifier>();
|
||||||
@Override
|
modifiers.add(new StrengthModifier(null, null, 2));
|
||||||
public int getStrength(GameState gameState, ModifiersQuerying modifiersQuerying, PhysicalCard physicalCard, int result) {
|
modifiers.add(new KeywordModifier(null, null, Keyword.DAMAGE));
|
||||||
return result + 2;
|
return new CompositeModifier(self, Filters.sameCard(self.getAttachedTo()), modifiers);
|
||||||
}
|
|
||||||
|
|
||||||
@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);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -2,11 +2,11 @@ package com.gempukku.lotro.cards.set1.dwarven;
|
|||||||
|
|
||||||
import com.gempukku.lotro.cards.AbstractLotroCardBlueprint;
|
import com.gempukku.lotro.cards.AbstractLotroCardBlueprint;
|
||||||
import com.gempukku.lotro.cards.actions.PlayPermanentFromHandAction;
|
import com.gempukku.lotro.cards.actions.PlayPermanentFromHandAction;
|
||||||
import com.gempukku.lotro.cards.modifiers.KeywordModifier;
|
|
||||||
import com.gempukku.lotro.common.*;
|
import com.gempukku.lotro.common.*;
|
||||||
import com.gempukku.lotro.filters.Filters;
|
import com.gempukku.lotro.filters.Filters;
|
||||||
import com.gempukku.lotro.game.PhysicalCard;
|
import com.gempukku.lotro.game.PhysicalCard;
|
||||||
import com.gempukku.lotro.game.state.LotroGame;
|
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.modifiers.Modifier;
|
||||||
import com.gempukku.lotro.logic.timing.Action;
|
import com.gempukku.lotro.logic.timing.Action;
|
||||||
|
|
||||||
|
|||||||
@@ -1,13 +1,13 @@
|
|||||||
package com.gempukku.lotro.cards.set1.elven;
|
package com.gempukku.lotro.cards.set1.elven;
|
||||||
|
|
||||||
import com.gempukku.lotro.cards.AbstractAttachableFPPossession;
|
import com.gempukku.lotro.cards.AbstractAttachableFPPossession;
|
||||||
import com.gempukku.lotro.cards.modifiers.KeywordModifier;
|
|
||||||
import com.gempukku.lotro.common.Culture;
|
import com.gempukku.lotro.common.Culture;
|
||||||
import com.gempukku.lotro.common.Keyword;
|
import com.gempukku.lotro.common.Keyword;
|
||||||
import com.gempukku.lotro.filters.Filter;
|
import com.gempukku.lotro.filters.Filter;
|
||||||
import com.gempukku.lotro.filters.Filters;
|
import com.gempukku.lotro.filters.Filters;
|
||||||
import com.gempukku.lotro.game.PhysicalCard;
|
import com.gempukku.lotro.game.PhysicalCard;
|
||||||
import com.gempukku.lotro.game.state.LotroGame;
|
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.modifiers.Modifier;
|
||||||
import com.gempukku.lotro.logic.timing.Action;
|
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.AbstractMinion;
|
||||||
import com.gempukku.lotro.cards.effects.AddUntilStartOfPhaseModifierEffect;
|
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.CardType;
|
||||||
import com.gempukku.lotro.common.Culture;
|
import com.gempukku.lotro.common.Culture;
|
||||||
import com.gempukku.lotro.common.Keyword;
|
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.PhysicalCard;
|
||||||
import com.gempukku.lotro.game.state.LotroGame;
|
import com.gempukku.lotro.game.state.LotroGame;
|
||||||
import com.gempukku.lotro.logic.actions.CostToEffectAction;
|
import com.gempukku.lotro.logic.actions.CostToEffectAction;
|
||||||
|
import com.gempukku.lotro.logic.modifiers.KeywordModifier;
|
||||||
import com.gempukku.lotro.logic.timing.Action;
|
import com.gempukku.lotro.logic.timing.Action;
|
||||||
|
|
||||||
import java.util.LinkedList;
|
import java.util.LinkedList;
|
||||||
|
|||||||
@@ -8,6 +8,8 @@ public enum Keyword {
|
|||||||
|
|
||||||
RING_BOUND, RING_BEARER,
|
RING_BOUND, RING_BEARER,
|
||||||
|
|
||||||
|
ROAMING,
|
||||||
|
|
||||||
WEATHER, TALE,
|
WEATHER, TALE,
|
||||||
|
|
||||||
RIVER, PLAINS, UNDERGROUND,
|
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.common.Keyword;
|
||||||
import com.gempukku.lotro.filters.Filter;
|
import com.gempukku.lotro.filters.Filter;
|
||||||
import com.gempukku.lotro.game.PhysicalCard;
|
import com.gempukku.lotro.game.PhysicalCard;
|
||||||
import com.gempukku.lotro.game.state.GameState;
|
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 {
|
public class KeywordModifier extends AbstractModifier {
|
||||||
private Keyword _keyword;
|
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;
|
package com.gempukku.lotro.logic.timing.rules;
|
||||||
|
|
||||||
import com.gempukku.lotro.common.CardType;
|
import com.gempukku.lotro.common.CardType;
|
||||||
|
import com.gempukku.lotro.common.Keyword;
|
||||||
import com.gempukku.lotro.filters.Filter;
|
import com.gempukku.lotro.filters.Filter;
|
||||||
import com.gempukku.lotro.filters.Filters;
|
import com.gempukku.lotro.filters.Filters;
|
||||||
import com.gempukku.lotro.game.PhysicalCard;
|
import com.gempukku.lotro.game.PhysicalCard;
|
||||||
import com.gempukku.lotro.game.state.GameState;
|
import com.gempukku.lotro.game.state.GameState;
|
||||||
import com.gempukku.lotro.logic.modifiers.AbstractModifier;
|
import com.gempukku.lotro.logic.modifiers.*;
|
||||||
import com.gempukku.lotro.logic.modifiers.ModifiersLogic;
|
|
||||||
import com.gempukku.lotro.logic.modifiers.ModifiersQuerying;
|
import java.util.LinkedList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
public class RoamingRule {
|
public class RoamingRule {
|
||||||
private ModifiersLogic _modifiersLogic;
|
private ModifiersLogic _modifiersLogic;
|
||||||
@@ -17,18 +19,18 @@ public class RoamingRule {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void applyRule() {
|
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(
|
_modifiersLogic.addAlwaysOnModifier(
|
||||||
new AbstractModifier(null, "Roaming - +2 Twilight cost", Filters.and(Filters.type(CardType.MINION), new Filter() {
|
new CompositeModifier(null, roamingFilter, modifiers));
|
||||||
@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;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user