Merge pull request #45 from PhallenCassidy/fixes-for-lotr

Fixes for LotR
This commit is contained in:
Marcin Sciesinski
2018-04-16 12:53:54 -07:00
committed by GitHub
19 changed files with 180 additions and 84 deletions

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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