implement [M3C] Planar Nexus [MH3] Omo, Queen of Vesuva and [UNF] Nearby Planet ; introduce AllNonbasicLandTypes status (#12203)

This commit is contained in:
Evan Kranzler 2024-06-07 12:36:41 -04:00 committed by GitHub
parent 3e18b58cac
commit 08c7d2ab8f
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
19 changed files with 659 additions and 5 deletions

View file

@ -0,0 +1,89 @@
package org.mage.test.cards.single.m3c;
import mage.constants.PhaseStep;
import mage.constants.Zone;
import mage.counters.CounterType;
import org.junit.Test;
import org.mage.test.player.TestPlayer;
import org.mage.test.serverside.base.CardTestPlayerBase;
/**
* @author Susucr
*/
public class OmoQueenOfVesuvaTest extends CardTestPlayerBase {
/**
* {@link mage.cards.o.OmoQueenOfVesuva Omo, Queen of Vesuva} {2}{G/U}
* Legendary Creature Shapeshifter Noble
* Whenever Omo, Queen of Vesuva enters the battlefield or attacks, put an everything counter on each of up to one target land and up to one target creature.
* Each land with an everything counter on it is every land type in addition to its other types.
* Each nonland creature with an everything counter on it is every creature type.
* 1/5
*/
private static final String omo = "Omo, Queen of Vesuva";
@Test
public void test_TronLand() {
setStrictChooseMode(true);
addCard(Zone.BATTLEFIELD, playerA, "Forest", 3);
addCard(Zone.BATTLEFIELD, playerA, "Urza's Tower");
addCard(Zone.HAND, playerA, omo);
addCard(Zone.HAND, playerA, "Abzan Banner");
activateManaAbility(1, PhaseStep.PRECOMBAT_MAIN, playerA, "{T}: Add {G}", 3);
castSpell(1, PhaseStep.PRECOMBAT_MAIN, playerA, omo, true);
addTarget(playerA, "Forest");
addTarget(playerA, TestPlayer.TARGET_SKIP);
// Urza's Tower makes {3} mana
castSpell(1, PhaseStep.PRECOMBAT_MAIN, playerA, "Abzan Banner");
setStopAt(1, PhaseStep.POSTCOMBAT_MAIN);
execute();
assertPermanentCount(playerA, "Abzan Banner", 1);
}
@Test
public void test_IsForest() {
addCard(Zone.BATTLEFIELD, playerA, "Island", 3);
addCard(Zone.BATTLEFIELD, playerA, "Coiling Woodworm", 1); // Coiling Woodworms power is equal to the number of Forests on the battlefield.
addCard(Zone.HAND, playerA, omo);
addCard(Zone.HAND, playerA, "Llanowar Elves");
castSpell(1, PhaseStep.PRECOMBAT_MAIN, playerA, omo);
addTarget(playerA, "Island");
addTarget(playerA, TestPlayer.TARGET_SKIP);
setChoice(playerA, "Green"); // mana color to cast Llanowar Elves
castSpell(3, PhaseStep.PRECOMBAT_MAIN, playerA, "Llanowar Elves");
setStrictChooseMode(true);
setStopAt(3, PhaseStep.POSTCOMBAT_MAIN);
execute();
assertPowerToughness(playerA, "Coiling Woodworm", 1, 1);
assertPermanentCount(playerA, "Llanowar Elves", 1);
}
@Test
public void test_EveryCreatureSubType() {
setStrictChooseMode(true);
addCard(Zone.BATTLEFIELD, playerA, "Island", 3);
addCard(Zone.BATTLEFIELD, playerA, "Coiling Woodworm", 1); // Coiling Woodworms power is equal to the number of Forests on the battlefield.
addCard(Zone.BATTLEFIELD, playerA, "Imperious Perfect", 1); // Other Elves you control get +1/+1.
addCard(Zone.HAND, playerA, omo);
castSpell(1, PhaseStep.PRECOMBAT_MAIN, playerA, omo, true);
addTarget(playerA, "Island");
addTarget(playerA, "Coiling Woodworm");
setStopAt(1, PhaseStep.POSTCOMBAT_MAIN);
execute();
assertCounterCount(playerA, "Coiling Woodworm", CounterType.EVERYTHING, 1);
assertPowerToughness(playerA, "Coiling Woodworm", 2, 2); // 1 Forest, and is an Elf
}
}

View file

@ -0,0 +1,112 @@
package org.mage.test.cards.single.m3c;
import mage.abilities.keyword.TrampleAbility;
import mage.constants.PhaseStep;
import mage.constants.Zone;
import org.junit.Test;
import org.mage.test.serverside.base.CardTestPlayerBase;
/**
* @author TheElk801
*/
public class PlanarNexusTest extends CardTestPlayerBase {
private static final String nexus = "Planar Nexus";
private static final String cloudpost = "Cloudpost";
private static final String glimmerpost = "Glimmerpost";
private static final String golem = "Stone Golem";
@Test
public void testLocus() {
addCard(Zone.BATTLEFIELD, playerA, nexus);
addCard(Zone.BATTLEFIELD, playerA, cloudpost);
addCard(Zone.HAND, playerA, glimmerpost);
addCard(Zone.HAND, playerA, golem);
playLand(1, PhaseStep.PRECOMBAT_MAIN, playerA, glimmerpost);
setStrictChooseMode(true);
setStopAt(1, PhaseStep.POSTCOMBAT_MAIN);
execute();
assertLife(playerA, 20 + 3);
castSpell(3, PhaseStep.PRECOMBAT_MAIN, playerA, golem);
setStopAt(3, PhaseStep.POSTCOMBAT_MAIN);
execute();
assertPermanentCount(playerA, golem, 1);
}
private static final String tower = "Urza's Tower";
private static final String sentinel = "Gilded Sentinel";
@Test
public void testTronLand() {
addCard(Zone.BATTLEFIELD, playerA, nexus);
addCard(Zone.BATTLEFIELD, playerA, tower);
addCard(Zone.HAND, playerA, sentinel);
castSpell(1, PhaseStep.PRECOMBAT_MAIN, playerA, sentinel);
setStrictChooseMode(true);
setStopAt(1, PhaseStep.POSTCOMBAT_MAIN);
execute();
assertPermanentCount(playerA, sentinel, 1);
}
private static final String seas = "Spreading Seas";
@Test
public void testSpreadingSeas() {
addCard(Zone.BATTLEFIELD, playerA, "Island");
addCard(Zone.BATTLEFIELD, playerA, nexus);
addCard(Zone.HAND, playerA, seas);
addCard(Zone.HAND, playerA, glimmerpost);
castSpell(1, PhaseStep.PRECOMBAT_MAIN, playerA, seas, nexus);
waitStackResolved(1, PhaseStep.PRECOMBAT_MAIN);
playLand(1, PhaseStep.PRECOMBAT_MAIN, playerA, glimmerpost);
setStrictChooseMode(true);
setStopAt(1, PhaseStep.POSTCOMBAT_MAIN);
execute();
assertLife(playerA, 20 + 1);
}
private static final String vine = "Gatecreeper Vine";
@Test
public void testGateSearch() {
addCard(Zone.LIBRARY, playerA, nexus);
addCard(Zone.BATTLEFIELD, playerA, "Forest", 2);
addCard(Zone.HAND, playerA, vine);
setChoice(playerA, true);
addTarget(playerA, nexus);
castSpell(1, PhaseStep.PRECOMBAT_MAIN, playerA, vine);
setStrictChooseMode(true);
setStopAt(1, PhaseStep.POSTCOMBAT_MAIN);
execute();
assertHandCount(playerA, nexus, 1);
}
private static final String naga = "Sidewinder Naga";
@Test
public void testDesertGraveyard() {
addCard(Zone.GRAVEYARD, playerA, nexus);
addCard(Zone.BATTLEFIELD, playerA, naga);
setStrictChooseMode(true);
setStopAt(1, PhaseStep.PRECOMBAT_MAIN);
execute();
assertPowerToughness(playerA, naga, 3 + 1, 2);
assertAbility(playerA, naga, TrampleAbility.getInstance(), true);
}
}