Migrated Gandalf cards in set 13 to hjson

This commit is contained in:
MarcinSc
2024-05-20 18:52:22 +07:00
parent 53562775e1
commit bd37966e4f
33 changed files with 417 additions and 976 deletions

View File

@@ -1,65 +0,0 @@
package com.gempukku.lotro.cards.set13.gandalf;
import com.gempukku.lotro.common.CardType;
import com.gempukku.lotro.common.Culture;
import com.gempukku.lotro.common.Side;
import com.gempukku.lotro.common.Token;
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.CostToEffectAction;
import com.gempukku.lotro.logic.actions.OptionalTriggerAction;
import com.gempukku.lotro.logic.cardtype.AbstractFollower;
import com.gempukku.lotro.logic.effects.AddTwilightEffect;
import com.gempukku.lotro.logic.effects.ReinforceTokenEffect;
import com.gempukku.lotro.logic.modifiers.Modifier;
import com.gempukku.lotro.logic.modifiers.SpotCondition;
import com.gempukku.lotro.logic.modifiers.StrengthModifier;
import com.gempukku.lotro.logic.timing.EffectResult;
import com.gempukku.lotro.logic.timing.TriggerConditions;
import java.util.Collections;
import java.util.List;
/**
* Set: Bloodlines
* Side: Free
* Culture: Gandalf
* Twilight Cost: 2
* Type: Follower
* Game Text: Aid - (2). (At the start of the maneuver phase, you may add (2) to transfer this to a companion.) Each
* time you transfer this to a companion, you may reinforce a [GANDALF] token. While you can spot a [GANDALF] companion,
* each minion skirmishing bearer is strength -1.
*/
public class Card13_028 extends AbstractFollower {
public Card13_028() {
super(Side.FREE_PEOPLE, 2, 0, 0, 0, Culture.GANDALF, "Alatar", "Final Envoy", true);
}
@Override
public boolean canPayAidCost(LotroGame game, PhysicalCard self) {
return true;
}
@Override
public void appendAidCosts(LotroGame game, CostToEffectAction action, PhysicalCard self) {
action.appendCost(new AddTwilightEffect(self, 2));
}
@Override
public List<OptionalTriggerAction> getOptionalAfterTriggers(String playerId, LotroGame game, EffectResult effectResult, PhysicalCard self) {
if (TriggerConditions.transferredCard(game, effectResult, self, null, CardType.COMPANION)) {
OptionalTriggerAction action = new OptionalTriggerAction(self);
action.appendEffect(
new ReinforceTokenEffect(self, playerId, Token.GANDALF));
return Collections.singletonList(action);
}
return null;
}
@Override
public List<? extends Modifier> getInPlayModifiers(LotroGame game, PhysicalCard self) {
return Collections.singletonList(
new StrengthModifier(self, Filters.and(CardType.MINION, Filters.inSkirmishAgainst(Filters.hasAttached(self))), new SpotCondition(Culture.GANDALF, CardType.COMPANION), -1));
}
}

View File

@@ -1,47 +0,0 @@
package com.gempukku.lotro.cards.set13.gandalf;
import com.gempukku.lotro.logic.cardtype.AbstractCompanion;
import com.gempukku.lotro.logic.timing.PlayConditions;
import com.gempukku.lotro.logic.timing.TriggerConditions;
import com.gempukku.lotro.logic.effects.choose.ChooseAndPutCardFromDiscardIntoHandEffect;
import com.gempukku.lotro.logic.effects.choose.ChooseAndRemoveCultureTokensFromCardEffect;
import com.gempukku.lotro.common.*;
import com.gempukku.lotro.game.PhysicalCard;
import com.gempukku.lotro.game.state.LotroGame;
import com.gempukku.lotro.logic.actions.OptionalTriggerAction;
import com.gempukku.lotro.logic.timing.EffectResult;
import java.util.Collections;
import java.util.List;
/**
* Set: Bloodlines
* Side: Free
* Culture: Gandalf
* Twilight Cost: 2
* Type: Companion • Man
* Strength: 6
* Vitality: 3
* Resistance: 6
* Game Text: At the start of the fellowship phase, you may remove 2 Free Peoples culture tokens to take a [GANDALF]
* event into hand from your discard pile.
*/
public class Card13_029 extends AbstractCompanion {
public Card13_029() {
super(2, 6, 3, 6, Culture.GANDALF, Race.MAN, null, "Dasron", "Merchant From Dorwinion", true);
}
@Override
public List<OptionalTriggerAction> getOptionalAfterTriggers(String playerId, LotroGame game, EffectResult effectResult, PhysicalCard self) {
if (TriggerConditions.startOfPhase(game, effectResult, Phase.FELLOWSHIP)
&& PlayConditions.canRemoveAnyCultureTokens(game, 2, Side.FREE_PEOPLE)) {
OptionalTriggerAction action = new OptionalTriggerAction(self);
action.appendCost(
new ChooseAndRemoveCultureTokensFromCardEffect(self, playerId, null, 2, Side.FREE_PEOPLE));
action.appendEffect(
new ChooseAndPutCardFromDiscardIntoHandEffect(action, playerId, 1, 1, Culture.GANDALF, CardType.EVENT));
return Collections.singletonList(action);
}
return null;
}
}

View File

@@ -1,69 +0,0 @@
package com.gempukku.lotro.cards.set13.gandalf;
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.actions.RequiredTriggerAction;
import com.gempukku.lotro.logic.cardtype.AbstractPermanent;
import com.gempukku.lotro.logic.effects.*;
import com.gempukku.lotro.logic.modifiers.KeywordModifier;
import com.gempukku.lotro.logic.timing.Effect;
import com.gempukku.lotro.logic.timing.EffectResult;
import com.gempukku.lotro.logic.timing.PlayConditions;
import com.gempukku.lotro.logic.timing.TriggerConditions;
import java.util.Collections;
import java.util.LinkedList;
import java.util.List;
/**
* Set: Bloodlines
* Side: Free
* Culture: Gandalf
* Twilight Cost: 1
* Type: Condition • Support Area
* Game Text: When you play this, add a [GANDALF] token here. Maneuver: Discard this from play or remove a token from
* here to spot a [GANDALF] companion. That companion gains muster until end of turn.
*/
public class Card13_030 extends AbstractPermanent {
public Card13_030() {
super(Side.FREE_PEOPLE, 1, CardType.CONDITION, Culture.GANDALF, "Fear and Great Wonder", null, true);
}
@Override
public List<RequiredTriggerAction> getRequiredAfterTriggers(LotroGame game, EffectResult effectResult, PhysicalCard self) {
if (TriggerConditions.played(game, effectResult, self)) {
RequiredTriggerAction action = new RequiredTriggerAction(self);
action.appendEffect(
new AddTokenEffect(self, self, Token.GANDALF));
return Collections.singletonList(action);
}
return null;
}
@Override
public List<? extends ActivateCardAction> getPhaseActionsInPlay(String playerId, LotroGame game, final PhysicalCard self) {
if (PlayConditions.canUseFPCardDuringPhase(game, Phase.MANEUVER, self)) {
final ActivateCardAction action = new ActivateCardAction(self);
List<Effect> possibleCosts = new LinkedList<>();
possibleCosts.add(
new RemoveTokenEffect(self, self, Token.GANDALF));
possibleCosts.add(
new SelfDiscardEffect(self));
action.appendCost(
new ChoiceEffect(action, playerId, possibleCosts));
action.appendEffect(
new ChooseActiveCardEffect(self, playerId, "Choose a GANDALF companion", Culture.GANDALF, CardType.COMPANION) {
@Override
protected void cardSelected(LotroGame game, PhysicalCard card) {
action.appendEffect(
new AddUntilEndOfTurnModifierEffect(
new KeywordModifier(self, card, Keyword.MUSTER)));
}
});
return Collections.singletonList(action);
}
return null;
}
}

