diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set8/gandalf/Card8_014.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set8/gandalf/Card8_014.java deleted file mode 100644 index 7553a566f..000000000 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set8/gandalf/Card8_014.java +++ /dev/null @@ -1,49 +0,0 @@ -package com.gempukku.lotro.cards.set8.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.AddUntilEndOfPhaseModifierEffect; -import com.gempukku.lotro.logic.effects.ChooseActiveCardEffect; -import com.gempukku.lotro.logic.effects.HealCharactersEffect; -import com.gempukku.lotro.logic.modifiers.OverwhelmedByMultiplierModifier; - -/** - * Set: Siege of Gondor - * Side: Free - * Culture: Gandalf - * Twilight Cost: 3 - * Type: Event • Skirmish - * Game Text: At sites 1K to 5K, heal Gandalf. At any other site, prevent a Hobbit from being overwhelmed unless his or - * her strength is tripled. - */ -public class Card8_014 extends AbstractEvent { - public Card8_014() { - super(Side.FREE_PEOPLE, 3, Culture.GANDALF, "A Fool", Phase.SKIRMISH); - } - - @Override - public PlayEventAction getPlayEventCardAction(String playerId, LotroGame game, final PhysicalCard self) { - final PlayEventAction action = new PlayEventAction(self); - final PhysicalCard currentSite = game.getGameState().getCurrentSite(); - if (currentSite.getBlueprint().getSiteBlock() == SitesBlock.KING - && currentSite.getSiteNumber() >= 1 && currentSite.getSiteNumber() <= 5) { - action.appendEffect( - new HealCharactersEffect(self, self.getOwner(), Filters.gandalf)); - } else { - action.appendEffect( - new ChooseActiveCardEffect(self, playerId, "Choose a Hobbit", Race.HOBBIT) { - @Override - protected void cardSelected(LotroGame game, PhysicalCard card) { - action.insertEffect( - new AddUntilEndOfPhaseModifierEffect( - new OverwhelmedByMultiplierModifier(self, card, 3))); - } - }); - } - return action; - } -} diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set8/gandalf/Card8_015.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set8/gandalf/Card8_015.java deleted file mode 100644 index a1513e97a..000000000 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set8/gandalf/Card8_015.java +++ /dev/null @@ -1,34 +0,0 @@ -package com.gempukku.lotro.cards.set8.gandalf; - -import com.gempukku.lotro.common.Culture; -import com.gempukku.lotro.common.Phase; -import com.gempukku.lotro.common.Race; -import com.gempukku.lotro.common.Signet; -import com.gempukku.lotro.game.PhysicalCard; -import com.gempukku.lotro.game.state.LotroGame; -import com.gempukku.lotro.logic.cardtype.AbstractCompanion; - -/** - * Set: Siege of Gondor - * Side: Free - * Culture: Gandalf - * Twilight Cost: 4 - * Type: Companion • Wizard - * Strength: 7 - * Vitality: 4 - * Resistance: 6 - * Signet: Aragorn - * Game Text: When Gandalf is in your starting fellowship, his twilight cost is -2. - */ -public class Card8_015 extends AbstractCompanion { - public Card8_015() { - super(4, 7, 4, 6, Culture.GANDALF, Race.WIZARD, Signet.ARAGORN, "Gandalf", "Leader of Men", true); - } - - @Override - public int getTwilightCostModifier(LotroGame game, PhysicalCard self, PhysicalCard target) { - if (game.getGameState().getCurrentPhase() == Phase.PLAY_STARTING_FELLOWSHIP) - return -2; - return 0; - } -} diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set8/gandalf/Card8_016.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set8/gandalf/Card8_016.java deleted file mode 100644 index 9669a1254..000000000 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set8/gandalf/Card8_016.java +++ /dev/null @@ -1,44 +0,0 @@ -package com.gempukku.lotro.cards.set8.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.effects.choose.ChooseAndExertCharactersEffect; -import com.gempukku.lotro.logic.modifiers.evaluator.CountActiveEvaluator; -import com.gempukku.lotro.logic.modifiers.evaluator.NegativeEvaluator; -import com.gempukku.lotro.logic.timing.PlayConditions; - -/** - * Set: Siege of Gondor - * Side: Free - * Culture: Gandalf - * Twilight Cost: 2 - * Type: Event • Skirmish - * Game Text: Exert Gandalf to make a minion skirmishing an unbound companion strength -1 for each Gandalf signet - * you spot. - */ -public class Card8_016 extends AbstractEvent { - public Card8_016() { - super(Side.FREE_PEOPLE, 2, Culture.GANDALF, "Let Us Not Tarry", Phase.SKIRMISH); - } - - @Override - public boolean checkPlayRequirements(LotroGame game, PhysicalCard self) { - return PlayConditions.canExert(self, game, Filters.gandalf); - } - - @Override - public PlayEventAction getPlayEventCardAction(String playerId, LotroGame game, PhysicalCard self) { - PlayEventAction action = new PlayEventAction(self); - action.appendCost( - new ChooseAndExertCharactersEffect(action, playerId, 1, 1, Filters.gandalf)); - action.appendEffect( - new ChooseAndAddUntilEOPStrengthBonusEffect(action, self, playerId, - new NegativeEvaluator(new CountActiveEvaluator(Signet.GANDALF)), CardType.MINION, Filters.inSkirmishAgainst(Filters.unboundCompanion))); - return action; - } -} diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set8/gandalf/Card8_017.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set8/gandalf/Card8_017.java deleted file mode 100644 index 6d6f4d752..000000000 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set8/gandalf/Card8_017.java +++ /dev/null @@ -1,73 +0,0 @@ -package com.gempukku.lotro.cards.set8.gandalf; - -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.ChoiceEffect; -import com.gempukku.lotro.logic.effects.ChooseActiveCardEffect; -import com.gempukku.lotro.logic.effects.ReplaceInSkirmishEffect; -import com.gempukku.lotro.logic.effects.SpotEffect; -import com.gempukku.lotro.logic.effects.choose.ChooseAndExertCharactersEffect; -import com.gempukku.lotro.logic.timing.Effect; -import com.gempukku.lotro.logic.timing.PlayConditions; - -import java.util.LinkedList; -import java.util.List; - -/** - * Set: Siege of Gondor - * Side: Free - * Culture: Gandalf - * Twilight Cost: 3 - * Type: Event • Skirmish - * Game Text: If Gandalf is not assigned to a skirmish, spot Shadowfax or exert Gandalf to have Gandalf replace - * an unbound companion in a skirmish. - */ -public class Card8_017 extends AbstractEvent { - public Card8_017() { - super(Side.FREE_PEOPLE, 3, Culture.GANDALF, "Mighty Steed", Phase.SKIRMISH); - } - - @Override - public boolean checkPlayRequirements(LotroGame game, PhysicalCard self) { - return PlayConditions.canSpot(game, Filters.gandalf, Filters.notAssignedToSkirmish) - && (PlayConditions.canSpot(game, Filters.name("Shadowfax")) || PlayConditions.canExert(self, game, Filters.gandalf)); - } - - @Override - public PlayEventAction getPlayEventCardAction(String playerId, LotroGame game, PhysicalCard self) { - final PlayEventAction action = new PlayEventAction(self); - List possibleCosts = new LinkedList<>(); - possibleCosts.add( - new SpotEffect(1, Filters.name("Shadowfax")) { - @Override - public String getText(LotroGame game) { - return "Spot Shadowfax"; - } - }); - possibleCosts.add( - new ChooseAndExertCharactersEffect(action, playerId, 1, 1, Filters.gandalf) { - @Override - public String getText(LotroGame game) { - return "Exert Gandalf"; - } - }); - - action.appendCost( - new ChoiceEffect(action, playerId, possibleCosts)); - action.appendEffect( - new ChooseActiveCardEffect(self, playerId, "Choose Gandalf", Filters.gandalf) { - @Override - protected void cardSelected(LotroGame game, PhysicalCard card) { - action.insertEffect( - new ReplaceInSkirmishEffect(card, Filters.unboundCompanion)); - } - }); - return action; - } -} diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set8/gandalf/Card8_018.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set8/gandalf/Card8_018.java deleted file mode 100644 index 8979a5df3..000000000 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set8/gandalf/Card8_018.java +++ /dev/null @@ -1,59 +0,0 @@ -package com.gempukku.lotro.cards.set8.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.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: Siege of Gondor - * Side: Free - * Culture: Gandalf - * Twilight Cost: 1 - * Type: Condition • Support Area - * Game Text: Fellowship: Exert Gandalf and either an [ELVEN] companion or a [SHIRE] companion to add a [GANDALF] token - * here. Skirmish: Remove a [GANDALF] token here to make a minion skirmishing an unbound companion strength -2. - */ -public class Card8_018 extends AbstractPermanent { - public Card8_018() { - super(Side.FREE_PEOPLE, 1, CardType.CONDITION, Culture.GANDALF, "Not the First Halfling"); - } - - @Override - public List getPhaseActionsInPlay(String playerId, LotroGame game, PhysicalCard self) { - if (PlayConditions.canUseFPCardDuringPhase(game, Phase.FELLOWSHIP, self) - && PlayConditions.canExert(self, game, Filters.gandalf) - && PlayConditions.canExert(self, game, CardType.COMPANION, Filters.or(Culture.ELVEN, Culture.SHIRE))) { - ActivateCardAction action = new ActivateCardAction(self); - action.appendCost( - new ChooseAndExertCharactersEffect(action, playerId, 1, 1, Filters.gandalf)); - action.appendCost( - new ChooseAndExertCharactersEffect(action, playerId, 1, 1, CardType.COMPANION, Filters.or(Culture.ELVEN, Culture.SHIRE))); - action.appendEffect( - new AddTokenEffect(self, self, Token.GANDALF)); - return Collections.singletonList(action); - } - if (PlayConditions.canUseFPCardDuringPhase(game, Phase.SKIRMISH, self) - && PlayConditions.canRemoveTokens(game, self, Token.GANDALF, 1)) { - ActivateCardAction action = new ActivateCardAction(self); - action.appendCost( - new RemoveTokenEffect(self, self, Token.GANDALF)); - action.appendEffect( - new ChooseAndAddUntilEOPStrengthBonusEffect(action, self, playerId, -2, CardType.MINION, Filters.inSkirmishAgainst(Filters.unboundCompanion))); - return Collections.singletonList(action); - } - return null; - } - - -} diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set8/gandalf/Card8_019.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set8/gandalf/Card8_019.java deleted file mode 100644 index bb27426ed..000000000 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set8/gandalf/Card8_019.java +++ /dev/null @@ -1,50 +0,0 @@ -package com.gempukku.lotro.cards.set8.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.choose.ChooseAndExertCharactersEffect; -import com.gempukku.lotro.logic.effects.choose.ChooseAndPutCardFromDiscardOnTopOfDeckEffect; -import com.gempukku.lotro.logic.timing.PlayConditions; - -/** - * Set: Siege of Gondor - * Side: Free - * Culture: Gandalf - * Twilight Cost: 1 - * Type: Event • Fellowship - * Game Text: Spot Gandalf and exert a companion to place a card of that companion’s culture from your discard pile on - * top of your draw deck. - */ -public class Card8_019 extends AbstractEvent { - public Card8_019() { - super(Side.FREE_PEOPLE, 1, Culture.GANDALF, "On Your Doorstep", Phase.FELLOWSHIP); - } - - @Override - public boolean checkPlayRequirements(LotroGame game, PhysicalCard self) { - return PlayConditions.canSpot(game, Filters.gandalf) - && PlayConditions.canExert(self, game, CardType.COMPANION); - } - - @Override - public PlayEventAction getPlayEventCardAction(final String playerId, LotroGame game, PhysicalCard self) { - final PlayEventAction action = new PlayEventAction(self); - action.appendCost( - new ChooseAndExertCharactersEffect(action, playerId, 1, 1, CardType.COMPANION) { - @Override - protected void forEachCardExertedCallback(PhysicalCard character) { - Culture culture = character.getBlueprint().getCulture(); - action.appendEffect( - new ChooseAndPutCardFromDiscardOnTopOfDeckEffect(action, playerId, 1, 1, culture)); - } - }); - return action; - } -} diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set8/gandalf/Card8_020.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set8/gandalf/Card8_020.java deleted file mode 100644 index bcbb7d7b0..000000000 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set8/gandalf/Card8_020.java +++ /dev/null @@ -1,55 +0,0 @@ -package com.gempukku.lotro.cards.set8.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.ChooseActiveCardEffect; -import com.gempukku.lotro.logic.effects.KillEffect; -import com.gempukku.lotro.logic.effects.ShuffleDeckEffect; -import com.gempukku.lotro.logic.effects.choose.ChooseAndPutCardFromDeckIntoHandEffect; -import com.gempukku.lotro.logic.timing.PlayConditions; - -/** - * Set: Siege of Gondor - * Side: Free - * Culture: Gandalf - * Twilight Cost: 3 - * Type: Event • Fellowship - * Game Text: Spot Gandalf and place a companion (except the Ring-bearer) in the dead pile to take 3 cards from that - * companion’s culture into hand from your draw deck. Shuffle your draw deck. - */ -public class Card8_020 extends AbstractEvent { - public Card8_020() { - super(Side.FREE_PEOPLE, 3, Culture.GANDALF, "Saved From the Fire", Phase.FELLOWSHIP); - } - - @Override - public boolean checkPlayRequirements(LotroGame game, PhysicalCard self) { - return PlayConditions.canSpot(game, Filters.gandalf); - } - - @Override - public PlayEventAction getPlayEventCardAction(final String playerId, LotroGame game, PhysicalCard self) { - final PlayEventAction action = new PlayEventAction(self); - action.appendCost( - new ChooseActiveCardEffect(self, playerId, "Choose a companion", CardType.COMPANION, Filters.not(Filters.ringBearer)) { - @Override - protected void cardSelected(LotroGame game, final PhysicalCard card) { - action.insertCost( - new KillEffect(card, self, KillEffect.Cause.CARD_EFFECT)); - for (int i = 0; i < 3; i++) - action.appendEffect( - new ChooseAndPutCardFromDeckIntoHandEffect(action, playerId, 0, 1, card.getBlueprint().getCulture())); - action.appendEffect( - new ShuffleDeckEffect(playerId)); - } - }); - return action; - } -} diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set8/gandalf/Card8_021.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set8/gandalf/Card8_021.java deleted file mode 100644 index b8ff1f7fb..000000000 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set8/gandalf/Card8_021.java +++ /dev/null @@ -1,73 +0,0 @@ -package com.gempukku.lotro.cards.set8.gandalf; - -import com.gempukku.lotro.common.Culture; -import com.gempukku.lotro.common.Filterable; -import com.gempukku.lotro.common.Phase; -import com.gempukku.lotro.common.PossessionClass; -import com.gempukku.lotro.filters.Filters; -import com.gempukku.lotro.game.PhysicalCard; -import com.gempukku.lotro.game.state.LotroGame; -import com.gempukku.lotro.game.state.Skirmish; -import com.gempukku.lotro.logic.actions.ActivateCardAction; -import com.gempukku.lotro.logic.actions.RequiredTriggerAction; -import com.gempukku.lotro.logic.cardtype.AbstractAttachableFPPossession; -import com.gempukku.lotro.logic.effects.AddThreatsEffect; -import com.gempukku.lotro.logic.effects.AddUntilEndOfPhaseModifierEffect; -import com.gempukku.lotro.logic.effects.ExertCharactersEffect; -import com.gempukku.lotro.logic.modifiers.StrengthModifier; -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: Siege of Gondor - * Side: Free - * Culture: Gandalf - * Twilight Cost: 2 - * Type: Possession • Mount - * Game Text: Bearer must be Gandalf. At the start of each skirmish involving Gandalf, each minion skirmishing Gandalf - * must exert. Skirmish: Add a threat to make Gandalf strength +1. - */ -public class Card8_021 extends AbstractAttachableFPPossession { - public Card8_021() { - super(2, 0, 0, Culture.GANDALF, PossessionClass.MOUNT, "Shadowfax", "Greatheart", true); - } - - @Override - public Filterable getValidTargetFilter(String playerId, LotroGame game, PhysicalCard self) { - return Filters.gandalf; - } - - - @Override - public List getRequiredAfterTriggers(LotroGame game, EffectResult effectResult, PhysicalCard self) { - if (TriggerConditions.startOfPhase(game, effectResult, Phase.SKIRMISH)) { - final Skirmish skirmish = game.getGameState().getSkirmish(); - if (skirmish != null && skirmish.getFellowshipCharacter() != null && skirmish.getFellowshipCharacter().getBlueprint().getTitle().equals("Gandalf")) { - RequiredTriggerAction action = new RequiredTriggerAction(self); - action.appendEffect( - new ExertCharactersEffect(action, self, Filters.inSkirmishAgainst(Filters.gandalf))); - return Collections.singletonList(action); - } - } - return null; - } - - @Override - public List getPhaseActionsInPlay(String playerId, LotroGame game, PhysicalCard self) { - if (PlayConditions.canUseFPCardDuringPhase(game, Phase.SKIRMISH, self) - && PlayConditions.canAddThreat(game, self, 1)) { - ActivateCardAction action = new ActivateCardAction(self); - action.appendCost( - new AddThreatsEffect(playerId, self, 1)); - action.appendEffect( - new AddUntilEndOfPhaseModifierEffect( - new StrengthModifier(self, Filters.gandalf, 1))); - return Collections.singletonList(action); - } - return null; - } -} diff --git a/gemp-lotr/gemp-lotr-cards/src/main/resources/cards/official/set07/set07-Shire.hjson b/gemp-lotr/gemp-lotr-cards/src/main/resources/cards/official/set07/set07-Shire.hjson index 2a571d7a7..bcb4b141d 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/resources/cards/official/set07/set07-Shire.hjson +++ b/gemp-lotr/gemp-lotr-cards/src/main/resources/cards/official/set07/set07-Shire.hjson @@ -235,8 +235,8 @@ type: activated phase: skirmish requires: { - type: cantSpot - filter: self,assignedToSkirmish(any) + type: canSpot + filter: self,notAssignedToSkirmish } cost: { type: returnToHand @@ -400,8 +400,8 @@ type: activated phase: skirmish requires: { - type: cantSpot - filter: self,assignedToSkirmish(any) + type: canSpot + filter: self,notAssignedToSkirmish } cost: { type: returnToHand diff --git a/gemp-lotr/gemp-lotr-cards/src/main/resources/card-stubs/set08-Gandalf.hjson b/gemp-lotr/gemp-lotr-cards/src/main/resources/cards/official/set08/set08-Gandalf.hjson similarity index 64% rename from gemp-lotr/gemp-lotr-cards/src/main/resources/card-stubs/set08-Gandalf.hjson rename to gemp-lotr/gemp-lotr-cards/src/main/resources/cards/official/set08/set08-Gandalf.hjson index 1d576a661..70759228e 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/resources/card-stubs/set08-Gandalf.hjson +++ b/gemp-lotr/gemp-lotr-cards/src/main/resources/cards/official/set08/set08-Gandalf.hjson @@ -22,20 +22,24 @@ twilight: 3 type: Event keywords: Skirmish - /*requires: { - - } - */ effects: { type: event - cost: { - type: SendMessage - text: Placeholder effect for development. - }, effect: [ { - type: SendMessage - text: Placeholder effect for development. + type: if + condition: { + type: location + filter: siteBlock(king),siteNumber(1-5) + } + true: { + type: heal + filter: choose(name(Gandalf)) + } + false: { + type: alterOverwhelmMultiplier + filter: choose(hobbit) + multiplier: 3 + } } ] } @@ -77,17 +81,16 @@ vitality: 4 signet: Aragorn resistance: 6 - /*requires: { - - } effects: [ - { - - } - { - - } - ]*/ + { + type: modifyOwnCost + requires: { + type: phase + phase: play starting fellowship + } + amount: -2 + } + ] gametext: When Gandalf is in your starting fellowship, his twilight cost is -2. lore: ...the rule of no realm is mine, neither of Gondor nor any other, great or small.' promotext: "" @@ -121,20 +124,26 @@ twilight: 2 type: Event keywords: Skirmish - /*requires: { - - } - */ effects: { type: event cost: { - type: SendMessage - text: Placeholder effect for development. + type: exert + filter: choose(name(Gandalf)) }, effect: [ + { + type: chooseHowManyToSpot + filter: signet(gandalf) + memorize: spotCount + } { - type: SendMessage - text: Placeholder effect for development. + type: modifyStrength + filter: choose(minion,inSkirmishAgainst(unbound,companion)) + amount: { + type: fromMemory + memory: spotCount + multiplier: -1 + } } ] } @@ -171,20 +180,34 @@ twilight: 3 type: Event keywords: Skirmish - /*requires: { - - } - */ effects: { type: event + requires: { + type: canSpot + filter: name(Gandalf),notAssignedToSkirmish + } cost: { - type: SendMessage - text: Placeholder effect for development. + type: choice + texts: [ + Spot Shadowfax + Exert Gandalf + ] + effects: [ + { + type: spot + filter: name(Shadowfax) + } + { + type: exert + filter: choose(name(Gandalf)) + } + ] }, effect: [ { - type: SendMessage - text: Placeholder effect for development. + type: replaceInSkirmish + filter: unbound,companion,not(name(Gandalf)) + with: choose(name(Gandalf)) } ] } @@ -221,17 +244,41 @@ twilight: 1 type: Condition keywords: Support Area - /*requires: { - - } effects: [ - { - - } - { - - } - ]*/ + { + type: activated + phase: fellowship + cost: [ + { + type: exert + filter: choose(name(Gandalf)) + } + { + type: exert + filter: choose(or(culture(elven),culture(shire)),companion) + } + ] + effect: { + type: addTokens + culture: gandalf + filter: self + } + } + { + type: activated + phase: skirmish + cost: { + type: removeTokens + culture: gandalf + filter: self + } + effect: { + type: modifyStrength + filter: choose(minion,inSkirmishAgainst(unbound,companion)) + amount: -2 + } + } + ] gametext: Fellowship: Exert Gandalf and either an [elven] companion or a [shire] companion to add a [gandalf] token here.
Skirmish: Remove a [gandalf] token here to make a minion skirmishing an unbound companion strength -2. lore: "" promotext: "" @@ -265,20 +312,21 @@ twilight: 1 type: Event keywords: Fellowship - /*requires: { - - } - */ effects: { type: event + requires: { + type: canSpot + filter: name(Gandalf) + } cost: { - type: SendMessage - text: Placeholder effect for development. - }, + type: exert + filter: choose(companion) + memorize: exertedCompanion + } effect: [ { - type: SendMessage - text: Placeholder effect for development. + type: putCardsFromDiscardOnTopOfDeck + filter: choose(cultureFromMemory(exertedCompanion)) } ] } @@ -315,20 +363,25 @@ twilight: 3 type: Event keywords: Fellowship - /*requires: { - - } - */ effects: { type: event + requires: { + type: canSpot + filter: name(Gandalf) + } cost: { - type: SendMessage - text: Placeholder effect for development. + type: kill + filter: choose(companion,not(ringBearer)) + memorize: killedCompanion }, effect: [ { - type: SendMessage - text: Placeholder effect for development. + type: putCardsFromDeckIntoHand + filter: choose(cultureFromMemory(killedCompanion)) + count: 0-3 + } + { + type: shuffleDeck } ] } @@ -366,18 +419,36 @@ twilight: 2 type: Possession itemclass: Mount - #target: title(Gandalf) - /*requires: { - - } + target: title(Gandalf) effects: [ - { - - } - { - - } - ]*/ + { + type: trigger + trigger: { + type: startOfPhase + phase: skirmish + } + requires: { + type: canSpot + filter: bearer,inSkirmish + } + effect: { + type: exert + filter: all(minion,inSkirmishAgainst(bearer)) + } + } + { + type: activated + phase: skirmish + cost: { + type: addThreats + } + effect: { + type: modifyStrength + filter: bearer + amount: 1 + } + } + ] gametext: Bearer must be Gandalf.
At the start of each skirmish involving Gandalf, each minion skirmishing Gandalf must exert.
Skirmish: Add a threat to make Gandalf strength +1. lore: "" promotext: "" diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/BuiltLotroCardBlueprint.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/BuiltLotroCardBlueprint.java index 982e604c8..5e25be6f1 100644 --- a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/BuiltLotroCardBlueprint.java +++ b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/BuiltLotroCardBlueprint.java @@ -15,6 +15,7 @@ import com.gempukku.lotro.logic.modifiers.Modifier; import com.gempukku.lotro.logic.timing.Action; import com.gempukku.lotro.logic.timing.Effect; import com.gempukku.lotro.logic.timing.EffectResult; +import com.google.common.collect.Sets; import java.util.*; @@ -1039,6 +1040,9 @@ public class BuiltLotroCardBlueprint implements LotroCardBlueprint { return result; } + private static Set frodosWithNon10Resistance = Sets.newHashSet("Resolute Hobbit"); + private static Set samsWithNon5Resistance = Sets.newHashSet("Loyal Friend", "Dropper of Eaves", "Humble Halfling"); + public void validateConsistency() throws InvalidCardDefinitionException { if (title == null) throw new InvalidCardDefinitionException("Card has to have a title"); @@ -1091,5 +1095,11 @@ public class BuiltLotroCardBlueprint implements LotroCardBlueprint { throw new InvalidCardDefinitionException("Possession, condition or artifact without a filter needs a SUPPORT_AREA keyword"); if (cardType == CardType.FOLLOWER && aidCostSource == null) throw new InvalidCardDefinitionException("Follower requires an aid cost"); + if (title.equals("Frodo") && resistance != 10 && !frodosWithNon10Resistance.contains(subtitle)) { + throw new InvalidCardDefinitionException("Frodo (except some permitted) needs to have resistance of 10"); + } + if (title.equals("Sam") && resistance != 5 && !samsWithNon5Resistance.contains(subtitle)) { + throw new InvalidCardDefinitionException("Sam (except some permitted) needs to have resistance of 5"); + } } } diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/field/effect/appender/Kill.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/field/effect/appender/Kill.java index 0d9ec6ea3..2b74314f8 100644 --- a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/field/effect/appender/Kill.java +++ b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/field/effect/appender/Kill.java @@ -21,11 +21,12 @@ import java.util.Collections; public class Kill implements EffectAppenderProducer { @Override public EffectAppender createEffectAppender(JSONObject effectObject, CardGenerationEnvironment environment) throws InvalidCardDefinitionException { - FieldUtils.validateAllowedFields(effectObject, "count", "filter", "player"); + FieldUtils.validateAllowedFields(effectObject, "count", "filter", "player", "memorize"); final ValueSource valueSource = ValueResolver.resolveEvaluator(effectObject.get("count"), 1, environment); final String filter = FieldUtils.getString(effectObject.get("filter"), "filter"); final String player = FieldUtils.getString(effectObject.get("player"), "player", "you"); + final String memory = FieldUtils.getString(effectObject.get("memorize"), "memorize", "_temp"); if (filter == null) throw new InvalidCardDefinitionException("Selector is required for a Kill effect."); @@ -33,12 +34,12 @@ public class Kill implements EffectAppenderProducer { MultiEffectAppender result = new MultiEffectAppender(); result.addEffectAppender( - CardResolver.resolveCards(filter, valueSource, "_temp", player, "Choose cards to kill", environment)); + CardResolver.resolveCards(filter, valueSource, memory, player, "Choose cards to kill", environment)); result.addEffectAppender( new DelayedAppender() { @Override protected Effect createEffect(boolean cost, CostToEffectAction action, ActionContext actionContext) { - final Collection cardsFromMemory = actionContext.getCardsFromMemory("_temp"); + final Collection cardsFromMemory = actionContext.getCardsFromMemory(memory); return new KillEffect(cardsFromMemory, Collections.singleton(action.getActionSource()), KillEffect.Cause.CARD_EFFECT); } });