Fixed discard-limiting cards not working on a player filter level

This commit is contained in:
Christian 'ketura' McCarty
2024-11-02 18:38:23 -05:00
parent cb06c991d8
commit ed6f402dd8
2 changed files with 50 additions and 12 deletions

View File

@@ -18,10 +18,13 @@ public class CantDiscardFromPlayModifier extends AbstractModifier {
@Override
public boolean canBeDiscardedFromPlay(LotroGame game, String performingPlayer, PhysicalCard card, PhysicalCard source) {
if (bannedPlayer != null && !bannedPlayer.equals(performingPlayer))
return true;
if (_sourceFilter.accepts(game, source))
return false;
if (bannedPlayer != null && !bannedPlayer.equals(performingPlayer))
return false;
return true;
}
}

View File

@@ -18,8 +18,11 @@ public class Card_01_306_Tests
return new GenericCardTestHelper(
new HashMap<>()
{{
put("card", "1_306");
// put other cards in here as needed for the test case
put("pippin", "1_306");
put("taba", "1_317");
put("uruk", "1_151");
put("power", "1_136");
}},
GenericCardTestHelper.FellowshipSites,
GenericCardTestHelper.FOTRFrodo,
@@ -48,7 +51,7 @@ public class Card_01_306_Tests
var scn = GetScenario();
var card = scn.GetFreepsCard("card");
var card = scn.GetFreepsCard("pippin");
assertEquals("Pippin", card.getBlueprint().getTitle());
assertEquals("Friend to Frodo", card.getBlueprint().getSubtitle());
@@ -64,18 +67,50 @@ public class Card_01_306_Tests
assertEquals(Signet.FRODO, card.getBlueprint().getSignet());
}
// Uncomment any @Test markers below once this is ready to be used
//@Test
public void PippinTest1() throws DecisionResultInvalidException, CardNotFoundException {
@Test
public void PippinDoesNotBlockFreepsUsingThereAndBackAgain() throws DecisionResultInvalidException, CardNotFoundException {
//Pre-game setup
var scn = GetScenario();
var card = scn.GetFreepsCard("card");
scn.FreepsMoveCardToHand(card);
var frodo = scn.GetRingBearer();
var pippin = scn.GetFreepsCard("pippin");
var taba = scn.GetFreepsCard("taba");
scn.FreepsMoveCharToTable(pippin);
scn.FreepsAttachCardsTo(frodo, taba);
var power = scn.GetShadowCard("power");
scn.ShadowMoveCharToTable("uruk");
scn.ShadowMoveCardToHand(power);
scn.StartGame();
scn.FreepsPlayCard(card);
scn.SkipToPhase(Phase.MANEUVER);
assertEquals(1, scn.GetTwilight());
assertTrue(scn.FreepsActionAvailable(taba));
assertEquals(Zone.ATTACHED, taba.getZone());
scn.FreepsUseCardAction(taba);
assertEquals(Zone.DISCARD, taba.getZone());
}
@Test
public void PippinPreventsShadowDiscardingShadowCards() throws DecisionResultInvalidException, CardNotFoundException {
//Pre-game setup
var scn = GetScenario();
var frodo = scn.GetRingBearer();
var pippin = scn.GetFreepsCard("pippin");
var taba = scn.GetFreepsCard("taba");
scn.FreepsMoveCharToTable(pippin);
scn.FreepsAttachCardsTo(frodo, taba);
var power = scn.GetShadowCard("power");
scn.ShadowMoveCharToTable("uruk");
scn.ShadowMoveCardToHand(power);
scn.StartGame();
scn.FreepsPassCurrentPhaseAction();
assertEquals(Zone.ATTACHED, taba.getZone());
scn.ShadowPlayCard(power);
assertEquals(Zone.ATTACHED, taba.getZone());
}
}