From cd8bfc582e8cd8c39c8acec0c84e0d30767f260b Mon Sep 17 00:00:00 2001 From: "marcin.sciesinski" Date: Fri, 2 Aug 2019 00:35:56 -0700 Subject: [PATCH] Finished 100 cards! --- .../lotro/cards/set40/gondor/Card40_093.java | 52 ++++++++++++++ .../lotro/cards/set40/gondor/Card40_094.java | 42 ++++++++++++ .../lotro/cards/set40/gondor/Card40_095.java | 62 +++++++++++++++++ .../lotro/cards/set40/gondor/Card40_096.java | 67 +++++++++++++++++++ .../lotro/cards/set40/gondor/Card40_097.java | 67 +++++++++++++++++++ .../lotro/cards/set40/gondor/Card40_099.java | 46 +++++++++++++ .../lotro/cards/set40/gondor/Card40_100.java | 61 +++++++++++++++++ .../src/main/resources/blueprintMapping.txt | 3 +- 8 files changed, 399 insertions(+), 1 deletion(-) create mode 100644 gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set40/gondor/Card40_093.java create mode 100644 gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set40/gondor/Card40_094.java create mode 100644 gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set40/gondor/Card40_095.java create mode 100644 gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set40/gondor/Card40_096.java create mode 100644 gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set40/gondor/Card40_097.java create mode 100644 gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set40/gondor/Card40_099.java create mode 100644 gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set40/gondor/Card40_100.java diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set40/gondor/Card40_093.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set40/gondor/Card40_093.java new file mode 100644 index 000000000..6ea9cfa51 --- /dev/null +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set40/gondor/Card40_093.java @@ -0,0 +1,52 @@ +package com.gempukku.lotro.cards.set40.gondor; + +import com.gempukku.lotro.cards.AbstractAttachable; +import com.gempukku.lotro.cards.PlayConditions; +import com.gempukku.lotro.cards.effects.AddUntilEndOfPhaseModifierEffect; +import com.gempukku.lotro.cards.effects.choose.ChooseAndExertCharactersEffect; +import com.gempukku.lotro.common.*; +import com.gempukku.lotro.game.PhysicalCard; +import com.gempukku.lotro.game.state.LotroGame; +import com.gempukku.lotro.logic.actions.ActivateCardAction; +import com.gempukku.lotro.logic.modifiers.StrengthModifier; +import com.gempukku.lotro.logic.timing.Action; + +import java.util.Collections; +import java.util.List; + +/** + * Title: Alliance of Old + * Set: Second Edition + * Side: Free + * Culture: Gondor + * Twilight Cost: 1 + * Type: Condition - Companion + * Card Number: 1R93 + * Game Text: Tale. Bearer must be an Elf. Skirmish: Exert a [GONDOR] Man to make bearer strength +2. + */ +public class Card40_093 extends AbstractAttachable { + public Card40_093() { + super(Side.FREE_PEOPLE, CardType.CONDITION, 1, Culture.GONDOR, null, "Alliance of Old"); + addKeyword(Keyword.TALE); + } + + @Override + protected Filterable getValidTargetFilter(String playerId, LotroGame game, PhysicalCard self) { + return Race.ELF; + } + + @Override + protected List getExtraPhaseActions(String playerId, LotroGame game, PhysicalCard self) { + if (PlayConditions.canUseFPCardDuringPhase(game, Phase.SKIRMISH, self) + && PlayConditions.canExert(self, game, Culture.GONDOR, Race.MAN)) { + ActivateCardAction action = new ActivateCardAction(self); + action.appendCost( + new ChooseAndExertCharactersEffect(action, playerId, 1, 1, Culture.GONDOR, Race.MAN)); + action.appendEffect( + new AddUntilEndOfPhaseModifierEffect( + new StrengthModifier(self, self.getAttachedTo(), 2))); + return Collections.singletonList(action); + } + return null; + } +} diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set40/gondor/Card40_094.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set40/gondor/Card40_094.java new file mode 100644 index 000000000..1c008a1ed --- /dev/null +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set40/gondor/Card40_094.java @@ -0,0 +1,42 @@ +package com.gempukku.lotro.cards.set40.gondor; + +import com.gempukku.lotro.cards.AbstractCompanion; +import com.gempukku.lotro.cards.modifiers.conditions.LocationCondition; +import com.gempukku.lotro.common.Culture; +import com.gempukku.lotro.common.Keyword; +import com.gempukku.lotro.common.Race; +import com.gempukku.lotro.filters.Filters; +import com.gempukku.lotro.game.PhysicalCard; +import com.gempukku.lotro.game.state.LotroGame; +import com.gempukku.lotro.logic.modifiers.KeywordModifier; +import com.gempukku.lotro.logic.modifiers.Modifier; + +import java.util.Collections; +import java.util.List; + +/** + * Title: *Aragorn, Dunedain Ranger + * Set: Second Edition + * Side: Free + * Culture: Gondor + * Twilight Cost: 4 + * Type: Companion - Man + * Strength: 8 + * Vitality: 4 + * Resistance: 8 + * Card Number: 1C94 + * Game Text: Ranger. While at a site from your adventure deck, Aragorn is defender +1. + */ +public class Card40_094 extends AbstractCompanion { + public Card40_094() { + super(4, 8, 4, 8, Culture.GONDOR, Race.MAN, null, "Aragorn", "Dunedain Ranger", true); + addKeyword(Keyword.RANGER); + } + + @Override + public List getAlwaysOnModifiers(LotroGame game, PhysicalCard self) { + KeywordModifier modifier = new KeywordModifier(self, self, + new LocationCondition(Filters.owner(self.getOwner())), Keyword.DEFENDER, 1); + return Collections.singletonList(modifier); + } +} diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set40/gondor/Card40_095.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set40/gondor/Card40_095.java new file mode 100644 index 000000000..628337f7a --- /dev/null +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set40/gondor/Card40_095.java @@ -0,0 +1,62 @@ +package com.gempukku.lotro.cards.set40.gondor; + +import com.gempukku.lotro.cards.AbstractAttachable; +import com.gempukku.lotro.cards.AbstractCompanion; +import com.gempukku.lotro.cards.ExtraFilters; +import com.gempukku.lotro.cards.PlayConditions; +import com.gempukku.lotro.cards.actions.AttachPermanentAction; +import com.gempukku.lotro.cards.effects.choose.ChooseAndPlayCardFromHandEffect; +import com.gempukku.lotro.cards.effects.choose.ChooseCardsFromDeckEffect; +import com.gempukku.lotro.cards.effects.choose.ChooseCardsFromHandEffect; +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.effects.HealCharactersEffect; + +import java.util.Collection; +import java.util.Collections; +import java.util.List; + +/** + * Title: *Aragorn, Isildur's Heir + * Set: Second Edition + * Side: Free + * Culture: Gondor + * Twilight Cost: 4 + * Type: Companion - Man + * Strength: 8 + * Vitality: 4 + * Resistance: 8 + * Card Number: 1R95 + * Game Text: Ranger. Maneuver: Play an artifact or possession on Aragorn to heal him. + */ +public class Card40_095 extends AbstractCompanion { + public Card40_095() { + super(4, 8, 4, 8, Culture.GONDOR, Race.MAN, null, "Aragorn", "Isildur's Heir", true); + addKeyword(Keyword.RANGER); + } + + @Override + protected List getExtraInPlayPhaseActions(final String playerId, LotroGame game, final PhysicalCard self) { + if (PlayConditions.canUseFPCardDuringPhase(game, Phase.MANEUVER, self) + && PlayConditions.canPlayFromHand(playerId, game, Filters.or(CardType.ARTIFACT, CardType.POSSESSION), ExtraFilters.attachableTo(game, self))) { + ActivateCardAction action = new ActivateCardAction(self); + action.appendCost( + new ChooseCardsFromHandEffect(playerId, 1, 1, Filters.or(CardType.ARTIFACT, CardType.POSSESSION), ExtraFilters.attachableTo(game, self)) { + @Override + protected void cardsSelected(LotroGame game, Collection cards) { + for (PhysicalCard card : cards) { + AttachPermanentAction attachPermanentAction = ((AbstractAttachable) card.getBlueprint()).getPlayCardAction(playerId, game, card, Filters.and(self), 0); + game.getActionsEnvironment().addActionToStack(attachPermanentAction); + } + } + }); + action.appendEffect( + new HealCharactersEffect(self, self)); + return Collections.singletonList(action); + } + return null; + } +} diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set40/gondor/Card40_096.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set40/gondor/Card40_096.java new file mode 100644 index 000000000..505b04048 --- /dev/null +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set40/gondor/Card40_096.java @@ -0,0 +1,67 @@ +package com.gempukku.lotro.cards.set40.gondor; + +import com.gempukku.lotro.cards.AbstractAttachableFPPossession; +import com.gempukku.lotro.cards.PlayConditions; +import com.gempukku.lotro.cards.TriggerConditions; +import com.gempukku.lotro.cards.effects.AddUntilEndOfPhaseModifierEffect; +import com.gempukku.lotro.cards.effects.choose.ChooseAndExertCharactersEffect; +import com.gempukku.lotro.cards.modifiers.DoesNotAddToArcheryTotalModifier; +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.effects.ChooseAndWoundCharactersEffect; +import com.gempukku.lotro.logic.modifiers.KeywordModifier; +import com.gempukku.lotro.logic.modifiers.Modifier; +import com.gempukku.lotro.logic.timing.EffectResult; + +import java.util.Collections; +import java.util.List; + +/** + * Title: *Aragorn's Bow, Swift and True + * Set: Second Edition + * Side: Free + * Culture: Gondor + * Twilight Cost: 1 + * Type: Possession - Ranged Weapon + * Card Number: 1R96 + * Game Text: Bearer must be Aragorn. + * He is an archer. + * At the beginning of the archery phase, you may exert Aragorn to wound a minion. If you do, Aragorn does not add + * to the fellowship archery total. + */ +public class Card40_096 extends AbstractAttachableFPPossession { + public Card40_096() { + super(1, 0, 0, Culture.GONDOR, PossessionClass.RANGED_WEAPON, "Aragorn's Bow", "Swift and True", true); + } + + @Override + protected Filterable getValidTargetFilter(String playerId, LotroGame game, PhysicalCard self) { + return Filters.aragorn; + } + + @Override + protected List getNonBasicStatsModifiers(PhysicalCard self) { + KeywordModifier modifier = new KeywordModifier(self, Filters.hasAttached(self), Keyword.ARCHER); + return Collections.singletonList(modifier); + } + + @Override + public List getOptionalAfterTriggers(String playerId, LotroGame game, EffectResult effectResult, PhysicalCard self) { + if (TriggerConditions.startOfPhase(game, effectResult, Phase.ARCHERY) + && PlayConditions.canExert(self, game, Filters.aragorn)) { + OptionalTriggerAction action = new OptionalTriggerAction(self); + action.appendCost( + new ChooseAndExertCharactersEffect(action, playerId, 1, 1, Filters.aragorn)); + action.appendEffect( + new ChooseAndWoundCharactersEffect(action, playerId, 1, 1, CardType.MINION)); + action.appendEffect( + new AddUntilEndOfPhaseModifierEffect( + new DoesNotAddToArcheryTotalModifier(self, self))); + return Collections.singletonList(action); + } + return null; + } +} diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set40/gondor/Card40_097.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set40/gondor/Card40_097.java new file mode 100644 index 000000000..750d2d1f2 --- /dev/null +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set40/gondor/Card40_097.java @@ -0,0 +1,67 @@ +package com.gempukku.lotro.cards.set40.gondor; + +import com.gempukku.lotro.cards.AbstractAttachableFPPossession; +import com.gempukku.lotro.cards.PlayConditions; +import com.gempukku.lotro.cards.decisions.ForEachYouSpotDecision; +import com.gempukku.lotro.cards.effects.CheckPhaseLimitEffect; +import com.gempukku.lotro.cards.effects.choose.ChooseAndAddUntilEOPStrengthBonusEffect; +import com.gempukku.lotro.cards.effects.choose.ChooseAndDiscardCardsFromPlayEffect; +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.decisions.DecisionResultInvalidException; +import com.gempukku.lotro.logic.effects.ChooseAndHealCharactersEffect; +import com.gempukku.lotro.logic.effects.PlayoutDecisionEffect; +import com.gempukku.lotro.logic.timing.Action; + +import java.util.Collections; +import java.util.List; + +/** + * Title: *Aragorn's Pipe + * Set: Second Edition + * Side: Free + * Culture: Gondor + * Twilight Cost: 1 + * Type: Possession - Pipe + * Card Number: 1U97 + * Game Text: Bearer must be a [GONDOR] Man. + * Skirmish: Discard a pipeweed possession and spot X pipes to make a companion bearing a pipe strength +X + * (limit once per phase). + */ +public class Card40_097 extends AbstractAttachableFPPossession { + public Card40_097() { + super(1, 0, 0, Culture.GONDOR, PossessionClass.PIPE, "Aragorn's Pipe", null, true); + } + + @Override + protected Filterable getValidTargetFilter(String playerId, LotroGame game, PhysicalCard self) { + return Filters.and(Culture.GONDOR, Race.MAN); + } + + @Override + protected List getExtraInPlayPhaseActions(final String playerId, final LotroGame game, final PhysicalCard self) { + if (PlayConditions.canUseFPCardDuringPhase(game, Phase.SKIRMISH, self) + && PlayConditions.canDiscardFromPlay(self, game, CardType.POSSESSION, Keyword.PIPEWEED)) { + final ActivateCardAction action = new ActivateCardAction(self); + action.appendCost( + new ChooseAndDiscardCardsFromPlayEffect(action, playerId, 1, 1, CardType.POSSESSION, Keyword.PIPEWEED)); + action.appendEffect( + new CheckPhaseLimitEffect(action, self, 1, + new PlayoutDecisionEffect(playerId, + new ForEachYouSpotDecision(1, "Choose number of pipes you wish to spot", game, Integer.MAX_VALUE, PossessionClass.PIPE) { + @Override + public void decisionMade(String result) throws DecisionResultInvalidException { + int spotCount = getValidatedResult(result); + action.appendEffect( + new ChooseAndAddUntilEOPStrengthBonusEffect(action, self, playerId, spotCount, CardType.COMPANION, + Filters.hasAttached(PossessionClass.PIPE))); + } + }))); + return Collections.singletonList(action); + } + return null; + } +} diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set40/gondor/Card40_099.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set40/gondor/Card40_099.java new file mode 100644 index 000000000..91b217a80 --- /dev/null +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set40/gondor/Card40_099.java @@ -0,0 +1,46 @@ +package com.gempukku.lotro.cards.set40.gondor; + +import com.gempukku.lotro.cards.AbstractEvent; +import com.gempukku.lotro.cards.PlayConditions; +import com.gempukku.lotro.cards.actions.PlayEventAction; +import com.gempukku.lotro.cards.effects.AddUntilEndOfTurnModifierEffect; +import com.gempukku.lotro.cards.effects.choose.ChooseAndExertCharactersEffect; +import com.gempukku.lotro.cards.modifiers.AddNoTwilightForCompanionMoveModifier; +import com.gempukku.lotro.common.Culture; +import com.gempukku.lotro.common.Keyword; +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; + +/** + * Title: Avoid Being Seen + * Set: Second Edition + * Side: Free + * Culture: Gondor + * Twilight Cost: 0 + * Type: Event - Fellowship + * Card Number: 1R99 + * Game Text: To play, exert X Rangers. Until the end of turn, add no twilight for each exerted Ranger when the fellowship moves. + */ +public class Card40_099 extends AbstractEvent { + public Card40_099() { + super(Side.FREE_PEOPLE, 0, Culture.GONDOR, "Aboid Being Seen", Phase.FELLOWSHIP); + } + + @Override + public PlayEventAction getPlayCardAction(String playerId, LotroGame game, final PhysicalCard self, int twilightModifier, boolean ignoreRoamingPenalty) { + final PlayEventAction action = new PlayEventAction(self); + action.appendCost( + new ChooseAndExertCharactersEffect(action, playerId, 0, Integer.MAX_VALUE, Filters.character, Keyword.RANGER) { + @Override + protected void forEachCardExertedCallback(PhysicalCard character) { + action.appendEffect( + new AddUntilEndOfTurnModifierEffect( + new AddNoTwilightForCompanionMoveModifier(self, character))); + } + }); + return action; + } +} diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set40/gondor/Card40_100.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set40/gondor/Card40_100.java new file mode 100644 index 000000000..838bf15d9 --- /dev/null +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set40/gondor/Card40_100.java @@ -0,0 +1,61 @@ +package com.gempukku.lotro.cards.set40.gondor; + +import com.gempukku.lotro.cards.AbstractAttachableFPPossession; +import com.gempukku.lotro.cards.PlayConditions; +import com.gempukku.lotro.cards.effects.choose.ChooseAndExertCharactersEffect; +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.effects.ChooseAndWoundCharactersEffect; +import com.gempukku.lotro.logic.modifiers.KeywordModifier; +import com.gempukku.lotro.logic.modifiers.Modifier; +import com.gempukku.lotro.logic.timing.Action; + +import java.util.Collections; +import java.util.List; + +/** + * Title: *Blade of Gondor, Weapon of Honor + * Set: Second Edition + * Side: Free + * Culture: Gondor + * Twilight Cost: 1 + * Type: Possession - Hand Weapon + * Strength: +2 + * Card Number: 1R100 + * Game Text: Bearer must be Boromir. He is damage +1. + * Skirmish: Exert Boromir to wound an Orc or Uruk-hai skirmishing another unbound companion. + */ +public class Card40_100 extends AbstractAttachableFPPossession { + public Card40_100() { + super(1, 2, 0, Culture.GONDOR, PossessionClass.HAND_WEAPON, "Blade of Gondor", "Weapon of Honor", true); + } + + @Override + protected Filterable getValidTargetFilter(String playerId, LotroGame game, PhysicalCard self) { + return Filters.boromir; + } + + @Override + protected List getNonBasicStatsModifiers(PhysicalCard self) { + KeywordModifier modifier = new KeywordModifier(self, Filters.hasAttached(self), Keyword.DAMAGE, 1); + return Collections.singletonList(modifier); + } + + @Override + protected List getExtraInPlayPhaseActions(String playerId, LotroGame game, PhysicalCard self) { + if (PlayConditions.canUseFPCardDuringPhase(game, Phase.SKIRMISH, self) + && PlayConditions.canExert(self, game, Filters.boromir)) { + ActivateCardAction action = new ActivateCardAction(self); + action.appendCost( + new ChooseAndExertCharactersEffect(action, playerId, 1, 1, Filters.boromir)); + action.appendEffect( + new ChooseAndWoundCharactersEffect(action, playerId, 1, 1, + Filters.or(Race.ORC, Race.URUK_HAI), Filters.inSkirmishAgainst(Filters.not(Filters.hasAttached(self)), Filters.unboundCompanion))); + return Collections.singletonList(action); + } + return null; + } +} diff --git a/gemp-lotr/gemp-lotr-cards/src/main/resources/blueprintMapping.txt b/gemp-lotr/gemp-lotr-cards/src/main/resources/blueprintMapping.txt index a99619e50..539173663 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/resources/blueprintMapping.txt +++ b/gemp-lotr/gemp-lotr-cards/src/main/resources/blueprintMapping.txt @@ -234,4 +234,5 @@ gl_theOneRing,1_2 40_84,1_78 40_87,4_99 40_88,2_26 -40_90,1_87 \ No newline at end of file +40_90,1_87 +40_98,1_92 \ No newline at end of file