View File

@@ -1,38 +0,0 @@
package com.gempukku.lotro.cards.set13.gandalf;
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.actions.PlayEventAction;
import com.gempukku.lotro.logic.cardtype.AbstractEvent;
import com.gempukku.lotro.logic.effects.choose.ChooseAndAddUntilEOPStrengthBonusEffect;
import com.gempukku.lotro.logic.timing.PlayConditions;
/**
* Set: Bloodlines
* Side: Free
* Culture: Gandalf
* Twilight Cost: 1
* Type: Event • Skirmish
* Game Text: Spell. Spot 3 [GANDALF] companions to make a minion skirmishing a companion strength -3.
*/
public class Card13_031 extends AbstractEvent {
public Card13_031() {
super(Side.FREE_PEOPLE, 1, Culture.GANDALF, "The Flame of Anor", Phase.SKIRMISH);
addKeyword(Keyword.SPELL);
}
@Override
public boolean checkPlayRequirements(LotroGame game, PhysicalCard self) {
return PlayConditions.canSpot(game, 3, Culture.GANDALF, CardType.COMPANION);
}
@Override
public PlayEventAction getPlayEventCardAction(String playerId, LotroGame game, PhysicalCard self) {
PlayEventAction action = new PlayEventAction(self);
action.appendEffect(
new ChooseAndAddUntilEOPStrengthBonusEffect(action, self, playerId, -3, CardType.MINION, Filters.inSkirmishAgainst(CardType.COMPANION)));
return action;
}
}

View File

@@ -1,34 +0,0 @@
package com.gempukku.lotro.cards.set13.gandalf;
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.actions.PlayEventAction;
import com.gempukku.lotro.logic.cardtype.AbstractEvent;
import com.gempukku.lotro.logic.effects.choose.ChooseAndAddUntilEOPStrengthBonusEffect;
import com.gempukku.lotro.logic.modifiers.evaluator.CardMatchesEvaluator;
/**
* Set: Bloodlines
* Side: Free
* Culture: Gandalf
* Twilight Cost: 2
* Type: Event • Skirmish
* Game Text: Spell. Make a [GANDALF] companion strength +2 (or +4 if that companion bears a follower).
*/
public class Card13_032 extends AbstractEvent {
public Card13_032() {
super(Side.FREE_PEOPLE, 2, Culture.GANDALF, "For a While Less Dark", Phase.SKIRMISH);
addKeyword(Keyword.SPELL);
}
@Override
public PlayEventAction getPlayEventCardAction(String playerId, LotroGame game, PhysicalCard self) {
PlayEventAction action = new PlayEventAction(self);
action.appendEffect(
new ChooseAndAddUntilEOPStrengthBonusEffect(action, self, playerId,
new CardMatchesEvaluator(2, 4, Filters.hasAttached(CardType.FOLLOWER)), Culture.GANDALF, CardType.COMPANION));
return action;
}
}

View File

@@ -1,65 +0,0 @@
package com.gempukku.lotro.cards.set13.gandalf;
import com.gempukku.lotro.logic.cardtype.AbstractCompanion;
import com.gempukku.lotro.logic.timing.PlayConditions;
import com.gempukku.lotro.logic.timing.TriggerConditions;
import com.gempukku.lotro.logic.effects.AddBurdenEffect;
import com.gempukku.lotro.logic.effects.ChoiceEffect;
import com.gempukku.lotro.common.CardType;
import com.gempukku.lotro.common.Culture;
import com.gempukku.lotro.common.Keyword;
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.RequiredTriggerAction;
import com.gempukku.lotro.logic.effects.ChooseAndDiscardCardsFromHandEffect;
import com.gempukku.lotro.logic.timing.Effect;
import com.gempukku.lotro.logic.timing.EffectResult;
import java.util.Collections;
import java.util.LinkedList;
import java.util.List;
/**
* Set: Bloodlines
* Side: Free
* Culture: Gandalf
* Twilight Cost: 4
* Type: Companion • Wizard
* Strength: 7
* Vitality: 4
* Resistance: 5
* Game Text: While Gandalf is the Ring-bearer, each time the fellowship moves, add 3 burdens unless you spot 2 other
* companions and discard 2 [GANDALF] cards from hand.
*/
public class Card13_033 extends AbstractCompanion {
public Card13_033() {
super(4, 7, 4, 5, Culture.GANDALF, Race.WIZARD, null, "Gandalf", "Bearer of Obligation", true);
addKeyword(Keyword.CAN_START_WITH_RING);
}
@Override
public List<RequiredTriggerAction> getRequiredAfterTriggers(LotroGame game, EffectResult effectResult, PhysicalCard self) {
if (TriggerConditions.moves(game, effectResult)
&& game.getGameState().getRingBearer(game.getGameState().getCurrentPlayerId()) == self) {
RequiredTriggerAction action = new RequiredTriggerAction(self);
List<Effect> possibleEffects = new LinkedList<>();
possibleEffects.add(
new AddBurdenEffect(self.getOwner(), self, 3));
if (PlayConditions.canSpot(game, 2, Filters.not(self), CardType.COMPANION))
possibleEffects.add(
new ChooseAndDiscardCardsFromHandEffect(action, game.getGameState().getCurrentPlayerId(), false, 2, Culture.GANDALF) {
@Override
public String getText(LotroGame game) {
return "Discard 2 GANDALF cards from hand";
}
});
action.appendEffect(
new ChoiceEffect(action, game.getGameState().getCurrentPlayerId(), possibleEffects));
return Collections.singletonList(action);
}
return null;
}
}

View File

