mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-18 03:38:01 +00:00
Fix simulated AI finding wrong card in hand when simulating and add a test.
This commit is contained in:
@@ -112,7 +112,7 @@ public class GameSimulator {
|
|||||||
Card origHostCard = sa.getHostCard();
|
Card origHostCard = sa.getHostCard();
|
||||||
ZoneType zone = origHostCard.getZone().getZoneType();
|
ZoneType zone = origHostCard.getZone().getZoneType();
|
||||||
for (Card c : simGame.getCardsIn(zone)) {
|
for (Card c : simGame.getCardsIn(zone)) {
|
||||||
if (!c.getOwner().getController().isAI()) {
|
if (c.getController() != aiPlayer) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
if (c.getName().equals(origHostCard.getName())) {
|
if (c.getName().equals(origHostCard.getName())) {
|
||||||
@@ -137,6 +137,7 @@ public class GameSimulator {
|
|||||||
return Integer.MIN_VALUE;
|
return Integer.MIN_VALUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
System.out.println("Found SA " + sa + " on host card " + sa.getHostCard() + " with owner:"+ sa.getHostCard().getOwner());
|
||||||
sa.setActivatingPlayer(aiPlayer);
|
sa.setActivatingPlayer(aiPlayer);
|
||||||
if (origSa.usesTargeting()) {
|
if (origSa.usesTargeting()) {
|
||||||
for (GameObject o : origSa.getTargets().getTargets()) {
|
for (GameObject o : origSa.getTargets().getTargets()) {
|
||||||
|
|||||||
@@ -244,10 +244,34 @@ public class GameSimulatorTest extends TestCase {
|
|||||||
GameSimulator sim = new GameSimulator(game, p);
|
GameSimulator sim = new GameSimulator(game, p);
|
||||||
Game simGame = sim.getSimulatedGameState();
|
Game simGame = sim.getSimulatedGameState();
|
||||||
|
|
||||||
Card ripperCopy = findCardWithName(simGame, "");
|
SpellAbility unmorphSA = findSAWithPrefix(ripper, "Morph - Reveal a black card");
|
||||||
SpellAbility unmorphSA = findSAWithPrefix(ripperCopy, "Morph - Reveal a black card");
|
|
||||||
assertNotNull(unmorphSA);
|
assertNotNull(unmorphSA);
|
||||||
sim.simulateSpellAbility(unmorphSA);
|
sim.simulateSpellAbility(unmorphSA);
|
||||||
assertEquals(18, simGame.getPlayers().get(0).getLife());
|
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());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user