From 9593462520172f0424c0152cbf0e33d7e45a9456 Mon Sep 17 00:00:00 2001 From: Quercitron Date: Sat, 1 Sep 2018 16:10:51 +0300 Subject: [PATCH] * One with the Machine - Fix that non-artifact permanents are considered in determining the amount of cards drawn (fixes #5292). --- .../single/m19/OneWithTheMachineTest.java | 31 +++++++++++++++++++ .../common/HighestConvertedManaCostValue.java | 7 ++++- 2 files changed, 37 insertions(+), 1 deletion(-) create mode 100644 Mage.Tests/src/test/java/org/mage/test/cards/single/m19/OneWithTheMachineTest.java diff --git a/Mage.Tests/src/test/java/org/mage/test/cards/single/m19/OneWithTheMachineTest.java b/Mage.Tests/src/test/java/org/mage/test/cards/single/m19/OneWithTheMachineTest.java new file mode 100644 index 00000000000..f0f0cf17acd --- /dev/null +++ b/Mage.Tests/src/test/java/org/mage/test/cards/single/m19/OneWithTheMachineTest.java @@ -0,0 +1,31 @@ +package org.mage.test.cards.single.m19; + +import mage.constants.PhaseStep; +import mage.constants.Zone; +import org.junit.Test; +import org.mage.test.serverside.base.CardTestPlayerBase; + +/** + * + * @author Quercitron + */ +public class OneWithTheMachineTest extends CardTestPlayerBase { + + @Test + public void testOnlyArtifactsAreConsidered() { + // Draw cards equal to the highest converted mana cost among artifacts you control + addCard(Zone.HAND, playerA, "One with the Machine"); + addCard(Zone.BATTLEFIELD, playerA, "Island", 4); + // CMC = 2, artifact + addCard(Zone.BATTLEFIELD, playerA, "Millstone"); + // CMC = 6, not artifact + addCard(Zone.BATTLEFIELD, playerA, "Colossal Dreadmaw"); + + castSpell(1, PhaseStep.PRECOMBAT_MAIN, playerA, "One with the Machine"); + + execute(); + + assertHandCount(playerA, 2); + } + +} diff --git a/Mage/src/main/java/mage/abilities/dynamicvalue/common/HighestConvertedManaCostValue.java b/Mage/src/main/java/mage/abilities/dynamicvalue/common/HighestConvertedManaCostValue.java index 9d603e0bcf0..6e99dfaf8f3 100644 --- a/Mage/src/main/java/mage/abilities/dynamicvalue/common/HighestConvertedManaCostValue.java +++ b/Mage/src/main/java/mage/abilities/dynamicvalue/common/HighestConvertedManaCostValue.java @@ -25,6 +25,11 @@ public class HighestConvertedManaCostValue implements DynamicValue { this.filter = filter; } + public HighestConvertedManaCostValue(final HighestConvertedManaCostValue dynamicValue){ + super(); + this.filter = dynamicValue.filter.copy(); + } + @Override public int calculate(Game game, Ability sourceAbility, Effect effect) { Player controller = game.getPlayer(sourceAbility.getControllerId()); @@ -41,7 +46,7 @@ public class HighestConvertedManaCostValue implements DynamicValue { @Override public DynamicValue copy() { - return new HighestConvertedManaCostValue(); + return new HighestConvertedManaCostValue(this); } @Override