From 1963cc94adca6abbcabcab45bbfba8e41d9bac2d Mon Sep 17 00:00:00 2001 From: Myrd Date: Sun, 8 Feb 2015 20:21:23 +0000 Subject: [PATCH] Fix simulated AI finding wrong card in hand when simulating and add a test. --- .../forge/ai/simulation/GameSimulator.java | 3 +- .../ai/simulation/GameSimulatorTest.java | 28 +++++++++++++++++-- 2 files changed, 28 insertions(+), 3 deletions(-) diff --git a/forge-ai/src/main/java/forge/ai/simulation/GameSimulator.java b/forge-ai/src/main/java/forge/ai/simulation/GameSimulator.java index a7cca10967d..7ab70ecf28f 100644 --- a/forge-ai/src/main/java/forge/ai/simulation/GameSimulator.java +++ b/forge-ai/src/main/java/forge/ai/simulation/GameSimulator.java @@ -112,7 +112,7 @@ public class GameSimulator { Card origHostCard = sa.getHostCard(); ZoneType zone = origHostCard.getZone().getZoneType(); for (Card c : simGame.getCardsIn(zone)) { - if (!c.getOwner().getController().isAI()) { + if (c.getController() != aiPlayer) { continue; } if (c.getName().equals(origHostCard.getName())) { @@ -137,6 +137,7 @@ public class GameSimulator { return Integer.MIN_VALUE; } + System.out.println("Found SA " + sa + " on host card " + sa.getHostCard() + " with owner:"+ sa.getHostCard().getOwner()); sa.setActivatingPlayer(aiPlayer); if (origSa.usesTargeting()) { for (GameObject o : origSa.getTargets().getTargets()) { 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 7fb82b6d5bc..79687b06ac3 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 @@ -244,10 +244,34 @@ public class GameSimulatorTest extends TestCase { GameSimulator sim = new GameSimulator(game, p); Game simGame = sim.getSimulatedGameState(); - Card ripperCopy = findCardWithName(simGame, ""); - SpellAbility unmorphSA = findSAWithPrefix(ripperCopy, "Morph - Reveal a black card"); + SpellAbility unmorphSA = findSAWithPrefix(ripper, "Morph - Reveal a black card"); assertNotNull(unmorphSA); sim.simulateSpellAbility(unmorphSA); assertEquals(18, simGame.getPlayers().get(0).getLife()); } + + public void testFindingOwnCard() { + Game game = initAndCreateGame(); + Player p0 = game.getPlayers().get(0); + Player p1 = game.getPlayers().get(1); + Card fractureP0 = createCard("Skull Fracture", p0); + p0.getZone(ZoneType.Hand).add(fractureP0); + Card creature = createCard("Runeclaw Bear", p0); + p0.getZone(ZoneType.Hand).add(creature); + Card fractureP1 = createCard("Skull Fracture", p1); + p1.getZone(ZoneType.Hand).add(fractureP1); + addCard("Swamp", p1); + game.getPhaseHandler().devModeSet(PhaseType.MAIN2, p1); + game.getAction().checkStateEffects(true); + + GameSimulator sim = new GameSimulator(game, p1); + Game simGame = sim.getSimulatedGameState(); + + SpellAbility fractureSa = fractureP1.getSpellAbilities().get(0); + assertNotNull(fractureSa); + fractureSa.getTargets().add(p0); + sim.simulateSpellAbility(fractureSa); + assertEquals(1, simGame.getPlayers().get(0).getCardsIn(ZoneType.Hand).size()); + assertEquals(0, simGame.getPlayers().get(1).getCardsIn(ZoneType.Hand).size()); + } }