From d3723daa6db4b627ff27f36db8276820888fb5b7 Mon Sep 17 00:00:00 2001 From: Myrd Date: Mon, 26 Dec 2016 16:29:21 +0000 Subject: [PATCH] [Simulated AI] Fix game copy error with dashed creatures and add a test. --- .../java/forge/ai/simulation/GameCopier.java | 2 + .../ai/simulation/GameSimulatorTest.java | 39 +++++++++++++++++++ 2 files changed, 41 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 3a1ca3596ef..fc7337f5e5f 100644 --- a/forge-ai/src/main/java/forge/ai/simulation/GameCopier.java +++ b/forge-ai/src/main/java/forge/ai/simulation/GameCopier.java @@ -315,6 +315,8 @@ public class GameCopier { newCard.setNamedCard(c.getNamedCard()); } + newCard.setSVars(c.getSVars()); + // TODO: FIXME if (c.hasRemembered()) { for (Object o : c.getRemembered()) { 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 66e494ec94d..364e7c07741 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 @@ -584,4 +584,43 @@ public class GameSimulatorTest extends TestCase { assertNotNull(gameStateToString(simGame), thespianSim); assertTrue(thespianSim.isLand()); } + + public void testDash() { + Game game = initAndCreateGame(); + Player p = game.getPlayers().get(1); + + addCard("Mountain", p); + addCard("Mountain", p); + String berserkerCardName = "Lightning Berserker"; + Card berserkerCard = addCardToZone(berserkerCardName, p, ZoneType.Hand); + + game.getPhaseHandler().devModeSet(PhaseType.MAIN1, p); + + SpellAbility dashSA = findSAWithPrefix(berserkerCard, "Dash"); + assertNotNull(dashSA); + + GameSimulator sim = createSimulator(game, p); + int score = sim.simulateSpellAbility(dashSA).value; + assertTrue(score > 0); + Game simGame = sim.getSimulatedGameState(); + + Card berserker = findCardWithName(simGame, berserkerCardName); + assertNotNull(berserker); + assertEquals(1, berserker.getNetPower()); + assertEquals(1, berserker.getNetToughness()); + assertFalse(berserker.isSick()); + + SpellAbility pumpSA = findSAWithPrefix(berserker, "{R}: CARDNAME gets +1/+0 until end of turn."); + assertNotNull(pumpSA); + GameSimulator sim2 = createSimulator(simGame, (Player) sim.getGameCopier().find(p)); + int score2 = sim2.simulateSpellAbility(pumpSA).value; + assert(score2 > score); + Game simGame2 = sim2.getSimulatedGameState(); + + Card berserker2 = findCardWithName(simGame2, berserkerCardName); + assertNotNull(berserker2); + assertEquals(2, berserker2.getNetPower()); + assertEquals(1, berserker2.getNetToughness()); + assertFalse(berserker2.isSick()); + } }