@@ -1,62 +0,0 @@
package com.gempukku.lotro.cards.set13.gandalf;
import com.gempukku.lotro.common.CardType;
import com.gempukku.lotro.common.Culture;
import com.gempukku.lotro.common.Phase;
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.actions.PlayEventAction;
import com.gempukku.lotro.logic.cardtype.AbstractEvent;
import com.gempukku.lotro.logic.effects.RemovePlayedEventFromGameEffect;
import com.gempukku.lotro.logic.effects.choose.ChooseAndAddUntilEOPStrengthBonusEffect;
import com.gempukku.lotro.logic.effects.choose.ChooseAndRemoveFromTheGameCardsInDiscardEffect;
import com.gempukku.lotro.logic.timing.Action;
import com.gempukku.lotro.logic.timing.PlayConditions;
import java.util.Collections;
import java.util.List;
/**
* Set: Bloodlines
* Side: Free
* Culture: Gandalf
* Twilight Cost: 2
* Type: Event • Skirmish
* Game Text: You may remove from the game 4 other [GANDALF] cards in your discard pile to play this event from your
* discard pile. Then remove this event from the game. Spot Gandalf to make your [GANDALF] companion strength +3.
*/
public class Card13_034 extends AbstractEvent {
public Card13_034() {
super(Side.FREE_PEOPLE, 2, Culture.GANDALF, "Look to My Coming", Phase.SKIRMISH);
}
@Override
public boolean checkPlayRequirements(LotroGame game, PhysicalCard self) {
return PlayConditions.canSpot(game, Filters.gandalf);
}
@Override
public PlayEventAction getPlayEventCardAction(String playerId, LotroGame game, PhysicalCard self) {
PlayEventAction action = new PlayEventAction(self);
action.appendEffect(
new ChooseAndAddUntilEOPStrengthBonusEffect(action, self, playerId, 3, Filters.owner(playerId), Culture.GANDALF, CardType.COMPANION));
return action;
}
@Override
public List<? extends Action> getPhaseActionsFromDiscard(String playerId, LotroGame game, PhysicalCard self) {
if (PlayConditions.isPhase(game, Phase.SKIRMISH)
&& PlayConditions.canPlayFromDiscard(playerId, game, self)
&& PlayConditions.canRemoveFromDiscardToPlay(self, game, playerId, 4, Culture.GANDALF)) {
final PlayEventAction action = getPlayEventCardAction(playerId, game, self);
action.appendCost(
new ChooseAndRemoveFromTheGameCardsInDiscardEffect(action, self, playerId, 4, 4, Culture.GANDALF));
action.appendEffect(
new RemovePlayedEventFromGameEffect(action));
return Collections.singletonList(action);
}
return null;
}
}

View File

@@ -1,45 +0,0 @@
package com.gempukku.lotro.cards.set13.gandalf;
import com.gempukku.lotro.common.CardType;
import com.gempukku.lotro.common.Culture;
import com.gempukku.lotro.common.Phase;
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.actions.PlayEventAction;
import com.gempukku.lotro.logic.cardtype.AbstractEvent;
import com.gempukku.lotro.logic.effects.DrawCardsEffect;
import com.gempukku.lotro.logic.effects.choose.ChooseAndDiscardCardsFromPlayEffect;
import com.gempukku.lotro.logic.timing.PlayConditions;
/**
* Set: Bloodlines
* Side: Free
* Culture: Gandalf
* Twilight Cost: 2
* Type: Event • Maneuver
* Game Text: Discard your [GANDALF] condition from play to discard a condition from play and draw a card.
*/
public class Card13_035 extends AbstractEvent {
public Card13_035() {
super(Side.FREE_PEOPLE, 2, Culture.GANDALF, "No Colour Now", Phase.MANEUVER);
}
@Override
public boolean checkPlayRequirements(LotroGame game, PhysicalCard self) {
return PlayConditions.canDiscardFromPlay(self, game, Filters.owner(self.getOwner()), Culture.GANDALF, CardType.CONDITION);
}
@Override
public PlayEventAction getPlayEventCardAction(String playerId, LotroGame game, PhysicalCard self) {
PlayEventAction action = new PlayEventAction(self);
action.appendCost(
new ChooseAndDiscardCardsFromPlayEffect(action, playerId, 1, 1, Filters.owner(playerId), Culture.GANDALF, CardType.CONDITION));
action.appendEffect(
new ChooseAndDiscardCardsFromPlayEffect(action, playerId, 1, 1, CardType.CONDITION));
action.appendEffect(
new DrawCardsEffect(action, playerId, 1));
return action;
}
}

View File

@@ -1,87 +0,0 @@
package com.gempukku.lotro.cards.set13.gandalf;
import com.gempukku.lotro.common.*;
import com.gempukku.lotro.filters.Filters;
import com.gempukku.lotro.game.ExtraPlayCost;
import com.gempukku.lotro.game.PhysicalCard;
import com.gempukku.lotro.game.state.LotroGame;
import com.gempukku.lotro.logic.actions.OptionalTriggerAction;
import com.gempukku.lotro.logic.cardtype.AbstractAttachableFPPossession;
import com.gempukku.lotro.logic.effects.AddBurdenEffect;
import com.gempukku.lotro.logic.effects.ChooseAndDiscardCardsFromHandEffect;
import com.gempukku.lotro.logic.effects.RevealHandEffect;
import com.gempukku.lotro.logic.effects.choose.ChooseOpponentEffect;
import com.gempukku.lotro.logic.modifiers.cost.DiscardFromPlayExtraPlayCostModifier;
import com.gempukku.lotro.logic.timing.EffectResult;
import com.gempukku.lotro.logic.timing.PlayConditions;
import com.gempukku.lotro.logic.timing.TriggerConditions;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
/**
* Set: Bloodlines
* Side: Free
* Culture: Gandalf
* Twilight Cost: 0
* Type: Artifact • Palantir
* Resistance: -2
* Game Text: Bearer must be Gandalf. To play this, if you can spot The Palantir of Orthanc, discard it. At the start of
* the fellowship phase, you may add a burden to reveal a Shadow player's hand. He or she must choose a revealed minion
* and discard it from hand.
*/
public class Card13_036 extends AbstractAttachableFPPossession {
public Card13_036() {
super(0, 0, 0, Culture.GANDALF, CardType.ARTIFACT, PossessionClass.PALANTIR, "The Palantír of Orthanc", "Recovered Seeing Stone", true);
}
@Override
public int getResistance() {
return -2;
}
@Override
public Filterable getValidTargetFilter(String playerId, LotroGame game, PhysicalCard self) {
return Filters.gandalf;
}
@Override
public boolean skipUniquenessCheck() {
return true;
}
@Override
public List<? extends ExtraPlayCost> getExtraCostToPlay(LotroGame game, PhysicalCard self) {
if (PlayConditions.canSpot(game, Filters.name(getTitle()))) {
return Collections.singletonList(
new DiscardFromPlayExtraPlayCostModifier(self, self, 1, null, Filters.name(getTitle())));
}
return super.getExtraCostToPlay(game, self);
}
@Override
public List<OptionalTriggerAction> getOptionalAfterTriggers(final String playerId, LotroGame game, EffectResult effectResult, final PhysicalCard self) {
if (TriggerConditions.startOfPhase(game, effectResult, Phase.FELLOWSHIP)) {
final OptionalTriggerAction action = new OptionalTriggerAction(self);
action.appendCost(
new AddBurdenEffect(self.getOwner(), self, 1));
action.appendEffect(
new ChooseOpponentEffect(playerId) {
@Override
protected void opponentChosen(final String opponentId) {
action.appendEffect(
new RevealHandEffect(self, playerId, opponentId) {
@Override
protected void cardsRevealed(Collection<? extends PhysicalCard> cards) {
action.appendEffect(
new ChooseAndDiscardCardsFromHandEffect(action, opponentId, true, 1, CardType.MINION));
}
});
}
});
return Collections.singletonList(action);
}
return null;
}
}

