Flipping the order of deck retrieval screens so that it first shows the deck reveal and then only after shows the actual decision. Card definition fixes.

This commit is contained in:
Christian 'ketura' McCarty
2024-12-02 00:37:45 -06:00
parent a32ed8eaf2
commit 5e6fc043d9
16 changed files with 45 additions and 38 deletions

View File

@@ -193,7 +193,7 @@
unique: false
side: Shadow
culture: Dunland
twilight: 7
twilight: 0
type: Artifact
keywords: Support Area
effects: [

View File

@@ -193,7 +193,7 @@
collInfo: V2_48
rarity: _
}
title: Fortress of My Fathers
title: Stronghold of My Fathers
unique: false
side: Free Peoples
culture: Rohan

View File

@@ -81,26 +81,31 @@ public abstract class ChooseCardsFromDeckEffect extends AbstractEffect {
cardsSelected(game, cards);
}
} else {
game.getUserFeedback().sendAwaitingDecision(_playerId,
new ArbitraryCardsSelectionDecision(1, "Choose cards from deck", new LinkedList<>(cards), minimum, _maximum) {
@Override
public void decisionMade(String result) throws DecisionResultInvalidException {
var actualSelection = getSelectedCardsByResponse(result);
if (showAll) {
if (showAll) {
game.getUserFeedback().sendAwaitingDecision(_playerId,
new ArbitraryCardsSelectionDecision(1, "You may inspect the contents of your deck before retrieving cards", game.getGameState().getDeck(_deckId), new LinkedList<>(), 0, 0) {
@Override
public void decisionMade(String ignored) throws DecisionResultInvalidException {
game.getUserFeedback().sendAwaitingDecision(_playerId,
new ArbitraryCardsSelectionDecision(2, "You may inspect the contents of your deck while retrieving cards", game.getGameState().getDeck(_deckId), new LinkedList<>(), 0, 0) {
new ArbitraryCardsSelectionDecision(2, "Choose cards from deck", new LinkedList<>(cards), minimum, _maximum) {
@Override
public void decisionMade(String result2) throws DecisionResultInvalidException {
cardsSelected(game, actualSelection);
public void decisionMade(String result) throws DecisionResultInvalidException {
cardsSelected(game, getSelectedCardsByResponse(result));
}
});
}
else {
cardsSelected(game, actualSelection);
});
}
else {
game.getUserFeedback().sendAwaitingDecision(_playerId,
new ArbitraryCardsSelectionDecision(1, "Choose cards from deck", new LinkedList<>(cards), minimum, _maximum) {
@Override
public void decisionMade(String result) throws DecisionResultInvalidException {
cardsSelected(game, getSelectedCardsByResponse(result));
}
}
});
});
}
}
return new FullEffectResult(success);

View File

@@ -75,13 +75,12 @@ public class Card_01_087_Tests
assertEquals(Zone.DECK, bb.getZone());
scn.FreepsPlayCard(late);
assertTrue(scn.FreepsDecisionAvailable("You may inspect the contents of your deck before retrieving cards"));
scn.FreepsDismissRevealedCards();
assertTrue(scn.FreepsDecisionAvailable("Choose cards from deck"));
assertEquals(2, scn.GetFreepsCardChoiceCount());
scn.FreepsChooseCardBPFromSelection(gandalf);
assertTrue(scn.FreepsDecisionAvailable("You may inspect the contents of your deck while retrieving cards"));
scn.FreepsDismissRevealedCards();
assertEquals(Zone.FREE_CHARACTERS, gandalf.getZone());
assertEquals(Zone.DECK, bb.getZone());
}
@@ -104,11 +103,11 @@ public class Card_01_087_Tests
assertEquals(Zone.DECK, bb.getZone());
scn.FreepsPlayCard(late);
assertTrue(scn.FreepsDecisionAvailable("You may inspect the contents of your deck before retrieving cards"));
scn.FreepsDismissRevealedCards();
assertTrue(scn.FreepsDecisionAvailable("Choose cards from deck"));
assertEquals(2, scn.GetFreepsCardChoiceCount());
scn.FreepsChooseCardBPFromSelection(bb);
assertTrue(scn.FreepsDecisionAvailable("You may inspect the contents of your deck while retrieving cards"));
scn.FreepsDismissRevealedCards();
assertEquals(Zone.DECK, gandalf.getZone());
assertEquals(Zone.SUPPORT, bb.getZone());

View File

@@ -223,9 +223,9 @@ public class Card_09_001_Tests
assertTrue(scn.FreepsActionAvailable(ring));
scn.FreepsUseCardAction(ring);
scn.FreepsDismissRevealedCards();
assertEquals(2, scn.FreepsGetSelectableCount());
scn.FreepsChooseCardBPFromSelection(ring1);
scn.FreepsDismissRevealedCards();
assertEquals(3, scn.GetBurdens());
assertEquals(Zone.ATTACHED, ring1.getZone());

View File

@@ -91,6 +91,7 @@ public class Card_11_235_Tests
assertTrue(scn.FreepsHasOptionalTriggerAvailable());
scn.FreepsAcceptOptionalTrigger();
scn.FreepsDismissRevealedCards();
//Not Listening is a response event, it shouldn't show up
//Clever Hobbits is a skirmish event, also shouldn't show
@@ -100,7 +101,6 @@ public class Card_11_235_Tests
assertEquals(Zone.DECK, dontlook.getZone());
assertEquals(Zone.DECK, smeagol.getZone());
scn.FreepsChooseCardBPFromSelection(dontlook);
scn.FreepsDismissRevealedCards();
assertEquals(Zone.SUPPORT, dontlook.getZone());
assertEquals(Zone.DECK, smeagol.getZone());

View File

@@ -181,10 +181,10 @@ public class Card_18_132_Tests
assertEquals(Zone.DECK, cantea.getZone());
scn.ShadowChoose("5");
scn.ShadowDismissRevealedCards();
assertEquals(2, scn.ShadowGetSelectableCount()); // orc + cantea, but not TWK
scn.ShadowChooseCardBPFromSelection(orc);
scn.ShadowDismissRevealedCards();
assertEquals(Zone.SHADOW_CHARACTERS, orc.getZone());
}

View File

@@ -115,9 +115,10 @@ public class Card_02_045_ErrataTests
assertEquals(Zone.DECK, sauron.getZone());
assertTrue(scn.ShadowHasOptionalTriggerAvailable());
scn.ShadowAcceptOptionalTrigger();
scn.ShadowDismissRevealedCards();
assertEquals(3, scn.GetShadowCardChoiceCount());
scn.ShadowChooseCardBPFromSelection(sauron);
scn.ShadowDismissRevealedCards();
//Decline the prevention
scn.FreepsChooseNo();
assertEquals(Zone.DISCARD, attention.getZone());
@@ -154,12 +155,12 @@ public class Card_02_045_ErrataTests
assertTrue(scn.ShadowHasOptionalTriggerAvailable());
scn.ShadowAcceptOptionalTrigger();
assertEquals(3, scn.GetShadowCardChoiceCount());
scn.ShadowDismissRevealedCards();
scn.ShadowChooseCardBPFromSelection(sauron);
//Accept the prevention
assertEquals(7, scn.GetFreepsDeckCount());
assertEquals(0, scn.GetFreepsDiscardCount());
scn.ShadowDismissRevealedCards();
scn.FreepsChooseYes();
assertEquals(1, scn.GetFreepsDeckCount());
assertEquals(6, scn.GetFreepsDiscardCount());

View File

@@ -132,6 +132,7 @@ public class Card_18_082_ErrataTests
scn.FreepsChooseCardIDFromSelection(chaff1, shadow1);
assertEquals(Zone.DECK, chaff1.getZone());
assertEquals(Zone.DECK, shadow1.getZone());
scn.ShadowDismissRevealedCards();
assertTrue(scn.ShadowDecisionAvailable("Choose card"));
// 5 starting freeps cards - 2 put in hand + 1 shuffled into deck
@@ -139,7 +140,7 @@ public class Card_18_082_ErrataTests
assertEquals(Zone.DECK, chaff3.getZone());
assertEquals(Zone.DECK, chaff4.getZone());
scn.ShadowChooseCardBPFromSelection(chaff3, chaff4);
scn.ShadowDismissRevealedCards();
assertEquals(Zone.DISCARD, chaff3.getZone());
assertEquals(Zone.DISCARD, chaff4.getZone());
}

View File

@@ -99,10 +99,11 @@ public class Card_18_096_ErrataTests
assertTrue(scn.FreepsActionAvailable(horn));
scn.FreepsUseCardAction(horn);
scn.FreepsDismissRevealedCards();
assertEquals(1, scn.GetWoundsOn(eomer));
scn.FreepsChooseCardBPFromSelection(worker);
scn.FreepsDismissRevealedCards();
assertEquals(Zone.SUPPORT, worker.getZone());
}

