* AI: improved support of "as though mana" abilities (now computer can choose correct mana ability to pay, example: Draugr Necromancer);

* Dev: added card's LKI support of multi part cards (mdf/split/adventure);
* Dev: improved support of adding/removing counters from mdf cards;
* Draugr Necromancer - fixed support of mdf/split/adventure cards (#7620);
This commit is contained in:
Oleg Agafonov 2021-02-27 20:14:12 +04:00
parent adc945748b
commit dda69cd009
12 changed files with 227 additions and 65 deletions

View file

@ -0,0 +1,34 @@
package org.mage.test.cards.asthough;
import mage.constants.PhaseStep;
import mage.constants.Zone;
import org.junit.Test;
import org.mage.test.serverside.base.CardTestPlayerBase;
/**
* @author JayDi85
*/
public class AsThoughManaAndAITest extends CardTestPlayerBase {
@Test
public void test_AutoPaymentMustUseAsThoughMana() {
// possible bug: AI auto-payment uses first mana ability from the mana source, so multi-colored lands can be broken
// You may spend white mana as though it were red mana.
addCard(Zone.BATTLEFIELD, playerA, "Sunglasses of Urza", 1);
//
// {T}: Add {U} or {W}.
addCard(Zone.BATTLEFIELD, playerA, "Sea of Clouds", 1);
addCard(Zone.HAND, playerA, "Lightning Bolt", 1); // {R}
checkPlayableAbility("before", 1, PhaseStep.PRECOMBAT_MAIN, playerA, "Cast Lightning Bolt", true);
castSpell(1, PhaseStep.PRECOMBAT_MAIN, playerA, "Lightning Bolt", playerB);
setStrictChooseMode(true);
setStopAt(1, PhaseStep.END_TURN);
execute();
assertAllCommandsUsed();
assertLife(playerB, 20 - 3);
}
}

View file

@ -3,7 +3,6 @@ package org.mage.test.cards.single.khm;
import mage.constants.PhaseStep;
import mage.constants.Zone;
import mage.counters.CounterType;
import org.junit.Ignore;
import org.junit.Test;
import org.mage.test.serverside.base.CardTestPlayerBase;
@ -186,16 +185,16 @@ public class DraugrNecromancerTest extends CardTestPlayerBase {
@Test
public void testCastMDFCFrontFromExile() {
addCard(Zone.BATTLEFIELD, playerA, necromancer);
addCard(Zone.BATTLEFIELD, playerA, "Badlands", 6);
addCard(Zone.BATTLEFIELD, playerA, "Badlands", 6); // {B} or {R}
addCard(Zone.HAND, playerA, murder);
addCard(Zone.HAND, playerB, birgi);
addCard(Zone.BATTLEFIELD, playerB, "Mountain", 3);
castSpell(2, PhaseStep.PRECOMBAT_MAIN, playerB, birgi);
castSpell(3, PhaseStep.PRECOMBAT_MAIN, playerA, murder, birgi);
castSpell(3, PhaseStep.PRECOMBAT_MAIN, playerA, murder, birgi); // {1}{B}{B}
castSpell(3, PhaseStep.POSTCOMBAT_MAIN, playerA, birgi);
castSpell(3, PhaseStep.POSTCOMBAT_MAIN, playerA, birgi); // {2}{R}
setStrictChooseMode(true);
setStopAt(3, PhaseStep.END_TURN);
@ -232,7 +231,6 @@ public class DraugrNecromancerTest extends CardTestPlayerBase {
assertExileCount(playerB, birgi, 0);
}
@Ignore
@Test
public void testCastMDFCFrontFromExileWithSnow() {
addCard(Zone.BATTLEFIELD, playerA, necromancer);
@ -257,7 +255,6 @@ public class DraugrNecromancerTest extends CardTestPlayerBase {
assertExileCount(playerB, birgi, 0);
}
@Ignore
@Test
public void testCastMDFCBackFromExileWithSnow() {
addCard(Zone.BATTLEFIELD, playerA, necromancer);