View File

@@ -1,70 +0,0 @@
package com.gempukku.lotro.cards.set13.gandalf;
import com.gempukku.lotro.common.CardType;
import com.gempukku.lotro.common.Culture;
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.actions.CostToEffectAction;
import com.gempukku.lotro.logic.actions.OptionalTriggerAction;
import com.gempukku.lotro.logic.actions.RequiredTriggerAction;
import com.gempukku.lotro.logic.cardtype.AbstractFollower;
import com.gempukku.lotro.logic.effects.AddTwilightEffect;
import com.gempukku.lotro.logic.effects.ExertCharactersEffect;
import com.gempukku.lotro.logic.effects.choose.ChooseAndDiscardCardsFromPlayEffect;
import com.gempukku.lotro.logic.timing.EffectResult;
import com.gempukku.lotro.logic.timing.TriggerConditions;
import java.util.Collections;
import java.util.List;
/**
* Set: Bloodlines
* Side: Free
* Culture: Gandalf
* Twilight Cost: 2
* Type: Follower
* Strength: +1
* Game Text: Aid - (2). Each time you transfer this to a companion, except a [GANDALF] companion, exert bearer twice.
* Each time bearer wins a skirmish, you may discard a condition from play.
*/
public class Card13_037 extends AbstractFollower {
public Card13_037() {
super(Side.FREE_PEOPLE, 2, 1, 0, 0, Culture.GANDALF, "Pallando", "Far-travelling One", true);
}
@Override
public boolean canPayAidCost(LotroGame game, PhysicalCard self) {
return true;
}
@Override
public void appendAidCosts(LotroGame game, CostToEffectAction action, PhysicalCard self) {
action.appendCost(new AddTwilightEffect(self, 2));
}
@Override
public List<RequiredTriggerAction> getRequiredAfterTriggers(LotroGame game, EffectResult effectResult, PhysicalCard self) {
if (TriggerConditions.transferredCard(game, effectResult, self, null, Filters.and(CardType.COMPANION, Filters.not(Culture.GANDALF)))) {
RequiredTriggerAction action = new RequiredTriggerAction(self);
action.appendEffect(
new ExertCharactersEffect(action, self, self.getAttachedTo()));
action.appendEffect(
new ExertCharactersEffect(action, self, self.getAttachedTo()));
return Collections.singletonList(action);
}
return null;
}
@Override
public List<OptionalTriggerAction> getOptionalAfterTriggers(String playerId, LotroGame game, EffectResult effectResult, PhysicalCard self) {
if (TriggerConditions.winsSkirmish(game, effectResult, Filters.hasAttached(self))) {
OptionalTriggerAction action = new OptionalTriggerAction(self);
action.appendEffect(
new ChooseAndDiscardCardsFromPlayEffect(action, playerId, 1, 1, CardType.CONDITION));
return Collections.singletonList(action);
}
return null;
}
}

View File

@@ -1,51 +0,0 @@
package com.gempukku.lotro.cards.set13.gandalf;
import com.gempukku.lotro.common.CardType;
import com.gempukku.lotro.common.Culture;
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.actions.CostToEffectAction;
import com.gempukku.lotro.logic.cardtype.AbstractFollower;
import com.gempukku.lotro.logic.effects.AddTwilightEffect;
import com.gempukku.lotro.logic.modifiers.CancelStrengthBonusTargetModifier;
import com.gempukku.lotro.logic.modifiers.Modifier;
import com.gempukku.lotro.logic.modifiers.SpotCondition;
import java.util.Collections;
import java.util.List;
/**
* Set: Bloodlines
* Side: Free
* Culture: Gandalf
* Twilight Cost: 2
* Type: Follower
* Resistance: +2
* Game Text: Aid - (2). (At the start of the maneuver phase, you may add (2) to transfer this to a companion.) While
* you can spot 2 [GANDALF] companions, minions skirmishing bearer do not gain strength bonuses from possessions.
*/
public class Card13_038 extends AbstractFollower {
public Card13_038() {
super(Side.FREE_PEOPLE, 2, 0, 0, 2, Culture.GANDALF, "Radagast", "Tender of Beasts", true);
}
@Override
public boolean canPayAidCost(LotroGame game, PhysicalCard self) {
return true;
}
@Override
public void appendAidCosts(LotroGame game, CostToEffectAction action, PhysicalCard self) {
action.appendCost(new AddTwilightEffect(self, 2));
}
@Override
public List<? extends Modifier> getInPlayModifiers(LotroGame game, PhysicalCard self) {
return Collections.singletonList(
new CancelStrengthBonusTargetModifier(self, new SpotCondition(2, Culture.GANDALF, CardType.COMPANION),
Filters.and(CardType.MINION, Filters.inSkirmishAgainst(Filters.hasAttached(self))),
CardType.POSSESSION));
}
}

View File

@@ -1,42 +0,0 @@
package com.gempukku.lotro.cards.set13.gandalf;
import com.gempukku.lotro.common.CardType;
import com.gempukku.lotro.common.Culture;
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;
import com.gempukku.lotro.logic.actions.PlayEventAction;
import com.gempukku.lotro.logic.cardtype.AbstractEvent;
import com.gempukku.lotro.logic.effects.ChooseAndDiscardCardsFromHandEffect;
import com.gempukku.lotro.logic.effects.choose.ChooseAndPutCardFromDiscardIntoHandEffect;
import com.gempukku.lotro.logic.timing.PlayConditions;
/**
* Set: Bloodlines
* Side: Free
* Culture: Gandalf
* Twilight Cost: 1
* Type: Event • Fellowship
* Game Text: Discard 2 Shadow cards from hand to take a [GANDALF] event into hand from your discard pile.
*/
public class Card13_039 extends AbstractEvent {
public Card13_039() {
super(Side.FREE_PEOPLE, 1, Culture.GANDALF, "Return to Us", Phase.FELLOWSHIP);
}
@Override
public boolean checkPlayRequirements(LotroGame game, PhysicalCard self) {
return PlayConditions.canDiscardCardsFromHandToPlay(self, game, self.getOwner(), 2, Side.SHADOW);
}
@Override
public PlayEventAction getPlayEventCardAction(String playerId, LotroGame game, PhysicalCard self) {
PlayEventAction action = new PlayEventAction(self);
action.appendCost(
new ChooseAndDiscardCardsFromHandEffect(action, playerId, false, 2, Side.SHADOW));
action.appendEffect(
new ChooseAndPutCardFromDiscardIntoHandEffect(action, playerId, 1, 1, Culture.GANDALF, CardType.EVENT));
return action;
}
}

View File

