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 96ff1bb46c6..59445c951cd 100644 --- a/forge-ai/src/main/java/forge/ai/simulation/GameCopier.java +++ b/forge-ai/src/main/java/forge/ai/simulation/GameCopier.java @@ -213,6 +213,10 @@ public class GameCopier { newCard.addSpellAbility(CardFactoryUtil.abilityManifestFaceUp(newCard, newCard.getManaCost())); } } + if (c.isMonstrous()) { + newCard.setMonstrous(true); + newCard.setMonstrosityNum(c.getMonstrosityNum()); + } Map counters = c.getCounters(); if (!counters.isEmpty()) { 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 f8af27cb246..d603f834225 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 @@ -144,6 +144,27 @@ public class GameSimulatorTest extends TestCase { assertEquals(2, sliver.getNetToughness()); } + public void testStaticEffectsMonstrous() { + String lionCardName = "Fleecemane Lion"; + Game game = initAndCreateGame(); + Player p = game.getPlayers().get(1); + Card lion = addCard(lionCardName, p); + lion.setSickness(false); + lion.setMonstrous(true); + game.getPhaseHandler().devModeSet(PhaseType.MAIN1, p); + game.getAction().checkStateEffects(true); + assertTrue(lion.isMonstrous()); + assertEquals(1, lion.getAmountOfKeyword("Hexproof")); + assertEquals(1, lion.getAmountOfKeyword("Indestructible")); + + GameSimulator sim = new GameSimulator(game, p); + Game simGame = sim.getSimulatedGameState(); + Card lionCopy = findCardWithName(simGame, lionCardName); + assertTrue(lionCopy.isMonstrous()); + assertEquals(1, lionCopy.getAmountOfKeyword("Hexproof")); + assertEquals(1, lionCopy.getAmountOfKeyword("Indestructible")); + } + public void testEquippedAbilities() { String bearCardName = "Runeclaw Bear"; Game game = initAndCreateGame();