Merge pull request #45 from PhallenCassidy/fixes-for-lotr
Fixes for LotR
This commit is contained in:
@@ -3,8 +3,8 @@ package com.gempukku.lotro.cards.set15.gollum;
|
||||
import com.gempukku.lotro.cards.AbstractEvent;
|
||||
import com.gempukku.lotro.cards.PlayConditions;
|
||||
import com.gempukku.lotro.cards.actions.PlayEventAction;
|
||||
import com.gempukku.lotro.cards.effects.AddUntilEndOfTurnModifierEffect;
|
||||
import com.gempukku.lotro.cards.effects.PreventableEffect;
|
||||
import com.gempukku.lotro.cards.effects.SnapshotAndApplyStrengthModifierUntilStartOfPhaseEffect;
|
||||
import com.gempukku.lotro.common.CardType;
|
||||
import com.gempukku.lotro.common.Culture;
|
||||
import com.gempukku.lotro.common.Phase;
|
||||
@@ -15,7 +15,7 @@ import com.gempukku.lotro.game.state.LotroGame;
|
||||
import com.gempukku.lotro.logic.actions.SubAction;
|
||||
import com.gempukku.lotro.logic.effects.ChooseActiveCardEffect;
|
||||
import com.gempukku.lotro.logic.effects.DiscardCardsFromPlayEffect;
|
||||
import com.gempukku.lotro.logic.modifiers.StrengthModifier;
|
||||
import com.gempukku.lotro.logic.modifiers.evaluator.ConstantEvaluator;
|
||||
import com.gempukku.lotro.logic.timing.Effect;
|
||||
|
||||
/**
|
||||
@@ -53,8 +53,8 @@ public class Card15_052 extends AbstractEvent {
|
||||
|
||||
@Override
|
||||
public Effect createPreventionCostForPlayer(SubAction subAction, String playerId) {
|
||||
return new AddUntilEndOfTurnModifierEffect(
|
||||
new StrengthModifier(self, CardType.MINION, -2)) {
|
||||
return new SnapshotAndApplyStrengthModifierUntilStartOfPhaseEffect(
|
||||
self, new ConstantEvaluator(-2), Phase.FELLOWSHIP, CardType.MINION) {
|
||||
@Override
|
||||
public String getText(LotroGame game) {
|
||||
return "Make each minion strength -2";
|
||||
|
||||
@@ -4,8 +4,8 @@ import com.gempukku.lotro.cards.AbstractPermanent;
|
||||
import com.gempukku.lotro.cards.PlayConditions;
|
||||
import com.gempukku.lotro.cards.TriggerConditions;
|
||||
import com.gempukku.lotro.cards.effects.AddTokenEffect;
|
||||
import com.gempukku.lotro.cards.effects.RemoveTokenEffect;
|
||||
import com.gempukku.lotro.cards.effects.choose.ChooseAndExertCharactersEffect;
|
||||
import com.gempukku.lotro.cards.effects.choose.ChooseAndRemoveCultureTokensFromCardEffect;
|
||||
import com.gempukku.lotro.common.*;
|
||||
import com.gempukku.lotro.filters.Filters;
|
||||
import com.gempukku.lotro.game.PhysicalCard;
|
||||
@@ -45,10 +45,10 @@ public class Card17_113 extends AbstractPermanent {
|
||||
@Override
|
||||
public List<OptionalTriggerAction> getOptionalAfterTriggers(String playerId, LotroGame game, EffectResult effectResult, PhysicalCard self) {
|
||||
if (TriggerConditions.winsSkirmish(game, effectResult, CardType.MINION, Culture.URUK_HAI)
|
||||
&& PlayConditions.canRemoveTokens(game, self, Token.URUK_HAI)) {
|
||||
&& PlayConditions.canRemoveTokens(game, Token.URUK_HAI, 1, CardType.CONDITION)) {
|
||||
OptionalTriggerAction action = new OptionalTriggerAction(self);
|
||||
action.appendCost(
|
||||
new RemoveTokenEffect(self, self, Token.URUK_HAI));
|
||||
new ChooseAndRemoveCultureTokensFromCardEffect(self, playerId, Token.URUK_HAI, 1, CardType.CONDITION));
|
||||
action.appendEffect(
|
||||
new ChooseAndExertCharactersEffect(action, playerId, 1, 1, CardType.COMPANION));
|
||||
return Collections.singletonList(action);
|
||||
|
||||
@@ -44,7 +44,7 @@ public class Card19_024 extends AbstractAttachable {
|
||||
|
||||
@Override
|
||||
public List<OptionalTriggerAction> getOptionalAfterTriggers(String playerId, LotroGame game, EffectResult effectResult, PhysicalCard self) {
|
||||
if (TriggerConditions.winsSkirmish(game, effectResult, self.getAttachedTo())) {
|
||||
if (TriggerConditions.startOfPhase(game, effectResult, Phase.SKIRMISH)) {
|
||||
OptionalTriggerAction action = new OptionalTriggerAction(self);
|
||||
action.appendEffect(
|
||||
new ChooseAndTransferAttachableEffect(action, playerId, self, Filters.any, Filters.and(Culture.ROHAN, Race.MAN)));
|
||||
|
||||
@@ -2,14 +2,17 @@ package com.gempukku.lotro.cards.set2.moria;
|
||||
|
||||
import com.gempukku.lotro.cards.AbstractResponseOldEvent;
|
||||
import com.gempukku.lotro.cards.actions.PlayEventAction;
|
||||
import com.gempukku.lotro.cards.TriggerConditions;
|
||||
import com.gempukku.lotro.common.CardType;
|
||||
import com.gempukku.lotro.common.Culture;
|
||||
import com.gempukku.lotro.common.Race;
|
||||
import com.gempukku.lotro.common.Side;
|
||||
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.WoundCharactersEffect;
|
||||
import com.gempukku.lotro.logic.timing.EffectResult;
|
||||
import com.gempukku.lotro.logic.timing.results.SkirmishAboutToEndResult;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
@@ -34,17 +37,22 @@ public class Card2_057 extends AbstractResponseOldEvent {
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<PlayEventAction> getOptionalAfterActions(String playerId, LotroGame game, EffectResult effectResult, PhysicalCard self) {
|
||||
if (effectResult.getType() == EffectResult.Type.SKIRMISH_ABOUT_TO_END
|
||||
&& checkPlayRequirements(playerId, game, self, 0, 0, false, false)
|
||||
&& Filters.filter(game.getGameState().getSkirmish().getShadowCharacters(), game.getGameState(), game.getModifiersQuerying(),
|
||||
Filters.balrog, Filters.hasAttached(Filters.name("Whip of Many Thongs"))).size() > 0) {
|
||||
PlayEventAction action = new PlayEventAction(self);
|
||||
action.appendEffect(
|
||||
new WoundCharactersEffect(self, CardType.COMPANION, Filters.inSkirmish));
|
||||
action.appendEffect(
|
||||
new WoundCharactersEffect(self, CardType.COMPANION, Filters.inSkirmish));
|
||||
return Collections.singletonList(action);
|
||||
public List<PlayEventAction> getOptionalAfterActions(String playerId, final LotroGame game, EffectResult effectResult, PhysicalCard self) {
|
||||
if (checkPlayRequirements(playerId, game, self, 0, 0, false, false)
|
||||
&& effectResult.getType() == EffectResult.Type.SKIRMISH_ABOUT_TO_END) {
|
||||
SkirmishAboutToEndResult checkSkirmish = (SkirmishAboutToEndResult) effectResult;
|
||||
for (PhysicalCard minion: checkSkirmish.getMinionsInvolved()) {
|
||||
if (minion.getBlueprint().getName().equals("The Balrog")
|
||||
&& Filters.filter(game.getGameState().getSkirmish().getShadowCharacters(), game.getGameState(),
|
||||
game.getModifiersQuerying(), Filters.hasAttached(Filters.name("Whip of Many Thongs"))).size() > 0) {
|
||||
PlayEventAction action = new PlayEventAction(self);
|
||||
action.appendEffect(
|
||||
new WoundCharactersEffect(self, CardType.COMPANION, Filters.inSkirmish));
|
||||
action.appendEffect(
|
||||
new WoundCharactersEffect(self, CardType.COMPANION, Filters.inSkirmish));
|
||||
return Collections.singletonList(action);
|
||||
}
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
@@ -2,7 +2,9 @@ package com.gempukku.lotro.cards.set4.dunland;
|
||||
|
||||
import com.gempukku.lotro.cards.AbstractMinion;
|
||||
import com.gempukku.lotro.cards.PlayConditions;
|
||||
import com.gempukku.lotro.cards.effects.AddUntilStartOfPhaseModifierEffect;
|
||||
import com.gempukku.lotro.cards.effects.choose.ChooseAndAssignCharacterToMinionEffect;
|
||||
import com.gempukku.lotro.cards.modifiers.AllyParticipatesInArcheryFireAndSkirmishesModifier;
|
||||
import com.gempukku.lotro.common.CardType;
|
||||
import com.gempukku.lotro.common.Culture;
|
||||
import com.gempukku.lotro.common.Phase;
|
||||
@@ -11,6 +13,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.actions.ActivateCardAction;
|
||||
import com.gempukku.lotro.logic.effects.ChooseActiveCardEffect;
|
||||
import com.gempukku.lotro.logic.modifiers.Modifier;
|
||||
import com.gempukku.lotro.logic.modifiers.StrengthModifier;
|
||||
import com.gempukku.lotro.logic.timing.Action;
|
||||
@@ -53,7 +56,16 @@ public class Card4_015 extends AbstractMinion {
|
||||
&& PlayConditions.canSpot(game, CardType.ALLY)) {
|
||||
final ActivateCardAction action = new ActivateCardAction(self);
|
||||
action.appendEffect(
|
||||
new ChooseAndAssignCharacterToMinionEffect(action, playerId, self, true, CardType.ALLY));
|
||||
new ChooseActiveCardEffect(self, playerId, "Choose an Ally", CardType.ALLY) {
|
||||
@Override
|
||||
protected void cardSelected(LotroGame game, PhysicalCard card) {
|
||||
action.appendEffect(
|
||||
new AddUntilStartOfPhaseModifierEffect(
|
||||
new AllyParticipatesInArcheryFireAndSkirmishesModifier(self, Filters.sameCard(card)), Phase.SKIRMISH));
|
||||
action.appendEffect(
|
||||
new ChooseAndAssignCharacterToMinionEffect(action, playerId, self, true, Filters.sameCard(card)));
|
||||
}
|
||||
});
|
||||
return Collections.singletonList(action);
|
||||
}
|
||||
return null;
|
||||
|
||||
@@ -2,14 +2,18 @@ package com.gempukku.lotro.cards.set4.dunland;
|
||||
|
||||
import com.gempukku.lotro.cards.AbstractMinion;
|
||||
import com.gempukku.lotro.cards.PlayConditions;
|
||||
import com.gempukku.lotro.cards.effects.AddUntilStartOfPhaseModifierEffect;
|
||||
import com.gempukku.lotro.cards.effects.choose.ChooseAndAssignCharacterToMinionEffect;
|
||||
import com.gempukku.lotro.cards.modifiers.AllyParticipatesInArcheryFireAndSkirmishesModifier;
|
||||
import com.gempukku.lotro.common.CardType;
|
||||
import com.gempukku.lotro.common.Culture;
|
||||
import com.gempukku.lotro.common.Phase;
|
||||
import com.gempukku.lotro.common.Race;
|
||||
import com.gempukku.lotro.filters.Filters;
|
||||
import com.gempukku.lotro.game.PhysicalCard;
|
||||
import com.gempukku.lotro.game.state.LotroGame;
|
||||
import com.gempukku.lotro.logic.actions.ActivateCardAction;
|
||||
import com.gempukku.lotro.logic.effects.ChooseActiveCardEffect;
|
||||
import com.gempukku.lotro.logic.timing.Action;
|
||||
|
||||
import java.util.Collections;
|
||||
@@ -38,7 +42,16 @@ public class Card4_018 extends AbstractMinion {
|
||||
&& PlayConditions.canSpot(game, CardType.ALLY)) {
|
||||
final ActivateCardAction action = new ActivateCardAction(self);
|
||||
action.appendEffect(
|
||||
new ChooseAndAssignCharacterToMinionEffect(action, playerId, self, true, CardType.ALLY));
|
||||
new ChooseActiveCardEffect(self, playerId, "Choose an Ally", CardType.ALLY) {
|
||||
@Override
|
||||
protected void cardSelected(LotroGame game, PhysicalCard card) {
|
||||
action.appendEffect(
|
||||
new AddUntilStartOfPhaseModifierEffect(
|
||||
new AllyParticipatesInArcheryFireAndSkirmishesModifier(self, Filters.sameCard(card)), Phase.SKIRMISH));
|
||||
action.appendEffect(
|
||||
new ChooseAndAssignCharacterToMinionEffect(action, playerId, self, true, Filters.sameCard(card)));
|
||||
}
|
||||
});
|
||||
return Collections.singletonList(action);
|
||||
}
|
||||
return null;
|
||||
|
||||
@@ -4,11 +4,11 @@ import com.gempukku.lotro.cards.AbstractPermanent;
|
||||
import com.gempukku.lotro.cards.PlayConditions;
|
||||
import com.gempukku.lotro.cards.effects.AddUntilEndOfPhaseModifierEffect;
|
||||
import com.gempukku.lotro.cards.modifiers.AllyParticipatesInArcheryFireModifier;
|
||||
import com.gempukku.lotro.cards.modifiers.CantTakeArcheryWoundsModifier;
|
||||
import com.gempukku.lotro.common.*;
|
||||
import com.gempukku.lotro.game.PhysicalCard;
|
||||
import com.gempukku.lotro.game.state.LotroGame;
|
||||
import com.gempukku.lotro.logic.actions.ActivateCardAction;
|
||||
import com.gempukku.lotro.logic.modifiers.CantTakeWoundsModifier;
|
||||
import com.gempukku.lotro.logic.timing.Action;
|
||||
|
||||
import java.util.Collections;
|
||||
@@ -38,7 +38,7 @@ public class Card4_146 extends AbstractPermanent {
|
||||
new AllyParticipatesInArcheryFireModifier(self, CardType.ALLY)));
|
||||
action.appendEffect(
|
||||
new AddUntilEndOfPhaseModifierEffect(
|
||||
new CantTakeWoundsModifier(self, CardType.COMPANION)));
|
||||
new CantTakeArcheryWoundsModifier(self, CardType.COMPANION)));
|
||||
return Collections.singletonList(action);
|
||||
}
|
||||
return null;
|
||||
|
||||
@@ -10,6 +10,9 @@ import com.gempukku.lotro.filters.Filters;
|
||||
import com.gempukku.lotro.game.PhysicalCard;
|
||||
import com.gempukku.lotro.game.state.LotroGame;
|
||||
import com.gempukku.lotro.logic.actions.ActivateCardAction;
|
||||
import com.gempukku.lotro.logic.decisions.DecisionResultInvalidException;
|
||||
import com.gempukku.lotro.logic.decisions.IntegerAwaitingDecision;
|
||||
import com.gempukku.lotro.logic.effects.PlayoutDecisionEffect;
|
||||
import com.gempukku.lotro.logic.modifiers.Modifier;
|
||||
import com.gempukku.lotro.logic.modifiers.StrengthModifier;
|
||||
import com.gempukku.lotro.logic.timing.Action;
|
||||
@@ -41,16 +44,24 @@ public class Card5_095 extends AbstractPermanent {
|
||||
}
|
||||
|
||||
@Override
|
||||
protected List<? extends Action> getExtraPhaseActions(String playerId, LotroGame game, PhysicalCard self) {
|
||||
protected List<? extends Action> getExtraPhaseActions(final String playerId, final LotroGame game, final PhysicalCard self) {
|
||||
if (PlayConditions.canUseShadowCardDuringPhase(game, Phase.MANEUVER, self, 0)
|
||||
&& PlayConditions.canSpot(game, 2, Culture.SAURON, Race.ORC)) {
|
||||
ActivateCardAction action = new ActivateCardAction(self);
|
||||
final ActivateCardAction action = new ActivateCardAction(self);
|
||||
action.appendEffect(
|
||||
new ChooseAndPlayCardFromDiscardEffect(playerId, game, Culture.SAURON, CardType.CONDITION));
|
||||
action.appendEffect(
|
||||
new ChooseAndPlayCardFromDiscardEffect(playerId, game, Culture.SAURON, CardType.CONDITION));
|
||||
action.appendEffect(
|
||||
new SelfDiscardEffect(self));
|
||||
new PlayoutDecisionEffect(playerId,
|
||||
new IntegerAwaitingDecision(1, "How many SAURON conditions do you wish to play from your discard pile?", 0, 2) {
|
||||
@Override
|
||||
public void decisionMade(String result) throws DecisionResultInvalidException {
|
||||
int count = getValidatedResult(result);
|
||||
for (int i = 0; i < count; i++)
|
||||
action.appendEffect(
|
||||
new ChooseAndPlayCardFromDiscardEffect(playerId, game, Culture.SAURON, CardType.CONDITION));
|
||||
action.appendEffect(
|
||||
new SelfDiscardEffect(self));
|
||||
}
|
||||
})
|
||||
);
|
||||
return Collections.singletonList(action);
|
||||
}
|
||||
return null;
|
||||
|
||||
@@ -27,24 +27,27 @@ import java.util.List;
|
||||
*/
|
||||
public class Card5_096 extends AbstractEvent {
|
||||
public Card5_096() {
|
||||
super(Side.SHADOW, 0, Culture.SAURON, "Eye of Barad-Dur", Phase.SKIRMISH);
|
||||
super(Side.SHADOW, 0, Culture.SAURON, "Eye of Barad-Dur", Phase.FELLOWSHIP, Phase.MANEUVER, Phase.SKIRMISH, Phase.REGROUP);
|
||||
}
|
||||
|
||||
@Override
|
||||
public PlayEventAction getPlayCardAction(String playerId, LotroGame game, final PhysicalCard self, int twilightModifier, boolean ignoreRoamingPenalty) {
|
||||
final PlayEventAction action = new PlayEventAction(self);
|
||||
action.appendEffect(
|
||||
new ChooseActiveCardEffect(self, playerId, "Choose companion or ally",
|
||||
Filters.or(CardType.COMPANION, CardType.ALLY), Filters.inSkirmishAgainst(Culture.SAURON, Race.ORC)) {
|
||||
@Override
|
||||
protected void cardSelected(LotroGame game, PhysicalCard card) {
|
||||
int ringBoundCompanions = Filters.countActive(game.getGameState(), game.getModifiersQuerying(), CardType.COMPANION, Keyword.RING_BOUND);
|
||||
action.insertEffect(
|
||||
new AddUntilEndOfPhaseModifierEffect(
|
||||
new StrengthModifier(self, Filters.sameCard(card), -ringBoundCompanions)));
|
||||
}
|
||||
});
|
||||
return action;
|
||||
if (game.getGameState().getCurrentPhase() == Phase.SKIRMISH) {
|
||||
final PlayEventAction action = new PlayEventAction(self);
|
||||
action.appendEffect(
|
||||
new ChooseActiveCardEffect(self, playerId, "Choose companion or ally",
|
||||
Filters.or(CardType.COMPANION, CardType.ALLY), Filters.inSkirmishAgainst(Culture.SAURON, Race.ORC)) {
|
||||
@Override
|
||||
protected void cardSelected(LotroGame game, PhysicalCard card) {
|
||||
int ringBoundCompanions = Filters.countActive(game.getGameState(), game.getModifiersQuerying(), CardType.COMPANION, Keyword.RING_BOUND);
|
||||
action.insertEffect(
|
||||
new AddUntilEndOfPhaseModifierEffect(
|
||||
new StrengthModifier(self, Filters.sameCard(card), -ringBoundCompanions)));
|
||||
}
|
||||
});
|
||||
return action;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -37,6 +37,7 @@ public class Card7_022 extends AbstractPermanent {
|
||||
@Override
|
||||
public List<? extends ActivateCardAction> getOptionalInPlayAfterActions(String playerId, LotroGame game, EffectResult effectResult, PhysicalCard self) {
|
||||
if (TriggerConditions.played(game, effectResult, Culture.ELVEN, CardType.EVENT, Keyword.SKIRMISH)
|
||||
&& game.getGameState().getCurrentPhase() == Phase.SKIRMISH
|
||||
&& PlayConditions.canSelfDiscard(self, game)) {
|
||||
ActivateCardAction action = new ActivateCardAction(self);
|
||||
action.appendCost(
|
||||
|
||||
@@ -46,7 +46,7 @@ public class Card7_033 extends AbstractEvent {
|
||||
@Override
|
||||
protected void cardSelected(LotroGame game, PhysicalCard card) {
|
||||
action.appendEffect(
|
||||
new HealCharactersEffect(self, card.getBlueprint().getCulture()));
|
||||
new HealCharactersEffect(self, card.getBlueprint().getCulture(), CardType.COMPANION));
|
||||
}
|
||||
});
|
||||
return action;
|
||||
|
||||
@@ -4,6 +4,7 @@ import com.gempukku.lotro.cards.AbstractEvent;
|
||||
import com.gempukku.lotro.cards.PlayConditions;
|
||||
import com.gempukku.lotro.cards.actions.PlayEventAction;
|
||||
import com.gempukku.lotro.cards.effects.choose.ChooseAndExertCharactersEffect;
|
||||
import com.gempukku.lotro.common.CardType;
|
||||
import com.gempukku.lotro.common.Culture;
|
||||
import com.gempukku.lotro.common.Phase;
|
||||
import com.gempukku.lotro.common.Side;
|
||||
@@ -46,7 +47,7 @@ public class Card7_043 extends AbstractEvent {
|
||||
@Override
|
||||
protected void cardSelected(LotroGame game, PhysicalCard card) {
|
||||
game.getModifiersEnvironment().addUntilStartOfPhaseModifier(
|
||||
new StrengthModifier(self, card.getBlueprint().getCulture(), 3), Phase.REGROUP);
|
||||
new StrengthModifier(self, Filters.and(card.getBlueprint().getCulture(), Filters.unboundCompanion), 3), Phase.REGROUP);
|
||||
}
|
||||
});
|
||||
return action;
|
||||
|
||||
@@ -11,6 +11,8 @@ import com.gempukku.lotro.common.*;
|
||||
import com.gempukku.lotro.filters.Filters;
|
||||
import com.gempukku.lotro.game.PhysicalCard;
|
||||
import com.gempukku.lotro.game.state.LotroGame;
|
||||
import com.gempukku.lotro.logic.decisions.MultipleChoiceAwaitingDecision;
|
||||
import com.gempukku.lotro.logic.effects.PlayoutDecisionEffect;
|
||||
import com.gempukku.lotro.logic.timing.Effect;
|
||||
|
||||
import java.util.LinkedList;
|
||||
@@ -33,29 +35,43 @@ public class Card7_262 extends AbstractEvent {
|
||||
@Override
|
||||
public boolean checkPlayRequirements(String playerId, LotroGame game, PhysicalCard self, int withTwilightRemoved, int twilightModifier, boolean ignoreRoamingPenalty, boolean ignoreCheckingDeadPile) {
|
||||
return super.checkPlayRequirements(playerId, game, self, withTwilightRemoved, twilightModifier, ignoreRoamingPenalty, ignoreCheckingDeadPile)
|
||||
&& PlayConditions.canPlayFromDiscard(playerId, game, Culture.SAURON, Race.ORC)
|
||||
&& (PlayConditions.canRemoveBurdens(game, self, 1)
|
||||
|| PlayConditions.canPlayFromStacked(playerId, game, Filters.siteControlled(playerId), Keyword.BESIEGER));
|
||||
&& (PlayConditions.canPlayFromDiscard(playerId, game, Culture.SAURON, Race.ORC)
|
||||
&& PlayConditions.canRemoveBurdens(game, self, 1))
|
||||
|| PlayConditions.canPlayFromStacked(playerId, game, Filters.siteControlled(playerId), Keyword.BESIEGER);
|
||||
}
|
||||
|
||||
@Override
|
||||
public PlayEventAction getPlayCardAction(final String playerId, LotroGame game, final PhysicalCard self, int twilightModifier, boolean ignoreRoamingPenalty) {
|
||||
public PlayEventAction getPlayCardAction(final String playerId, final LotroGame game, final PhysicalCard self, int twilightModifier, boolean ignoreRoamingPenalty) {
|
||||
final PlayEventAction action = new PlayEventAction(self);
|
||||
List<Effect> possibleCosts = new LinkedList<Effect>();
|
||||
possibleCosts.add(
|
||||
new ChooseAndPlayCardFromStackedEffect(playerId, Filters.siteControlled(playerId), Keyword.BESIEGER) {
|
||||
@Override
|
||||
public String getText(LotroGame game) {
|
||||
return "Play a besieger stacked on a site you control";
|
||||
if (PlayConditions.canPlayFromStacked(playerId, game, Filters.siteControlled(playerId), Keyword.BESIEGER)
|
||||
&& PlayConditions.canRemoveBurdens(game, self, 1)
|
||||
&& PlayConditions.canPlayFromDiscard(playerId, game, Culture.SAURON, Race.ORC)) {
|
||||
action.appendEffect(
|
||||
new PlayoutDecisionEffect(playerId,
|
||||
new MultipleChoiceAwaitingDecision(1, "Which would you like to do?", new String[]{"Play a besieger stacked on a site you control", "Remove a burden to play a SAURON Orc from Discard"}) {
|
||||
@Override
|
||||
protected void validDecisionMade(int index, String result) {
|
||||
if (result.equals("Play a besieger stacked on a site you control")) {
|
||||
action.appendEffect(
|
||||
new ChooseAndPlayCardFromStackedEffect(playerId, Filters.siteControlled(playerId), Keyword.BESIEGER));
|
||||
} else {
|
||||
action.appendCost(
|
||||
new RemoveBurdenEffect(playerId, self));
|
||||
action.appendEffect(
|
||||
new ChooseAndPlayCardFromDiscardEffect(playerId, game, Culture.SAURON, Race.ORC));
|
||||
}
|
||||
});
|
||||
possibleCosts.add(
|
||||
new RemoveBurdenEffect(playerId, self));
|
||||
action.appendCost(
|
||||
new ChoiceEffect(action, playerId, possibleCosts));
|
||||
|
||||
action.appendEffect(
|
||||
new ChooseAndPlayCardFromDiscardEffect(playerId, game, Culture.SAURON, Race.ORC));
|
||||
}
|
||||
}));
|
||||
} else if (PlayConditions.canPlayFromStacked(playerId, game, Filters.siteControlled(playerId), Keyword.BESIEGER)) {
|
||||
action.appendEffect(
|
||||
new ChooseAndPlayCardFromStackedEffect(playerId, Filters.siteControlled(playerId), Keyword.BESIEGER));
|
||||
} else if (PlayConditions.canRemoveBurdens(game, self, 1)
|
||||
&& PlayConditions.canPlayFromDiscard(playerId, game, Culture.SAURON, Race.ORC)) {
|
||||
action.appendCost(
|
||||
new RemoveBurdenEffect(playerId, self));
|
||||
action.appendEffect(
|
||||
new ChooseAndPlayCardFromDiscardEffect(playerId, game, Culture.SAURON, Race.ORC));
|
||||
}
|
||||
return action;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -11,6 +11,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.timing.EffectResult;
|
||||
import com.gempukku.lotro.logic.timing.results.SkirmishAboutToEndResult;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
@@ -32,12 +33,17 @@ public class Card7_182 extends AbstractResponseEvent {
|
||||
@Override
|
||||
public List<PlayEventAction> getOptionalAfterActions(String playerId, LotroGame game, EffectResult effectResult, PhysicalCard self) {
|
||||
if (effectResult.getType() == EffectResult.Type.SKIRMISH_ABOUT_TO_END
|
||||
&& checkPlayRequirements(playerId, game, self, 0, 0, false, false)
|
||||
&& Filters.filter(game.getGameState().getSkirmish().getShadowCharacters(), game.getGameState(), game.getModifiersQuerying(), Race.NAZGUL).size() > 0) {
|
||||
PlayEventAction action = new PlayEventAction(self);
|
||||
action.appendEffect(
|
||||
new ChooseAndDiscardCardsFromPlayEffect(action, playerId, 1, 1, CardType.POSSESSION, Filters.attachedTo(CardType.COMPANION, Filters.inSkirmish)));
|
||||
return Collections.singletonList(action);
|
||||
&& checkPlayRequirements(playerId, game, self, 0, 0, false, false)) {
|
||||
SkirmishAboutToEndResult checkSkirmish = (SkirmishAboutToEndResult) effectResult;
|
||||
for (PhysicalCard minion: checkSkirmish.getMinionsInvolved()) {
|
||||
if (minion.getBlueprint().getRace() == Race.NAZGUL) {
|
||||
PlayEventAction action = new PlayEventAction(self);
|
||||
action.appendEffect(
|
||||
new ChooseAndDiscardCardsFromPlayEffect(action, playerId, 1, 1, CardType.POSSESSION, Filters.attachedTo(
|
||||
CardType.COMPANION, Filters.inSkirmish)));
|
||||
return Collections.singletonList(action);
|
||||
}
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
@@ -43,7 +43,9 @@ public class Card8_054 extends AbstractMinion {
|
||||
&& PlayConditions.canRemoveAnyCultureTokens(game, 2, Filters.any)) {
|
||||
final OptionalTriggerAction action = new OptionalTriggerAction(self);
|
||||
action.appendCost(
|
||||
new ChooseAndRemoveCultureTokensFromCardEffect(self, playerId, null, 2, Filters.any));
|
||||
new ChooseAndRemoveCultureTokensFromCardEffect(self, playerId, null, 1, Filters.any));
|
||||
action.appendCost(
|
||||
new ChooseAndRemoveCultureTokensFromCardEffect(self, playerId, null, 1, Filters.any));
|
||||
action.appendEffect(
|
||||
new ChooseActiveCardEffect(self, playerId, "Choose a card to add tokens to", Filters.hasToken(Token.RAIDER)) {
|
||||
@Override
|
||||
|
||||
@@ -50,8 +50,6 @@ public class Card8_087 extends AbstractCompanion {
|
||||
new PlayAnyNumberOfCardsFromDeckEffect(action, playerId, rohanPossessions));
|
||||
}
|
||||
});
|
||||
action.appendEffect(
|
||||
new ShuffleDeckEffect(playerId));
|
||||
return Collections.singletonList(action);
|
||||
}
|
||||
return null;
|
||||
|
||||
@@ -12,6 +12,9 @@ import com.gempukku.lotro.common.Race;
|
||||
import com.gempukku.lotro.game.PhysicalCard;
|
||||
import com.gempukku.lotro.game.state.LotroGame;
|
||||
import com.gempukku.lotro.logic.actions.ActivateCardAction;
|
||||
import com.gempukku.lotro.logic.decisions.DecisionResultInvalidException;
|
||||
import com.gempukku.lotro.logic.decisions.IntegerAwaitingDecision;
|
||||
import com.gempukku.lotro.logic.effects.PlayoutDecisionEffect;
|
||||
import com.gempukku.lotro.logic.timing.Action;
|
||||
|
||||
import java.util.LinkedList;
|
||||
@@ -35,12 +38,12 @@ public class Card8_077 extends AbstractMinion {
|
||||
}
|
||||
|
||||
@Override
|
||||
protected List<? extends Action> getExtraPhaseActions(String playerId, LotroGame game, PhysicalCard self) {
|
||||
protected List<? extends Action> getExtraPhaseActions(final String playerId, final LotroGame game, PhysicalCard self) {
|
||||
if (PlayConditions.canUseShadowCardDuringPhase(game, Phase.SHADOW, self, 0)) {
|
||||
List<ActivateCardAction> actions = new LinkedList<ActivateCardAction>();
|
||||
if (PlayConditions.canSelfDiscard(self, game)
|
||||
&& PlayConditions.canPlayFromDiscard(playerId, game, Culture.WRAITH, CardType.MINION)) {
|
||||
ActivateCardAction action = new ActivateCardAction(self);
|
||||
final ActivateCardAction action = new ActivateCardAction(self);
|
||||
action.setText("Play from discard");
|
||||
action.appendCost(
|
||||
new SelfDiscardEffect(self));
|
||||
@@ -50,14 +53,23 @@ public class Card8_077 extends AbstractMinion {
|
||||
}
|
||||
if (PlayConditions.canSelfDiscard(self, game)
|
||||
&& PlayConditions.canSpot(game, 6, CardType.COMPANION)) {
|
||||
ActivateCardAction action = new ActivateCardAction(self);
|
||||
final ActivateCardAction action = new ActivateCardAction(self);
|
||||
action.setText("Play from deck");
|
||||
action.appendCost(
|
||||
new SelfDiscardEffect(self));
|
||||
action.appendEffect(
|
||||
new ChooseAndPlayCardFromDeckEffect(playerId, -1, Culture.WRAITH, CardType.MINION));
|
||||
action.appendEffect(
|
||||
new ChooseAndPlayCardFromDeckEffect(playerId, -1, Culture.WRAITH, CardType.MINION));
|
||||
new PlayoutDecisionEffect(playerId,
|
||||
new IntegerAwaitingDecision(1, "How many WRAITH minions do you wish to play from your draw deck?", 0, 2) {
|
||||
@Override
|
||||
public void decisionMade(String result) throws DecisionResultInvalidException {
|
||||
int count = getValidatedResult(result);
|
||||
for (int i = 0; i < count; i++)
|
||||
action.appendEffect(
|
||||
new ChooseAndPlayCardFromDeckEffect(playerId, -1, Culture.WRAITH, CardType.MINION));
|
||||
|
||||
}
|
||||
})
|
||||
);
|
||||
actions.add(action);
|
||||
}
|
||||
return actions;
|
||||
|
||||
@@ -45,12 +45,12 @@ public class SkirmishPhaseAction extends SystemQueueAction {
|
||||
protected void doPlayEffect(LotroGame game) {
|
||||
if (!game.getGameState().getSkirmish().isCancelled()) {
|
||||
insertEffect(
|
||||
new ResolveSkirmishEffect(),
|
||||
new TriggeringResultEffect(new SkirmishAboutToEndResult(), "Skirmish about to end"));
|
||||
new ResolveSkirmishEffect());
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
appendEffect(
|
||||
new TriggeringResultEffect(null, new SkirmishAboutToEndResult(shadowCharacters), "Skirmish about to end"));
|
||||
appendEffect(
|
||||
new TriggeringResultEffect(null, new EndOfPhaseResult(Phase.SKIRMISH), "End of skirmish phase"));
|
||||
appendEffect(
|
||||
|
||||
@@ -1,9 +1,22 @@
|
||||
package com.gempukku.lotro.logic.timing.results;
|
||||
|
||||
import com.gempukku.lotro.game.PhysicalCard;
|
||||
import com.gempukku.lotro.game.state.LotroGame;
|
||||
import com.gempukku.lotro.logic.timing.EffectResult;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
|
||||
public class SkirmishAboutToEndResult extends EffectResult {
|
||||
public SkirmishAboutToEndResult() {
|
||||
super(Type.SKIRMISH_ABOUT_TO_END);
|
||||
private Set<PhysicalCard> _minionsInvolved;
|
||||
|
||||
public SkirmishAboutToEndResult(Set<PhysicalCard> minionsInvolved) {
|
||||
super(EffectResult.Type.SKIRMISH_ABOUT_TO_END);
|
||||
_minionsInvolved = minionsInvolved;
|
||||
}
|
||||
|
||||
public Set<PhysicalCard> getMinionsInvolved() {
|
||||
return _minionsInvolved;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user