"Avoid Being Seen"
This commit is contained in:
@@ -0,0 +1,19 @@
|
||||
package com.gempukku.lotro.cards.modifiers;
|
||||
|
||||
import com.gempukku.lotro.common.Filterable;
|
||||
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.ModifierEffect;
|
||||
import com.gempukku.lotro.logic.modifiers.ModifiersLogic;
|
||||
|
||||
public class AddNoTwilightForCompanionMoveModifier extends AbstractModifier {
|
||||
public AddNoTwilightForCompanionMoveModifier(PhysicalCard source, Filterable affectFilter) {
|
||||
super(source, "Adds no twilight for move", affectFilter, null, ModifierEffect.MOVE_TWILIGHT_MODIFIER);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean addsTwilightForCompanionMove(GameState gameState, ModifiersLogic modifiersLogic, PhysicalCard companion) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,41 @@
|
||||
package com.gempukku.lotro.cards.set20.gondor;
|
||||
|
||||
import com.gempukku.lotro.cards.AbstractEvent;
|
||||
import com.gempukku.lotro.cards.actions.PlayEventAction;
|
||||
import com.gempukku.lotro.cards.effects.AddUntilEndOfTurnModifierEffect;
|
||||
import com.gempukku.lotro.cards.effects.choose.ChooseAndExertCharactersEffect;
|
||||
import com.gempukku.lotro.cards.modifiers.AddNoTwilightForCompanionMoveModifier;
|
||||
import com.gempukku.lotro.common.Culture;
|
||||
import com.gempukku.lotro.common.Keyword;
|
||||
import com.gempukku.lotro.common.Phase;
|
||||
import com.gempukku.lotro.common.Side;
|
||||
import com.gempukku.lotro.game.PhysicalCard;
|
||||
import com.gempukku.lotro.game.state.LotroGame;
|
||||
|
||||
/**
|
||||
* 0
|
||||
* Avoid Being Seen
|
||||
* Gondor Event • Fellowship
|
||||
* To play, exert X [Gondor] rangers.
|
||||
* Until the end of turn, add no twilight for each exerted ranger when the fellowship moves.
|
||||
*/
|
||||
public class Card20_181 extends AbstractEvent {
|
||||
public Card20_181() {
|
||||
super(Side.FREE_PEOPLE, 0, Culture.GONDOR, "Avoid Being Seen", Phase.FELLOWSHIP);
|
||||
}
|
||||
|
||||
@Override
|
||||
public PlayEventAction getPlayCardAction(String playerId, LotroGame game, final PhysicalCard self, int twilightModifier, boolean ignoreRoamingPenalty) {
|
||||
final PlayEventAction action = new PlayEventAction(self);
|
||||
action.appendCost(
|
||||
new ChooseAndExertCharactersEffect(action, playerId, 0, Integer.MAX_VALUE, Culture.GONDOR, Keyword.RANGER){
|
||||
@Override
|
||||
protected void forEachCardExertedCallback(PhysicalCard character) {
|
||||
action.appendEffect(
|
||||
new AddUntilEndOfTurnModifierEffect(
|
||||
new AddNoTwilightForCompanionMoveModifier(self, character)));
|
||||
}
|
||||
});
|
||||
return action;
|
||||
}
|
||||
}
|
||||
@@ -187,6 +187,11 @@ public abstract class AbstractModifier implements Modifier {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean addsTwilightForCompanionMove(GameState gameState, ModifiersLogic modifiersLogic, PhysicalCard companion) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean addsToArcheryTotal(GameState gameState, ModifiersQuerying modifiersQuerying, PhysicalCard card) {
|
||||
return true;
|
||||
|
||||
@@ -76,6 +76,8 @@ public interface Modifier {
|
||||
|
||||
public int getMoveLimitModifier(GameState gameState, ModifiersQuerying modifiersQuerying);
|
||||
|
||||
boolean addsTwilightForCompanionMove(GameState gameState, ModifiersLogic modifiersLogic, PhysicalCard companion);
|
||||
|
||||
public boolean addsToArcheryTotal(GameState gameState, ModifiersQuerying modifiersQuerying, PhysicalCard card);
|
||||
|
||||
public boolean canPlayAction(GameState gameState, ModifiersQuerying modifiersQuerying, String performingPlayer, Action action);
|
||||
|
||||
@@ -10,6 +10,8 @@ public enum ModifierEffect {
|
||||
LOOK_OR_REVEAL_MODIFIER, SPOT_MODIFIER, TARGET_MODIFIER, RETURN_TO_HAND_MODIFIER, TRANSFER_MODIFIER,
|
||||
LIBERATION_MODIFIER,
|
||||
|
||||
MOVE_TWILIGHT_MODIFIER,
|
||||
|
||||
EXTRA_ACTION_MODIFIER, EXTRA_COST_MODIFIER,
|
||||
INITIATIVE_MODIFIER, TEXT_MODIFIER,
|
||||
|
||||
|
||||
@@ -363,6 +363,14 @@ public class ModifiersLogic implements ModifiersEnvironment, ModifiersQuerying {
|
||||
return Math.max(1, result);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean addsTwilightForCompanionMove(GameState gameState, PhysicalCard companion) {
|
||||
for (Modifier modifier : getModifiersAffectingCard(gameState, ModifierEffect.MOVE_TWILIGHT_MODIFIER, companion))
|
||||
if (!modifier.addsTwilightForCompanionMove(gameState, this, companion))
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getStrength(GameState gameState, PhysicalCard physicalCard) {
|
||||
LoggingThreadLocal.logMethodStart(physicalCard, "getStrength");
|
||||
@@ -819,7 +827,7 @@ public class ModifiersLogic implements ModifiersEnvironment, ModifiersQuerying {
|
||||
|
||||
@Override
|
||||
public boolean canAddBurden(GameState gameState, String performingPlayer, PhysicalCard source) {
|
||||
for (Modifier modifier : getModifiers(gameState, ModifierEffect.BURDEN_MODIFIER)) {
|
||||
for (Modifier modifier : getModifiersAffectingCard(gameState, ModifierEffect.BURDEN_MODIFIER, source)) {
|
||||
if (!modifier.canAddBurden(gameState, this, performingPlayer, source))
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -39,9 +39,11 @@ public interface ModifiersQuerying {
|
||||
|
||||
public boolean addsToArcheryTotal(GameState gameState, PhysicalCard card);
|
||||
|
||||
// Move limit
|
||||
// Movement
|
||||
public int getMoveLimit(GameState gameState, int baseMoveLimit);
|
||||
|
||||
public boolean addsTwilightForCompanionMove(GameState gameState, PhysicalCard companion);
|
||||
|
||||
// Twilight cost
|
||||
public int getTwilightCost(GameState gameState, PhysicalCard physicalCard, boolean ignoreRoamingPenalty);
|
||||
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package com.gempukku.lotro.logic.timing.processes.turn.move;
|
||||
|
||||
import com.gempukku.lotro.common.CardType;
|
||||
import com.gempukku.lotro.filters.Filter;
|
||||
import com.gempukku.lotro.filters.Filters;
|
||||
import com.gempukku.lotro.game.LotroCardBlueprint;
|
||||
import com.gempukku.lotro.game.PhysicalCard;
|
||||
@@ -11,6 +12,7 @@ import com.gempukku.lotro.logic.actions.SystemQueueAction;
|
||||
import com.gempukku.lotro.logic.effects.AddTwilightEffect;
|
||||
import com.gempukku.lotro.logic.effects.PlaySiteEffect;
|
||||
import com.gempukku.lotro.logic.effects.TriggeringResultEffect;
|
||||
import com.gempukku.lotro.logic.modifiers.ModifiersQuerying;
|
||||
import com.gempukku.lotro.logic.timing.UnrespondableEffect;
|
||||
import com.gempukku.lotro.logic.timing.processes.GameProcess;
|
||||
import com.gempukku.lotro.logic.timing.results.WhenMoveFromResult;
|
||||
@@ -90,9 +92,15 @@ public class MovementGameProcess implements GameProcess {
|
||||
else if (siteNumber > 6 && siteNumber <= 9)
|
||||
siteTwilightCost += 6;
|
||||
}
|
||||
int companionCount = Filters.countActive(gameState, game.getModifiersQuerying(), CardType.COMPANION);
|
||||
int companionsAddingTwilightForMoveCount = Filters.countActive(gameState, game.getModifiersQuerying(), CardType.COMPANION,
|
||||
new Filter() {
|
||||
@Override
|
||||
public boolean accepts(GameState gameState, ModifiersQuerying modifiersQuerying, PhysicalCard physicalCard) {
|
||||
return modifiersQuerying.addsTwilightForCompanionMove(gameState, physicalCard);
|
||||
}
|
||||
});
|
||||
|
||||
AddTwilightEffect effect = new AddTwilightEffect(null, siteTwilightCost + companionCount);
|
||||
AddTwilightEffect effect = new AddTwilightEffect(null, siteTwilightCost + companionsAddingTwilightForMoveCount);
|
||||
effect.setSourceText("Moving");
|
||||
action.insertEffect(effect);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user