@@ -1,66 +0,0 @@
package com.gempukku.lotro.cards.set13.gandalf;
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.actions.ActivateCardAction;
import com.gempukku.lotro.logic.actions.OptionalTriggerAction;
import com.gempukku.lotro.logic.cardtype.AbstractAttachableFPPossession;
import com.gempukku.lotro.logic.effects.ChooseAndWoundCharactersEffect;
import com.gempukku.lotro.logic.effects.ReinforceTokenEffect;
import com.gempukku.lotro.logic.effects.choose.ChooseAndRemoveCultureTokensFromCardEffect;
import com.gempukku.lotro.logic.timing.EffectResult;
import com.gempukku.lotro.logic.timing.PlayConditions;
import com.gempukku.lotro.logic.timing.TriggerConditions;
import java.util.Collections;
import java.util.List;
/**
* Set: Bloodlines
* Side: Free
* Culture: Gandalf
* Twilight Cost: 2
* Type: Possession • Mount
* Strength: +1
* Game Text: Bearer must be a Wizard. When you play Shadowfax, you may reinforce a [GANDALF] token. Skirmish: Remove
* 2 [GANDALF] tokens to wound a minion skirmishing bearer.
*/
public class Card13_040 extends AbstractAttachableFPPossession {
public Card13_040() {
super(2, 1, 0, Culture.GANDALF, PossessionClass.MOUNT, "Shadowfax", "Roaring Wind", true);
}
@Override
public Filterable getValidTargetFilter(String playerId, LotroGame game, PhysicalCard self) {
return Race.WIZARD;
}
@Override
public List<OptionalTriggerAction> getOptionalAfterTriggers(String playerId, LotroGame game, EffectResult effectResult, PhysicalCard self) {
if (TriggerConditions.played(game, effectResult, self)) {
OptionalTriggerAction action = new OptionalTriggerAction(self);
action.appendEffect(
new ReinforceTokenEffect(self, playerId, Token.GANDALF));
return Collections.singletonList(action);
}
return null;
}
@Override
public List<? extends ActivateCardAction> getPhaseActionsInPlay(String playerId, LotroGame game, PhysicalCard self) {
if (PlayConditions.canUseFPCardDuringPhase(game, Phase.SKIRMISH, self)
&& PlayConditions.canRemoveTokensFromAnything(game, Token.GANDALF, 2)) {
ActivateCardAction action = new ActivateCardAction(self);
action.appendCost(
new ChooseAndRemoveCultureTokensFromCardEffect(self, playerId, Token.GANDALF, 1, Filters.any));
action.appendCost(
new ChooseAndRemoveCultureTokensFromCardEffect(self, playerId, Token.GANDALF, 1, Filters.any));
action.appendEffect(
new ChooseAndWoundCharactersEffect(action, playerId, 1, 1, CardType.MINION, Filters.inSkirmishAgainst(self.getAttachedTo())));
return Collections.singletonList(action);
}
return null;
}
}

View File

@@ -1,41 +0,0 @@
package com.gempukku.lotro.cards.set13.gandalf;
import com.gempukku.lotro.common.CardType;
import com.gempukku.lotro.common.Culture;
import com.gempukku.lotro.common.Keyword;
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.cardtype.AbstractPermanent;
import com.gempukku.lotro.logic.modifiers.KeywordModifier;
import com.gempukku.lotro.logic.modifiers.Modifier;
import com.gempukku.lotro.logic.modifiers.StrengthModifier;
import java.util.LinkedList;
import java.util.List;
/**
* Set: Bloodlines
* Side: Free
* Culture: Gandalf
* Twilight Cost: 1
* Type: Condition • Support Area
* Game Text: Each companion bearing a follower gains muster (and is strength +1 if that companion is a [GANDALF]
* companion).
*/
public class Card13_041 extends AbstractPermanent {
public Card13_041() {
super(Side.FREE_PEOPLE, 1, CardType.CONDITION, Culture.GANDALF, "Strange Meeting");
}
@Override
public List<? extends Modifier> getInPlayModifiers(LotroGame game, PhysicalCard self) {
List<Modifier> modifiers = new LinkedList<>();
modifiers.add(
new KeywordModifier(self, Filters.and(CardType.COMPANION, Filters.hasAttached(CardType.FOLLOWER)), Keyword.MUSTER));
modifiers.add(
new StrengthModifier(self, Filters.and(CardType.COMPANION, Culture.GANDALF, Filters.hasAttached(CardType.FOLLOWER)), 1));
return modifiers;
}
}

View File

@@ -1,71 +0,0 @@
package com.gempukku.lotro.cards.set13.gandalf;
import com.gempukku.lotro.common.*;
import com.gempukku.lotro.game.PhysicalCard;
import com.gempukku.lotro.game.state.LotroGame;
import com.gempukku.lotro.logic.GameUtils;
import com.gempukku.lotro.logic.actions.ActivateCardAction;
import com.gempukku.lotro.logic.actions.RequiredTriggerAction;
import com.gempukku.lotro.logic.cardtype.AbstractPermanent;
import com.gempukku.lotro.logic.effects.AddTokenEffect;
import com.gempukku.lotro.logic.effects.ChoiceEffect;
import com.gempukku.lotro.logic.effects.RemoveTokenEffect;
import com.gempukku.lotro.logic.effects.SelfDiscardEffect;
import com.gempukku.lotro.logic.effects.choose.ChooseAndDiscardCardsFromPlayEffect;
import com.gempukku.lotro.logic.timing.Effect;
import com.gempukku.lotro.logic.timing.EffectResult;
import com.gempukku.lotro.logic.timing.PlayConditions;
import com.gempukku.lotro.logic.timing.TriggerConditions;
import java.util.Collections;
import java.util.LinkedList;
import java.util.List;
/**
* Set: Bloodlines
* Side: Free
* Culture: Gandalf
* Twilight Cost: 3
* Type: Condition • Support Area
* Game Text: To play, spot a Wizard. When you play this, add X [GANDALF] tokens here, where X is the current region
* number. Maneuver: Discard this from play or remove 2 tokens from here to discard a Shadow condition from play.
*/
public class Card13_042 extends AbstractPermanent {
public Card13_042() {
super(Side.FREE_PEOPLE, 3, CardType.CONDITION, Culture.GANDALF, "Traveler's Homestead", null, true);
}
@Override
public boolean checkPlayRequirements(LotroGame game, PhysicalCard self) {
return PlayConditions.canSpot(game, Race.WIZARD);
}
@Override
public List<RequiredTriggerAction> getRequiredAfterTriggers(LotroGame game, EffectResult effectResult, PhysicalCard self) {
if (TriggerConditions.played(game, effectResult, self)) {
RequiredTriggerAction action = new RequiredTriggerAction(self);
action.appendEffect(
new AddTokenEffect(self, self, Token.GANDALF, GameUtils.getRegion(game)));
return Collections.singletonList(action);
}
return null;
}
@Override
public List<? extends ActivateCardAction> getPhaseActionsInPlay(String playerId, LotroGame game, PhysicalCard self) {
if (PlayConditions.canUseFPCardDuringPhase(game, Phase.MANEUVER, self)) {
ActivateCardAction action = new ActivateCardAction(self);
List<Effect> possibleCosts = new LinkedList<>();
possibleCosts.add(
new RemoveTokenEffect(self, self, Token.GANDALF, 2));
possibleCosts.add(
new SelfDiscardEffect(self));
action.appendCost(
new ChoiceEffect(action, playerId, possibleCosts));
action.appendEffect(
new ChooseAndDiscardCardsFromPlayEffect(action, playerId, 1, 1, CardType.CONDITION, Side.SHADOW));
return Collections.singletonList(action);
}
return null;
}
}

