"Redhorn Pass"

This commit is contained in:
marcins78@gmail.com
2012-01-16 11:52:59 +00:00
parent 1c611c50a5
commit 6d65c3e1ae
7 changed files with 46 additions and 14 deletions

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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