View File

@@ -92,11 +92,11 @@ public class Card_V1_013_Tests
assertEquals(0, scn.GetTwilight());
scn.FreepsPlayCard(counsel);
scn.FreepsDismissRevealedCards();
assertTrue(scn.FreepsDecisionAvailable("Choose cards from deck"));
// Choices available should be 1 Elrond, 1 Galadriel, 1 Orophin
assertEquals(3, scn.GetFreepsCardChoiceCount());
scn.FreepsChooseCardBPFromSelection(scn.GetFreepsCard("elrond"));
scn.FreepsDismissRevealedCards();
assertTrue(scn.FreepsDecisionAvailable("Would you like to pay"));
scn.FreepsChooseYes();
@@ -125,11 +125,11 @@ public class Card_V1_013_Tests
assertEquals(0, scn.GetTwilight());
scn.FreepsPlayCard(counsel);
scn.FreepsDismissRevealedCards();
assertTrue(scn.FreepsDecisionAvailable("Choose cards from deck"));
// Choices available should be 1 Elrond, 1 Galadriel, 1 Orophin
assertEquals(3, scn.GetFreepsCardChoiceCount());
scn.FreepsChooseCardBPFromSelection(scn.GetFreepsCard("elrond"));
scn.FreepsDismissRevealedCards();
assertTrue(scn.FreepsDecisionAvailable("Would you like to pay"));
scn.FreepsChooseNo();

