Changing Ford of Bruinen and Dimrill Dale to use PerTurn/PerPhase limits instead of in-zone data, so now they shouldn't flash at the end of turn/end of shadow phase.

This commit is contained in:
Christian 'ketura' McCarty
2024-06-02 02:40:09 -05:00
parent 8c13cc3945
commit aa1baf84f2
3 changed files with 95 additions and 74 deletions

View File

@@ -548,11 +548,8 @@
modifier: {
type: modifyCost
requires: {
type: not
requires: {
type: hasInZoneData
filter: self
}
type: perTurnLimit
limit: 1
}
filter: nazgul
amount: -5
@@ -563,27 +560,10 @@
trigger: {
type: played
filter: nazgul
memorize: playedNazgul
}
requires: {
type: not
requires: {
type: hasInZoneData
filter: self
}
}
effect: {
type: storeWhileInZone
memory: playedNazgul
}
}
{
type: trigger
trigger: {
type: endOfTurn
}
effect: {
type: resetWhileInZoneData
type: incrementPerTurnLimit
limit: 1
}
}
]
@@ -917,11 +897,8 @@
modifier: {
type: modifyCost
requires: {
type: not
requires: {
type: hasInZoneData
filter: self
}
type: perPhaseLimit
limit: 1
}
filter: culture(moria),orc
amount: -2
@@ -932,28 +909,10 @@
trigger: {
type: played
filter: culture(moria),orc
memorize: playedOrc
}
requires: {
type: not
requires: {
type: hasInZoneData
filter: self
}
}
effect: {
type: appendCardIdsToWhileInZone
memory: playedOrc
}
}
{
type: trigger
trigger: {
type: endOfPhase
phase: shadow
}
effect: {
type: resetWhileInZoneData
type: incrementPerPhaseLimit
limit: 1
}
}
]

View File

@@ -18,10 +18,21 @@ public class Card_01_338_Tests
return new GenericCardTestHelper(
new HashMap<>()
{{
put("card", "1_338");
put("twk", "1_237");
put("lemenya", "1_232");
// put other cards in here as needed for the test case
}},
GenericCardTestHelper.FellowshipSites,
new HashMap<>() {{
put("site1", "1_319");
put("site2", "1_327");
put("site3", "1_338");
put("site4", "1_343");
put("site5", "1_349");
put("site6", "1_351");
put("site7", "1_353");
put("site8", "1_356");
put("site9", "1_360");
}},
GenericCardTestHelper.FOTRFrodo,
GenericCardTestHelper.RulingRing
);
@@ -45,9 +56,7 @@ public class Card_01_338_Tests
var scn = GetScenario();
//Use this once you have set the deck up properly
//var card = scn.GetFreepsSite(3);
var card = scn.GetFreepsCard("card");
var card = scn.GetFreepsSite(3);
assertEquals("Ford of Bruinen", card.getBlueprint().getTitle());
assertNull(card.getBlueprint().getSubtitle());
@@ -59,18 +68,37 @@ public class Card_01_338_Tests
assertEquals(3, card.getBlueprint().getSiteNumber());
}
// Uncomment any @Test markers below once this is ready to be used
//@Test
public void FordofBruinenTest1() throws DecisionResultInvalidException, CardNotFoundException {
@Test
public void FordofBruinenOnlyDiscountsTheFirstNazgul() throws DecisionResultInvalidException, CardNotFoundException {
//Pre-game setup
var scn = GetScenario();
var card = scn.GetFreepsCard("card");
scn.FreepsMoveCardToHand(card);
var ford = scn.GetShadowSite(3);
var twk = scn.GetShadowCard("twk");
var lemenya = scn.GetShadowCard("lemenya");
scn.ShadowMoveCardToHand(twk, lemenya);
scn.StartGame();
scn.FreepsPlayCard(card);
//Start our test on 2 so that moving to 3 is the first thing we do
scn.SkipToSite(2);
assertEquals(0, scn.GetTwilight());
scn.SetTwilight(9);
scn.FreepsPassCurrentPhaseAction();
assertEquals(ford, scn.GetCurrentSite());
//9 manual + 1 from the fellowship moving
assertEquals(10, scn.GetTwilight());
scn.ShadowPlayCard(twk);
//TWK costs 8 (no roaming), discounted by 5 to 3 total
//10 - 3
assertEquals(7, scn.GetTwilight());
scn.ShadowPlayCard(lemenya);
//Lemenya costs 4, should have no discount
//7 - 4
assertEquals(3, scn.GetTwilight());
}
}

View File

@@ -18,10 +18,21 @@ public class Card_01_350_Tests
return new GenericCardTestHelper(
new HashMap<>()
{{
put("card", "1_350");
// put other cards in here as needed for the test case
put("troop", "1_177");
put("flankers", "2_61");
put("redeye", "1_266");
}},
new HashMap<>() {{
put("site1", "1_319");
put("site2", "1_327");
put("site3", "1_338");
put("site4", "1_343");
put("site5", "1_349");
put("site6", "1_350");
put("site7", "1_353");
put("site8", "1_356");
put("site9", "1_360");
}},
GenericCardTestHelper.FellowshipSites,
GenericCardTestHelper.FOTRFrodo,
GenericCardTestHelper.RulingRing
);
@@ -45,9 +56,7 @@ public class Card_01_350_Tests
var scn = GetScenario();
//Use this once you have set the deck up properly
//var card = scn.GetFreepsSite(6);
var card = scn.GetFreepsCard("card");
var card = scn.GetFreepsSite(6);
assertEquals("Dimrill Dale", card.getBlueprint().getTitle());
assertNull(card.getBlueprint().getSubtitle());
@@ -58,18 +67,43 @@ public class Card_01_350_Tests
assertEquals(6, card.getBlueprint().getSiteNumber());
}
// Uncomment any @Test markers below once this is ready to be used
//@Test
public void DimrillDaleTest1() throws DecisionResultInvalidException, CardNotFoundException {
@Test
public void DimrillDaleOnlyDiscountsFirstMoriaOrc() throws DecisionResultInvalidException, CardNotFoundException {
//Pre-game setup
var scn = GetScenario();
var card = scn.GetFreepsCard("card");
scn.FreepsMoveCardToHand(card);
var dale = scn.GetShadowSite(6);
var troop = scn.GetShadowCard("troop");
var flankers = scn.GetShadowCard("flankers");
var redeye = scn.GetShadowCard("redeye");
scn.ShadowMoveCardToHand(troop, redeye);
scn.StartGame();
scn.FreepsPlayCard(card);
//Start our test on 5 so that moving to 6 is the first thing we do
scn.SkipToSite(5);
assertEquals(3, scn.GetTwilight());
scn.SetTwilight(11);
scn.FreepsPassCurrentPhaseAction();
assertEquals(dale, scn.GetCurrentSite());
//11 manual + 4 from the fellowship moving
assertEquals(15, scn.GetTwilight());
scn.ShadowPlayCard(redeye);
//Orc Chieftain costs 2, should have had 0 discount
//15 - 2
assertEquals(13, scn.GetTwilight());
scn.ShadowPlayCard(troop);
//Troop costs 6 (no roaming), discounted by 2 to 4 total
//13 - 4
assertEquals(9, scn.GetTwilight());
scn.ShadowPlayCard(flankers);
//flankers costs 5, should have no discount
//9 - 5
assertEquals(4, scn.GetTwilight());
}
}