Changing the "can't play card from deck or discard" effect.
This commit is contained in:
@@ -12,6 +12,7 @@ import com.gempukku.lotro.game.PhysicalCardVisitor;
|
||||
import com.gempukku.lotro.game.state.GameState;
|
||||
import com.gempukku.lotro.game.state.LotroGame;
|
||||
import com.gempukku.lotro.logic.effects.*;
|
||||
import com.gempukku.lotro.logic.modifiers.ModifierFlag;
|
||||
import com.gempukku.lotro.logic.modifiers.ModifiersQuerying;
|
||||
import com.gempukku.lotro.logic.timing.Effect;
|
||||
import com.gempukku.lotro.logic.timing.EffectResult;
|
||||
@@ -192,10 +193,14 @@ public class PlayConditions {
|
||||
}
|
||||
|
||||
public static boolean canPlayFromDiscard(String playerId, LotroGame game, Filterable... filters) {
|
||||
if (game.getModifiersQuerying().hasFlagActive(game.getGameState(), ModifierFlag.CANT_PLAY_FROM_DISCARD_OR_DECK))
|
||||
return false;
|
||||
return Filters.filter(game.getGameState().getDiscard(playerId), game.getGameState(), game.getModifiersQuerying(), Filters.and(filters, Filters.playable(game))).size() > 0;
|
||||
}
|
||||
|
||||
public static boolean canPlayFromDiscard(String playerId, LotroGame game, int modifier, Filterable... filters) {
|
||||
if (game.getModifiersQuerying().hasFlagActive(game.getGameState(), ModifierFlag.CANT_PLAY_FROM_DISCARD_OR_DECK))
|
||||
return false;
|
||||
return Filters.filter(game.getGameState().getDiscard(playerId), game.getGameState(), game.getModifiersQuerying(), Filters.and(filters, Filters.playable(game, modifier))).size() > 0;
|
||||
}
|
||||
|
||||
|
||||
@@ -7,6 +7,7 @@ import com.gempukku.lotro.game.PhysicalCard;
|
||||
import com.gempukku.lotro.game.state.LotroGame;
|
||||
import com.gempukku.lotro.logic.decisions.ArbitraryCardsSelectionDecision;
|
||||
import com.gempukku.lotro.logic.decisions.DecisionResultInvalidException;
|
||||
import com.gempukku.lotro.logic.modifiers.ModifierFlag;
|
||||
import com.gempukku.lotro.logic.timing.Action;
|
||||
import com.gempukku.lotro.logic.timing.Effect;
|
||||
import com.gempukku.lotro.logic.timing.EffectResult;
|
||||
@@ -38,7 +39,7 @@ public class ChooseAndPlayCardFromDeckEffect implements Effect {
|
||||
|
||||
@Override
|
||||
public boolean isPlayableInFull(LotroGame game) {
|
||||
return true;
|
||||
return !game.getModifiersQuerying().hasFlagActive(game.getGameState(), ModifierFlag.CANT_PLAY_FROM_DISCARD_OR_DECK);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -48,19 +49,21 @@ public class ChooseAndPlayCardFromDeckEffect implements Effect {
|
||||
|
||||
@Override
|
||||
public Collection<? extends EffectResult> playEffect(final LotroGame game) {
|
||||
Collection<PhysicalCard> deck = Filters.filter(game.getGameState().getDeck(_playerId), game.getGameState(), game.getModifiersQuerying(), Filters.and(_filter, Filters.playable(game, _twilightModifier)));
|
||||
game.getUserFeedback().sendAwaitingDecision(_playerId,
|
||||
new ArbitraryCardsSelectionDecision(1, "Choose a card to play", new LinkedList<PhysicalCard>(deck), 0, 1) {
|
||||
@Override
|
||||
public void decisionMade(String result) throws DecisionResultInvalidException {
|
||||
List<PhysicalCard> selectedCards = getSelectedCardsByResponse(result);
|
||||
if (selectedCards.size() > 0) {
|
||||
PhysicalCard selectedCard = selectedCards.get(0);
|
||||
_playCardAction = selectedCard.getBlueprint().getPlayCardAction(_playerId, game, selectedCard, _twilightModifier);
|
||||
game.getActionsEnvironment().addActionToStack(_playCardAction);
|
||||
if (isPlayableInFull(game)) {
|
||||
Collection<PhysicalCard> deck = Filters.filter(game.getGameState().getDeck(_playerId), game.getGameState(), game.getModifiersQuerying(), Filters.and(_filter, Filters.playable(game, _twilightModifier)));
|
||||
game.getUserFeedback().sendAwaitingDecision(_playerId,
|
||||
new ArbitraryCardsSelectionDecision(1, "Choose a card to play", new LinkedList<PhysicalCard>(deck), 0, 1) {
|
||||
@Override
|
||||
public void decisionMade(String result) throws DecisionResultInvalidException {
|
||||
List<PhysicalCard> selectedCards = getSelectedCardsByResponse(result);
|
||||
if (selectedCards.size() > 0) {
|
||||
PhysicalCard selectedCard = selectedCards.get(0);
|
||||
_playCardAction = selectedCard.getBlueprint().getPlayCardAction(_playerId, game, selectedCard, _twilightModifier);
|
||||
game.getActionsEnvironment().addActionToStack(_playCardAction);
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
@@ -1,20 +1,27 @@
|
||||
package com.gempukku.lotro.cards.modifiers;
|
||||
|
||||
import com.gempukku.lotro.game.PhysicalCard;
|
||||
import com.gempukku.lotro.logic.modifiers.AbstractModifier;
|
||||
import com.gempukku.lotro.logic.modifiers.ModifierEffect;
|
||||
import com.gempukku.lotro.logic.modifiers.ModifierFlag;
|
||||
import com.gempukku.lotro.game.state.GameState;
|
||||
import com.gempukku.lotro.logic.modifiers.*;
|
||||
|
||||
public class SpecialFlagModifier extends AbstractModifier {
|
||||
private Condition _condition;
|
||||
private ModifierFlag _modifierFlag;
|
||||
|
||||
public SpecialFlagModifier(PhysicalCard source, ModifierFlag modifierFlag) {
|
||||
this(source, null, modifierFlag);
|
||||
}
|
||||
|
||||
public SpecialFlagModifier(PhysicalCard source, Condition condition, ModifierFlag modifierFlag) {
|
||||
super(source, "Special flag set", null, ModifierEffect.SPECIAL_FLAG_MODIFIER);
|
||||
_condition = condition;
|
||||
_modifierFlag = modifierFlag;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasFlagActive(ModifierFlag modifierFlag) {
|
||||
return modifierFlag == _modifierFlag;
|
||||
public boolean hasFlagActive(GameState gameState, ModifiersQuerying modifiersQuerying, ModifierFlag modifierFlag) {
|
||||
if (_condition == null || _condition.isFullfilled(gameState, modifiersQuerying))
|
||||
return modifierFlag == _modifierFlag;
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -60,7 +60,7 @@ public class Card1_001 extends AbstractAttachable {
|
||||
@Override
|
||||
public List<? extends Action> getOptionalInPlayBeforeActions(final String playerId, LotroGame game, Effect effect, final PhysicalCard self) {
|
||||
if (PlayConditions.isGettingWounded(effect, game, Filters.hasAttached(self))
|
||||
&& !game.getModifiersQuerying().hasFlagActive(ModifierFlag.RING_TEXT_INACTIVE)) {
|
||||
&& !game.getModifiersQuerying().hasFlagActive(game.getGameState(), ModifierFlag.RING_TEXT_INACTIVE)) {
|
||||
WoundCharactersEffect woundEffect = (WoundCharactersEffect) effect;
|
||||
List<Action> actions = new LinkedList<Action>();
|
||||
|
||||
@@ -79,7 +79,7 @@ public class Card1_001 extends AbstractAttachable {
|
||||
public List<RequiredTriggerAction> getRequiredBeforeTriggers(LotroGame game, Effect effect, PhysicalCard self) {
|
||||
if (PlayConditions.isGettingWounded(effect, game, Filters.hasAttached(self))
|
||||
&& game.getGameState().isWearingRing()
|
||||
&& !game.getModifiersQuerying().hasFlagActive(ModifierFlag.RING_TEXT_INACTIVE)) {
|
||||
&& !game.getModifiersQuerying().hasFlagActive(game.getGameState(), ModifierFlag.RING_TEXT_INACTIVE)) {
|
||||
WoundCharactersEffect woundEffect = (WoundCharactersEffect) effect;
|
||||
if (woundEffect.getAffectedCardsMinusPrevented(game).contains(self.getAttachedTo())) {
|
||||
RequiredTriggerAction action = new RequiredTriggerAction(self);
|
||||
|
||||
@@ -59,7 +59,7 @@ public class Card1_002 extends AbstractAttachable {
|
||||
public List<? extends Action> getOptionalInPlayBeforeActions(final String playerId, LotroGame game, Effect effect, final PhysicalCard self) {
|
||||
if (game.getGameState().getCurrentPhase() == Phase.SKIRMISH
|
||||
&& PlayConditions.isGettingWounded(effect, game, Filters.hasAttached(self))
|
||||
&& !game.getModifiersQuerying().hasFlagActive(ModifierFlag.RING_TEXT_INACTIVE)) {
|
||||
&& !game.getModifiersQuerying().hasFlagActive(game.getGameState(), ModifierFlag.RING_TEXT_INACTIVE)) {
|
||||
WoundCharactersEffect woundEffect = (WoundCharactersEffect) effect;
|
||||
if (woundEffect.getAffectedCardsMinusPrevented(game).contains(self.getAttachedTo())) {
|
||||
List<Action> actions = new LinkedList<Action>();
|
||||
@@ -80,7 +80,7 @@ public class Card1_002 extends AbstractAttachable {
|
||||
public List<RequiredTriggerAction> getRequiredBeforeTriggers(LotroGame game, Effect effect, PhysicalCard self) {
|
||||
if (PlayConditions.isGettingWounded(effect, game, Filters.hasAttached(self))
|
||||
&& game.getGameState().isWearingRing()
|
||||
&& !game.getModifiersQuerying().hasFlagActive(ModifierFlag.RING_TEXT_INACTIVE)) {
|
||||
&& !game.getModifiersQuerying().hasFlagActive(game.getGameState(), ModifierFlag.RING_TEXT_INACTIVE)) {
|
||||
WoundCharactersEffect woundEffect = (WoundCharactersEffect) effect;
|
||||
if (woundEffect.getAffectedCardsMinusPrevented(game).contains(self.getAttachedTo())) {
|
||||
List<RequiredTriggerAction> actions = new LinkedList<RequiredTriggerAction>();
|
||||
|
||||
@@ -50,7 +50,7 @@ public class Card3_068 extends AbstractMinion {
|
||||
new Condition() {
|
||||
@Override
|
||||
public boolean isFullfilled(GameState gameState, ModifiersQuerying modifiersQuerying) {
|
||||
return !modifiersQuerying.hasFlagActive(ModifierFlag.SARUMAN_FIRST_SENTENCE_INACTIVE);
|
||||
return !modifiersQuerying.hasFlagActive(gameState, ModifierFlag.SARUMAN_FIRST_SENTENCE_INACTIVE);
|
||||
}
|
||||
},
|
||||
Filters.and(
|
||||
@@ -66,7 +66,7 @@ public class Card3_068 extends AbstractMinion {
|
||||
new Condition() {
|
||||
@Override
|
||||
public boolean isFullfilled(GameState gameState, ModifiersQuerying modifiersQuerying) {
|
||||
return !modifiersQuerying.hasFlagActive(ModifierFlag.SARUMAN_FIRST_SENTENCE_INACTIVE);
|
||||
return !modifiersQuerying.hasFlagActive(gameState, ModifierFlag.SARUMAN_FIRST_SENTENCE_INACTIVE);
|
||||
}
|
||||
},
|
||||
Filters.sameCard(self)));
|
||||
|
||||
@@ -53,7 +53,7 @@ public class Card3_069 extends AbstractMinion {
|
||||
new Condition() {
|
||||
@Override
|
||||
public boolean isFullfilled(GameState gameState, ModifiersQuerying modifiersQuerying) {
|
||||
return !modifiersQuerying.hasFlagActive(ModifierFlag.SARUMAN_FIRST_SENTENCE_INACTIVE);
|
||||
return !modifiersQuerying.hasFlagActive(gameState, ModifierFlag.SARUMAN_FIRST_SENTENCE_INACTIVE);
|
||||
}
|
||||
},
|
||||
Filters.and(
|
||||
@@ -69,7 +69,7 @@ public class Card3_069 extends AbstractMinion {
|
||||
new Condition() {
|
||||
@Override
|
||||
public boolean isFullfilled(GameState gameState, ModifiersQuerying modifiersQuerying) {
|
||||
return !modifiersQuerying.hasFlagActive(ModifierFlag.SARUMAN_FIRST_SENTENCE_INACTIVE);
|
||||
return !modifiersQuerying.hasFlagActive(gameState, ModifierFlag.SARUMAN_FIRST_SENTENCE_INACTIVE);
|
||||
}
|
||||
},
|
||||
Filters.sameCard(self)));
|
||||
|
||||
@@ -1,17 +1,14 @@
|
||||
package com.gempukku.lotro.cards.set3.site;
|
||||
|
||||
import com.gempukku.lotro.cards.AbstractSite;
|
||||
import com.gempukku.lotro.cards.modifiers.SpecialFlagModifier;
|
||||
import com.gempukku.lotro.cards.modifiers.conditions.LocationCondition;
|
||||
import com.gempukku.lotro.common.Block;
|
||||
import com.gempukku.lotro.common.Keyword;
|
||||
import com.gempukku.lotro.common.Zone;
|
||||
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.ModifierEffect;
|
||||
import com.gempukku.lotro.logic.modifiers.ModifiersQuerying;
|
||||
import com.gempukku.lotro.logic.timing.Action;
|
||||
import com.gempukku.lotro.logic.modifiers.ModifierFlag;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
@@ -32,14 +29,6 @@ public class Card3_118 extends AbstractSite {
|
||||
@Override
|
||||
public List<? extends Modifier> getAlwaysOnModifiers(LotroGame game, PhysicalCard self) {
|
||||
return Collections.singletonList(
|
||||
new AbstractModifier(self, "Cards may not be played from draw decks or discard piles", null, ModifierEffect.ACTION_MODIFIER) {
|
||||
@Override
|
||||
public boolean canPlayAction(GameState gameState, ModifiersQuerying modifiersQuerying, String performingPlayer, Action action) {
|
||||
PhysicalCard source = action.getActionSource();
|
||||
if (source != null && (source.getZone() == Zone.DECK || source.getZone() == Zone.DISCARD))
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
});
|
||||
new SpecialFlagModifier(self, new LocationCondition(self), ModifierFlag.CANT_PLAY_FROM_DISCARD_OR_DECK));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -56,7 +56,7 @@ public class Card4_001 extends AbstractAttachable {
|
||||
new Condition() {
|
||||
@Override
|
||||
public boolean isFullfilled(GameState gameState, ModifiersQuerying modifiersQuerying) {
|
||||
return !modifiersQuerying.hasFlagActive(ModifierFlag.RING_TEXT_INACTIVE) && gameState.isWearingRing();
|
||||
return !modifiersQuerying.hasFlagActive(gameState, ModifierFlag.RING_TEXT_INACTIVE) && gameState.isWearingRing();
|
||||
}
|
||||
}, 2));
|
||||
|
||||
@@ -66,7 +66,7 @@ public class Card4_001 extends AbstractAttachable {
|
||||
@Override
|
||||
protected List<? extends Action> getExtraPhaseActions(String playerId, LotroGame game, final PhysicalCard self) {
|
||||
if (PlayConditions.canUseFPCardDuringPhase(game.getGameState(), Phase.SKIRMISH, self)
|
||||
&& !game.getModifiersQuerying().hasFlagActive(ModifierFlag.RING_TEXT_INACTIVE)) {
|
||||
&& !game.getModifiersQuerying().hasFlagActive(game.getGameState(), ModifierFlag.RING_TEXT_INACTIVE)) {
|
||||
ActivateCardAction action = new ActivateCardAction(self);
|
||||
action.appendCost(
|
||||
new AddBurdenEffect(self, 1));
|
||||
@@ -81,7 +81,7 @@ public class Card4_001 extends AbstractAttachable {
|
||||
public List<RequiredTriggerAction> getRequiredBeforeTriggers(LotroGame game, Effect effect, PhysicalCard self) {
|
||||
if (PlayConditions.isGettingWounded(effect, game, Filters.hasAttached(self))
|
||||
&& game.getGameState().isWearingRing()
|
||||
&& !game.getModifiersQuerying().hasFlagActive(ModifierFlag.RING_TEXT_INACTIVE)) {
|
||||
&& !game.getModifiersQuerying().hasFlagActive(game.getGameState(), ModifierFlag.RING_TEXT_INACTIVE)) {
|
||||
WoundCharactersEffect woundEffect = (WoundCharactersEffect) effect;
|
||||
RequiredTriggerAction action = new RequiredTriggerAction(self);
|
||||
action.appendEffect(new PreventCardEffect(woundEffect, self.getAttachedTo()));
|
||||
|
||||
@@ -48,7 +48,7 @@ public class Card4_033 extends AbstractMinion {
|
||||
new Condition() {
|
||||
@Override
|
||||
public boolean isFullfilled(GameState gameState, ModifiersQuerying modifiersQuerying) {
|
||||
return !modifiersQuerying.hasFlagActive(ModifierFlag.SARUMAN_FIRST_SENTENCE_INACTIVE);
|
||||
return !modifiersQuerying.hasFlagActive(gameState, ModifierFlag.SARUMAN_FIRST_SENTENCE_INACTIVE);
|
||||
}
|
||||
},
|
||||
Filters.sameCard(self)));
|
||||
|
||||
@@ -53,7 +53,7 @@ public class Card4_173 extends AbstractMinion {
|
||||
new Condition() {
|
||||
@Override
|
||||
public boolean isFullfilled(GameState gameState, ModifiersQuerying modifiersQuerying) {
|
||||
return gameState.getCurrentPhase() == Phase.ARCHERY && !modifiersQuerying.hasFlagActive(ModifierFlag.SARUMAN_FIRST_SENTENCE_INACTIVE);
|
||||
return gameState.getCurrentPhase() == Phase.ARCHERY && !modifiersQuerying.hasFlagActive(gameState, ModifierFlag.SARUMAN_FIRST_SENTENCE_INACTIVE);
|
||||
}
|
||||
}, Filters.sameCard(self)));
|
||||
modifiers.add(
|
||||
@@ -61,7 +61,7 @@ public class Card4_173 extends AbstractMinion {
|
||||
new Condition() {
|
||||
@Override
|
||||
public boolean isFullfilled(GameState gameState, ModifiersQuerying modifiersQuerying) {
|
||||
return !modifiersQuerying.hasFlagActive(ModifierFlag.SARUMAN_FIRST_SENTENCE_INACTIVE);
|
||||
return !modifiersQuerying.hasFlagActive(gameState, ModifierFlag.SARUMAN_FIRST_SENTENCE_INACTIVE);
|
||||
}
|
||||
},
|
||||
Filters.sameCard(self)));
|
||||
|
||||
@@ -55,7 +55,7 @@ public class Card4_174 extends AbstractAttachable {
|
||||
@Override
|
||||
protected List<? extends Action> getExtraPhaseActions(String playerId, LotroGame game, PhysicalCard self) {
|
||||
if (PlayConditions.canUseShadowCardDuringPhase(game.getGameState(), Phase.MANEUVER, self, 0)
|
||||
&& !game.getModifiersQuerying().hasFlagActive(ModifierFlag.SARUMAN_FIRST_SENTENCE_INACTIVE)) {
|
||||
&& !game.getModifiersQuerying().hasFlagActive(game.getGameState(), ModifierFlag.SARUMAN_FIRST_SENTENCE_INACTIVE)) {
|
||||
ActivateCardAction action = new ActivateCardAction(self);
|
||||
action.appendEffect(
|
||||
new AddUntilStartOfPhaseModifierEffect(
|
||||
|
||||
@@ -55,7 +55,7 @@ public class Card5_056 extends AbstractMinion {
|
||||
new Condition() {
|
||||
@Override
|
||||
public boolean isFullfilled(GameState gameState, ModifiersQuerying modifiersQuerying) {
|
||||
return !modifiersQuerying.hasFlagActive(ModifierFlag.SARUMAN_FIRST_SENTENCE_INACTIVE);
|
||||
return !modifiersQuerying.hasFlagActive(gameState, ModifierFlag.SARUMAN_FIRST_SENTENCE_INACTIVE);
|
||||
}
|
||||
},
|
||||
Filters.and(
|
||||
@@ -71,7 +71,7 @@ public class Card5_056 extends AbstractMinion {
|
||||
new Condition() {
|
||||
@Override
|
||||
public boolean isFullfilled(GameState gameState, ModifiersQuerying modifiersQuerying) {
|
||||
return !modifiersQuerying.hasFlagActive(ModifierFlag.SARUMAN_FIRST_SENTENCE_INACTIVE);
|
||||
return !modifiersQuerying.hasFlagActive(gameState, ModifierFlag.SARUMAN_FIRST_SENTENCE_INACTIVE);
|
||||
}
|
||||
},
|
||||
Filters.sameCard(self)));
|
||||
|
||||
@@ -59,7 +59,7 @@ public class Card7_002 extends AbstractAttachable {
|
||||
@Override
|
||||
protected List<? extends Action> getExtraPhaseActions(String playerId, LotroGame game, final PhysicalCard self) {
|
||||
if (PlayConditions.canUseFPCardDuringPhase(game.getGameState(), Phase.MANEUVER, self)
|
||||
&& !game.getModifiersQuerying().hasFlagActive(ModifierFlag.RING_TEXT_INACTIVE)) {
|
||||
&& !game.getModifiersQuerying().hasFlagActive(game.getGameState(), ModifierFlag.RING_TEXT_INACTIVE)) {
|
||||
ActivateCardAction action = new ActivateCardAction(self);
|
||||
action.appendCost(
|
||||
new AddBurdenEffect(self, 1));
|
||||
@@ -74,7 +74,7 @@ public class Card7_002 extends AbstractAttachable {
|
||||
public List<RequiredTriggerAction> getRequiredBeforeTriggers(LotroGame game, Effect effect, PhysicalCard self) {
|
||||
if (PlayConditions.isGettingWounded(effect, game, Filters.hasAttached(self))
|
||||
&& game.getGameState().isWearingRing()
|
||||
&& !game.getModifiersQuerying().hasFlagActive(ModifierFlag.RING_TEXT_INACTIVE)) {
|
||||
&& !game.getModifiersQuerying().hasFlagActive(game.getGameState(), ModifierFlag.RING_TEXT_INACTIVE)) {
|
||||
WoundCharactersEffect woundEffect = (WoundCharactersEffect) effect;
|
||||
RequiredTriggerAction action = new RequiredTriggerAction(self);
|
||||
action.appendEffect(new PreventCardEffect(woundEffect, self.getAttachedTo()));
|
||||
|
||||
@@ -239,7 +239,7 @@ public abstract class AbstractModifier implements Modifier {
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasFlagActive(ModifierFlag modifierFlag) {
|
||||
public boolean hasFlagActive(GameState gameState, ModifiersQuerying modifiersQuerying, ModifierFlag modifierFlag) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -95,5 +95,5 @@ public interface Modifier {
|
||||
|
||||
public int getSpotCountModifier(GameState gameState, ModifiersQuerying modifiersQuerying, Filter filter);
|
||||
|
||||
public boolean hasFlagActive(ModifierFlag modifierFlag);
|
||||
public boolean hasFlagActive(GameState gameState, ModifiersQuerying modifiersQuerying, ModifierFlag modifierFlag);
|
||||
}
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package com.gempukku.lotro.logic.modifiers;
|
||||
|
||||
public enum ModifierFlag {
|
||||
HAS_TO_MOVE_IF_POSSIBLE, RING_TEXT_INACTIVE, SARUMAN_FIRST_SENTENCE_INACTIVE, WIN_CHECK_AFTER_SHADOW_RECONCILE
|
||||
HAS_TO_MOVE_IF_POSSIBLE, RING_TEXT_INACTIVE, SARUMAN_FIRST_SENTENCE_INACTIVE, WIN_CHECK_AFTER_SHADOW_RECONCILE,
|
||||
CANT_PLAY_FROM_DISCARD_OR_DECK
|
||||
}
|
||||
|
||||
@@ -562,9 +562,9 @@ public class ModifiersLogic implements ModifiersEnvironment, ModifiersQuerying {
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasFlagActive(ModifierFlag modifierFlag) {
|
||||
public boolean hasFlagActive(GameState gameState, ModifierFlag modifierFlag) {
|
||||
for (Modifier modifier : getModifiers(ModifierEffect.SPECIAL_FLAG_MODIFIER))
|
||||
if (modifier.hasFlagActive(modifierFlag))
|
||||
if (modifier.hasFlagActive(gameState, this, modifierFlag))
|
||||
return true;
|
||||
|
||||
return false;
|
||||
|
||||
@@ -95,5 +95,5 @@ public interface ModifiersQuerying {
|
||||
|
||||
public int getSpotCount(GameState gameState, Filter filter, int inPlayCount);
|
||||
|
||||
public boolean hasFlagActive(ModifierFlag modifierFlag);
|
||||
public boolean hasFlagActive(GameState gameState, ModifierFlag modifierFlag);
|
||||
}
|
||||
|
||||
@@ -40,7 +40,7 @@ public class RegroupGameProcess implements GameProcess {
|
||||
@Override
|
||||
public void process() {
|
||||
if (_game.getGameState().getCurrentSiteNumber() == 9
|
||||
&& _game.getModifiersQuerying().hasFlagActive(ModifierFlag.WIN_CHECK_AFTER_SHADOW_RECONCILE)) {
|
||||
&& _game.getModifiersQuerying().hasFlagActive(_game.getGameState(), ModifierFlag.WIN_CHECK_AFTER_SHADOW_RECONCILE)) {
|
||||
_game.playerWon(_game.getGameState().getCurrentPlayerId(), "Surviving to Shadow Reconcile on site 9");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -24,7 +24,7 @@ public class FellowshipPlayerChoosesToMoveOrStayGameProcess implements GameProce
|
||||
public void process() {
|
||||
final GameState gameState = _game.getGameState();
|
||||
if (gameState.getMoveCount() < RuleUtils.calculateMoveLimit(_game)) {
|
||||
if (_game.getModifiersQuerying().hasFlagActive(ModifierFlag.HAS_TO_MOVE_IF_POSSIBLE)) {
|
||||
if (_game.getModifiersQuerying().hasFlagActive(_game.getGameState(), ModifierFlag.HAS_TO_MOVE_IF_POSSIBLE)) {
|
||||
_nextProcess = new MovementGameProcess(_game,
|
||||
new EndOfPhaseGameProcess(_game, Phase.REGROUP,
|
||||
new ShadowPhasesGameProcess(_game)));
|
||||
|
||||
@@ -21,12 +21,12 @@ public class WinConditionRule {
|
||||
_actionsEnvironment.addAlwaysOnActionProxy(
|
||||
new AbstractActionProxy() {
|
||||
@Override
|
||||
public List<? extends Action> getRequiredAfterTriggers(LotroGame lotroGame, EffectResult effectResults) {
|
||||
public List<? extends Action> getRequiredAfterTriggers(LotroGame game, EffectResult effectResults) {
|
||||
if (effectResults.getType() == EffectResult.Type.START_OF_PHASE
|
||||
&& lotroGame.getGameState().getCurrentPhase() == Phase.REGROUP
|
||||
&& lotroGame.getGameState().getCurrentSiteNumber() == 9
|
||||
&& !lotroGame.getModifiersQuerying().hasFlagActive(ModifierFlag.WIN_CHECK_AFTER_SHADOW_RECONCILE))
|
||||
lotroGame.playerWon(lotroGame.getGameState().getCurrentPlayerId(), "Surviving to Regroup phase on site 9");
|
||||
&& game.getGameState().getCurrentPhase() == Phase.REGROUP
|
||||
&& game.getGameState().getCurrentSiteNumber() == 9
|
||||
&& !game.getModifiersQuerying().hasFlagActive(game.getGameState(), ModifierFlag.WIN_CHECK_AFTER_SHADOW_RECONCILE))
|
||||
game.playerWon(game.getGameState().getCurrentPlayerId(), "Surviving to Regroup phase on site 9");
|
||||
return null;
|
||||
}
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user