View File

@@ -1,51 +0,0 @@
package com.gempukku.lotro.cards.set13.gandalf;
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.actions.ActivateCardAction;
import com.gempukku.lotro.logic.cardtype.AbstractPermanent;
import com.gempukku.lotro.logic.effects.AddBurdenEffect;
import com.gempukku.lotro.logic.effects.AddUntilEndOfPhaseModifierEffect;
import com.gempukku.lotro.logic.effects.choose.ChooseAndExertCharactersEffect;
import com.gempukku.lotro.logic.modifiers.KeywordModifier;
import com.gempukku.lotro.logic.timing.PlayConditions;
import java.util.Collections;
import java.util.List;
/**
* Set: Bloodlines
* Side: Free
* Culture: Gandalf
* Twilight Cost: 1
* Type: Condition • Support Area
* Game Text: Skirmish: Exert your [GANDALF] companion and add a burden to make that companion damage +1.
*/
public class Card13_043 extends AbstractPermanent {
public Card13_043() {
super(Side.FREE_PEOPLE, 1, CardType.CONDITION, Culture.GANDALF, "Vapour and Steam");
}
@Override
public List<? extends ActivateCardAction> getPhaseActionsInPlay(String playerId, LotroGame game, final PhysicalCard self) {
if (PlayConditions.canUseFPCardDuringPhase(game, Phase.SKIRMISH, self)
&& PlayConditions.canExert(self, game, Filters.owner(playerId), Culture.GANDALF, CardType.COMPANION)) {
final ActivateCardAction action = new ActivateCardAction(self);
action.appendCost(
new ChooseAndExertCharactersEffect(action, playerId, 1, 1, Filters.owner(playerId), Culture.GANDALF, CardType.COMPANION) {
@Override
protected void forEachCardExertedCallback(PhysicalCard character) {
action.appendEffect(
new AddUntilEndOfPhaseModifierEffect(
new KeywordModifier(self, character, Keyword.DAMAGE, 1)));
}
});
action.appendCost(
new AddBurdenEffect(self.getOwner(), self, 1));
return Collections.singletonList(action);
}
return null;
}
}

View File

