From a82f035211b91e5a008fc56036dc85ea4cad9f22 Mon Sep 17 00:00:00 2001 From: Hans Mackowiak Date: Tue, 9 Feb 2021 22:47:31 +0100 Subject: [PATCH] TestCase: fix Manifest test --- .../src/main/java/forge/ai/simulation/GameCopier.java | 5 ----- .../src/main/java/forge/ai/simulation/GameSimulator.java | 7 ++++--- .../src/main/java/forge/game/card/CardFactoryUtil.java | 2 +- .../test/java/forge/ai/simulation/GameSimulatorTest.java | 8 ++++++-- 4 files changed, 11 insertions(+), 11 deletions(-) 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 9c743f30653..7990b0c8e39 100644 --- a/forge-ai/src/main/java/forge/ai/simulation/GameCopier.java +++ b/forge-ai/src/main/java/forge/ai/simulation/GameCopier.java @@ -294,11 +294,6 @@ public class GameCopier { newCard.turnFaceDown(true); if (c.isManifested()) { newCard.setManifested(true); - // TODO: Should be able to copy other abilities... - if (isCreature && hasManaCost) { - newCard.getState(CardStateName.Original).addSpellAbility( - CardFactoryUtil.abilityManifestFaceUp(newCard, newCard.getManaCost())); - } } } if (c.isMonstrous()) { 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 b57a51830e4..04308485a79 100644 --- a/forge-ai/src/main/java/forge/ai/simulation/GameSimulator.java +++ b/forge-ai/src/main/java/forge/ai/simulation/GameSimulator.java @@ -17,7 +17,6 @@ import forge.game.player.Player; import forge.game.spellability.SpellAbility; import forge.game.spellability.TargetChoices; import forge.game.spellability.TargetRestrictions; -import forge.util.TextUtil; public class GameSimulator { public static boolean COPY_STACK = false; @@ -125,11 +124,13 @@ public class GameSimulator { } private SpellAbility findSaInSimGame(SpellAbility sa) { + // is already an ability from sim game + if (sa.getHostCard().getGame().equals(this.simGame)) { + return sa; + } Card origHostCard = sa.getHostCard(); Card hostCard = (Card) copier.find(origHostCard); String desc = sa.getDescription(); - // FIXME: This is a hack that makes testManifest pass - figure out why it's needed. - desc = TextUtil.fastReplace(desc, "Unmanifest {0}", "Unmanifest no cost"); for (SpellAbility cSa : hostCard.getSpellAbilities()) { if (desc.startsWith(cSa.getDescription())) { return cSa; diff --git a/forge-game/src/main/java/forge/game/card/CardFactoryUtil.java b/forge-game/src/main/java/forge/game/card/CardFactoryUtil.java index 202aae365ed..ad5c44f57e9 100644 --- a/forge-game/src/main/java/forge/game/card/CardFactoryUtil.java +++ b/forge-game/src/main/java/forge/game/card/CardFactoryUtil.java @@ -177,7 +177,7 @@ public class CardFactoryUtil { // Cost need to be set later StringBuilder sb = new StringBuilder(); sb.append("ST$ SetState | Cost$ 0 | CostDesc$ Unmanifest ").append(costDesc); - sb.append(" | ManifestUp$ True | Secondary$ True | IsPresent$ Card.Self+faceDown+manifested"); + sb.append(" | ManifestUp$ True | Secondary$ True | PresentDefined$ Self | IsPresent$ Card.faceDown+manifested"); sb.append(" | Mode$ TurnFace | SpellDescription$ (Turn this face up any time for its mana cost.)"); final SpellAbility manifestUp = AbilityFactory.getAbility(sb.toString(), sourceCard); 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 4344f303dea..33963b34d54 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 @@ -304,14 +304,18 @@ public class GameSimulatorTest extends SimulationTestCase { Card manifestedCreature = findCardWithName(simGame, ""); assertNotNull(manifestedCreature); - SpellAbility unmanifestSA = findSAWithPrefix(manifestedCreature, "Unmanifest"); + SpellAbility unmanifestSA = findSAWithPrefix(manifestedCreature.getAllPossibleAbilities(p, false), "Unmanifest"); assertNotNull(unmanifestSA); assertEquals(2, manifestedCreature.getNetPower()); assertFalse(manifestedCreature.hasKeyword("Flying")); GameSimulator sim2 = createSimulator(simGame, simGame.getPlayers().get(1)); - sim2.simulateSpellAbility(unmanifestSA); Game simGame2 = sim2.getSimulatedGameState(); + manifestedCreature = findCardWithName(simGame2, ""); + unmanifestSA = findSAWithPrefix(manifestedCreature.getAllPossibleAbilities(simGame2.getPlayers().get(1), false), "Unmanifest"); + + sim2.simulateSpellAbility(unmanifestSA); + Card ornithopter = findCardWithName(simGame2, "Ornithopter"); assertEquals(0, ornithopter.getNetPower()); assertTrue(ornithopter.hasKeyword("Flying"));