From 2c25351a2e287f6c0622c9d356f633eba460d76d Mon Sep 17 00:00:00 2001 From: Myrd Date: Fri, 6 Feb 2015 04:06:11 +0000 Subject: [PATCH] Fix ETB effects not triggering during simulation and add a test. --- .../java/forge/ai/simulation/GameCopier.java | 1 + .../ai/simulation/GameSimulatorTest.java | 28 +++++++++++++++++++ 2 files changed, 29 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 b5906ffb2d1..751095a4630 100644 --- a/forge-ai/src/main/java/forge/ai/simulation/GameCopier.java +++ b/forge-ai/src/main/java/forge/ai/simulation/GameCopier.java @@ -94,6 +94,7 @@ public class GameCopier { } private void copyGameState(Game newGame) { + newGame.setAge(origGame.getAge()); for (ZoneType zone : ZONES) { for (Card card : origGame.getCardsIn(zone)) { addCard(newGame, zone, card); 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 c3992433bff..a9aeca4d597 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 @@ -10,6 +10,7 @@ import forge.ai.LobbyPlayerAi; import forge.deck.Deck; import forge.game.Game; import forge.game.GameRules; +import forge.game.GameStage; import forge.game.GameType; import forge.game.Match; import forge.game.card.Card; @@ -33,6 +34,7 @@ public class GameSimulatorTest extends TestCase { GameRules rules = new GameRules(GameType.Constructed); Match match = new Match(rules, players); Game game = new Game(players, rules, match); + game.setAge(GameStage.Play); if (!initialized) { GuiBase.setInterface(new GuiDesktop()); @@ -172,4 +174,30 @@ public class GameSimulatorTest extends TestCase { Card bearCopy = findCardWithName(simGame, bearCardName); assertEquals(1, bearCopy.getAmountOfKeyword("Lifelink")); } + + public void testEtbTriggers() { + Game game = initAndCreateGame(); + Player p = game.getPlayers().get(1); + addCard("Black Knight", p); + for (int i = 0; i < 5; i++) + addCard("Swamp", p); + + String merchantCardName = "Gray Merchant of Asphodel"; + IPaperCard paperCard = FModel.getMagicDb().getCommonCards().getCard(merchantCardName); + Card c = Card.fromPaperCard(paperCard, p); + p.getZone(ZoneType.Hand).add(c); + game.getPhaseHandler().devModeSet(PhaseType.MAIN2, p); + game.getAction().checkStateEffects(true); + + SpellAbility playMerchantSa = c.getSpellAbilities().get(0); + playMerchantSa.setActivatingPlayer(p); + + GameSimulator sim = new GameSimulator(game); + int origScore = sim.getScoreForOrigGame(); + int score = sim.simulateSpellAbility(playMerchantSa); + assertTrue(String.format("score=%d vs. origScore=%d", score, origScore), score > origScore); + Game simGame = sim.getSimulatedGameState(); + assertEquals(24, simGame.getPlayers().get(1).getLife()); + assertEquals(16, simGame.getPlayers().get(0).getLife()); + } }