@@ -338,7 +338,8 @@
{
type: addModifier
modifier: {
type: cancelStrengthBonusFrom
type: cancelStrengthBonus
filter: any
from: memory(chosenPossession)
}
until: start(regroup)
@@ -735,7 +736,7 @@
effects: {
type: modifier
modifier: {
type: cancelStrengthBonusTo
type: cancelStrengthBonus
filter: character,inSkirmishAgainst(self)
from: weapon
}

View File

@@ -240,7 +240,7 @@
{
type: modifier
modifier: {
type: cancelStrengthBonusTo
type: cancelStrengthBonus
filter: minion,inSkirmishAgainst(bearer,name(Boromir))
from: weapon
}

View File

@@ -309,7 +309,7 @@
{
type: modifier
modifier: {
type: cancelStrengthBonusTo
type: cancelStrengthBonus
filter: minion,inSkirmishAgainst(bearer)
from: weapon
}

View File

@@ -758,7 +758,7 @@
effects: {
type: modifier
modifier: {
type: cancelKeywordBonusFrom
type: cancelKeywordBonus
filter: character,inSkirmishAgainst(culture(isengard),orc)
keyword: damage
from: weapon

View File

@@ -1337,7 +1337,7 @@
{
type: addModifier
modifier: {
type: cancelStrengthBonusTo
type: cancelStrengthBonus
filter: inSkirmishAgainst(memory(chosenMan))
from: possession
}

View File

@@ -1031,7 +1031,7 @@
{
type: modifier
modifier: {
type: cancelStrengthBonusTo
type: cancelStrengthBonus
filter: man,inSkirmishAgainst(self)
from: weapon
}

View File

@@ -248,7 +248,7 @@
{
type: modifier
modifier: {
type: cancelStrengthBonusTo
type: cancelStrengthBonus
filter: companion,inSkirmishAgainst(self)
from: possession
}
@@ -256,7 +256,7 @@
{
type: modifier
modifier: {
type: cancelKeywordBonusFrom
type: cancelKeywordBonus
filter: companion,inSkirmishAgainst(self)
from: possession
}

View File

@@ -1119,7 +1119,7 @@
{
type: modifier
modifier: {
type: cancelStrengthBonusTo
type: cancelStrengthBonus
requires: {
type: canSpot
filter: bearer,inSkirmishAgainst(culture(men),minion)
@@ -1131,7 +1131,7 @@
{
type: modifier
modifier: {
type: cancelKeywordBonusFrom
type: cancelKeywordBonus
requires: {
type: canSpot
filter: bearer,inSkirmishAgainst(culture(men),minion)

View File

@@ -826,7 +826,7 @@
{
type: modifier
modifier: {
type: cancelStrengthBonusTo
type: cancelStrengthBonus
requires: {
type: canSpot
filter: companion

View File

@@ -1377,7 +1377,7 @@
{
type: modifier
modifier: {
type: cancelStrengthBonusTo
type: cancelStrengthBonus
filter: character,inSkirmishAgainst(self)
from: weapon
}

View File

@@ -23,6 +23,38 @@
twilight: 2
type: Follower
effects: [
{
type: aidCost
cost: {
type: addTwilight
amount: 2
}
}
{
type: trigger
optional: true
trigger: {
type: transferred
filter: self
to: companion
}
effect: {
type: reinforceTokens
culture: gandalf
}
}
{
type: modifier
modifier: {
type: modifyStrength
requires: {
type: canSpot
filter: culture(gandalf),companion
}
filter: minion,inSkirmishAgainst(bearer)
amount: -1
}
}
]
gametext: <b>Aid</b> (2). <helper>(At the start of the maneuver phase, <span style="word-spacing:-0.08em">you may add (2) to transfer this to a companion.)</span></helper><br>Each time you transfer this to a companion, you may reinforce a [gandalf] token.<br>While you can spot a [gandalf] companion, each minion skirmishing bearer is strength -1.
lore: Third of the Istari to be named, he was clad in sea-blue.
@@ -62,6 +94,23 @@
vitality: 3
resistance: 6
effects: [
{
type: trigger
optional: true
trigger: {
type: startOfPhase
phase: fellowship
}
cost: {
type: removeTokensCumulative
filter: side(free people)
count: 2
}
effect: {
type: putCardsFromDiscardIntoHand
filter: choose(culture(gandalf),event)
}
}
]
gametext: At the start of the fellowship phase, you may remove 2 Free Peoples culture tokens to take a [gandalf] event into hand from your discard pile.
lore: ...its inhabitants, traditional trading partners of Esgaroth and Dale, now look to their northern allies for protection against the wild Easterlings....
@@ -97,6 +146,46 @@
type: Condition
keywords: Support Area
effects: [
{
type: trigger
trigger: {
type: played
filter: self
}
effect: {
type: addTokens
culture: gandalf
filter: self
}
}
{
type: activated
phase: maneuver
cost: {
type: choice
texts: [
Discard this from play
Remove a token from here
]
effects: [
{
type: discard
filter: self
}
{
type: removeTokens
culture: gandalf
filter: self
}
]
}
effect: {
type: addKeyword
filter: choose(culture(gandalf),companion)
keyword: muster
until: endOfTurn
}
}
]
gametext: When you play this, add a [gandalf] token here.<br><b>Maneuver:</b> Discard this from play or remove a token from here to spot a [gandalf] companion. That companion gains <b>muster</b> until end of turn.
lore: The Hosts of Isengard roared, swaying this way and that, turning from fear to fear.
@@ -134,13 +223,18 @@
Spell
Skirmish
]
effects: {
type: event
cost: {
},
requires: {
type: canSpot
filter: culture(gandalf),companion
count: 3
}
effect: [
{
type: modifyStrength
filter: choose(minion,inSkirmishAgainst(companion))
amount: -3
}
]
}
@@ -180,13 +274,23 @@
Spell
Skirmish
]
effects: {
type: event
cost: {
},
effect: [
{
type: modifyStrength
filter: choose(culture(gandalf),companion)
memorize: chosenCompanion
amount: {
type: condition
condition: {
type: memoryMatches
memory: chosenCompanion
filter: hasAttached(follower)
}
true: 4
false: 2
}
}
]
}
@@ -229,6 +333,43 @@
resistance: 5
keywords: CAN_START_WITH_RING
effects: [
{
type: trigger
trigger: {
type: moves
}
requires: {
type: canSpot
filter: self,ringBearer
}
effect: {
type: choice
texts: [
Add 3 burdens
Discard 2 {gandalf} cards from hand
]
effects: [
{
type: addBurdens
amount: 3
}
{
type: conditional
requires: {
type: canSpot
filter: other,companion
count: 2
}
effect: {
type: discardFromHand
forced: false
filter: choose(culture(gandalf))
count: 2
}
}
]
}
}
]
gametext: While Gandalf is the Ring-bearer, each time the fellowship moves, add 3 burdens unless you spot 2 other companions and discard 2 [gandalf] cards from hand.
lore: But all worthy things that are in peril as the world now stands, those are my care.'
@@ -263,16 +404,39 @@
twilight: 2
type: Event
keywords: Skirmish
effects: {
type: event
cost: {
},
effect: [
{
}
]
}
effects: [
{
type: activatedInDiscard
phase: skirmish
cost: {
type: removeCardsInDiscardFromGame
filter: choose(other,culture(gandalf))
count: 4
}
effect: {
type: playCardFromDiscard
filter: self
extraEffects: {
type: removeFromTheGame
filter: self
}
}
}
{
type: event
requires: {
type: canSpot
filter: name(Gandalf)
}
effect: [
{
type: modifyStrength
filter: choose(your,culture(gandalf),companion)
amount: 3
}
]
}
]
gametext: You may remove from the game 4 other [gandalf] cards in your discard pile to play this event from your discard pile. Then remove this event from the game.<br>Spot Gandalf to make your [gandalf] companion strength +3.
lore: ...at dawn on the fifth day.'
promotext: ""
@@ -306,13 +470,19 @@
twilight: 2
type: Event
keywords: Maneuver
effects: {
type: event
cost: {
},
type: discard
filter: choose(your,culture(gandalf),condition)
}
effect: [
{
type: discard
filter: choose(condition)
}
{
type: drawCards
}
]
}
@@ -350,8 +520,44 @@
twilight: 0
type: Artifact
resistance: -2
#target: title(Gandalf)
target: title(Gandalf)
effects: [
{
type: extraCost
requires: {
type: canSpot
filter: name(The Palantír of Orthanc)
}
cost: {
type: discard
filter: choose(name(The Palantír of Orthanc))
}
}
{
type: trigger
optional: true
trigger: {
type: startOfPhase
phase: fellowship
}
cost: {
type: addBurdens
}
effect: [
{
type: revealHand
hand: shadow
memorize: revealedCards
}
{
type: discardFromHand
forced: true
hand: shadow
player: shadow
filter: choose(memory(revealedCards),minion)
}
]
}
]
gametext: Bearer must be Gandalf. To play this, if you can spot The Palantír of Orthanc, discard it.<br>At the start of the fellowship phase, you may add a burden to reveal a Shadow player's hand. He or she must choose a revealed minion and discard it from hand.
lore: ...a heavy shining thing came hurtling down from above.
@@ -388,6 +594,38 @@
type: Follower
strength: 1
effects: [
{
type: aidCost
cost: {
type: addTwilight
amount: 2
}
}
{
type: trigger
trigger: {
type: transferred
filter: self
to: companion,not(culture(gandalf))
}
effect: {
type: exert
filter: bearer
times: 2
}
}
{
type: trigger
optional: true
trigger: {
type: winsSkirmish
filter: bearer
}
effect: {
type: discard
filter: choose(condition)
}
}
]
gametext: <b>Aid</b> (2).<br>Each time you transfer this to a companion, except a [gandalf] companion, exert bearer twice.<br>Each time bearer wins a skirmish, you may discard a condition from play.
lore: Brought as a companion by Alatar, he traveled the South and East to aid the Free Peoples.
@@ -424,6 +662,26 @@
type: Follower
resistance: 2
effects: [
{
type: aidCost
cost: {
type: addTwilight
amount: 2
}
}
{
type: modifier
modifier: {
type: cancelStrengthBonus
requires: {
type: canSpot
filter: culture(gandalf),companion
count: 2
}
filter: minion,inSkirmishAgainst(bearer)
from: possession
}
}
]
gametext: <b>Aid</b> (2). <helper>(At the start of the maneuver phase, <span style="word-spacing:-0.08em">you may add (2) to transfer this to a companion.)</span></helper><br>While you can spot 2 [gandalf] companions, minions skirmishing bearer do not gain strength bonuses from possessions.
lore: It would have been useless in any case to try and win over the honest Radagast to treachery.'
@@ -458,13 +716,18 @@
twilight: 1
type: Event
keywords: Fellowship
effects: {
type: event
cost: {
},
type: discardFromHand
forced: false
filter: choose(side(shadow))
count: 2
}
effect: [
{
type: putCardsFromDiscardIntoHand
filter: choose(culture(gandalf),event)
}
]
}
@@ -503,8 +766,33 @@
type: Possession
strength: 1
itemclass: Mount
#target: a Wizard
target: wizard
effects: [
{
type: trigger
optional: true
trigger: {
type: played
filter: self
}
effect: {
type: reinforceTokens
culture: gandalf
}
}
{
type: activated
phase: skirmish
cost: {
type: removeTokensCumulative
culture: gandalf
count: 2
}
effect: {
type: wound
filter: choose(minion,inSkirmishAgainst(bearer))
}
}
]
gametext: Bearer must be a Wizard.<br>When you play Shadowfax, you may reinforce a [gandalf] token.<br><b>Skirmish:</b> Remove 2 [gandalf] tokens to wound a minion skirmishing bearer.
lore: Then Shadowfax gathered himself together and sprang away, and the night flowed over him....
@@ -540,6 +828,22 @@
type: Condition
keywords: Support Area
effects: [
{
type: modifier
modifier: {
type: addKeyword
filter: companion,hasAttached(follower)
keyword: muster
}
}
{
type: modifier
modifier: {
type: modifyStrength
filter: companion,hasAttached(follower),culture(gandalf)
amount: 1
}
}
]
gametext: Each companion bearing a follower gains <b>muster</b> (and is strength +1 if that companion is a [gandalf] companion).
lore: Gandalf obviously expected to find Treebeard here; and Treebeard might almost have been loitering about near the gates on purpose to meet him.'
@@ -575,6 +879,55 @@
type: Condition
keywords: Support Area
effects: [
{
type: toPlay
requires: {
type: canSpot
filter: wizard
}
}
{
type: trigger
trigger: {
type: played
filter: self
}
effect: {
type: addTokens
culture: gandalf
filter: self
count: {
type: regionNumber
}
}
}
{
type: activated
phase: maneuver
cost: {
type: choice
texts: [
Discard this from play
Remove 2 tokens from here
]
effects: [
{
type: discard
filter: self
}
{
type: removeTokens
culture: gandalf
filter: self
count: 2
}
]
}
effect: {
type: discard
filter: choose(side(shadow),condition)
}
}
]
gametext: To play, spot a Wizard.<br>When you play this, add X [gandalf] tokens here, where X is the current region number.<br><b>Maneuver:</b> Discard this from play or remove 2 tokens from here to discard a Shadow condition from play.
lore: Of the Wizards, it was Gandalf that chose no home.
@@ -610,6 +963,26 @@
type: Condition
keywords: Support Area
effects: [
{
type: activated
phase: skirmish
cost: [
{
type: exert
filter: choose(your,culture(gandalf),companion)
memorize: exertedCompanion
}
{
type: addBurdens
}
]
effect: {
type: addKeyword
filter: memory(exertedCompanion)
keyword: damage
amount: 1
}
}
]
gametext: <b>Skirmish:</b> Exert your [gandalf] companion and add a burden to make that companion <b>damage +1</b>.
lore: There was none to see, or perhaps in after ages songs would still be sung of the Battle of the Peak.'

View File

@@ -222,7 +222,7 @@
{
type: modifier
modifier: {
type: cancelStrengthBonusTo
type: cancelStrengthBonus
filter: companion,culture(dwarven)
from: weapon
}

View File

@@ -80,7 +80,7 @@
{
type: modifier
modifier: {
type: cancelkeywordbonusfrom
type: cancelKeywordBonus
filter: inSkirmishAgainst(bearer)
from: attachedTo(inSkirmishAgainst(bearer))
keyword: damage
@@ -93,7 +93,8 @@
{
type: modifier
modifier: {
type: cancelstrengthbonusfrom
type: cancelStrengthBonus
filter: any
from: attachedTo(inSkirmishAgainst(bearer))
requires: {
type: canSpot

View File

@@ -7,7 +7,7 @@ import com.gempukku.lotro.logic.modifiers.CancelKeywordBonusTargetModifier;
import com.gempukku.lotro.logic.modifiers.Modifier;
import org.json.simple.JSONObject;
public class CancelKeywordBonusFrom implements ModifierSourceProducer {
public class CancelKeywordBonus implements ModifierSourceProducer {
@Override
public ModifierSource getModifierSource(JSONObject object, CardGenerationEnvironment environment) throws InvalidCardDefinitionException {
FieldUtils.validateAllowedFields(object, "filter", "from", "requires", "keyword");

View File

@@ -6,7 +6,7 @@ import com.gempukku.lotro.logic.modifiers.CancelStrengthBonusTargetModifier;
import com.gempukku.lotro.logic.modifiers.Modifier;
import org.json.simple.JSONObject;
public class CancelStrengthBonusTo implements ModifierSourceProducer {
public class CancelStrengthBonus implements ModifierSourceProducer {
@Override
public ModifierSource getModifierSource(JSONObject object, CardGenerationEnvironment environment) throws InvalidCardDefinitionException {
FieldUtils.validateAllowedFields(object, "filter", "requires", "from");

View File

@@ -1,29 +0,0 @@
package com.gempukku.lotro.cards.build.field.effect.modifier;
import com.gempukku.lotro.cards.build.*;
import com.gempukku.lotro.cards.build.field.FieldUtils;
import com.gempukku.lotro.logic.modifiers.CancelStrengthBonusSourceModifier;
import com.gempukku.lotro.logic.modifiers.Modifier;
import org.json.simple.JSONObject;
public class CancelStrengthBonusFrom implements ModifierSourceProducer {
@Override
public ModifierSource getModifierSource(JSONObject object, CardGenerationEnvironment environment) throws InvalidCardDefinitionException {
FieldUtils.validateAllowedFields(object, "from", "requires");
final String filter = FieldUtils.getString(object.get("from"), "from");
final JSONObject[] conditionArray = FieldUtils.getObjectArray(object.get("requires"), "requires");
final FilterableSource filterableSource = environment.getFilterFactory().generateFilter(filter, environment);
final Requirement[] requirements = environment.getRequirementFactory().getRequirements(conditionArray, environment);
return new ModifierSource() {
@Override
public Modifier getModifier(ActionContext actionContext) {
return new CancelStrengthBonusSourceModifier(actionContext.getSource(),
new RequirementCondition(requirements, actionContext),
filterableSource.getFilterable(actionContext));
}
};
}
}

View File

@@ -24,9 +24,8 @@ public class ModifierSourceFactory {
modifierProducers.put("allycanparticipateinskirmishes", new AllyCanParticipateInSkirmishes());
modifierProducers.put("allymaynotparticipateinarcheryfireorskirmishes", new AllyMayNotParticipateInArcheryFireOrSkirmishes());
modifierProducers.put("archerytotal", new ArcheryTotal());
modifierProducers.put("cancelkeywordbonusfrom", new CancelKeywordBonusFrom());
modifierProducers.put("cancelstrengthbonusfrom", new CancelStrengthBonusFrom());
modifierProducers.put("cancelstrengthbonusto", new CancelStrengthBonusTo());
modifierProducers.put("cancelkeywordbonus", new CancelKeywordBonus());
modifierProducers.put("cancelstrengthbonus", new CancelStrengthBonus());
modifierProducers.put("canplaystackedcards", new CanPlayStackedCards());
modifierProducers.put("cantbear", new CantBear());
modifierProducers.put("cantbeassignedtoskirmish", new CantBeAssignedToSkirmish());