Migrated Gandalf cards in set 18 to hjson
This commit is contained in:
@@ -1,50 +0,0 @@
|
||||
package com.gempukku.lotro.cards.set18.gandalf;
|
||||
|
||||
import com.gempukku.lotro.logic.cardtype.AbstractAttachableFPPossession;
|
||||
import com.gempukku.lotro.logic.timing.TriggerConditions;
|
||||
import com.gempukku.lotro.logic.effects.choose.ChooseAndPutCardFromDiscardIntoHandEffect;
|
||||
import com.gempukku.lotro.common.Culture;
|
||||
import com.gempukku.lotro.common.Filterable;
|
||||
import com.gempukku.lotro.common.PossessionClass;
|
||||
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.OptionalTriggerAction;
|
||||
import com.gempukku.lotro.logic.timing.EffectResult;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* Set: Treachery & Deceit
|
||||
* Side: Free
|
||||
* Culture: Gandalf
|
||||
* Twilight Cost: 2
|
||||
* Type: Possession • Hand Weapon
|
||||
* Strength: +2
|
||||
* Vitality: +1
|
||||
* Game Text: Bearer must be a [GANDALF] Man. While Grimbeorn is bearing this possession, each time he wins a skirmish,
|
||||
* you may take a [GANDALF] card from your discard pile into hand.
|
||||
*/
|
||||
public class Card18_018 extends AbstractAttachableFPPossession {
|
||||
public Card18_018() {
|
||||
super(2, 2, 1, Culture.GANDALF, PossessionClass.HAND_WEAPON, "Beorning Axe");
|
||||
}
|
||||
|
||||
@Override
|
||||
public Filterable getValidTargetFilter(String playerId, LotroGame game, PhysicalCard self) {
|
||||
return Filters.and(Culture.GANDALF, Race.MAN);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<OptionalTriggerAction> getOptionalAfterTriggers(String playerId, LotroGame game, EffectResult effectResult, PhysicalCard self) {
|
||||
if (TriggerConditions.winsSkirmish(game, effectResult, Filters.hasAttached(self), Filters.name("Grimbeorn"))) {
|
||||
OptionalTriggerAction action = new OptionalTriggerAction(self);
|
||||
action.appendEffect(
|
||||
new ChooseAndPutCardFromDiscardIntoHandEffect(action, playerId, 1, 1, Culture.GANDALF));
|
||||
return Collections.singletonList(action);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
@@ -1,46 +0,0 @@
|
||||
package com.gempukku.lotro.cards.set18.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.PlayEventAction;
|
||||
import com.gempukku.lotro.logic.cardtype.AbstractEvent;
|
||||
import com.gempukku.lotro.logic.effects.AddUntilEndOfPhaseModifierEffect;
|
||||
import com.gempukku.lotro.logic.effects.ChooseActiveCardEffect;
|
||||
import com.gempukku.lotro.logic.modifiers.CancelStrengthBonusTargetModifier;
|
||||
import com.gempukku.lotro.logic.timing.PlayConditions;
|
||||
|
||||
/**
|
||||
* Set: Treachery & Deceit
|
||||
* Side: Free
|
||||
* Culture: Gandalf
|
||||
* Twilight Cost: 0
|
||||
* Type: Event • Skirmish
|
||||
* Game Text: Spell. Spot a [GANDALF] Wizard to make a minion lose all strength bonuses from possessions.
|
||||
*/
|
||||
public class Card18_019 extends AbstractEvent {
|
||||
public Card18_019() {
|
||||
super(Side.FREE_PEOPLE, 0, Culture.GANDALF, "Drawn to Full Height", Phase.SKIRMISH);
|
||||
addKeyword(Keyword.SPELL);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean checkPlayRequirements(LotroGame game, PhysicalCard self) {
|
||||
return PlayConditions.canSpot(game, Culture.GANDALF, Race.WIZARD);
|
||||
}
|
||||
|
||||
@Override
|
||||
public PlayEventAction getPlayEventCardAction(String playerId, LotroGame game, final PhysicalCard self) {
|
||||
final PlayEventAction action = new PlayEventAction(self);
|
||||
action.appendEffect(
|
||||
new ChooseActiveCardEffect(self, playerId, "Choose a minion", CardType.MINION) {
|
||||
@Override
|
||||
protected void cardSelected(LotroGame game, PhysicalCard card) {
|
||||
action.appendEffect(
|
||||
new AddUntilEndOfPhaseModifierEffect(
|
||||
new CancelStrengthBonusTargetModifier(self, card, CardType.POSSESSION)));
|
||||
}
|
||||
});
|
||||
return action;
|
||||
}
|
||||
}
|
||||
@@ -1,57 +0,0 @@
|
||||
package com.gempukku.lotro.cards.set18.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.PlayEventAction;
|
||||
import com.gempukku.lotro.logic.cardtype.AbstractEvent;
|
||||
import com.gempukku.lotro.logic.effects.AddUntilStartOfPhaseModifierEffect;
|
||||
import com.gempukku.lotro.logic.effects.ChooseActiveCardEffect;
|
||||
import com.gempukku.lotro.logic.effects.DrawCardsEffect;
|
||||
import com.gempukku.lotro.logic.effects.choose.ChooseAndExertCharactersEffect;
|
||||
import com.gempukku.lotro.logic.modifiers.AddKeywordModifier;
|
||||
import com.gempukku.lotro.logic.timing.PlayConditions;
|
||||
|
||||
/**
|
||||
* Set: Treachery & Deceit
|
||||
* Side: Free
|
||||
* Culture: Gandalf
|
||||
* Twilight Cost: 3
|
||||
* Type: Event • Maneuver
|
||||
* Game Text: If the fellowship is in region 1 or region 2, exert 2 Ents to make an Ent defender +1 until the regroup
|
||||
* phase. If the fellowship is in region 3, spot a [GANDALF] companion to draw a card.
|
||||
*/
|
||||
public class Card18_020 extends AbstractEvent {
|
||||
public Card18_020() {
|
||||
super(Side.FREE_PEOPLE, 3, Culture.GANDALF, "Ents Marching", Phase.MANEUVER);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean checkPlayRequirements(LotroGame game, PhysicalCard self) {
|
||||
return ((GameUtils.getRegion(game) == 3 && PlayConditions.canSpot(game, Culture.GANDALF, CardType.COMPANION))
|
||||
|| ((GameUtils.getRegion(game) == 1 || GameUtils.getRegion(game) == 2) && PlayConditions.canExert(self, game, 1, 2, Race.ENT)));
|
||||
}
|
||||
|
||||
@Override
|
||||
public PlayEventAction getPlayEventCardAction(String playerId, LotroGame game, final PhysicalCard self) {
|
||||
final PlayEventAction action = new PlayEventAction(self);
|
||||
if (GameUtils.getRegion(game) == 3)
|
||||
action.appendEffect(
|
||||
new DrawCardsEffect(action, playerId, 1));
|
||||
else {
|
||||
action.appendCost(
|
||||
new ChooseAndExertCharactersEffect(action, playerId, 2, 2, Race.ENT));
|
||||
action.appendEffect(
|
||||
new ChooseActiveCardEffect(self, playerId, "Choose an Ent", Race.ENT) {
|
||||
@Override
|
||||
protected void cardSelected(LotroGame game, PhysicalCard card) {
|
||||
action.appendEffect(
|
||||
new AddUntilStartOfPhaseModifierEffect(
|
||||
new AddKeywordModifier(self, card, Keyword.DEFENDER, 1), Phase.REGROUP));
|
||||
}
|
||||
});
|
||||
}
|
||||
return action;
|
||||
}
|
||||
}
|
||||
@@ -1,53 +0,0 @@
|
||||
package com.gempukku.lotro.cards.set18.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.cardtype.AbstractPermanent;
|
||||
import com.gempukku.lotro.logic.effects.AddTokenEffect;
|
||||
import com.gempukku.lotro.logic.effects.RemoveTokenEffect;
|
||||
import com.gempukku.lotro.logic.effects.choose.ChooseAndAddUntilEOPStrengthBonusEffect;
|
||||
import com.gempukku.lotro.logic.effects.choose.ChooseAndExertCharactersEffect;
|
||||
import com.gempukku.lotro.logic.timing.PlayConditions;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* Set: Treachery & Deceit
|
||||
* Side: Free
|
||||
* Culture: Gandalf
|
||||
* Twilight Cost: 2
|
||||
* Type: Condition • Support Area
|
||||
* Game Text: Fellowship: Exert a [GANDALF] Man to add 2 [GANDALF] tokens here. Skirmish: Remove 3 [GANDALF] tokens
|
||||
* from here to make a companion strength +3.
|
||||
*/
|
||||
public class Card18_021 extends AbstractPermanent {
|
||||
public Card18_021() {
|
||||
super(Side.FREE_PEOPLE, 2, CardType.CONDITION, Culture.GANDALF, "Last Stand");
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<? extends ActivateCardAction> getPhaseActionsInPlay(String playerId, LotroGame game, PhysicalCard self) {
|
||||
if (PlayConditions.canUseFPCardDuringPhase(game, Phase.FELLOWSHIP, self)
|
||||
&& PlayConditions.canExert(self, game, Culture.GANDALF, Race.MAN)) {
|
||||
ActivateCardAction action = new ActivateCardAction(self);
|
||||
action.appendCost(
|
||||
new ChooseAndExertCharactersEffect(action, playerId, 1, 1, Culture.GANDALF, Race.MAN));
|
||||
action.appendEffect(
|
||||
new AddTokenEffect(self, self, Token.GANDALF, 2));
|
||||
return Collections.singletonList(action);
|
||||
}
|
||||
if (PlayConditions.canUseFPCardDuringPhase(game, Phase.SKIRMISH, self)
|
||||
&& PlayConditions.canRemoveTokens(game, self, Token.GANDALF, 3)) {
|
||||
ActivateCardAction action = new ActivateCardAction(self);
|
||||
action.appendCost(
|
||||
new RemoveTokenEffect(self, self, Token.GANDALF, 3));
|
||||
action.appendEffect(
|
||||
new ChooseAndAddUntilEOPStrengthBonusEffect(action, self, playerId, 3, CardType.COMPANION));
|
||||
return Collections.singletonList(action);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
@@ -1,68 +0,0 @@
|
||||
package com.gempukku.lotro.cards.set18.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.AbstractCompanion;
|
||||
import com.gempukku.lotro.logic.effects.ChoiceEffect;
|
||||
import com.gempukku.lotro.logic.effects.DrawCardsEffect;
|
||||
import com.gempukku.lotro.logic.effects.choose.ChooseAndDiscardCardsFromPlayEffect;
|
||||
import com.gempukku.lotro.logic.effects.choose.ChooseAndPutCardFromDiscardIntoHandEffect;
|
||||
import com.gempukku.lotro.logic.modifiers.Modifier;
|
||||
import com.gempukku.lotro.logic.modifiers.StrengthModifier;
|
||||
import com.gempukku.lotro.logic.modifiers.condition.CanSpotCultureTokensCondition;
|
||||
import com.gempukku.lotro.logic.timing.Effect;
|
||||
import com.gempukku.lotro.logic.timing.PlayConditions;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* Set: Treachery & Deceit
|
||||
* Side: Free
|
||||
* Culture: Gandalf
|
||||
* Twilight Cost: 2
|
||||
* Type: Companion • Man
|
||||
* Strength: 3
|
||||
* Vitality: 3
|
||||
* Resistance: 5
|
||||
* Game Text: While you can spot 2 [GANDALF] tokens, each of your [GANDALF] Men is strength +2. Regroup: Discard
|
||||
* a follower from play to choose one: draw a card; or take a [GANDALF] skirmish event from your discard pile into hand.
|
||||
*/
|
||||
public class Card18_022 extends AbstractCompanion {
|
||||
public Card18_022() {
|
||||
super(2, 3, 3, 5, Culture.GANDALF, Race.MAN, null, "Librarian", "Keeper of Ancient Texts", true);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<? extends Modifier> getInPlayModifiers(LotroGame game, PhysicalCard self) {
|
||||
return Collections.singletonList(new StrengthModifier(self, Filters.and(Culture.GANDALF, Race.MAN), new CanSpotCultureTokensCondition(2, Token.GANDALF), 2));
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<? extends ActivateCardAction> getPhaseActionsInPlay(String playerId, LotroGame game, PhysicalCard self) {
|
||||
if (PlayConditions.canUseFPCardDuringPhase(game, Phase.REGROUP, self)
|
||||
&& PlayConditions.canDiscardFromPlay(self, game, CardType.FOLLOWER)) {
|
||||
ActivateCardAction action = new ActivateCardAction(self);
|
||||
action.appendCost(
|
||||
new ChooseAndDiscardCardsFromPlayEffect(action, playerId, 1, 1, CardType.FOLLOWER));
|
||||
List<Effect> possibleEffects = new LinkedList<>();
|
||||
possibleEffects.add(
|
||||
new DrawCardsEffect(action, playerId, 1));
|
||||
possibleEffects.add(
|
||||
new ChooseAndPutCardFromDiscardIntoHandEffect(action, playerId, 1, 1, Culture.GANDALF, CardType.EVENT, Keyword.SKIRMISH) {
|
||||
@Override
|
||||
public String getText(LotroGame game) {
|
||||
return "Take a GANDALF skirmish event from your discard pile into hand";
|
||||
}
|
||||
});
|
||||
action.appendEffect(
|
||||
new ChoiceEffect(action, playerId, possibleEffects));
|
||||
return Collections.singletonList(action);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
@@ -1,40 +0,0 @@
|
||||
package com.gempukku.lotro.cards.set18.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.RemoveBurdenEffect;
|
||||
import com.gempukku.lotro.logic.timing.PlayConditions;
|
||||
|
||||
/**
|
||||
* Set: Treachery & Deceit
|
||||
* Side: Free
|
||||
* Culture: Gandalf
|
||||
* Twilight Cost: 2
|
||||
* Type: Event • Maneuver
|
||||
* Game Text: Spell. Spot 2 pipeweed cards to remove a burden for each [GANDALF] Wizard you can spot.
|
||||
*/
|
||||
public class Card18_023 extends AbstractEvent {
|
||||
public Card18_023() {
|
||||
super(Side.FREE_PEOPLE, 2, Culture.GANDALF, "One-Upsmanship", Phase.MANEUVER);
|
||||
addKeyword(Keyword.SPELL);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean checkPlayRequirements(LotroGame game, PhysicalCard self) {
|
||||
return PlayConditions.canSpot(game, 2, Keyword.PIPEWEED);
|
||||
}
|
||||
|
||||
@Override
|
||||
public PlayEventAction getPlayEventCardAction(String playerId, LotroGame game, PhysicalCard self) {
|
||||
PlayEventAction action = new PlayEventAction(self);
|
||||
int count = Filters.countActive(game, Culture.GANDALF, Race.WIZARD);
|
||||
if (count > 0)
|
||||
action.appendEffect(
|
||||
new RemoveBurdenEffect(playerId, self, count));
|
||||
return action;
|
||||
}
|
||||
}
|
||||
@@ -1,59 +0,0 @@
|
||||
package com.gempukku.lotro.cards.set18.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.RequiredTriggerAction;
|
||||
import com.gempukku.lotro.logic.cardtype.AbstractPermanent;
|
||||
import com.gempukku.lotro.logic.effects.AddTwilightEffect;
|
||||
import com.gempukku.lotro.logic.effects.RemoveCardsFromTheGameEffect;
|
||||
import com.gempukku.lotro.logic.effects.RemoveTwilightEffect;
|
||||
import com.gempukku.lotro.logic.modifiers.AbstractExtraPlayCostModifier;
|
||||
import com.gempukku.lotro.logic.modifiers.cost.ExertExtraPlayCostModifier;
|
||||
import com.gempukku.lotro.logic.timing.EffectResult;
|
||||
import com.gempukku.lotro.logic.timing.TriggerConditions;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* Set: Treachery & Deceit
|
||||
* Side: Free
|
||||
* Culture: Gandalf
|
||||
* Twilight Cost: 0
|
||||
* Type: Condition • Support Area
|
||||
* Game Text: Spell. To play, exert Gandalf. When you play this condition, remove (3). At the start of the maneuver
|
||||
* phase, add (4) and remove this condition from the game.
|
||||
*/
|
||||
public class Card18_024 extends AbstractPermanent {
|
||||
public Card18_024() {
|
||||
super(Side.FREE_PEOPLE, 0, CardType.CONDITION, Culture.GANDALF, "Our Time", null, true);
|
||||
addKeyword(Keyword.SPELL);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<? extends AbstractExtraPlayCostModifier> getExtraCostToPlay(LotroGame game, PhysicalCard self) {
|
||||
return Collections.singletonList(
|
||||
new ExertExtraPlayCostModifier(self, self, null, Filters.gandalf));
|
||||
}
|
||||
|
||||
@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 RemoveTwilightEffect(3));
|
||||
return Collections.singletonList(action);
|
||||
}
|
||||
if (TriggerConditions.startOfPhase(game, effectResult, Phase.MANEUVER)) {
|
||||
RequiredTriggerAction action = new RequiredTriggerAction(self);
|
||||
action.appendEffect(
|
||||
new AddTwilightEffect(self, 4));
|
||||
action.appendEffect(
|
||||
new RemoveCardsFromTheGameEffect(self.getOwner(), self, Collections.singleton(self)));
|
||||
return Collections.singletonList(action);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
@@ -1,52 +0,0 @@
|
||||
package com.gempukku.lotro.cards.set18.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.cardtype.AbstractPermanent;
|
||||
import com.gempukku.lotro.logic.effects.AddThreatsEffect;
|
||||
import com.gempukku.lotro.logic.effects.AddUntilStartOfPhaseModifierEffect;
|
||||
import com.gempukku.lotro.logic.effects.ChooseActiveCardEffect;
|
||||
import com.gempukku.lotro.logic.modifiers.PlayersCantUseCardSpecialAbilitiesModifier;
|
||||
import com.gempukku.lotro.logic.timing.PlayConditions;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* Set: Treachery & Deceit
|
||||
* Side: Free
|
||||
* Culture: Gandalf
|
||||
* Twilight Cost: 2
|
||||
* Type: Condition • Support Area
|
||||
* Game Text: Maneuver: Add 2 threats and spot a Wizard to spot a minion in play. That minion cannot use special
|
||||
* abilities until the regroup phase.
|
||||
*/
|
||||
public class Card18_025 extends AbstractPermanent {
|
||||
public Card18_025() {
|
||||
super(Side.FREE_PEOPLE, 2, CardType.CONDITION, Culture.GANDALF, "Perspective");
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<? extends ActivateCardAction> getPhaseActionsInPlay(String playerId, LotroGame game, final PhysicalCard self) {
|
||||
if (PlayConditions.canUseFPCardDuringPhase(game, Phase.MANEUVER, self)
|
||||
&& PlayConditions.canAddThreat(game, self, 2)
|
||||
&& PlayConditions.canSpot(game, Race.WIZARD)) {
|
||||
final ActivateCardAction action = new ActivateCardAction(self);
|
||||
action.appendCost(
|
||||
new AddThreatsEffect(playerId, self, 2));
|
||||
action.appendEffect(
|
||||
new ChooseActiveCardEffect(self, playerId, "Choose a minion", CardType.MINION) {
|
||||
@Override
|
||||
protected void cardSelected(LotroGame game, PhysicalCard card) {
|
||||
action.appendEffect(
|
||||
new AddUntilStartOfPhaseModifierEffect(
|
||||
new PlayersCantUseCardSpecialAbilitiesModifier(self, card), Phase.REGROUP));
|
||||
}
|
||||
});
|
||||
return Collections.singletonList(action);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
@@ -1,57 +0,0 @@
|
||||
package com.gempukku.lotro.cards.set18.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.OptionalTriggerAction;
|
||||
import com.gempukku.lotro.logic.cardtype.AbstractAttachableFPPossession;
|
||||
import com.gempukku.lotro.logic.effects.ChooseAndWoundCharactersEffect;
|
||||
import com.gempukku.lotro.logic.effects.ExertCharactersEffect;
|
||||
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: Treachery & Deceit
|
||||
* Side: Free
|
||||
* Culture: Gandalf
|
||||
* Twilight Cost: 1
|
||||
* Type: Possession
|
||||
* Vitality: +1
|
||||
* Resistance: +2
|
||||
* Game Text: Bearer must be a [GANDALF] Wizard. Each time you play a [GANDALF] spell, you may exert bearer to wound
|
||||
* a minion.
|
||||
*/
|
||||
public class Card18_026 extends AbstractAttachableFPPossession {
|
||||
public Card18_026() {
|
||||
super(1, 0, 1, Culture.GANDALF, null, "Radagast's Herb Bag", null, true);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Filterable getValidTargetFilter(String playerId, LotroGame game, PhysicalCard self) {
|
||||
return Filters.and(Culture.GANDALF, Race.WIZARD);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getResistance() {
|
||||
return 2;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<OptionalTriggerAction> getOptionalAfterTriggers(String playerId, LotroGame game, EffectResult effectResult, PhysicalCard self) {
|
||||
if (TriggerConditions.played(game, effectResult, Culture.GANDALF, Keyword.SPELL)
|
||||
&& PlayConditions.canExert(self, game, Filters.hasAttached(self))) {
|
||||
OptionalTriggerAction action = new OptionalTriggerAction(self);
|
||||
action.appendCost(
|
||||
new ExertCharactersEffect(action, self, self.getAttachedTo()));
|
||||
action.appendEffect(
|
||||
new ChooseAndWoundCharactersEffect(action, playerId, 1, 1, CardType.MINION));
|
||||
return Collections.singletonList(action);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
@@ -1,50 +0,0 @@
|
||||
package com.gempukku.lotro.cards.set18.gandalf;
|
||||
|
||||
import com.gempukku.lotro.logic.cardtype.AbstractPermanent;
|
||||
import com.gempukku.lotro.logic.timing.PlayConditions;
|
||||
import com.gempukku.lotro.logic.timing.TriggerConditions;
|
||||
import com.gempukku.lotro.logic.effects.PutCardsFromDeckIntoHandDiscardRestEffect;
|
||||
import com.gempukku.lotro.logic.effects.RevealTopCardsOfDrawDeckEffect;
|
||||
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.OptionalTriggerAction;
|
||||
import com.gempukku.lotro.logic.timing.EffectResult;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* Set: Treachery & Deceit
|
||||
* Side: Free
|
||||
* Culture: Gandalf
|
||||
* Twilight Cost: 0
|
||||
* Type: Condition • Support Area
|
||||
* Game Text: Pipeweed. Each time you play a pipeweed card, you may spot Gandalf to reveal the top 3 cards of your draw
|
||||
* deck. Take all Free Peoples cards revealed into hand and discard the remaining cards.
|
||||
*/
|
||||
public class Card18_027 extends AbstractPermanent {
|
||||
public Card18_027() {
|
||||
super(Side.FREE_PEOPLE, 0, CardType.CONDITION, Culture.GANDALF, "Ship of Smoke", null, true);
|
||||
addKeyword(Keyword.PIPEWEED);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<OptionalTriggerAction> getOptionalAfterTriggers(final String playerId, final LotroGame game, EffectResult effectResult, final PhysicalCard self) {
|
||||
if (TriggerConditions.played(game, effectResult, Filters.owner(playerId), Keyword.PIPEWEED)
|
||||
&& PlayConditions.canSpot(game, Filters.gandalf)) {
|
||||
final OptionalTriggerAction action = new OptionalTriggerAction(self);
|
||||
action.appendEffect(
|
||||
new RevealTopCardsOfDrawDeckEffect(self, playerId, 3) {
|
||||
@Override
|
||||
protected void cardsRevealed(List<PhysicalCard> revealedCards) {
|
||||
action.appendEffect(
|
||||
new PutCardsFromDeckIntoHandDiscardRestEffect(action, self, playerId, revealedCards, Side.FREE_PEOPLE));
|
||||
}
|
||||
});
|
||||
return Collections.singletonList(action);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
@@ -24,8 +24,20 @@
|
||||
strength: 2
|
||||
vitality: 1
|
||||
itemclass: Hand weapon
|
||||
#target: a [gandalf] Man
|
||||
target: culture(gandalf),man
|
||||
effects: [
|
||||
{
|
||||
type: trigger
|
||||
optional: true
|
||||
trigger: {
|
||||
type: winsSkirmish
|
||||
filter: bearer,name(Grimbeorn)
|
||||
}
|
||||
effect: {
|
||||
type: putCardsFromDiscardIntoHand
|
||||
filter: choose(culture(gandalf))
|
||||
}
|
||||
}
|
||||
]
|
||||
gametext: Bearer must be a [gandalf] Man.<br>While Grimbeorn is bearing this possession, each time he wins a skirmish, you may take a [gandalf] card from your discard pile into hand.
|
||||
lore: No Orc or wolf dared enter the land of the Beornings.
|
||||
@@ -63,13 +75,26 @@
|
||||
Spell
|
||||
Skirmish
|
||||
]
|
||||
|
||||
effects: {
|
||||
type: event
|
||||
cost: {
|
||||
},
|
||||
requires: {
|
||||
type: canSpot
|
||||
filter: culture(gandalf),wizard
|
||||
}
|
||||
effect: [
|
||||
{
|
||||
type: chooseActiveCards
|
||||
filter: choose(minion)
|
||||
text: Choose minion to lose all strength bonuses from possessions
|
||||
memorize: chosenMinion
|
||||
}
|
||||
{
|
||||
type: addModifier
|
||||
modifier: {
|
||||
type: cancelStrengthBonus
|
||||
filter: memory(chosenMinion)
|
||||
from: possession
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -106,13 +131,64 @@
|
||||
twilight: 3
|
||||
type: Event
|
||||
keywords: Maneuver
|
||||
|
||||
effects: {
|
||||
type: event
|
||||
cost: {
|
||||
type: choice
|
||||
texts: [
|
||||
Exert 2 Ents
|
||||
Spot a {gandalf} companion
|
||||
]
|
||||
effects: [
|
||||
{
|
||||
type: conditional
|
||||
requires: {
|
||||
type: location
|
||||
filter: or(regionNumber(1),regionNumber(2))
|
||||
}
|
||||
effect: {
|
||||
type: exert
|
||||
filter: choose(ent)
|
||||
count: 2
|
||||
}
|
||||
}
|
||||
{
|
||||
type: conditional
|
||||
requires: {
|
||||
type: location
|
||||
filter: regionNumber(3)
|
||||
}
|
||||
effect: {
|
||||
type: spot
|
||||
filter: culture(gandalf),companion
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
effect: [
|
||||
{
|
||||
type: conditional
|
||||
requires: {
|
||||
type: location
|
||||
filter: or(regionNumber(1),regionNumber(2))
|
||||
}
|
||||
effect: {
|
||||
type: addKeyword
|
||||
filter: choose(ent)
|
||||
keyword: defender
|
||||
amount: 1
|
||||
until: regroup
|
||||
}
|
||||
}
|
||||
{
|
||||
type: conditional
|
||||
requires: {
|
||||
type: location
|
||||
filter: regionNumber(3)
|
||||
}
|
||||
effect: {
|
||||
type: drawCards
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -150,6 +226,35 @@
|
||||
type: Condition
|
||||
keywords: Support Area
|
||||
effects: [
|
||||
{
|
||||
type: activated
|
||||
phase: fellowship
|
||||
cost: {
|
||||
type: exert
|
||||
filter: choose(culture(gandalf),man)
|
||||
}
|
||||
effect: {
|
||||
type: addTokens
|
||||
count: 2
|
||||
culture: gandalf
|
||||
filter: self
|
||||
}
|
||||
}
|
||||
{
|
||||
type: activated
|
||||
phase: skirmish
|
||||
cost: {
|
||||
type: removeTokens
|
||||
count: 3
|
||||
culture: gandalf
|
||||
filter: self
|
||||
}
|
||||
effect: {
|
||||
type: modifyStrength
|
||||
filter: choose(companion)
|
||||
amount: 3
|
||||
}
|
||||
}
|
||||
]
|
||||
gametext: <b>Fellowship:</b> Exert a [gandalf] Man to add 2 [gandalf] tokens here.<br><b>Skirmish:</b> Remove 3 [gandalf] tokens from here to make a companion strength +3.
|
||||
lore: To give his people time to escape, Brand stood against the Mordor army until he was slain. His friend, the dwarf Dáin Ironfoot, stood over him until he too was slain.
|
||||
@@ -189,6 +294,43 @@
|
||||
vitality: 3
|
||||
resistance: 5
|
||||
effects: [
|
||||
{
|
||||
type: modifier
|
||||
modifier: {
|
||||
type: modifyStrength
|
||||
requires: {
|
||||
type: canSpotCultureTokens
|
||||
culture: gandalf
|
||||
amount: 2
|
||||
}
|
||||
filter: your,culture(gandalf),man
|
||||
amount: 2
|
||||
}
|
||||
}
|
||||
{
|
||||
type: activated
|
||||
phase: regroup
|
||||
cost: {
|
||||
type: discard
|
||||
filter: choose(follower)
|
||||
}
|
||||
effect: {
|
||||
type: choice
|
||||
texts: [
|
||||
Draw a card
|
||||
Take a {gandalf} skirmish event from discard to hand
|
||||
]
|
||||
effects: [
|
||||
{
|
||||
type: drawCards
|
||||
}
|
||||
{
|
||||
type: putCardsFromDiscardIntoHand
|
||||
filter: choose(culture(gandalf),skirmish,event)
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
gametext: While you can spot 2 [gandalf] tokens, each of your [gandalf] Men is strength +2.<br><b>Regroup:</b> Discard a follower from play to choose one: draw a card; or take a [gandalf] skirmish event from your discard pile into hand.
|
||||
lore: A guide through books and scrolls from floor to ceiling.
|
||||
@@ -226,13 +368,20 @@
|
||||
Spell
|
||||
Maneuver
|
||||
]
|
||||
|
||||
effects: {
|
||||
type: event
|
||||
cost: {
|
||||
},
|
||||
requires: {
|
||||
type: canSpot
|
||||
filter: pipeweed
|
||||
count: 2
|
||||
}
|
||||
effect: [
|
||||
{
|
||||
type: removeBurdens
|
||||
amount: {
|
||||
type: forEachYouCanSpot
|
||||
filter: culture(gandalf),wizard
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -273,6 +422,42 @@
|
||||
Support Area
|
||||
]
|
||||
effects: [
|
||||
{
|
||||
type: extraCost
|
||||
cost: {
|
||||
type: exert
|
||||
filter: choose(name(Gandalf))
|
||||
}
|
||||
}
|
||||
{
|
||||
type: trigger
|
||||
trigger: {
|
||||
type: played
|
||||
player: you
|
||||
filter: self
|
||||
}
|
||||
effect: {
|
||||
type: removeTwilight
|
||||
amount: 3
|
||||
}
|
||||
}
|
||||
{
|
||||
type: trigger
|
||||
trigger: {
|
||||
type: startOfPhase
|
||||
phase: maneuver
|
||||
}
|
||||
effect: [
|
||||
{
|
||||
type: addTwilight
|
||||
amount: 4
|
||||
}
|
||||
{
|
||||
type: removeFromTheGame
|
||||
filter: self
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
gametext: <b>Spell</b>. To play, exert Gandalf.<br>When you play this condition, remove (3).<br>At the start of the maneuver phase, add (4) and remove this condition from the game.
|
||||
lore: All we have to decide is what to do with the time that is given to us.
|
||||
@@ -308,6 +493,33 @@
|
||||
type: Condition
|
||||
keywords: Support Area
|
||||
effects: [
|
||||
{
|
||||
type: activated
|
||||
phase: maneuver
|
||||
cost: [
|
||||
{
|
||||
type: addThreats
|
||||
amount: 2
|
||||
}
|
||||
{
|
||||
type: spot
|
||||
filter: choose(minion)
|
||||
memorize: spottedMinion
|
||||
}
|
||||
]
|
||||
requires: {
|
||||
type: canSpot
|
||||
filter: wizard
|
||||
}
|
||||
effect: {
|
||||
type: addModifier
|
||||
modifier: {
|
||||
type: cantPlaySpecialAbilities
|
||||
filter: memory(spottedMinion)
|
||||
}
|
||||
until: regroup
|
||||
}
|
||||
}
|
||||
]
|
||||
gametext: <b>Maneuver:</b> Add 2 threats and spot a Wizard to spot a minion in play. That minion cannot use special abilities until the regroup phase.
|
||||
lore: Hobbits really are amazing creatures! You can learn all that there is to know about their ways in a month, and yet after a hundred years, they can still surprise you.
|
||||
@@ -343,8 +555,25 @@
|
||||
type: Possession
|
||||
vitality: 1
|
||||
resistance: 2
|
||||
#target: a [gandalf] Wizard
|
||||
target: culture(gandalf),wizard
|
||||
effects: [
|
||||
{
|
||||
type: trigger
|
||||
optional: true
|
||||
trigger: {
|
||||
type: played
|
||||
player: you
|
||||
filter: culture(gandalf),spell
|
||||
}
|
||||
cost: {
|
||||
type: exert
|
||||
filter: bearer
|
||||
}
|
||||
effect: {
|
||||
type: wound
|
||||
filter: choose(minion)
|
||||
}
|
||||
}
|
||||
]
|
||||
gametext: Bearer must be a [gandalf] Wizard.<br>Each time you play a [gandalf] spell, you may exert bearer to wound a minion.
|
||||
lore: The tools of a master of herb and beast-lore were often confined to the simplest of places.
|
||||
@@ -383,6 +612,34 @@
|
||||
Support Area
|
||||
]
|
||||
effects: [
|
||||
{
|
||||
type: trigger
|
||||
optional: true
|
||||
trigger: {
|
||||
type: played
|
||||
player: you
|
||||
filter: pipeweed
|
||||
}
|
||||
requires: {
|
||||
type: canSpot
|
||||
filter: name(Gandalf)
|
||||
}
|
||||
effect: [
|
||||
{
|
||||
type: revealTopCardsOfDrawDeck
|
||||
count: 3
|
||||
memorize: revealedCards
|
||||
}
|
||||
{
|
||||
type: putCardsFromDeckIntoHand
|
||||
filter: all(memory(revealedCards),side(free people))
|
||||
}
|
||||
{
|
||||
type: discardCardsFromDrawDeck
|
||||
filter: all(memory(revealedCards),not(side(free people)))
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
gametext: <b>Pipeweed</b>.<br>Each time you play a pipeweed card, you may spot Gandalf to reveal the top 3 cards of your draw deck. Take all Free Peoples cards revealed into hand and discard the remaining cards.
|
||||
lore: Old Toby. The finest weed in the Southfarthing.
|
||||
@@ -1,20 +0,0 @@
|
||||
package com.gempukku.lotro.logic.modifiers;
|
||||
|
||||
import com.gempukku.lotro.common.Filterable;
|
||||
import com.gempukku.lotro.game.PhysicalCard;
|
||||
import com.gempukku.lotro.game.state.LotroGame;
|
||||
|
||||
public class CancelStrengthBonusSourceModifier extends AbstractModifier {
|
||||
public CancelStrengthBonusSourceModifier(PhysicalCard source, Filterable affectFilter) {
|
||||
super(source, "Cancel strength bonus", affectFilter, ModifierEffect.STRENGTH_BONUS_SOURCE_MODIFIER);
|
||||
}
|
||||
|
||||
public CancelStrengthBonusSourceModifier(PhysicalCard source, Condition condition, Filterable affectFilter) {
|
||||
super(source, "Cancel strength bonus", affectFilter, condition, ModifierEffect.STRENGTH_BONUS_SOURCE_MODIFIER);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean appliesStrengthBonusModifier(LotroGame game, PhysicalCard modifierSource, PhysicalCard modifierTaget) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
@@ -14,7 +14,7 @@ public class CancelStrengthBonusTargetModifier extends AbstractModifier {
|
||||
}
|
||||
|
||||
public CancelStrengthBonusTargetModifier(PhysicalCard source, Condition condition, Filterable affectFilter, Filterable sourceFilter) {
|
||||
super(source, "Has some strength bonuses cancelled", affectFilter, condition, ModifierEffect.STRENGTH_BONUS_TARGET_MODIFIER);
|
||||
super(source, "Has some strength bonuses cancelled", affectFilter, condition, ModifierEffect.STRENGTH_BONUS_MODIFIER);
|
||||
_sourceFilter = Filters.changeToFilter(sourceFilter);
|
||||
}
|
||||
|
||||
|
||||
@@ -3,8 +3,7 @@ package com.gempukku.lotro.logic.modifiers;
|
||||
public enum ModifierEffect {
|
||||
SIGNET_MODIFIER, STRENGTH_MODIFIER,
|
||||
SKIRMISH_STRENGTH_EVALUATOR_MODIFIER,
|
||||
STRENGTH_BONUS_SOURCE_MODIFIER,
|
||||
STRENGTH_BONUS_TARGET_MODIFIER,
|
||||
STRENGTH_BONUS_MODIFIER,
|
||||
VITALITY_MODIFIER, RESISTANCE_MODIFIER, SITE_NUMBER_MODIFIER, TWILIGHT_COST_MODIFIER, OVERWHELM_MODIFIER,
|
||||
WOUND_MODIFIER, BURDEN_MODIFIER, THREAT_MODIFIER,
|
||||
PRESENCE_MODIFIER, ARCHERY_MODIFIER, MOVE_LIMIT_MODIFIER, ACTION_MODIFIER, ASSIGNMENT_MODIFIER, DISCARD_FROM_PLAY_MODIFIER, DISCARD_NOT_FROM_PLAY,
|
||||
|
||||
@@ -419,16 +419,10 @@ public class ModifiersLogic implements ModifiersEnvironment, ModifiersQuerying {
|
||||
|
||||
@Override
|
||||
public boolean appliesStrengthBonusModifier(LotroGame game, PhysicalCard modifierSource, PhysicalCard modifierTarget) {
|
||||
if (modifierSource != null)
|
||||
for (Modifier modifier : getModifiersAffectingCard(game, ModifierEffect.STRENGTH_BONUS_SOURCE_MODIFIER, modifierSource)) {
|
||||
if (!modifier.appliesStrengthBonusModifier(game, modifierSource, modifierTarget))
|
||||
return false;
|
||||
}
|
||||
if (modifierTarget != null)
|
||||
for (Modifier modifier : getModifiersAffectingCard(game, ModifierEffect.STRENGTH_BONUS_TARGET_MODIFIER, modifierTarget)) {
|
||||
if (!modifier.appliesStrengthBonusModifier(game, modifierSource, modifierTarget))
|
||||
return false;
|
||||
}
|
||||
for (Modifier modifier : getModifiersAffectingCard(game, ModifierEffect.STRENGTH_BONUS_MODIFIER, modifierTarget)) {
|
||||
if (!modifier.appliesStrengthBonusModifier(game, modifierSource, modifierTarget))
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user