View File

@@ -96,9 +96,9 @@ public class Card_V1_037_Tests
assertTrue(scn.ShadowPlayAvailable(fell2));
scn.ShadowPlayCard(fell2);
scn.ShadowDismissRevealedCards();
scn.ShadowChooseCardBPFromSelection(blade);
scn.ShadowDismissRevealedCards();
assertEquals(Zone.ATTACHED, blade.getZone());
assertEquals(nazgul, blade.getAttachedTo());

View File

@@ -125,6 +125,7 @@ public class Card_V1_050_Tests
assertEquals(0, scn.GetWoundsOn(bilbo));
scn.FreepsUseCardAction(bilbo);
scn.FreepsDismissRevealedCards();
assertEquals(2, scn.GetWoundsOn(bilbo));
assertTrue(scn.FreepsDecisionAvailable("Choose cards from deck"));
assertEquals(3, scn.GetFreepsCardChoiceCount()); // coat, sting, and phial
@@ -137,7 +138,6 @@ public class Card_V1_050_Tests
assertTrue(scn.FreepsDecisionAvailable("Choose cards from deck"));
assertEquals(2, scn.GetFreepsCardChoiceCount());
scn.FreepsChooseCardBPFromSelection(phial);
scn.FreepsDismissRevealedCards();
assertEquals(Zone.ATTACHED, phial.getZone());
assertEquals(frodo, phial.getAttachedTo());

