Couple of Site cards

This commit is contained in:
marcin.sciesinski
2019-09-11 17:55:17 -07:00
parent 558df7f44d
commit 7637a499ef
10 changed files with 141 additions and 296 deletions

View File

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

View File

@@ -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<? extends ActivateCardAction> 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;
}
}

View File

@@ -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<? extends ActivateCardAction> 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;
}
}

View File

@@ -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<? extends Modifier> getInPlayModifiers(LotroGame game, PhysicalCard self) {
TwilightCostModifier modifier = new TwilightCostModifier(self, CardType.COMPANION,
new PhaseCondition(Phase.FELLOWSHIP), 2);
return Collections.singletonList(modifier);
}
}

View File

@@ -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<? extends Modifier> getInPlayModifiers(LotroGame game, PhysicalCard self) {
TwilightCostModifier modifier = new TwilightCostModifier(self, Race.HOBBIT,
new PhaseCondition(Phase.FELLOWSHIP), -1);
return Collections.singletonList(modifier);
}
}

View File

@@ -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<? extends ActivateCardAction> 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;
}
}

View File

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

View File

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

View File

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

View File

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