diff --git a/gemp-lotr/gemp-lotr-async/src/main/web/cards/set40/set40.json b/gemp-lotr/gemp-lotr-async/src/main/web/cards/set40/set40.json index cfddcea63..0fa4c99f7 100644 --- a/gemp-lotr/gemp-lotr-async/src/main/web/cards/set40/set40.json +++ b/gemp-lotr/gemp-lotr-async/src/main/web/cards/set40/set40.json @@ -125,5 +125,142 @@ ] } ] + }, + "40_273": { + "title": "Bag End", + "type": "site", + "block": "Second ed", + "site": 1, + "cost": 0, + "keyword": "dwelling", + "effects": { + "type": "activated", + "phase": "fellowship", + "cost": { + "type": "discardFromHand", + "forced": false + }, + "effect": { + "type": "modifyStrength", + "filter": "choose(name(Frodo))", + "until": "endOfTurn", + "amount": 1 + } + } + }, + "40_274": { + "title": "Bywater Bridge", + "type": "site", + "block": "Second ed", + "site": 1, + "cost": 0, + "keyword": "river", + "effects": { + "type": "activated", + "phase": "fellowship", + "cost": { + "type": "exert", + "count": 2, + "filter": "choose(hobbit)" + }, + "effect": { + "type": "playCardFromDrawDeck", + "filter": "choose(name(Gandalf))" + } + } + }, + "40_275": { + "title": "East Road", + "type": "site", + "block": "Second ed", + "site": 1, + "cost": 0, + "keyword": "forest", + "effects": { + "type": "modifier", + "modifier": { + "type": "modifyCost", + "condition": { + "type": "phase", + "phase": "fellowship" + }, + "filter": "companion", + "amount": 2 + } + } + }, + "40_276": { + "title": "Green Hill Country", + "type": "site", + "block": "Second ed", + "site": 1, + "cost": 0, + "effects": { + "type": "modifier", + "modifier": { + "type": "modifyCost", + "condition": { + "type": "phase", + "phase": "fellowship" + }, + "filter": "hobbit", + "amount": -1 + } + } + }, + "40_277": { + "title": "The Prancing Pony", + "type": "site", + "block": "Second ed", + "site": 1, + "cost": 0, + "effects": { + "type": "activated", + "phase": "fellowship", + "cost": { + "type": "addBurdens" + }, + "effect": { + "type": "playCardFromDrawDeck", + "filter": "choose(name(Aragorn))" + } + } + }, + "40_278": { + "title": "Southfarthing", + "type": "site", + "block": "Second ed", + "site": 1, + "cost": 0, + "effects": { + "type": "trigger", + "optional": true, + "trigger": { + "type": "startOfTurn" + }, + "cost": { + "type": "exert", + "filter": "choose(your,hobbit)" + }, + "effect": { + "type": "playCardFromDrawDeck", + "filter": "choose(or(pipe,and(pipeweed,possession)))" + } + } + }, + "40_279": { + "title": "Barrow-downs", + "type": "site", + "block": "Second ed", + "site": 2, + "cost": 2, + "effects": { + "type": "modifyOwnCost", + "condition": { + "type": "haveInitiative", + "side": "shadow" + }, + "amount": 3 + } } } diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set40/site/Card40_273.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set40/site/Card40_273.java deleted file mode 100644 index fda59b6cf..000000000 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set40/site/Card40_273.java +++ /dev/null @@ -1,48 +0,0 @@ -package com.gempukku.lotro.cards.set40.site; - -import com.gempukku.lotro.common.Keyword; -import com.gempukku.lotro.common.Phase; -import com.gempukku.lotro.common.SitesBlock; -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.AbstractSite; -import com.gempukku.lotro.logic.effects.AddUntilEndOfTurnModifierEffect; -import com.gempukku.lotro.logic.effects.ChooseAndDiscardCardsFromHandEffect; -import com.gempukku.lotro.logic.modifiers.StrengthModifier; -import com.gempukku.lotro.logic.timing.PlayConditions; - -import java.util.Collections; -import java.util.List; - -/** - * Title: Bag End - * Set: Second Edition - * Side: None - * Site Number: 1 - * Shadow Number: 0 - * Card Number: 1U273 - * Game Text: Dwelling. Fellowship: Discard a card from hand to make Frodo strength +1 until the end of turn. - */ -public class Card40_273 extends AbstractSite { - public Card40_273() { - super("Bag End", SitesBlock.SECOND_ED, 1, 0, Direction.LEFT); - addKeyword(Keyword.DWELLING); - } - - @Override - public List getPhaseActionsInPlay(String playerId, LotroGame game, PhysicalCard self) { - if (PlayConditions.canUseSiteDuringPhase(game, Phase.FELLOWSHIP, self) - && PlayConditions.canDiscardFromHand(game, playerId, 1, Filters.any)) { - ActivateCardAction action = new ActivateCardAction(self); - action.appendCost( - new ChooseAndDiscardCardsFromHandEffect(action, playerId, false, 1, Filters.any)); - action.appendEffect( - new AddUntilEndOfTurnModifierEffect( - new StrengthModifier(self, self, 1))); - return Collections.singletonList(action); - } - return null; - } -} diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set40/site/Card40_274.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set40/site/Card40_274.java deleted file mode 100644 index f8f1986d1..000000000 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set40/site/Card40_274.java +++ /dev/null @@ -1,48 +0,0 @@ -package com.gempukku.lotro.cards.set40.site; - -import com.gempukku.lotro.common.Keyword; -import com.gempukku.lotro.common.Phase; -import com.gempukku.lotro.common.Race; -import com.gempukku.lotro.common.SitesBlock; -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.AbstractSite; -import com.gempukku.lotro.logic.effects.choose.ChooseAndExertCharactersEffect; -import com.gempukku.lotro.logic.effects.choose.ChooseAndPlayCardFromDeckEffect; -import com.gempukku.lotro.logic.timing.PlayConditions; - -import java.util.Collections; -import java.util.List; - -/** - * Title: Bywater Bridge - * Set: Second Edition - * Side: None - * Site Number: 1 - * Shadow Number: 0 - * Card Number: 1C274 - * Game Text: River. Fellowship: Exert two Hobbits to play Gandalf from your draw deck. - */ -public class Card40_274 extends AbstractSite { - public Card40_274() { - super("Bywater Bridge", SitesBlock.SECOND_ED, 1, 0, Direction.LEFT); - addKeyword(Keyword.RIVER); - } - - @Override - public List getPhaseActionsInPlay(String playerId, LotroGame game, PhysicalCard self) { - if (PlayConditions.canUseSiteDuringPhase(game, Phase.FELLOWSHIP, self) - && PlayConditions.canExert(self, game, 1, 2, Race.HOBBIT) - && PlayConditions.canPlayFromDeck(playerId, game, Filters.gandalf)) { - ActivateCardAction action = new ActivateCardAction(self); - action.appendCost( - new ChooseAndExertCharactersEffect(action, playerId, 2, 2, Race.HOBBIT)); - action.appendEffect( - new ChooseAndPlayCardFromDeckEffect(playerId, Filters.gandalf)); - return Collections.singletonList(action); - } - return null; - } -} diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set40/site/Card40_275.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set40/site/Card40_275.java deleted file mode 100644 index b76a7a437..000000000 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set40/site/Card40_275.java +++ /dev/null @@ -1,38 +0,0 @@ -package com.gempukku.lotro.cards.set40.site; - -import com.gempukku.lotro.common.CardType; -import com.gempukku.lotro.common.Keyword; -import com.gempukku.lotro.common.Phase; -import com.gempukku.lotro.common.SitesBlock; -import com.gempukku.lotro.game.PhysicalCard; -import com.gempukku.lotro.game.state.LotroGame; -import com.gempukku.lotro.logic.cardtype.AbstractSite; -import com.gempukku.lotro.logic.modifiers.Modifier; -import com.gempukku.lotro.logic.modifiers.TwilightCostModifier; -import com.gempukku.lotro.logic.modifiers.condition.PhaseCondition; - -import java.util.Collections; -import java.util.List; - -/** - * Title: East Road - * Set: Second Edition - * Side: None - * Site Number: 1 - * Shadow Number: 0 - * Card Number: 1U275 - * Game Text: Forest. During the fellowship phase, each companion's twilight cost is +2. - */ -public class Card40_275 extends AbstractSite { - public Card40_275() { - super("East Road", SitesBlock.SECOND_ED, 1, 0, Direction.LEFT); - addKeyword(Keyword.FOREST); - } - - @Override - public List getInPlayModifiers(LotroGame game, PhysicalCard self) { - TwilightCostModifier modifier = new TwilightCostModifier(self, CardType.COMPANION, - new PhaseCondition(Phase.FELLOWSHIP), 2); - return Collections.singletonList(modifier); - } -} diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set40/site/Card40_276.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set40/site/Card40_276.java deleted file mode 100644 index 730bd0e27..000000000 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set40/site/Card40_276.java +++ /dev/null @@ -1,36 +0,0 @@ -package com.gempukku.lotro.cards.set40.site; - -import com.gempukku.lotro.common.Phase; -import com.gempukku.lotro.common.Race; -import com.gempukku.lotro.common.SitesBlock; -import com.gempukku.lotro.game.PhysicalCard; -import com.gempukku.lotro.game.state.LotroGame; -import com.gempukku.lotro.logic.cardtype.AbstractSite; -import com.gempukku.lotro.logic.modifiers.Modifier; -import com.gempukku.lotro.logic.modifiers.TwilightCostModifier; -import com.gempukku.lotro.logic.modifiers.condition.PhaseCondition; - -import java.util.Collections; -import java.util.List; - -/** - * Title: Green Hill Country - * Set: Second Edition - * Side: None - * Site Number: 1 - * Shadow Number: 0 - * Card Number: 1U276 - * Game Text: During the fellowship phase, the twilight cost of each Hobbit is -1. - */ -public class Card40_276 extends AbstractSite { - public Card40_276() { - super("Green Hill Country", SitesBlock.SECOND_ED, 1, 0, Direction.LEFT); - } - - @Override - public List getInPlayModifiers(LotroGame game, PhysicalCard self) { - TwilightCostModifier modifier = new TwilightCostModifier(self, Race.HOBBIT, - new PhaseCondition(Phase.FELLOWSHIP), -1); - return Collections.singletonList(modifier); - } -} diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set40/site/Card40_277.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set40/site/Card40_277.java deleted file mode 100644 index d664850e0..000000000 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set40/site/Card40_277.java +++ /dev/null @@ -1,45 +0,0 @@ -package com.gempukku.lotro.cards.set40.site; - -import com.gempukku.lotro.common.Phase; -import com.gempukku.lotro.common.SitesBlock; -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.AbstractSite; -import com.gempukku.lotro.logic.effects.AddBurdenEffect; -import com.gempukku.lotro.logic.effects.choose.ChooseAndPlayCardFromDeckEffect; -import com.gempukku.lotro.logic.timing.PlayConditions; - -import java.util.Collections; -import java.util.List; - -/** - * Title: The Prancing Pony - * Set: Second Edition - * Side: None - * Site Number: 1 - * Shadow Number: 0 - * Card Number: 1U277 - * Game Text: Fellowship: Add a burden to play Aragorn from your draw deck. - */ -public class Card40_277 extends AbstractSite { - public Card40_277() { - super("The Prancing Pony", SitesBlock.SECOND_ED, 1, 0, Direction.LEFT); - } - - @Override - public List getPhaseActionsInPlay(String playerId, LotroGame game, PhysicalCard self) { - if (PlayConditions.canUseSiteDuringPhase(game, Phase.FELLOWSHIP, self) - && PlayConditions.canAddBurdens(game, playerId, self) - && PlayConditions.canPlayFromDeck(playerId, game, Filters.aragorn)) { - ActivateCardAction action = new ActivateCardAction(self); - action.appendCost( - new AddBurdenEffect(playerId, self, 1)); - action.appendEffect( - new ChooseAndPlayCardFromDeckEffect(playerId, Filters.aragorn)); - return Collections.singletonList(action); - } - return null; - } -} diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set40/site/Card40_278.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set40/site/Card40_278.java deleted file mode 100644 index 00ec090ae..000000000 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set40/site/Card40_278.java +++ /dev/null @@ -1,48 +0,0 @@ -package com.gempukku.lotro.cards.set40.site; - -import com.gempukku.lotro.common.*; -import com.gempukku.lotro.logic.GameUtils; -import com.gempukku.lotro.logic.cardtype.AbstractSite; -import com.gempukku.lotro.logic.effects.choose.ChooseAndExertCharactersEffect; -import com.gempukku.lotro.logic.timing.PlayConditions; -import com.gempukku.lotro.logic.effects.choose.ChooseAndPlayCardFromDeckEffect; -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 com.gempukku.lotro.logic.timing.TriggerConditions; -import com.gempukku.lotro.logic.timing.results.FinishedPlayingFellowshipResult; - -import java.util.Collections; -import java.util.List; - -/** - * Title: Southfarthing - * Set: Second Edition - * Side: None - * Site Number: 1 - * Shadow Number: 0 - * Card Number: 1U278 - * Game Text: At the start of your turn, you may exert a Hobbit to play a pipe or pipeweed possession from your draw deck. - */ -public class Card40_278 extends AbstractSite { - public Card40_278() { - super("Southfarthing", SitesBlock.SECOND_ED, 1, 0, Direction.LEFT); - } - - @Override - public List getOptionalAfterTriggers(String playerId, LotroGame game, EffectResult effectResult, PhysicalCard self) { - if (TriggerConditions.startOfTurn(game, effectResult) - && GameUtils.isFP(game, playerId) - && PlayConditions.canExert(self, game, Race.HOBBIT)) { - OptionalTriggerAction action = new OptionalTriggerAction(self); - action.appendCost( - new ChooseAndExertCharactersEffect(action, playerId, 1, 1, Race.HOBBIT)); - action.appendEffect( - new ChooseAndPlayCardFromDeckEffect(playerId, Filters.or(PossessionClass.PIPE, Filters.and(CardType.POSSESSION, Keyword.PIPEWEED)))); - return Collections.singletonList(action); - } - return null; - } -} diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set40/site/Card40_279.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set40/site/Card40_279.java deleted file mode 100644 index bf915e706..000000000 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set40/site/Card40_279.java +++ /dev/null @@ -1,29 +0,0 @@ -package com.gempukku.lotro.cards.set40.site; - -import com.gempukku.lotro.common.SitesBlock; -import com.gempukku.lotro.game.state.LotroGame; -import com.gempukku.lotro.logic.cardtype.AbstractSite; -import com.gempukku.lotro.common.Side; -import com.gempukku.lotro.game.PhysicalCard; - -/** - * Title: Barrow-downs - * Set: Second Edition - * Side: None - * Site Number: 2 - * Shadow Number: 2 - * Card Number: 1U279 - * Game Text: While the Shadow player has initiative, this site's shadow number is +3. - */ -public class Card40_279 extends AbstractSite { - public Card40_279() { - super("Barrow-downs", SitesBlock.SECOND_ED, 2, 2, Direction.LEFT); - } - - @Override - public int getTwilightCostModifier(LotroGame game, PhysicalCard self) { - if (game.getModifiersQuerying().hasInitiative(game) == Side.SHADOW) - return 3; - return 0; - } -} 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 3b70ebe75..f227acad7 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 @@ -782,9 +782,9 @@ public class BuiltLotroCardBlueprint implements LotroCardBlueprint { throw new InvalidCardDefinitionException("Card has to have a title"); if (cardType == null) throw new InvalidCardDefinitionException("Card has to have a type"); - if (cardType != CardType.THE_ONE_RING && side == null) + if (cardType != CardType.THE_ONE_RING && cardType != CardType.SITE && side == null) throw new InvalidCardDefinitionException("Only The One Ring does not have a side defined"); - if (cardType != CardType.THE_ONE_RING && culture == null) + if (cardType != CardType.THE_ONE_RING && cardType != CardType.SITE && culture == null) throw new InvalidCardDefinitionException("Only The One Ring does not have a culture defined"); if (siteNumber != 0 && cardType != CardType.SITE diff --git a/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/at/IndividualCardAtTest.java b/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/at/IndividualCardAtTest.java index 8f59062e1..062259406 100644 --- a/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/at/IndividualCardAtTest.java +++ b/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/at/IndividualCardAtTest.java @@ -288,7 +288,7 @@ public class IndividualCardAtTest extends AbstractAtTest { final int twilightPool = _game.getGameState().getTwilightPool(); AwaitingDecision playFirstFellowship = _userFeedback.getAwaitingDecision(P1); - playerDecided(P1, getCardActionId(playFirstFellowship, "Attach Legolas")); + playerDecided(P1, getCardActionId(playFirstFellowship, "Play Legolas")); final int twilightPool2 = _game.getGameState().getTwilightPool(); @@ -1075,7 +1075,7 @@ public class IndividualCardAtTest extends AbstractAtTest { skipMulligans(); - playerDecided(P1, getCardActionId(_userFeedback.getAwaitingDecision(P1), "Attach Frodo's Pipe")); + playerDecided(P1, getCardActionId(_userFeedback.getAwaitingDecision(P1), "Play Frodo's Pipe")); playerDecided(P1, getCardActionId(_userFeedback.getAwaitingDecision(P1), "Use Frodo's Pipe")); playerDecided(P1, String.valueOf(pipeweed1.getCardId()));