View File

@@ -89,9 +89,9 @@ public class Card_V1_057_Tests
assertEquals(Zone.DECK, cond.getZone());
scn.FreepsAcceptOptionalTrigger();
scn.FreepsDismissRevealedCards();
assertEquals(1, scn.GetWoundsOn(frodo));
scn.FreepsChooseCardBPFromSelection(cond);
scn.FreepsDismissRevealedCards();
assertEquals(Zone.ATTACHED, cond.getZone());
}

View File

@@ -116,13 +116,13 @@ public class Card_V2_022_Tests
assertEquals(8, scn.GetShadowDeckCount());
scn.ShadowPlayCard(folly);
scn.ShadowDismissRevealedCards();
//8 cards, 7 items, but 2 are free peoples
assertEquals(5, scn.GetShadowCardChoiceCount());
scn.ShadowDecisionAvailable("Choose cards from deck");
assertEquals(0, scn.ShadowGetChoiceMin());
assertEquals(4, scn.ShadowGetChoiceMax());
scn.ShadowChooseCardBPFromSelection(item1, item2, item3, item4);
scn.ShadowDismissRevealedCards();
assertEquals(4, scn.GetShadowHandCount());
assertEquals(4, scn.GetShadowDeckCount());
}
@@ -153,13 +153,13 @@ public class Card_V2_022_Tests
assertEquals(9, scn.GetShadowDeckCount());
scn.ShadowPlayCard(folly);
scn.ShadowDismissRevealedCards();
//8 cards, 7 items, but 2 are free peoples
assertEquals(5, scn.GetShadowCardChoiceCount());
scn.ShadowDecisionAvailable("Choose cards from deck");
assertEquals(0, scn.ShadowGetChoiceMin());
assertEquals(4, scn.ShadowGetChoiceMax());
scn.ShadowChooseCardBPFromSelection(item1, item2, item3, item4);
scn.ShadowDismissRevealedCards();
assertEquals(4, scn.GetShadowHandCount());
assertEquals(4, scn.GetShadowDeckCount());
}

View File

@@ -128,22 +128,22 @@ public class Card_V2_036_Tests
assertTrue(scn.ShadowDecisionAvailable("Choose action to perform"));
scn.ShadowChooseMultipleChoiceOption("deck");
scn.ShadowDismissRevealedCards();
assertEquals(3, scn.ShadowGetSelectableCount());
assertEquals(Zone.DECK, warg1.getZone());
scn.ShadowChooseCardBPFromSelection(warg1);
scn.ShadowDismissRevealedCards();
assertEquals(Zone.STACKED, warg1.getZone());
assertSame(pit, warg1.getStackedOn());
//We now optionally do it all again a second time
assertTrue(scn.ShadowDecisionAvailable("Choose action to perform"));
scn.ShadowChooseMultipleChoiceOption("deck");
scn.ShadowDismissRevealedCards();
assertEquals(2, scn.ShadowGetSelectableCount());
assertEquals(Zone.DECK, warg2.getZone());
scn.ShadowChooseCardBPFromSelection(warg2);
scn.ShadowDismissRevealedCards();
assertEquals(Zone.STACKED, warg2.getZone());
assertSame(pit, warg2.getStackedOn());
@@ -174,11 +174,11 @@ public class Card_V2_036_Tests
assertTrue(scn.ShadowDecisionAvailable("Choose action to perform"));
scn.ShadowChooseMultipleChoiceOption("deck");
scn.ShadowDismissRevealedCards();
assertEquals(1, scn.ShadowGetSelectableCount());
assertEquals(Zone.DECK, warg1.getZone());
scn.ShadowChooseCardBPFromSelection(warg1);
scn.ShadowDismissRevealedCards();
assertEquals(Zone.STACKED, warg1.getZone());
assertSame(pit, warg1.getStackedOn());