Return to battlefield transfromed - fixed that it was able to return non transformable cards, fixed #12066 (#12072)

This commit is contained in:
Susucre 2024-04-05 18:51:34 +02:00 committed by GitHub
parent d9320754cc
commit 821b0d069f
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
4 changed files with 72 additions and 17 deletions

View file

@ -123,14 +123,23 @@ public class CleverImpersonatorTest extends CardTestPlayerBase {
}
/**
* So I copied Jace, Vryns Prodigy with Clever Impersonator (it was tapped
* and I needed a blocker for a token...), and Jace got to survive until the
* next turn. When I looted, he flipped, and I got an error message I
* couldn't get rid of, forcing me to concede. I'm not sure what the correct
* outcome is rules-wise.
* 712.14a. If a spell or ability puts a transforming double-faced card onto the battlefield "transformed"
* or "converted," it enters the battlefield with its back face up. If a player is instructed to put a card
* that isn't a transforming double-faced card onto the battlefield transformed or converted, that card stays in
* its current zone.
* <p>
* * So I copied Jace, Vryns Prodigy with Clever Impersonator (it was tapped
* * and I needed a blocker for a token...), and Jace got to survive until the
* * next turn. When I looted, he flipped, and I got an error message I
* * couldn't get rid of, forcing me to concede. I'm not sure what the correct
* * outcome is rules-wise.
*/
@Test
public void testCopyCreatureOfFlipPlaneswalker() {
setStrictChooseMode(true);
skipInitShuffling();
addCard(Zone.LIBRARY, playerA, "Swamp"); // for discard
addCard(Zone.BATTLEFIELD, playerA, "Island", 4);
// {T}: Draw a card, then discard a card. If there are five or more cards in your graveyard, exile Jace, Vryn's Prodigy, then return him to the battefield transformed under his owner's control.
@ -143,23 +152,24 @@ public class CleverImpersonatorTest extends CardTestPlayerBase {
addCard(Zone.BATTLEFIELD, playerB, "Pillarfield Ox", 1);
castSpell(1, PhaseStep.PRECOMBAT_MAIN, playerA, "Clever Impersonator");
setChoice(playerA, "Jace, Vryn's Prodigy");
setChoice(playerA, "Jace, Vryn's Prodigy[only copy]"); // keep the copied Jace
setChoice(playerA, true); // yes to copy
setChoice(playerA, "Jace, Vryn's Prodigy"); // copy Jace
setChoice(playerA, "Jace, Vryn's Prodigy[only copy]"); // keep the copied Jace under legend rule
activateAbility(3, PhaseStep.PRECOMBAT_MAIN, playerA, "{T}: Draw a card");
setChoice(playerA, "Pillarfield Ox");
setChoice(playerA, "Swamp");
setStopAt(3, PhaseStep.BEGIN_COMBAT);
execute();
assertGraveyardCount(playerA, "Jace, Vryn's Prodigy", 1);
assertPermanentCount(playerA, "Pillarfield Ox", 1);
assertPermanentCount(playerA, "Pillarfield Ox", 0);
assertExileCount(playerA, "Clever Impersonator", 1); // Clone does not come back as per 712.14a..
}
/**
* Reported bug:
* Could not use Clever Impersonator to copy Dawn's Reflection
* Could not use Clever Impersonator to copy Dawn's Reflection
*/
@Test
public void dawnsReflectionCopiedByImpersonator() {

View file

@ -212,6 +212,37 @@ public class OjerAxonilDeepestMightTest extends CardTestPlayerBase {
assertTapped(ojer, true);
}
/**
* 712.14a. If a spell or ability puts a transforming double-faced card onto the battlefield "transformed"
* or "converted," it enters the battlefield with its back face up. If a player is instructed to put a card
* that isn't a transforming double-faced card onto the battlefield transformed or converted, that card stays in
* its current zone.
*/
@Test
public void test_CloneDoNotTransform() {
setStrictChooseMode(true);
addCard(Zone.BATTLEFIELD, playerA, ojer, 1);
addCard(Zone.HAND, playerA, "Sakashima the Impostor", 1); // Clone keeping its name for easier test.
addCard(Zone.BATTLEFIELD, playerA, "Underground Sea", 6);
addCard(Zone.HAND, playerA, "Doom Blade", 1);
castSpell(1, PhaseStep.PRECOMBAT_MAIN, playerA, "Sakashima the Impostor");
setChoice(playerA, true); // yes to clone
setChoice(playerA, ojer); // clone Ojer
checkPermanentCount("Sakashima in play", 1, PhaseStep.BEGIN_COMBAT, playerA, "Sakashima the Impostor", 1);
checkPT("PT 4/4 so copy happened", 1, PhaseStep.BEGIN_COMBAT, playerA, "Sakashima the Impostor", 4, 4);
castSpell(1, PhaseStep.POSTCOMBAT_MAIN, playerA, "Doom Blade", "Sakashima the Impostor");
setStopAt(1, PhaseStep.END_TURN);
execute();
assertPermanentCount(playerA, ojer, 1);
assertGraveyardCount(playerA, "Sakashima the Impostor", 1); // is not transformable, so didn't return.
}
@Test
public void test_watching_Chandra_emblem_damage() {
setStrictChooseMode(true);