From 1c1de9a19533099945fa48a6ba49ddd8610fb6f8 Mon Sep 17 00:00:00 2001 From: Myrd Date: Thu, 29 Dec 2016 22:42:37 +0000 Subject: [PATCH] [Simulated AI] Fix transformed state with a test and commit part of my fix from my previous change. I forgot to actually commit the validation and activatedPlayer setting part of my last change, so this change contains that too. --- .../java/forge/ai/simulation/GameCopier.java | 1 + .../ai/simulation/GameSimulatorTest.java | 36 +++++++++++++++++++ 2 files changed, 37 insertions(+) diff --git a/forge-ai/src/main/java/forge/ai/simulation/GameCopier.java b/forge-ai/src/main/java/forge/ai/simulation/GameCopier.java index be82f5ad2cd..4a3182b49c1 100644 --- a/forge-ai/src/main/java/forge/ai/simulation/GameCopier.java +++ b/forge-ai/src/main/java/forge/ai/simulation/GameCopier.java @@ -186,6 +186,7 @@ public class GameCopier { Card otherCard = cardMap.get(card); otherCard.setTimestamp(card.getTimestamp()); otherCard.setSickness(card.hasSickness()); + otherCard.setState(card.getCurrentStateName(), false); if (card.isEnchanting()) { otherCard.setEnchanting(gameObjectMap.map(card.getEnchanting())); } diff --git a/forge-gui-desktop/src/test/java/forge/ai/simulation/GameSimulatorTest.java b/forge-gui-desktop/src/test/java/forge/ai/simulation/GameSimulatorTest.java index fa210a14ad1..252294b6ef6 100644 --- a/forge-gui-desktop/src/test/java/forge/ai/simulation/GameSimulatorTest.java +++ b/forge-gui-desktop/src/test/java/forge/ai/simulation/GameSimulatorTest.java @@ -705,4 +705,40 @@ public class GameSimulatorTest extends TestCase { Card giantCopy = findCardWithName(copy, giantCardName); assertEquals(2, giantCopy.getDamage()); } + + public void testTransform() { + Game game = initAndCreateGame(); + Player p = game.getPlayers().get(1); + addCard("Swamp", p); + addCard("Swamp", p); + addCard("Swamp", p); + String lilianaCardName = "Liliana, Heretical Healer"; + String lilianaPWName = "Liliana, Defiant Necromancer"; + Card lilianaInPlay = addCard(lilianaCardName, p); + Card lilianaInHand = addCardToZone(lilianaCardName, p, ZoneType.Hand); + + game.getPhaseHandler().devModeSet(PhaseType.MAIN2, p); + game.getAction().checkStateEffects(true); + + assertTrue(lilianaInPlay.isCreature()); + assertEquals(2, lilianaInPlay.getNetPower()); + assertEquals(3, lilianaInPlay.getNetToughness()); + + SpellAbility playLiliana = lilianaInHand.getSpellAbilities().get(0); + GameSimulator sim = createSimulator(game, p); + sim.simulateSpellAbility(playLiliana); + Game simGame = sim.getSimulatedGameState(); + assertNull(findCardWithName(simGame, lilianaCardName)); + Card lilianaPW = findCardWithName(simGame, lilianaPWName); + assertNotNull(lilianaPW); + assertTrue(lilianaPW.isPlaneswalker()); + assertEquals(3, lilianaPW.getCurrentLoyalty()); + + GameCopier copier = new GameCopier(simGame); + Game copy = copier.makeCopy(); + Card lilianaPWCopy = findCardWithName(copy, lilianaPWName); + assertNotNull(lilianaPWCopy); + assertTrue(lilianaPWCopy.isPlaneswalker()); + assertEquals(3, lilianaPWCopy.getCurrentLoyalty()); + } }