"Redhorn Pass"
This commit is contained in:
@@ -331,7 +331,8 @@ public class PlayConditions {
|
||||
}
|
||||
|
||||
public static boolean canRemoveAnyCultureTokens(LotroGame game, int count, Filterable... fromFilters) {
|
||||
return Filters.canSpot(game.getGameState(), game.getModifiersQuerying(), Filters.and(fromFilters, Filters.hasAnyCultureTokens(count)));
|
||||
return !game.getModifiersQuerying().hasFlagActive(game.getGameState(), ModifierFlag.CANT_TOUCH_CULTURE_TOKENS)
|
||||
&& Filters.canSpot(game.getGameState(), game.getModifiersQuerying(), Filters.and(fromFilters, Filters.hasAnyCultureTokens(count)));
|
||||
}
|
||||
|
||||
public static boolean canRemoveTokens(LotroGame game, PhysicalCard from, Token token) {
|
||||
@@ -339,10 +340,12 @@ public class PlayConditions {
|
||||
}
|
||||
|
||||
public static boolean canRemoveTokens(LotroGame game, PhysicalCard from, Token token, int count) {
|
||||
return game.getGameState().getTokenCount(from, token) >= count;
|
||||
return !game.getModifiersQuerying().hasFlagActive(game.getGameState(), ModifierFlag.CANT_TOUCH_CULTURE_TOKENS)
|
||||
&& game.getGameState().getTokenCount(from, token) >= count;
|
||||
}
|
||||
|
||||
public static boolean canRemoveTokens(LotroGame game, Token token, int count, Filterable... fromFilters) {
|
||||
return Filters.filterActive(game.getGameState(), game.getModifiersQuerying(), Filters.and(fromFilters, Filters.hasToken(token, count))).size() > 0;
|
||||
return !game.getModifiersQuerying().hasFlagActive(game.getGameState(), ModifierFlag.CANT_TOUCH_CULTURE_TOKENS)
|
||||
&& Filters.filterActive(game.getGameState(), game.getModifiersQuerying(), Filters.and(fromFilters, Filters.hasToken(token, count))).size() > 0;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,6 +4,7 @@ import com.gempukku.lotro.common.Token;
|
||||
import com.gempukku.lotro.game.PhysicalCard;
|
||||
import com.gempukku.lotro.game.state.LotroGame;
|
||||
import com.gempukku.lotro.logic.GameUtils;
|
||||
import com.gempukku.lotro.logic.modifiers.ModifierFlag;
|
||||
import com.gempukku.lotro.logic.timing.AbstractEffect;
|
||||
import com.gempukku.lotro.logic.timing.Effect;
|
||||
|
||||
@@ -26,7 +27,7 @@ public class AddTokenEffect extends AbstractEffect {
|
||||
|
||||
@Override
|
||||
public boolean isPlayableInFull(LotroGame game) {
|
||||
return _target.getZone().isInPlay();
|
||||
return _target.getZone().isInPlay() && !game.getModifiersQuerying().hasFlagActive(game.getGameState(), ModifierFlag.CANT_TOUCH_CULTURE_TOKENS);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -1,10 +1,14 @@
|
||||
package com.gempukku.lotro.cards.effects;
|
||||
|
||||
import com.gempukku.lotro.common.Token;
|
||||
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.effects.ChooseActiveCardEffect;
|
||||
import com.gempukku.lotro.logic.modifiers.ModifierFlag;
|
||||
import com.gempukku.lotro.logic.modifiers.ModifiersQuerying;
|
||||
|
||||
public class ReinforceTokenEffect extends ChooseActiveCardEffect {
|
||||
private Token _token;
|
||||
@@ -15,7 +19,13 @@ public class ReinforceTokenEffect extends ChooseActiveCardEffect {
|
||||
}
|
||||
|
||||
public ReinforceTokenEffect(PhysicalCard source, String playerId, Token token, int count) {
|
||||
super(source, playerId, "Choose card to reinforce", Filters.owner(playerId), Filters.hasToken(token));
|
||||
super(source, playerId, "Choose card to reinforce", Filters.owner(playerId), Filters.hasToken(token),
|
||||
new Filter() {
|
||||
@Override
|
||||
public boolean accepts(GameState gameState, ModifiersQuerying modifiersQuerying, PhysicalCard physicalCard) {
|
||||
return !modifiersQuerying.hasFlagActive(gameState, ModifierFlag.CANT_TOUCH_CULTURE_TOKENS);
|
||||
}
|
||||
});
|
||||
_token = token;
|
||||
_count = count;
|
||||
}
|
||||
|
||||
@@ -4,6 +4,7 @@ import com.gempukku.lotro.common.Token;
|
||||
import com.gempukku.lotro.game.PhysicalCard;
|
||||
import com.gempukku.lotro.game.state.LotroGame;
|
||||
import com.gempukku.lotro.logic.GameUtils;
|
||||
import com.gempukku.lotro.logic.modifiers.ModifierFlag;
|
||||
import com.gempukku.lotro.logic.timing.AbstractEffect;
|
||||
import com.gempukku.lotro.logic.timing.Effect;
|
||||
|
||||
@@ -26,7 +27,8 @@ public class RemoveTokenEffect extends AbstractEffect {
|
||||
|
||||
@Override
|
||||
public boolean isPlayableInFull(LotroGame game) {
|
||||
return game.getGameState().getTokenCount(_target, _token) >= _count;
|
||||
return game.getGameState().getTokenCount(_target, _token) >= _count
|
||||
&& !game.getModifiersQuerying().hasFlagActive(game.getGameState(), ModifierFlag.CANT_TOUCH_CULTURE_TOKENS);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -41,13 +43,17 @@ public class RemoveTokenEffect extends AbstractEffect {
|
||||
|
||||
@Override
|
||||
protected FullEffectResult playEffectReturningResult(LotroGame game) {
|
||||
int tokenCount = game.getGameState().getTokenCount(_target, _token);
|
||||
int removeTokens = Math.min(tokenCount, _count);
|
||||
if (removeTokens > 0) {
|
||||
game.getGameState().removeTokens(_target, _token, removeTokens);
|
||||
game.getGameState().sendMessage(GameUtils.getCardLink(_source) + " removed " + removeTokens + " " + _token + " token" + ((removeTokens > 1) ? "s" : "") + " from " + GameUtils.getCardLink(_target));
|
||||
}
|
||||
if (!game.getModifiersQuerying().hasFlagActive(game.getGameState(), ModifierFlag.CANT_TOUCH_CULTURE_TOKENS)) {
|
||||
int tokenCount = game.getGameState().getTokenCount(_target, _token);
|
||||
int removeTokens = Math.min(tokenCount, _count);
|
||||
if (removeTokens > 0) {
|
||||
game.getGameState().removeTokens(_target, _token, removeTokens);
|
||||
game.getGameState().sendMessage(GameUtils.getCardLink(_source) + " removed " + removeTokens + " " + _token + " token" + ((removeTokens > 1) ? "s" : "") + " from " + GameUtils.getCardLink(_target));
|
||||
}
|
||||
|
||||
return new FullEffectResult(removeTokens == _count, removeTokens == _count);
|
||||
return new FullEffectResult(removeTokens == _count, removeTokens == _count);
|
||||
} else {
|
||||
return new FullEffectResult(false, false);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -7,6 +7,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.effects.ChooseActiveCardEffect;
|
||||
import com.gempukku.lotro.logic.modifiers.ModifierFlag;
|
||||
|
||||
public class ChooseAndRemoveCultureTokensFromCardEffect extends ChooseActiveCardEffect {
|
||||
private Token _token;
|
||||
@@ -20,6 +21,9 @@ public class ChooseAndRemoveCultureTokensFromCardEffect extends ChooseActiveCard
|
||||
|
||||
@Override
|
||||
protected Filter getExtraFilterForPlaying(LotroGame game) {
|
||||
if (game.getModifiersQuerying().hasFlagActive(game.getGameState(), ModifierFlag.CANT_TOUCH_CULTURE_TOKENS))
|
||||
return Filters.none;
|
||||
|
||||
if (_token != null)
|
||||
return Filters.hasToken(_token, _count);
|
||||
else
|
||||
|
||||
@@ -2,6 +2,10 @@ package com.gempukku.lotro.cards.set13.site;
|
||||
|
||||
import com.gempukku.lotro.cards.AbstractNewSite;
|
||||
import com.gempukku.lotro.common.Keyword;
|
||||
import com.gempukku.lotro.game.PhysicalCard;
|
||||
import com.gempukku.lotro.logic.modifiers.Modifier;
|
||||
import com.gempukku.lotro.logic.modifiers.ModifierFlag;
|
||||
import com.gempukku.lotro.logic.modifiers.SpecialFlagModifier;
|
||||
|
||||
/**
|
||||
* Set: Bloodlines
|
||||
@@ -15,5 +19,8 @@ public class Card13_194 extends AbstractNewSite {
|
||||
addKeyword(Keyword.MOUNTAIN);
|
||||
}
|
||||
|
||||
// TODO - make this card work
|
||||
@Override
|
||||
public Modifier getAlwaysOnModifier(PhysicalCard self) {
|
||||
return new SpecialFlagModifier(self, ModifierFlag.CANT_TOUCH_CULTURE_TOKENS);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -9,6 +9,7 @@ public enum ModifierFlag {
|
||||
RING_BEARER_CANT_TAKE_THREAT_WOUNDS,
|
||||
SKIRMISH_ORDER_BY_FIRST_SHADOW_PLAYER,
|
||||
CANT_PREVENT_WOUNDS,
|
||||
CANT_TOUCH_CULTURE_TOKENS,
|
||||
TRANSFERS_FOR_FREE,
|
||||
SHADOW_PLAYER_REPLACED_CURRENT_SITE
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user