LKICopy Transform and flip (#3146)

* LKICopy Transform and flip

* Update CardUtil.java

Fix newCopy state when flipped or transformed

* Update CardUtil.java

fix backside

* Update CardUtil.java

add EffectSource

* CardStateName.Transformed needs to be copied

* Fixes #3201 somewhat

* Fix CardState for Fused Spells

* GameSimulationTest: Add Ratadrabik + TDFC token test
This commit is contained in:
Hans Mackowiak
2023-06-06 12:43:40 +02:00
committed by GitHub
parent f8814df5fb
commit a7c0d41064
4 changed files with 94 additions and 20 deletions

View File

@@ -1779,7 +1779,7 @@ public class GameSimulationTest extends SimulationTest {
AssertJUnit.assertTrue(clonedOutLaw.isCloned());
AssertJUnit.assertTrue(clonedOutLaw.isTransformable());
AssertJUnit.assertFalse(clonedOutLaw.hasState(CardStateName.Transformed));
AssertJUnit.assertTrue(clonedOutLaw.hasState(CardStateName.Transformed));
AssertJUnit.assertTrue(clonedOutLaw.canTransform(null));
AssertJUnit.assertFalse(clonedOutLaw.isBackSide());
@@ -1800,7 +1800,7 @@ public class GameSimulationTest extends SimulationTest {
AssertJUnit.assertTrue(transformOutLaw.isCloned());
AssertJUnit.assertTrue(transformOutLaw.isTransformable());
AssertJUnit.assertFalse(transformOutLaw.hasState(CardStateName.Transformed));
AssertJUnit.assertTrue(transformOutLaw.hasState(CardStateName.Transformed));
AssertJUnit.assertTrue(transformOutLaw.canTransform(null));
AssertJUnit.assertTrue(transformOutLaw.isBackSide());
@@ -2451,13 +2451,9 @@ public class GameSimulationTest extends SimulationTest {
// whereas Naban doesn't see Memnarch to double the trigger
addCardToZone("Memnarch", p, ZoneType.Library);
addCard("Forest", p);
addCard("Forest", p);
addCard("Island", p);
addCard("Island", p);
addCard("Island", p);
addCard("Mountain", p);
addCard("Mountain", p);
addCards("Forest", 2, p);
addCards("Island", 3, p);
addCards("Mountain", 2, p);
Card genesis = addCardToZone("Genesis Ultimatum", p, ZoneType.Hand);
@@ -2473,4 +2469,46 @@ public class GameSimulationTest extends SimulationTest {
// 2 damage dealt for 2 artifacts
AssertJUnit.assertEquals(18, simGame.getPlayers().get(1).getLife());
}
@Test
public void testLKITransformableTokenCopy() {
Game game = initAndCreateGame();
Player p = game.getPlayers().get(0);
String untransformedName = "Heliod, the Radiant Dawn";
String transformedName = "Heliod, the Warped Eclipse";
addCard("Ratadrabik of Urborg", p);
Card heliod = addCard(untransformedName, p);
addCards("Island", 4, p);
addCards("Swamp", 3, p);
Card murder = addCardToZone("Murder", p, ZoneType.Hand);
SpellAbility murderSA = murder.getFirstSpellAbility();
game.getPhaseHandler().devModeSet(PhaseType.MAIN2, p);
game.getAction().checkStateEffects(true);
SpellAbility transformSA = findSAWithPrefix(heliod, "{3}{U/P}: Transform");
GameSimulator sim = createSimulator(game, p);
AssertJUnit.assertNotNull(transformSA);
sim.simulateSpellAbility(transformSA);
Game simGame = sim.getSimulatedGameState();
Card transformedHeliod = findCardWithName(simGame, transformedName);
AssertJUnit.assertNotNull(transformedHeliod);
murderSA.getTargets().add(transformedHeliod);
sim.simulateSpellAbility(murderSA);
simGame = sim.getSimulatedGameState();
Card transformedHeliodToken = findCardWithName(simGame, transformedName);
AssertJUnit.assertNotNull(transformedHeliodToken);
AssertJUnit.assertTrue(transformedHeliodToken.isToken());
AssertJUnit.assertTrue(transformedHeliodToken.isTransformable());
AssertJUnit.assertTrue(transformedHeliodToken.isTransformed());
AssertJUnit.assertTrue(transformedHeliodToken.isBackSide());
}
}