Migrated Gandalf cards in set 18 to hjson

This commit is contained in:
MarcinSc
2024-05-27 00:07:42 +07:00
parent 6b0b56951c
commit a44bad94a0
15 changed files with 272 additions and 574 deletions

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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