Added more ATs
This commit is contained in:
@@ -1,50 +0,0 @@
|
||||
package com.gempukku.lotro.cards.build.field.effect.appender;
|
||||
|
||||
import com.gempukku.lotro.cards.build.ActionContext;
|
||||
import com.gempukku.lotro.cards.build.CardGenerationEnvironment;
|
||||
import com.gempukku.lotro.cards.build.InvalidCardDefinitionException;
|
||||
import com.gempukku.lotro.cards.build.field.FieldUtils;
|
||||
import com.gempukku.lotro.cards.build.field.effect.EffectAppender;
|
||||
import com.gempukku.lotro.cards.build.field.effect.EffectAppenderProducer;
|
||||
import com.gempukku.lotro.cards.build.field.effect.appender.resolver.CardResolver;
|
||||
import com.gempukku.lotro.filters.Filters;
|
||||
import com.gempukku.lotro.game.PhysicalCard;
|
||||
import com.gempukku.lotro.logic.actions.CostToEffectAction;
|
||||
import com.gempukku.lotro.logic.effects.PreventCardEffect;
|
||||
import com.gempukku.lotro.logic.effects.PreventableCardEffect;
|
||||
import com.gempukku.lotro.logic.modifiers.evaluator.ConstantEvaluator;
|
||||
import com.gempukku.lotro.logic.timing.Effect;
|
||||
import org.json.simple.JSONObject;
|
||||
|
||||
import java.util.Collection;
|
||||
|
||||
public class PreventExert implements EffectAppenderProducer {
|
||||
@Override
|
||||
public EffectAppender createEffectAppender(JSONObject effectObject, CardGenerationEnvironment environment) throws InvalidCardDefinitionException {
|
||||
FieldUtils.validateAllowedFields(effectObject, "select");
|
||||
|
||||
final String select = FieldUtils.getString(effectObject.get("select"), "select", "all(any)");
|
||||
|
||||
MultiEffectAppender result = new MultiEffectAppender();
|
||||
|
||||
result.addEffectAppender(
|
||||
CardResolver.resolveCards(select,
|
||||
(actionContext) -> {
|
||||
final PreventableCardEffect preventableEffect = (PreventableCardEffect) actionContext.getEffect();
|
||||
return Filters.in(preventableEffect.getAffectedCardsMinusPrevented(actionContext.getGame()));
|
||||
}, actionContext -> new ConstantEvaluator(1), "_temp", "you", "Choose characters to prevent effect to", environment));
|
||||
result.addEffectAppender(
|
||||
new DelayedAppender() {
|
||||
@Override
|
||||
protected Effect createEffect(boolean cost, CostToEffectAction action, ActionContext actionContext) {
|
||||
final Collection<? extends PhysicalCard> cards = actionContext.getCardsFromMemory("_temp");
|
||||
final PreventableCardEffect preventableEffect = (PreventableCardEffect) actionContext.getEffect();
|
||||
|
||||
return new PreventCardEffect(preventableEffect, Filters.in(cards));
|
||||
}
|
||||
});
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -152,25 +152,31 @@ public class FilterFactory {
|
||||
return lostSkirmish.getLoser();
|
||||
});
|
||||
simpleFilters.put("storedculture",
|
||||
(actionContext) -> {
|
||||
(actionContext) -> (Filter) (game, physicalCard) -> {
|
||||
PhysicalCard.WhileInZoneData data = actionContext.getSource().getWhileInZoneData();
|
||||
if (data == null)
|
||||
return Filters.none;
|
||||
return Culture.valueOf(data.getValue());
|
||||
if (data != null) {
|
||||
return physicalCard.getBlueprint().getCulture() == Culture.findCultureByHumanReadable(data.getHumanReadable());
|
||||
}
|
||||
return false;
|
||||
});
|
||||
simpleFilters.put("storedkeyword",
|
||||
(actionContext) -> {
|
||||
(actionContext) -> (Filter) (game, physicalCard) -> {
|
||||
PhysicalCard.WhileInZoneData data = actionContext.getSource().getWhileInZoneData();
|
||||
if (data == null)
|
||||
return Filters.none;
|
||||
return Keyword.valueOf(data.getValue());
|
||||
if (data != null) {
|
||||
Keyword keyword = Keyword.valueOf(data.getValue());
|
||||
if (keyword != null) {
|
||||
return game.getModifiersQuerying().hasKeyword(game, physicalCard, keyword);
|
||||
}
|
||||
}
|
||||
return false;
|
||||
});
|
||||
simpleFilters.put("storedtitle",
|
||||
(actionContext) -> {
|
||||
(actionContext) -> (Filter) (game, physicalCard) -> {
|
||||
PhysicalCard.WhileInZoneData data = actionContext.getSource().getWhileInZoneData();
|
||||
if (data == null)
|
||||
return Filters.none;
|
||||
return Filters.name(data.getValue());
|
||||
if (data != null) {
|
||||
return physicalCard.getBlueprint().getTitle().equals(data.getValue());
|
||||
}
|
||||
return false;
|
||||
});
|
||||
simpleFilters.put("unbound",
|
||||
(actionContext) -> Filters.unboundCompanion);
|
||||
@@ -182,7 +188,6 @@ public class FilterFactory {
|
||||
simpleFilters.put("wounded", (actionContext) -> Filters.wounded);
|
||||
simpleFilters.put("your", (actionContext) -> Filters.owner(actionContext.getPerformingPlayer()));
|
||||
|
||||
|
||||
parameterFilters.put("and",
|
||||
(parameter, environment) -> {
|
||||
final String[] filters = splitIntoFilters(parameter);
|
||||
|
||||
@@ -68,6 +68,10 @@ public abstract class AbstractAtTest {
|
||||
return _game.getGameState().getRing(player);
|
||||
}
|
||||
|
||||
public PhysicalCard getSite(int siteNumber) {
|
||||
return _game.getGameState().getSite(siteNumber);
|
||||
}
|
||||
|
||||
public PhysicalCard addToZone(PhysicalCard card, Zone zone) {
|
||||
_game.getGameState().addCardToZone(_game, card, zone);
|
||||
return card;
|
||||
@@ -191,6 +195,10 @@ public abstract class AbstractAtTest {
|
||||
return _game.getModifiersQuerying().getStrength(_game, card);
|
||||
}
|
||||
|
||||
public int getResistance(PhysicalCard card) {
|
||||
return _game.getModifiersQuerying().getResistance(_game, card);
|
||||
}
|
||||
|
||||
public void initializeSimplestGame() throws DecisionResultInvalidException {
|
||||
this.initializeSimplestGame(null);
|
||||
}
|
||||
|
||||
@@ -648,4 +648,28 @@ public class AssignmentAtTest extends AbstractAtTest {
|
||||
selectNo(P1);
|
||||
validateContents(new String[]{String.valueOf(attea.getCardId())}, getAwaitingDecision(P1).getDecisionParameters().get("minions"));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void toldeaDarkShadowCantBeAssignedTwiceToSameCompanion() throws Exception {
|
||||
initializeSimplestGame();
|
||||
|
||||
PhysicalCard toldeaDarkShadow = addToZone(createCard(P2, "19_39"), Zone.SHADOW_CHARACTERS);
|
||||
PhysicalCard aragorn = addToZone(createCard(P1, "1_89"), Zone.FREE_CHARACTERS);
|
||||
|
||||
passUntil(Phase.ASSIGNMENT);
|
||||
pass(P1);
|
||||
pass(P2);
|
||||
playerDecided(P1, aragorn.getCardId() + " " + toldeaDarkShadow.getCardId());
|
||||
selectCard(P1, aragorn);
|
||||
pass(P1);
|
||||
pass(P2);
|
||||
// Fierce assignment
|
||||
pass(P1);
|
||||
pass(P2);
|
||||
try {
|
||||
playerDecided(P1, aragorn.getCardId() + " " + toldeaDarkShadow.getCardId());
|
||||
fail();
|
||||
} catch (DecisionResultInvalidException e) {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,92 @@
|
||||
package com.gempukku.lotro.at;
|
||||
|
||||
import com.gempukku.lotro.common.Phase;
|
||||
import com.gempukku.lotro.common.Zone;
|
||||
import com.gempukku.lotro.game.PhysicalCard;
|
||||
import com.gempukku.lotro.logic.decisions.AwaitingDecision;
|
||||
import com.gempukku.lotro.logic.decisions.AwaitingDecisionType;
|
||||
import org.junit.Test;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
|
||||
public class ChooseAtTest extends AbstractAtTest {
|
||||
@Test
|
||||
public void chooseHowManyBurdensToSpot() throws Exception {
|
||||
initializeSimplestGame();
|
||||
|
||||
PhysicalCard enduringEvil = addToZone(createCard(P2, "1_246"), Zone.HAND);
|
||||
PhysicalCard orgInquisitor = addToZone(createCard(P2, "1_268"), Zone.SHADOW_CHARACTERS);
|
||||
|
||||
PhysicalCard ringBearer = getRingBearer(P1);
|
||||
|
||||
passUntil(Phase.ASSIGNMENT);
|
||||
pass(P1);
|
||||
pass(P2);
|
||||
playerDecided(P1, ringBearer.getCardId() + " " + orgInquisitor.getCardId());
|
||||
selectCard(P1, ringBearer);
|
||||
pass(P1);
|
||||
selectCardAction(P2, enduringEvil);
|
||||
AwaitingDecision awaitingDecision = getAwaitingDecision(P2);
|
||||
assertEquals(AwaitingDecisionType.INTEGER, awaitingDecision.getDecisionType());
|
||||
validateContents(new String[]{"0"}, awaitingDecision.getDecisionParameters().get("min"));
|
||||
validateContents(new String[]{"1"}, awaitingDecision.getDecisionParameters().get("max"));
|
||||
playerDecided(P2, "1");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void chooseHowManyFPCulturesToSpot() throws Exception {
|
||||
initializeSimplestGame();
|
||||
|
||||
PhysicalCard mercilessBerserker = addToZone(createCard(P2, "15_165"), Zone.SHADOW_CHARACTERS);
|
||||
|
||||
passUntil(Phase.SHADOW);
|
||||
selectCardAction(P2, mercilessBerserker);
|
||||
AwaitingDecision awaitingDecision = getAwaitingDecision(P2);
|
||||
assertEquals(AwaitingDecisionType.INTEGER, awaitingDecision.getDecisionType());
|
||||
validateContents(new String[]{"0"}, awaitingDecision.getDecisionParameters().get("min"));
|
||||
validateContents(new String[]{"1"}, awaitingDecision.getDecisionParameters().get("max"));
|
||||
playerDecided(P2, "1");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void chooseHowManyThreatsToSpot() throws Exception {
|
||||
initializeSimplestGame();
|
||||
|
||||
PhysicalCard gollum = addToZone(createCard(P2, "7_58"), Zone.DISCARD);
|
||||
PhysicalCard soPolite = addToZone(createCard(P2, "7_74"), Zone.HAND);
|
||||
|
||||
addThreats(P1, 1);
|
||||
|
||||
passUntil(Phase.FELLOWSHIP);
|
||||
setTwilightPool(10);
|
||||
|
||||
passUntil(Phase.SHADOW);
|
||||
selectCardAction(P2, soPolite);
|
||||
AwaitingDecision awaitingDecision = getAwaitingDecision(P2);
|
||||
assertEquals(AwaitingDecisionType.INTEGER, awaitingDecision.getDecisionType());
|
||||
validateContents(new String[]{"0"}, awaitingDecision.getDecisionParameters().get("min"));
|
||||
validateContents(new String[]{"1"}, awaitingDecision.getDecisionParameters().get("max"));
|
||||
playerDecided(P2, "1");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void chooseHowManyTwilightTokensToSpot() throws Exception {
|
||||
initializeSimplestGame();
|
||||
|
||||
PhysicalCard underTheLivingEarth = addToZone(createCard(P1, "4_105"), Zone.HAND);
|
||||
PhysicalCard gandalf = addToZone(createCard(P1, "1_72"), Zone.FREE_CHARACTERS);
|
||||
PhysicalCard goblinRunner = addToZone(createCard(P2, "1_178"), Zone.SHADOW_CHARACTERS);
|
||||
|
||||
passUntil(Phase.ASSIGNMENT);
|
||||
pass(P1);
|
||||
pass(P2);
|
||||
playerDecided(P1, gandalf.getCardId() + " " + goblinRunner.getCardId());
|
||||
selectCard(P1, gandalf);
|
||||
selectCardAction(P1, underTheLivingEarth);
|
||||
AwaitingDecision awaitingDecision = getAwaitingDecision(P1);
|
||||
assertEquals(AwaitingDecisionType.INTEGER, awaitingDecision.getDecisionType());
|
||||
validateContents(new String[]{"0"}, awaitingDecision.getDecisionParameters().get("min"));
|
||||
validateContents(new String[]{"4"}, awaitingDecision.getDecisionParameters().get("max"));
|
||||
playerDecided(P1, "4");
|
||||
}
|
||||
}
|
||||
@@ -3,8 +3,12 @@ package com.gempukku.lotro.at;
|
||||
import com.gempukku.lotro.cards.GenericCardTestHelper;
|
||||
import com.gempukku.lotro.common.CardType;
|
||||
import com.gempukku.lotro.common.Keyword;
|
||||
import com.gempukku.lotro.common.Phase;
|
||||
import com.gempukku.lotro.common.Zone;
|
||||
import com.gempukku.lotro.game.CardNotFoundException;
|
||||
import com.gempukku.lotro.game.PhysicalCard;
|
||||
import com.gempukku.lotro.game.PhysicalCardImpl;
|
||||
import com.gempukku.lotro.logic.decisions.AwaitingDecisionType;
|
||||
import com.gempukku.lotro.logic.decisions.DecisionResultInvalidException;
|
||||
import com.gempukku.lotro.logic.modifiers.AddKeywordModifier;
|
||||
import org.junit.Test;
|
||||
@@ -115,4 +119,45 @@ public class ConcealedExposedAtTest extends AbstractAtTest {
|
||||
//4 from playing aragorn, 1 for the ring-bearer, 1 for aragorn, 1 for the site (King's Tent), 0 for exposed concealed
|
||||
assertEquals(7, scn.GetTwilight());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void lookAtHand() throws Exception {
|
||||
initializeSimplestGame();
|
||||
|
||||
PhysicalCard goblinMan = addToZone(createCard(P2, "2_42"), Zone.SHADOW_CHARACTERS);
|
||||
PhysicalCard goblinManInHand = addToZone(createCard(P1, "2_42"), Zone.HAND);
|
||||
|
||||
passUntil(Phase.SHADOW);
|
||||
selectCardAction(P2, goblinMan);
|
||||
assertEquals(AwaitingDecisionType.ARBITRARY_CARDS, getAwaitingDecision(P2).getDecisionType());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void lookAtRandomCardsFromHand() throws Exception {
|
||||
initializeSimplestGame();
|
||||
|
||||
PhysicalCard goblinMan = addToZone(createCard(P2, "2_42"), Zone.SHADOW_CHARACTERS);
|
||||
PhysicalCard galadriel = addToZone(createCard(P1, "1_45"), Zone.SUPPORT);
|
||||
PhysicalCard mirrorOfGaladriel = addToZone(createCard(P1, "1_55"), Zone.SUPPORT);
|
||||
|
||||
for (int i = 0; i < 7; i++) {
|
||||
addToZone(createCard(P2, "2_42"), Zone.HAND);
|
||||
}
|
||||
|
||||
passUntil(Phase.MANEUVER);
|
||||
selectCardAction(P1, mirrorOfGaladriel);
|
||||
assertEquals(AwaitingDecisionType.ARBITRARY_CARDS, getAwaitingDecision(P1).getDecisionType());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void lookAtTopCardsOfDrawDeck() throws Exception {
|
||||
initializeSimplestGame();
|
||||
|
||||
PhysicalCard gandalf = addToZone(createCard(P1, "1_364"), Zone.FREE_CHARACTERS);
|
||||
PhysicalCard questionsThatNeedAnswering = addToZone(createCard(P1, "1_81"), Zone.HAND);
|
||||
|
||||
passUntil(Phase.FELLOWSHIP);
|
||||
selectCardAction(P1, questionsThatNeedAnswering);
|
||||
assertEquals(AwaitingDecisionType.ARBITRARY_CARDS, getAwaitingDecision(P1).getDecisionType());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,45 @@
|
||||
package com.gempukku.lotro.at;
|
||||
|
||||
import com.gempukku.lotro.common.Phase;
|
||||
import com.gempukku.lotro.common.Zone;
|
||||
import com.gempukku.lotro.game.PhysicalCard;
|
||||
import org.junit.Test;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.junit.Assert.assertNotNull;
|
||||
|
||||
public class EventAtTest extends AbstractAtTest {
|
||||
@Test
|
||||
public void cancelEvent() throws Exception {
|
||||
initializeSimplestGame();
|
||||
|
||||
PhysicalCard aragorn = addToZone(createCard(P1, "1_89"), Zone.FREE_CHARACTERS);
|
||||
PhysicalCard goblinRunner = addToZone(createCard(P2, "1_178"), Zone.SHADOW_CHARACTERS);
|
||||
PhysicalCard strengthOfKings = addToZone(createCard(P1, "1_115"), Zone.HAND);
|
||||
PhysicalCard unfamiliarTerritory = addToZone(createCard(P2, "1_201"), Zone.HAND);
|
||||
|
||||
passUntil(Phase.ASSIGNMENT);
|
||||
pass(P1);
|
||||
pass(P2);
|
||||
playerDecided(P1, aragorn.getCardId() + " " + goblinRunner.getCardId());
|
||||
selectCard(P1, aragorn);
|
||||
pass(P1);
|
||||
assertEquals(5, getStrength(goblinRunner));
|
||||
selectCardAction(P2, unfamiliarTerritory);
|
||||
selectCardAction(P1, strengthOfKings);
|
||||
assertEquals(5, getStrength(goblinRunner));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void canPlayNextAction() throws Exception {
|
||||
initializeSimplestGame();
|
||||
|
||||
PhysicalCard gimli = addToZone(createCard(P1, "5_7"), Zone.FREE_CHARACTERS);
|
||||
PhysicalCard barukKhazad = addToZone(createCard(P1, "5_5"), Zone.HAND);
|
||||
PhysicalCard goblinRunner = addToZone(createCard(P2, "1_178"), Zone.SHADOW_CHARACTERS);
|
||||
|
||||
passUntil(Phase.MANEUVER);
|
||||
selectCardAction(P1, barukKhazad);
|
||||
assertNotNull(getAwaitingDecision(P1));
|
||||
}
|
||||
}
|
||||
@@ -17,10 +17,6 @@ import java.util.*;
|
||||
import static org.junit.Assert.*;
|
||||
|
||||
public class IndividualCardAtTest extends AbstractAtTest {
|
||||
|
||||
|
||||
|
||||
|
||||
@Test
|
||||
public void bilboRingBearerWithConsortingAndMorgulBrute() throws DecisionResultInvalidException, CardNotFoundException {
|
||||
Map<String, LotroDeck> decks = new HashMap<>();
|
||||
@@ -1284,4 +1280,41 @@ public class IndividualCardAtTest extends AbstractAtTest {
|
||||
assertEquals(Zone.DISCARD, morgulBlade.getZone());
|
||||
assertEquals(Zone.ATTACHED, bladeTip.getZone());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void sarumanOfManyColors() throws Exception {
|
||||
initializeSimplestGame();
|
||||
|
||||
PhysicalCard sarumanOfManyColors = addToZone(createCard(P2, "12_54"), Zone.HAND);
|
||||
|
||||
PhysicalCard ringBearer = getRingBearer(P1);
|
||||
|
||||
passUntil(Phase.FELLOWSHIP);
|
||||
setTwilightPool(10);
|
||||
passUntil(Phase.SHADOW);
|
||||
assertEquals(4, getStrength(ringBearer));
|
||||
selectCardAction(P2, sarumanOfManyColors);
|
||||
playerDecided(P2, getMultipleDecisionIndex(getAwaitingDecision(P2), "Shire"));
|
||||
assertEquals(3, getStrength(ringBearer));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void putForthItsStrength() throws Exception {
|
||||
initializeSimplestGame();
|
||||
|
||||
PhysicalCard putForthHisStrength = addToZone(createCard(P2, "7_205"), Zone.SUPPORT);
|
||||
PhysicalCard attea = addToZone(createCard(P2, "1_229"), Zone.SHADOW_CHARACTERS);
|
||||
for (int i = 0; i < 3; i++) {
|
||||
addToZone(createCard(P1, "1_12"), Zone.DEAD);
|
||||
}
|
||||
|
||||
passUntil(Phase.FELLOWSHIP);
|
||||
addBurdens(3);
|
||||
addThreats(P1, 3);
|
||||
|
||||
passUntil(Phase.SHADOW);
|
||||
selectCardAction(P2, putForthHisStrength);
|
||||
assertTrue(_game.isFinished());
|
||||
assertEquals(P2, _game.getWinnerPlayerId());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -377,4 +377,19 @@ public class ModifiersAtTest extends AbstractAtTest {
|
||||
addModifier(modifierSource.getModifier(actionContext));
|
||||
assertTrue(Filters.assignableToSkirmish(Side.FREE_PEOPLE, false, false).accepts(_game, birchseed));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void modifyResistance() throws Exception {
|
||||
initializeSimplestGame();
|
||||
|
||||
PhysicalCard ringBearer = getRingBearer(P1);
|
||||
PhysicalCard stingWeaponOfHeritage = attachTo(createCard(P1, "11_173"), ringBearer);
|
||||
PhysicalCard gimli = addToZone(createCard(P1, "5_7"), Zone.FREE_CHARACTERS);
|
||||
PhysicalCard goblinRunner = addToZone(createCard(P2, "1_178"), Zone.SHADOW_CHARACTERS);
|
||||
|
||||
passUntil(Phase.MANEUVER);
|
||||
assertEquals(5, getResistance(gimli));
|
||||
selectCardAction(P1, stingWeaponOfHeritage);
|
||||
assertEquals(7, getResistance(gimli));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,9 +1,11 @@
|
||||
package com.gempukku.lotro.at.effects;
|
||||
|
||||
import com.gempukku.lotro.at.AbstractAtTest;
|
||||
import com.gempukku.lotro.logic.timing.TriggerConditions;
|
||||
import com.gempukku.lotro.common.Phase;
|
||||
import com.gempukku.lotro.common.Zone;
|
||||
import com.gempukku.lotro.game.AbstractActionProxy;
|
||||
import com.gempukku.lotro.game.CardNotFoundException;
|
||||
import com.gempukku.lotro.game.PhysicalCard;
|
||||
import com.gempukku.lotro.game.PhysicalCardImpl;
|
||||
import com.gempukku.lotro.game.state.LotroGame;
|
||||
import com.gempukku.lotro.logic.actions.RequiredTriggerAction;
|
||||
@@ -13,10 +15,14 @@ import com.gempukku.lotro.logic.effects.PreventEffect;
|
||||
import com.gempukku.lotro.logic.timing.Effect;
|
||||
import com.gempukku.lotro.logic.timing.EffectResult;
|
||||
import com.gempukku.lotro.logic.timing.Preventable;
|
||||
import com.gempukku.lotro.logic.timing.TriggerConditions;
|
||||
import com.gempukku.lotro.logic.vo.LotroDeck;
|
||||
import org.junit.Test;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.concurrent.atomic.AtomicInteger;
|
||||
|
||||
import static org.junit.Assert.*;
|
||||
@@ -190,4 +196,37 @@ public class DrawEffectAtTest extends AbstractAtTest {
|
||||
assertEquals(0, triggerCount.get());
|
||||
assertEquals(1, preventCount.get());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void forEachPlayer() throws Exception {
|
||||
Map<String, LotroDeck> decks = new HashMap<>();
|
||||
decks.put(P1, createDeckWithIsengardRuined());
|
||||
decks.put(P2, createDeckWithIsengardRuined());
|
||||
initializeGameWithDecks(decks);
|
||||
|
||||
PhysicalCard gandalf = addToZone(createCard(P1, "1_72"), Zone.FREE_CHARACTERS);
|
||||
|
||||
passUntil(Phase.FELLOWSHIP);
|
||||
selectCardAction(P1, getSite(1));
|
||||
selectNo(P1);
|
||||
selectNo(P2);
|
||||
}
|
||||
|
||||
private LotroDeck createDeckWithIsengardRuined() {
|
||||
LotroDeck lotroDeck = new LotroDeck("Some deck");
|
||||
// 10_121,1_2
|
||||
lotroDeck.setRingBearer("10_121");
|
||||
lotroDeck.setRing("1_2");
|
||||
// 7_330,7_336,8_117,7_342,7_345,7_350,8_120,10_120,7_360
|
||||
lotroDeck.addSite("7_331");
|
||||
lotroDeck.addSite("7_335");
|
||||
lotroDeck.addSite("8_117");
|
||||
lotroDeck.addSite("7_342");
|
||||
lotroDeck.addSite("7_345");
|
||||
lotroDeck.addSite("7_350");
|
||||
lotroDeck.addSite("8_120");
|
||||
lotroDeck.addSite("10_120");
|
||||
lotroDeck.addSite("7_360");
|
||||
return lotroDeck;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,9 +1,11 @@
|
||||
package com.gempukku.lotro.at.effects;
|
||||
|
||||
import com.gempukku.lotro.at.AbstractAtTest;
|
||||
import com.gempukku.lotro.common.Phase;
|
||||
import com.gempukku.lotro.common.Zone;
|
||||
import com.gempukku.lotro.game.AbstractActionProxy;
|
||||
import com.gempukku.lotro.game.CardNotFoundException;
|
||||
import com.gempukku.lotro.game.PhysicalCard;
|
||||
import com.gempukku.lotro.game.PhysicalCardImpl;
|
||||
import com.gempukku.lotro.game.state.LotroGame;
|
||||
import com.gempukku.lotro.logic.actions.RequiredTriggerAction;
|
||||
@@ -258,4 +260,31 @@ public class WoundEffectAtTest extends AbstractAtTest {
|
||||
assertEquals(1, triggerCount.get());
|
||||
assertEquals(1, preventCount.get());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void disableWoundsOver() throws Exception {
|
||||
initializeSimplestGame();
|
||||
|
||||
PhysicalCard valiantManOfTheWest = addToZone(createCard(P1, "1_118"), Zone.HAND);
|
||||
PhysicalCard aragorn = addToZone(createCard(P1, "1_89"), Zone.FREE_CHARACTERS);
|
||||
PhysicalCard lurtz = addToZone(createCard(P2, "1_127"), Zone.SHADOW_CHARACTERS);
|
||||
|
||||
passUntil(Phase.MANEUVER);
|
||||
selectCardAction(P1, valiantManOfTheWest);
|
||||
pass(P2);
|
||||
pass(P1);
|
||||
passUntil(Phase.ARCHERY);
|
||||
pass(P1);
|
||||
pass(P2);
|
||||
selectCard(P1, aragorn);
|
||||
passUntil(Phase.ASSIGNMENT);
|
||||
pass(P1);
|
||||
pass(P2);
|
||||
playerDecided(P1, aragorn.getCardId() + " " + lurtz.getCardId());
|
||||
selectCard(P1, aragorn);
|
||||
pass(P1);
|
||||
assertEquals(1, getWounds(aragorn));
|
||||
pass(P2);
|
||||
assertEquals(2, getWounds(aragorn));
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user