mirror of
https://github.com/correl/mage.git
synced 2024-11-15 03:00:16 +00:00
* Commented out showXXX commands in tests to reduce the output.
This commit is contained in:
parent
b8754af355
commit
82371456cd
19 changed files with 85 additions and 114 deletions
|
@ -11,7 +11,6 @@ import org.mage.test.serverside.base.CardTestCommander4Players;
|
|||
public class ExileTargetTest extends CardTestCommander4Players {
|
||||
|
||||
// Player order: A -> D -> C -> B
|
||||
|
||||
@Test
|
||||
public void test_chooseOpponentTargets() {
|
||||
// AI sometimes chooses own permanents in multiplayer game instead opponents
|
||||
|
@ -26,12 +25,11 @@ public class ExileTargetTest extends CardTestCommander4Players {
|
|||
addCard(Zone.BATTLEFIELD, playerC, "Balduvian Bears", 1); // 2/2
|
||||
|
||||
// must select opponent's Balduvian Bears
|
||||
showAvaileableAbilities("before", 1, PhaseStep.PRECOMBAT_MAIN, playerA);
|
||||
// showAvaileableAbilities("before", 1, PhaseStep.PRECOMBAT_MAIN, playerA);
|
||||
castSpell(1, PhaseStep.PRECOMBAT_MAIN, playerA, "Oblivion Ring");
|
||||
//addTarget(playerA, "Balduvian Bears"); // disable to activate AI target choose
|
||||
|
||||
showAvaileableAbilities("after", 1, PhaseStep.BEGIN_COMBAT, playerA);
|
||||
|
||||
// showAvaileableAbilities("after", 1, PhaseStep.BEGIN_COMBAT, playerA);
|
||||
//setStrictChooseMode(true); // disable strict mode to activate AI for choosing
|
||||
setStopAt(1, PhaseStep.END_COMBAT);
|
||||
execute();
|
||||
|
|
|
@ -21,7 +21,6 @@ import org.mage.test.serverside.base.CardTestPlayerBaseAI;
|
|||
public class TargetPriorityTest extends CardTestPlayerBaseAI {
|
||||
|
||||
// TODO: enable _target_ tests after computerPlayer.chooseTarget will be reworks like chooseTargetAmount
|
||||
|
||||
@Test
|
||||
@Ignore
|
||||
public void test_target_PriorityKillByBigPT() {
|
||||
|
@ -116,7 +115,6 @@ public class TargetPriorityTest extends CardTestPlayerBaseAI {
|
|||
checkPermanentCounters("counters", 1, PhaseStep.BEGIN_COMBAT, playerB, "Balduvian Bears", CounterType.P1P1, 2);
|
||||
|
||||
// AI cast avatar on turn 3 and target 1 creature to kil by 3 damage
|
||||
|
||||
//setStrictChooseMode(true); // AI
|
||||
setStopAt(3, PhaseStep.BEGIN_COMBAT);
|
||||
execute();
|
||||
|
@ -144,8 +142,7 @@ public class TargetPriorityTest extends CardTestPlayerBaseAI {
|
|||
addCard(Zone.BATTLEFIELD, playerB, "Battering Sliver", 1 * cardsMultiplier); // 4/4 with ability
|
||||
|
||||
//castSpell(1, PhaseStep.PRECOMBAT_MAIN, playerA, "Lightning Bolt");
|
||||
|
||||
showHand("after", 1, PhaseStep.BEGIN_COMBAT, playerA);
|
||||
// showHand("after", 1, PhaseStep.BEGIN_COMBAT, playerA);
|
||||
setStopAt(1, PhaseStep.BEGIN_COMBAT);
|
||||
execute();
|
||||
assertAllCommandsUsed();
|
||||
|
@ -159,9 +156,7 @@ public class TargetPriorityTest extends CardTestPlayerBaseAI {
|
|||
*/
|
||||
}
|
||||
|
||||
|
||||
// TARGET AMOUNT
|
||||
|
||||
@Test
|
||||
public void test_targetAmount_PriorityKillByBigPT() {
|
||||
addCard(Zone.HAND, playerA, "Flames of the Firebrand"); // damage 3
|
||||
|
@ -279,7 +274,7 @@ public class TargetPriorityTest extends CardTestPlayerBaseAI {
|
|||
|
||||
// must damage x3 Balduvian Bears by -1 to keep alive
|
||||
checkDamage("pt after", 1, PhaseStep.BEGIN_COMBAT, playerA, "Balduvian Bears", 1);
|
||||
showBattlefield("after", 1, PhaseStep.BEGIN_COMBAT, playerA);
|
||||
// showBattlefield("after", 1, PhaseStep.BEGIN_COMBAT, playerA);
|
||||
setStopAt(1, PhaseStep.BEGIN_COMBAT);
|
||||
execute();
|
||||
assertAllCommandsUsed();
|
||||
|
|
|
@ -11,17 +11,13 @@ import org.mage.test.serverside.base.CardTestPlayerBase;
|
|||
public class KickerWithFlashbackTest extends CardTestPlayerBase {
|
||||
|
||||
// https://github.com/magefree/mage/issues/5389
|
||||
|
||||
|
||||
// Burst Lightning {R}
|
||||
// Kicker {4} (You may pay an additional {4} as you cast this spell.)
|
||||
// Burst Lightning deals 2 damage to any target. If this spell was kicked, it deals 4 damage to that permanent or player instead.
|
||||
|
||||
// Snapcaster Mage {1}{U}
|
||||
// Flash
|
||||
// When Snapcaster Mage enters the battlefield, target instant or sorcery card in your graveyard gains flashback until end of turn.
|
||||
// The flashback cost is equal to its mana cost. (You may cast that card from your graveyard for its flashback cost. Then exile it.)
|
||||
|
||||
@Test
|
||||
public void test_SimpleKicker() {
|
||||
addCard(Zone.BATTLEFIELD, playerA, "Mountain", 5);
|
||||
|
@ -79,7 +75,7 @@ public class KickerWithFlashbackTest extends CardTestPlayerBase {
|
|||
addTarget(playerA, "Burst Lightning");
|
||||
|
||||
// cast burst by flashback
|
||||
showAvaileableAbilities("after", 1, PhaseStep.BEGIN_COMBAT, playerA);
|
||||
// showAvaileableAbilities("after", 1, PhaseStep.BEGIN_COMBAT, playerA);
|
||||
activateAbility(1, PhaseStep.BEGIN_COMBAT, playerA, "Flashback");
|
||||
setChoice(playerA, "Yes"); // use kicker
|
||||
addTarget(playerA, playerB);
|
||||
|
|
|
@ -213,8 +213,8 @@ public class ManifestTest extends CardTestPlayerBase {
|
|||
skipInitShuffling();
|
||||
|
||||
castSpell(1, PhaseStep.PRECOMBAT_MAIN, playerB, "Reality Shift", "Silvercoat Lion");
|
||||
showBattlefield("A battle", 1, PhaseStep.POSTCOMBAT_MAIN, playerA);
|
||||
showBattlefield("B battle", 1, PhaseStep.POSTCOMBAT_MAIN, playerB);
|
||||
// showBattlefield("A battle", 1, PhaseStep.POSTCOMBAT_MAIN, playerA);
|
||||
// showBattlefield("B battle", 1, PhaseStep.POSTCOMBAT_MAIN, playerB);
|
||||
castSpell(1, PhaseStep.POSTCOMBAT_MAIN, playerB, "Silence the Believers", EmptyNames.FACE_DOWN_CREATURE.toString());
|
||||
|
||||
setStopAt(1, PhaseStep.END_TURN);
|
||||
|
|
|
@ -362,10 +362,10 @@ public class MorphTest extends CardTestPlayerBase {
|
|||
castSpell(1, PhaseStep.PRECOMBAT_MAIN, playerA, "Sagu Mauler", NO_TARGET, "Sagu Mauler", StackClause.WHILE_NOT_ON_STACK);
|
||||
setChoice(playerA, "Yes"); // cast it face down as 2/2 creature
|
||||
|
||||
showBattlefield("A battle", 1, PhaseStep.POSTCOMBAT_MAIN, playerA);
|
||||
// showBattlefield("A battle", 1, PhaseStep.POSTCOMBAT_MAIN, playerA);
|
||||
castSpell(1, PhaseStep.POSTCOMBAT_MAIN, playerB, "Echoing Decay", EmptyNames.FACE_DOWN_CREATURE.toString());
|
||||
|
||||
showBattlefield("A battle after", 1, PhaseStep.END_TURN, playerA);
|
||||
// showBattlefield("A battle after", 1, PhaseStep.END_TURN, playerA);
|
||||
setStopAt(1, PhaseStep.END_TURN);
|
||||
execute();
|
||||
assertAllCommandsUsed();
|
||||
|
@ -540,14 +540,14 @@ public class MorphTest extends CardTestPlayerBase {
|
|||
|
||||
castSpell(1, PhaseStep.PRECOMBAT_MAIN, playerA, "Akroma, Angel of Fury");
|
||||
setChoice(playerA, "Yes"); // cast it face down as 2/2 creature
|
||||
showBattlefield("A battle", 1, PhaseStep.POSTCOMBAT_MAIN, playerA);
|
||||
showBattlefield("B battle", 1, PhaseStep.POSTCOMBAT_MAIN, playerB);
|
||||
// showBattlefield("A battle", 1, PhaseStep.POSTCOMBAT_MAIN, playerA);
|
||||
// showBattlefield("B battle", 1, PhaseStep.POSTCOMBAT_MAIN, playerB);
|
||||
|
||||
castSpell(1, PhaseStep.POSTCOMBAT_MAIN, playerB, "Supplant Form");
|
||||
addTarget(playerB, EmptyNames.FACE_DOWN_CREATURE.toString());
|
||||
|
||||
showBattlefield("A battle end", 1, PhaseStep.END_TURN, playerA);
|
||||
showBattlefield("B battle end", 1, PhaseStep.END_TURN, playerB);
|
||||
// showBattlefield("A battle end", 1, PhaseStep.END_TURN, playerA);
|
||||
// showBattlefield("B battle end", 1, PhaseStep.END_TURN, playerB);
|
||||
setStopAt(1, PhaseStep.END_TURN);
|
||||
execute();
|
||||
|
||||
|
@ -718,13 +718,11 @@ public class MorphTest extends CardTestPlayerBase {
|
|||
* copy of the targeted creature, it should still be in the state of
|
||||
* "turning face up", thus triggering the ability of the Brine Elemental.
|
||||
* <p>
|
||||
* combo:
|
||||
* Vesuvan Shapeshifter + Brine Elemental
|
||||
* Brine Elemental in play, Vesuvan Shapeshifter in hand
|
||||
* 1) Cast Vesuvan Shapeshifter face-down.
|
||||
* 2) Flip Vesuvan Shapeshifter for its morph cost, copying Brine Elemental. Your opponent skips his next untap.
|
||||
* 3) During your upkeep, flip Vesuvan Shapeshifter face-down.
|
||||
* 4) Repeat from 2.
|
||||
* combo: Vesuvan Shapeshifter + Brine Elemental Brine Elemental in play,
|
||||
* Vesuvan Shapeshifter in hand 1) Cast Vesuvan Shapeshifter face-down. 2)
|
||||
* Flip Vesuvan Shapeshifter for its morph cost, copying Brine Elemental.
|
||||
* Your opponent skips his next untap. 3) During your upkeep, flip Vesuvan
|
||||
* Shapeshifter face-down. 4) Repeat from 2.
|
||||
*/
|
||||
@Test
|
||||
public void testVesuvanShapeshifter() {
|
||||
|
@ -751,7 +749,6 @@ public class MorphTest extends CardTestPlayerBase {
|
|||
|
||||
// No face up trigger and choose from Vesuvan
|
||||
// But brine's trigger must works on next turn 3 (skip untap)
|
||||
|
||||
setStrictChooseMode(true);
|
||||
setStopAt(2, PhaseStep.END_TURN);
|
||||
execute();
|
||||
|
|
|
@ -12,13 +12,12 @@ import org.mage.test.serverside.base.CardTestCommander4Players;
|
|||
public class CommandersCastTest extends CardTestCommander4Players {
|
||||
|
||||
// Player order: A -> D -> C -> B
|
||||
|
||||
@Test
|
||||
public void test_CastToBattlefieldOneTime() {
|
||||
addCard(Zone.COMMAND, playerA, "Balduvian Bears", 1); // {1}{G}, 2/2, commander
|
||||
addCard(Zone.BATTLEFIELD, playerA, "Forest", 2);
|
||||
|
||||
showCommand("commanders", 1, PhaseStep.PRECOMBAT_MAIN, playerA);
|
||||
// showCommand("commanders", 1, PhaseStep.PRECOMBAT_MAIN, playerA);
|
||||
castSpell(1, PhaseStep.PRECOMBAT_MAIN, playerA, "Balduvian Bears");
|
||||
|
||||
setStopAt(1, PhaseStep.END_TURN);
|
||||
|
@ -71,7 +70,7 @@ public class CommandersCastTest extends CardTestCommander4Players {
|
|||
public void test_PlayAsLandOneTime() {
|
||||
addCard(Zone.COMMAND, playerA, "Academy Ruins", 1);
|
||||
|
||||
showAvaileableAbilities("before", 1, PhaseStep.PRECOMBAT_MAIN, playerA);
|
||||
// showAvaileableAbilities("before", 1, PhaseStep.PRECOMBAT_MAIN, playerA);
|
||||
playLand(1, PhaseStep.PRECOMBAT_MAIN, playerA, "Academy Ruins");
|
||||
//castSpell(1, PhaseStep.PRECOMBAT_MAIN, playerA, "Academy Ruins");
|
||||
|
||||
|
@ -114,8 +113,7 @@ public class CommandersCastTest extends CardTestCommander4Players {
|
|||
waitStackResolved(5, PhaseStep.POSTCOMBAT_MAIN);
|
||||
checkPermanentCount("after cast 2", 5, PhaseStep.POSTCOMBAT_MAIN, playerA, "Academy Ruins", 1);
|
||||
|
||||
showBattlefield("end battlefield", 5, PhaseStep.END_TURN, playerA);
|
||||
|
||||
// showBattlefield("end battlefield", 5, PhaseStep.END_TURN, playerA);
|
||||
setStopAt(5, PhaseStep.END_TURN);
|
||||
setStrictChooseMode(true);
|
||||
execute();
|
||||
|
@ -261,7 +259,7 @@ public class CommandersCastTest extends CardTestCommander4Players {
|
|||
addCard(Zone.BATTLEFIELD, playerA, "Balduvian Bears", 2);
|
||||
|
||||
// cast overload
|
||||
showAvaileableAbilities("before", 1, PhaseStep.PRECOMBAT_MAIN, playerA);
|
||||
// showAvaileableAbilities("before", 1, PhaseStep.PRECOMBAT_MAIN, playerA);
|
||||
castSpell(1, PhaseStep.PRECOMBAT_MAIN, playerA, "Weapon Surge with overload");
|
||||
setChoice(playerA, "Yes"); // move to command zone
|
||||
checkAbility("after", 1, PhaseStep.BEGIN_COMBAT, playerA, "Balduvian Bears", FirstStrikeAbility.class, true);
|
||||
|
|
|
@ -22,8 +22,7 @@ public class PraetorsGraspTest extends CardTestPlayerBase {
|
|||
addTarget(playerA, playerB);
|
||||
addTarget(playerA, "Mountain");
|
||||
|
||||
showAvaileableAbilities("after", 1, PhaseStep.POSTCOMBAT_MAIN, playerA);
|
||||
|
||||
// showAvaileableAbilities("after", 1, PhaseStep.POSTCOMBAT_MAIN, playerA);
|
||||
setStrictChooseMode(true);
|
||||
setStopAt(1, PhaseStep.END_TURN);
|
||||
execute();
|
||||
|
|
|
@ -169,8 +169,7 @@ public class SparkDoubleTest extends CardTestPlayerBase {
|
|||
If you control two or more permanents with the same name but only one is legendary, the “legend rule” doesn’t apply. (2019-05-03)
|
||||
|
||||
it's applier copy check
|
||||
*/
|
||||
|
||||
*/
|
||||
//
|
||||
addCard(Zone.HAND, playerA, "Spark Double"); // {3}{U}
|
||||
addCard(Zone.BATTLEFIELD, playerA, "Island", 4);
|
||||
|
@ -193,14 +192,13 @@ public class SparkDoubleTest extends CardTestPlayerBase {
|
|||
checkPermanentCount("must have copy", 1, PhaseStep.PRECOMBAT_MAIN, playerA, "Akroma, Angel of Wrath", 2);
|
||||
|
||||
// make copy of copy by CreateTokenCopyTargetEffect
|
||||
showBattlefield("before last copy", 1, PhaseStep.PRECOMBAT_MAIN, playerA);
|
||||
// showBattlefield("before last copy", 1, PhaseStep.PRECOMBAT_MAIN, playerA);
|
||||
castSpell(1, PhaseStep.PRECOMBAT_MAIN, playerA, "Quasiduplicate");
|
||||
addTarget(playerA, "Akroma, Angel of Wrath[only copy]");
|
||||
waitStackResolved(1, PhaseStep.PRECOMBAT_MAIN, playerA);
|
||||
checkPermanentCount("must have copy", 1, PhaseStep.PRECOMBAT_MAIN, playerA, "Akroma, Angel of Wrath", 3);
|
||||
|
||||
showBattlefield("after all", 1, PhaseStep.BEGIN_COMBAT, playerA);
|
||||
|
||||
// showBattlefield("after all", 1, PhaseStep.BEGIN_COMBAT, playerA);
|
||||
setStrictChooseMode(true);
|
||||
setStopAt(1, PhaseStep.END_COMBAT);
|
||||
execute();
|
||||
|
@ -230,20 +228,18 @@ public class SparkDoubleTest extends CardTestPlayerBase {
|
|||
checkPermanentCount("must have copy", 1, PhaseStep.PRECOMBAT_MAIN, playerA, "Akroma, Angel of Wrath", 2);
|
||||
|
||||
// make copy of copy by CreateTokenCopyTargetEffect
|
||||
showBattlefield("before last copy", 1, PhaseStep.PRECOMBAT_MAIN, playerA);
|
||||
showAvaileableAbilities("before last copy", 1, PhaseStep.PRECOMBAT_MAIN, playerA);
|
||||
// showBattlefield("before last copy", 1, PhaseStep.PRECOMBAT_MAIN, playerA);
|
||||
// showAvaileableAbilities("before last copy", 1, PhaseStep.PRECOMBAT_MAIN, playerA);
|
||||
activateAbility(1, PhaseStep.PRECOMBAT_MAIN, playerA, "create a token that");
|
||||
addTarget(playerA, "Akroma, Angel of Wrath[only copy]");
|
||||
waitStackResolved(1, PhaseStep.PRECOMBAT_MAIN, playerA);
|
||||
checkPermanentCount("must have copy", 1, PhaseStep.PRECOMBAT_MAIN, playerA, "Akroma, Angel of Wrath", 3);
|
||||
|
||||
showBattlefield("after all", 1, PhaseStep.BEGIN_COMBAT, playerA);
|
||||
|
||||
// showBattlefield("after all", 1, PhaseStep.BEGIN_COMBAT, playerA);
|
||||
setStrictChooseMode(true);
|
||||
setStopAt(1, PhaseStep.END_COMBAT);
|
||||
execute();
|
||||
assertAllCommandsUsed();
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
|
|
@ -329,7 +329,7 @@ public class AdventureCardsTest extends CardTestPlayerBase {
|
|||
* Creature — Human Soldier
|
||||
* 1/1
|
||||
*/
|
||||
/*
|
||||
/*
|
||||
* Rimrock Knight {1}{R}
|
||||
* Creature — Dwarf Knight
|
||||
* Rimrock Knight can't block.
|
||||
|
@ -397,7 +397,6 @@ public class AdventureCardsTest extends CardTestPlayerBase {
|
|||
* Killer. If instead you control Garruk’s Horde and the top card of your library is Giant Killer, you may cast
|
||||
* Giant Killer but not Chop Down.
|
||||
*/
|
||||
|
||||
@Test
|
||||
public void testCastTreatsToShareWithMelek() {
|
||||
/*
|
||||
|
@ -483,7 +482,7 @@ public class AdventureCardsTest extends CardTestPlayerBase {
|
|||
removeAllCardsFromLibrary(playerA);
|
||||
addCard(Zone.LIBRARY, playerA, "Curious Pair");
|
||||
|
||||
showAvaileableAbilities("abils", 1, PhaseStep.PRECOMBAT_MAIN, playerA);
|
||||
// showAvaileableAbilities("abils", 1, PhaseStep.PRECOMBAT_MAIN, playerA);
|
||||
castSpell(1, PhaseStep.PRECOMBAT_MAIN, playerA, "Treats to Share");
|
||||
|
||||
setStopAt(1, PhaseStep.BEGIN_COMBAT);
|
||||
|
@ -514,7 +513,7 @@ public class AdventureCardsTest extends CardTestPlayerBase {
|
|||
addCounters(1, PhaseStep.UPKEEP, playerA, "Wrenn and Six", CounterType.LOYALTY, 5);
|
||||
activateAbility(1, PhaseStep.PRECOMBAT_MAIN, playerA, "-7: You get an emblem");
|
||||
waitStackResolved(1, PhaseStep.PRECOMBAT_MAIN, playerA);
|
||||
showAvaileableAbilities("abils", 1, PhaseStep.PRECOMBAT_MAIN, playerA);
|
||||
// showAvaileableAbilities("abils", 1, PhaseStep.PRECOMBAT_MAIN, playerA);
|
||||
|
||||
// retrace - You may cast this card from your graveyard by discarding a land card as an additional cost to cast it
|
||||
castSpell(1, PhaseStep.PRECOMBAT_MAIN, playerA, "Treats to Share");
|
||||
|
@ -551,7 +550,7 @@ public class AdventureCardsTest extends CardTestPlayerBase {
|
|||
|
||||
activateAbility(1, PhaseStep.PRECOMBAT_MAIN, playerA, "+1: Until your next");
|
||||
waitStackResolved(1, PhaseStep.PRECOMBAT_MAIN, playerA);
|
||||
showAvaileableAbilities("abils", 1, PhaseStep.BEGIN_COMBAT, playerA);
|
||||
// showAvaileableAbilities("abils", 1, PhaseStep.BEGIN_COMBAT, playerA);
|
||||
castSpell(1, PhaseStep.BEGIN_COMBAT, playerA, "Treats to Share");
|
||||
|
||||
setStopAt(1, PhaseStep.POSTCOMBAT_MAIN);
|
||||
|
|
|
@ -13,7 +13,6 @@ public class OathOfLiegesTest extends CardTestPlayerBase {
|
|||
//addCard(Zone.BATTLEFIELD, playerA, "Hypersonic Dragon", 1); // can cast spells at any time
|
||||
//addCard(Zone.HAND, playerA, "Breath of Life", 1); // {3}{W} // return creatures
|
||||
//addCard(Zone.HAND, playerA, "Replenish", 1); // {3}{W} // return all enchantments
|
||||
|
||||
@Test
|
||||
public void testOath_OwnCardTriggersOnOwnTurn() {
|
||||
// A
|
||||
|
@ -140,7 +139,7 @@ public class OathOfLiegesTest extends CardTestPlayerBase {
|
|||
// turn 1 - A
|
||||
// cast oath A
|
||||
castSpell(1, PhaseStep.PRECOMBAT_MAIN, playerA, "Replenish");
|
||||
showBattlefield("A perms", 1, PhaseStep.POSTCOMBAT_MAIN, playerA);
|
||||
// showBattlefield("A perms", 1, PhaseStep.POSTCOMBAT_MAIN, playerA);
|
||||
// cast oath copy
|
||||
castSpell(1, PhaseStep.POSTCOMBAT_MAIN, playerA, "Copy Enchantment");
|
||||
setChoice(playerA, "Yes"); // use copy effect
|
||||
|
@ -194,15 +193,14 @@ public class OathOfLiegesTest extends CardTestPlayerBase {
|
|||
|
||||
// turn 1 - A
|
||||
// nothing
|
||||
|
||||
// turn 2 - B
|
||||
// cast oath A
|
||||
castSpell(2, PhaseStep.PRECOMBAT_MAIN, playerA, "Replenish");
|
||||
// cast oath copy by opponent
|
||||
showBattlefield("A perms", 2, PhaseStep.POSTCOMBAT_MAIN, playerA);
|
||||
showBattlefield("B perms", 2, PhaseStep.POSTCOMBAT_MAIN, playerB);
|
||||
showAvaileableAbilities("B abils", 2, PhaseStep.POSTCOMBAT_MAIN, playerB);
|
||||
showHand("B hand", 2, PhaseStep.POSTCOMBAT_MAIN, playerB);
|
||||
// showBattlefield("A perms", 2, PhaseStep.POSTCOMBAT_MAIN, playerA);
|
||||
// showBattlefield("B perms", 2, PhaseStep.POSTCOMBAT_MAIN, playerB);
|
||||
// showAvaileableAbilities("B abils", 2, PhaseStep.POSTCOMBAT_MAIN, playerB);
|
||||
// showHand("B hand", 2, PhaseStep.POSTCOMBAT_MAIN, playerB);
|
||||
castSpell(2, PhaseStep.POSTCOMBAT_MAIN, playerB, "Copy Enchantment");
|
||||
setChoice(playerB, "Yes"); // use copy effect
|
||||
setChoice(playerB, "Oath of Lieges"); // target for copy
|
||||
|
@ -210,7 +208,7 @@ public class OathOfLiegesTest extends CardTestPlayerBase {
|
|||
checkPermanentCount("B have 1 oath", 2, PhaseStep.END_TURN, playerA, "Oath of Lieges", 1);
|
||||
checkPermanentCount("A have 10 plains", 2, PhaseStep.END_TURN, playerA, "Plains", 10);
|
||||
checkPermanentCount("B have 12 plains", 2, PhaseStep.END_TURN, playerB, "Plains", 12);
|
||||
showLibrary("lib B", 2, PhaseStep.END_TURN, playerB);
|
||||
// showLibrary("lib B", 2, PhaseStep.END_TURN, playerB);
|
||||
|
||||
// turn 3 - A
|
||||
// oath A triggers for A and activates
|
||||
|
|
|
@ -241,7 +241,7 @@ public class ManaPoolTest extends CardTestPlayerBase {
|
|||
checkManaPool("mana", 1, PhaseStep.PRECOMBAT_MAIN, playerA, "R", 4);
|
||||
|
||||
// use for ability
|
||||
showAvaileableAbilities("before ability", 1, PhaseStep.PRECOMBAT_MAIN, playerA);
|
||||
// showAvaileableAbilities("before ability", 1, PhaseStep.PRECOMBAT_MAIN, playerA);
|
||||
activateAbility(1, PhaseStep.PRECOMBAT_MAIN, playerA, "{X}:", playerB);
|
||||
setChoice(playerA, "X=3");
|
||||
waitStackResolved(1, PhaseStep.PRECOMBAT_MAIN);
|
||||
|
|
|
@ -233,7 +233,7 @@ public class SpellskiteTest extends CardTestPlayerBase {
|
|||
once for each instances of the word “target” in the text
|
||||
of a spell or ability. In this case, the target can't be changed
|
||||
due to Spellskite already being a target.
|
||||
*/
|
||||
*/
|
||||
addCard(Zone.BATTLEFIELD, playerA, "Plains", 1);
|
||||
addCard(Zone.BATTLEFIELD, playerA, "Mountain", 1);
|
||||
addCard(Zone.BATTLEFIELD, playerA, "Forest", 1);
|
||||
|
@ -258,8 +258,6 @@ public class SpellskiteTest extends CardTestPlayerBase {
|
|||
activateAbility(1, PhaseStep.PRECOMBAT_MAIN, playerB, "{U/P}: Change a target", "Fiery Justice", "Fiery Justice");
|
||||
setChoice(playerB, "Yes"); // pay 2 life
|
||||
|
||||
showBattlefield("B battle", 1, PhaseStep.BEGIN_COMBAT, playerB);
|
||||
showGraveyard("B grave", 1, PhaseStep.BEGIN_COMBAT, playerB);
|
||||
setStopAt(1, PhaseStep.BEGIN_COMBAT);
|
||||
execute();
|
||||
assertAllCommandsUsed();
|
||||
|
@ -274,7 +272,7 @@ public class SpellskiteTest extends CardTestPlayerBase {
|
|||
public void testThatSplitDamageCanGetRedirected() {
|
||||
/* Standard redirect test
|
||||
The Spellskite should die from the 5 damage that was redirected to it
|
||||
*/
|
||||
*/
|
||||
addCard(Zone.BATTLEFIELD, playerA, "Plains", 1);
|
||||
addCard(Zone.BATTLEFIELD, playerA, "Mountain", 1);
|
||||
addCard(Zone.BATTLEFIELD, playerA, "Forest", 1);
|
||||
|
|
|
@ -70,7 +70,7 @@ public class SyrCarahTheBoldTest extends CardTestPlayerBase {
|
|||
addCard(Zone.BATTLEFIELD, playerB, "Island", 3);
|
||||
|
||||
// equip to copy abilities
|
||||
showAvaileableAbilities("abils", 2, PhaseStep.PRECOMBAT_MAIN, playerB);
|
||||
// showAvaileableAbilities("abils", 2, PhaseStep.PRECOMBAT_MAIN, playerB);
|
||||
activateAbility(2, PhaseStep.PRECOMBAT_MAIN, playerB, "Equip {3}", "Embermage Goblin");
|
||||
setChoice(playerB, "No"); // no new target
|
||||
|
||||
|
|
|
@ -12,8 +12,8 @@ public class BrainMaggotTest extends CardTestPlayerBase {
|
|||
|
||||
/**
|
||||
* When Brain Maggot enters the battlefield, target opponent reveals their
|
||||
* hand and you choose a nonland card from it. Exile that card until
|
||||
* Brain Maggot leaves the battlefield.
|
||||
* hand and you choose a nonland card from it. Exile that card until Brain
|
||||
* Maggot leaves the battlefield.
|
||||
*/
|
||||
@Test
|
||||
public void testCardFromHandWillBeExiled() {
|
||||
|
@ -48,7 +48,7 @@ public class BrainMaggotTest extends CardTestPlayerBase {
|
|||
castSpell(1, PhaseStep.PRECOMBAT_MAIN, playerA, "Brain Maggot");
|
||||
addTarget(playerA, playerB);
|
||||
setChoice(playerA, "Bloodflow Connoisseur");
|
||||
showExile("exile", 1, PhaseStep.BEGIN_COMBAT, playerB);
|
||||
// showExile("exile", 1, PhaseStep.BEGIN_COMBAT, playerB);
|
||||
checkExileCount("blood must be in exile", 1, PhaseStep.BEGIN_COMBAT, playerB, "Bloodflow Connoisseur", 1);
|
||||
|
||||
// return
|
||||
|
|
|
@ -8,14 +8,12 @@ import org.mage.test.serverside.base.CardTestPlayerBase;
|
|||
/**
|
||||
* @author LevelX2, JayDi85
|
||||
*/
|
||||
|
||||
public class TidehollowScullerTest extends CardTestPlayerBase {
|
||||
|
||||
/**
|
||||
* Test if the same Tidehollow Sculler is cast multiple times, the correct
|
||||
* corresponding exiled cards are returned
|
||||
*/
|
||||
|
||||
@Test
|
||||
public void test_CastOneCardFromHandWillBeExiled() {
|
||||
addCard(Zone.BATTLEFIELD, playerA, "Swamp", 2);
|
||||
|
@ -30,7 +28,6 @@ public class TidehollowScullerTest extends CardTestPlayerBase {
|
|||
//
|
||||
addCard(Zone.HAND, playerB, "Bloodflow Connoisseur", 1);
|
||||
|
||||
|
||||
// cast and exile from hand
|
||||
checkHandCardCount("B hand must have blood", 1, PhaseStep.UPKEEP, playerB, "Bloodflow Connoisseur", 1);
|
||||
castSpell(1, PhaseStep.PRECOMBAT_MAIN, playerA, "Tidehollow Sculler");
|
||||
|
@ -86,7 +83,7 @@ public class TidehollowScullerTest extends CardTestPlayerBase {
|
|||
checkPermanentCount("A must have 2 tide", 2, PhaseStep.UPKEEP, playerA, "Tidehollow Sculler", 2);
|
||||
checkHandCardCount("B hand must have 0 blood", 2, PhaseStep.UPKEEP, playerB, "Bloodflow Connoisseur", 0);
|
||||
castSpell(2, PhaseStep.PRECOMBAT_MAIN, playerA, "Lightning Bolt", "@tide.1");
|
||||
showHand("B hand", 2, PhaseStep.BEGIN_COMBAT, playerB);
|
||||
// showHand("B hand", 2, PhaseStep.BEGIN_COMBAT, playerB);
|
||||
checkPermanentCount("A must have 1 tide", 2, PhaseStep.BEGIN_COMBAT, playerA, "Tidehollow Sculler", 1);
|
||||
checkHandCardCount("B hand must have 1 blood", 2, PhaseStep.BEGIN_COMBAT, playerB, "Bloodflow Connoisseur", 1);
|
||||
// destroy 2 and return card to hand
|
||||
|
@ -115,4 +112,4 @@ public class TidehollowScullerTest extends CardTestPlayerBase {
|
|||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
@ -7,17 +7,18 @@ import org.junit.Test;
|
|||
import org.mage.test.serverside.base.CardTestPlayerBase;
|
||||
|
||||
/**
|
||||
* Whisperwood Elemental - Elemental {3}{G}{G}
|
||||
* At the beginning of your end step, manifest the top card of your library.
|
||||
* Sacrifice Whisperwood Elemental: Until end of turn, face-up, nontoken creatures you control gain "When this creature dies, manifest the top card of your library."
|
||||
* Whisperwood Elemental - Elemental {3}{G}{G} At the beginning of your end
|
||||
* step, manifest the top card of your library. Sacrifice Whisperwood Elemental:
|
||||
* Until end of turn, face-up, nontoken creatures you control gain "When this
|
||||
* creature dies, manifest the top card of your library."
|
||||
*
|
||||
* @author LevelX2
|
||||
*/
|
||||
public class WhisperwoodElementalTest extends CardTestPlayerBase {
|
||||
|
||||
/**
|
||||
* Tests that the dies triggered ability of silvercoat lion (gained by sacrificed Whisperwood Elemental)
|
||||
* triggers as he dies from Lightning Bolt
|
||||
* Tests that the dies triggered ability of silvercoat lion (gained by
|
||||
* sacrificed Whisperwood Elemental) triggers as he dies from Lightning Bolt
|
||||
*/
|
||||
@Test
|
||||
public void testDiesTriggeredAbility() {
|
||||
|
@ -29,8 +30,6 @@ public class WhisperwoodElementalTest extends CardTestPlayerBase {
|
|||
activateAbility(1, PhaseStep.PRECOMBAT_MAIN, playerA, "Sacrifice {this}: Until end of turn, face-up, nontoken creatures you control gain \"When this creature dies, manifest the top card of your library.");
|
||||
castSpell(1, PhaseStep.POSTCOMBAT_MAIN, playerA, "Lightning Bolt", "Silvercoat Lion");
|
||||
|
||||
showBattlefield("A battle", 1, PhaseStep.END_TURN, playerA);
|
||||
showGraveyard("A grave", 1, PhaseStep.END_TURN, playerA);
|
||||
setStopAt(1, PhaseStep.END_TURN);
|
||||
execute();
|
||||
assertAllCommandsUsed();
|
||||
|
|
|
@ -27,10 +27,9 @@ public class OpalPalaceTest extends CardTestCommanderDuelBase {
|
|||
// equal to the number of times it's been cast from the command zone this game.
|
||||
addCard(Zone.BATTLEFIELD, playerA, "Opal Palace", 1);
|
||||
|
||||
showHand("hand", 1, PhaseStep.PRECOMBAT_MAIN, playerA);
|
||||
showCommand("command", 1, PhaseStep.PRECOMBAT_MAIN, playerA);
|
||||
showAvaileableAbilities("abi", 1, PhaseStep.PRECOMBAT_MAIN, playerA);
|
||||
|
||||
// showHand("hand", 1, PhaseStep.PRECOMBAT_MAIN, playerA);
|
||||
// showCommand("command", 1, PhaseStep.PRECOMBAT_MAIN, playerA);
|
||||
// showAvaileableAbilities("abi", 1, PhaseStep.PRECOMBAT_MAIN, playerA);
|
||||
activateManaAbility(1, PhaseStep.PRECOMBAT_MAIN, playerA, "{T}: Add {G}");
|
||||
activateManaAbility(1, PhaseStep.PRECOMBAT_MAIN, playerA, "{1}, {T}");
|
||||
setChoice(playerA, "Opal Palace"); // activate mana replace effect first (+3 counters)
|
||||
|
|
|
@ -11,7 +11,6 @@ import org.mage.test.serverside.base.CardTestPlayerBase;
|
|||
/**
|
||||
* @author JayDi85
|
||||
*/
|
||||
|
||||
public class TestAliases extends CardTestPlayerBase {
|
||||
|
||||
@Test
|
||||
|
@ -54,7 +53,7 @@ public class TestAliases extends CardTestPlayerBase {
|
|||
addCard(Zone.BATTLEFIELD, playerA, "Swamp@battle", 1);
|
||||
addCard(Zone.GRAVEYARD, playerA, "Swamp@grave", 1);
|
||||
|
||||
showAliases("A aliases", 1, PhaseStep.UPKEEP, playerA);
|
||||
// showAliases("A aliases", 1, PhaseStep.UPKEEP, playerA);
|
||||
checkAliasZone("lib", 1, PhaseStep.PRECOMBAT_MAIN, playerA, "lib", Zone.LIBRARY);
|
||||
checkAliasZone("hand", 1, PhaseStep.PRECOMBAT_MAIN, playerA, "hand", Zone.HAND);
|
||||
checkAliasZone("battle", 1, PhaseStep.PRECOMBAT_MAIN, playerA, "battle", Zone.BATTLEFIELD);
|
||||
|
@ -77,8 +76,8 @@ public class TestAliases extends CardTestPlayerBase {
|
|||
checkPermanentCount("Plains must exists", 1, PhaseStep.UPKEEP, playerB, "Plains", 5);
|
||||
checkPermanentCount("Mountain must exists", 1, PhaseStep.UPKEEP, playerB, "Mountain", 5);
|
||||
//
|
||||
showAliases("A aliases", 1, PhaseStep.UPKEEP, playerA);
|
||||
showAliases("B aliases", 1, PhaseStep.UPKEEP, playerB);
|
||||
// showAliases("A aliases", 1, PhaseStep.UPKEEP, playerA);
|
||||
// showAliases("B aliases", 1, PhaseStep.UPKEEP, playerB);
|
||||
// A
|
||||
checkAliasZone("Swamp must not", 1, PhaseStep.PRECOMBAT_MAIN, playerA, "Swamp", Zone.BATTLEFIELD, false);
|
||||
checkAliasZone("Swamp.1 must not", 1, PhaseStep.PRECOMBAT_MAIN, playerA, "Swamp.1", Zone.BATTLEFIELD, false);
|
||||
|
@ -111,7 +110,7 @@ public class TestAliases extends CardTestPlayerBase {
|
|||
castSpell(1, PhaseStep.PRECOMBAT_MAIN, playerA, "Lightning Bolt", "@lion.3");
|
||||
castSpell(1, PhaseStep.PRECOMBAT_MAIN, playerA, "Lightning Bolt", "@lion.5");
|
||||
|
||||
showAliases("A aliases", 1, PhaseStep.POSTCOMBAT_MAIN, playerA);
|
||||
// showAliases("A aliases", 1, PhaseStep.POSTCOMBAT_MAIN, playerA);
|
||||
checkAliasZone("1", 1, PhaseStep.POSTCOMBAT_MAIN, playerA, "lion.1", Zone.BATTLEFIELD, false);
|
||||
checkAliasZone("2", 1, PhaseStep.POSTCOMBAT_MAIN, playerA, "lion.2", Zone.BATTLEFIELD, true);
|
||||
checkAliasZone("3", 1, PhaseStep.POSTCOMBAT_MAIN, playerA, "lion.3", Zone.BATTLEFIELD, false);
|
||||
|
@ -125,4 +124,4 @@ public class TestAliases extends CardTestPlayerBase {
|
|||
assertGraveyardCount(playerA, "Lightning Bolt", 3);
|
||||
assertGraveyardCount(playerA, "Silvercoat Lion", 3);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,20 +1,23 @@
|
|||
package mage.abilities.condition.common;
|
||||
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.condition.Condition;
|
||||
import mage.game.Game;
|
||||
import mage.watchers.common.PlayLandWatcher;
|
||||
|
||||
/**
|
||||
* @author jeffwadsworth
|
||||
*/
|
||||
public enum PlayLandCondition implements Condition {
|
||||
instance;
|
||||
|
||||
@Override
|
||||
public boolean apply(Game game, Ability source) {
|
||||
PlayLandWatcher watcher = game.getState().getWatcher(PlayLandWatcher.class);
|
||||
return watcher != null
|
||||
&& watcher.landPlayed(source.getControllerId());
|
||||
}
|
||||
}
|
||||
package mage.abilities.condition.common;
|
||||
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.condition.Condition;
|
||||
import mage.game.Game;
|
||||
import mage.watchers.common.PlayLandWatcher;
|
||||
|
||||
/**
|
||||
* @author jeffwadsworth
|
||||
*/
|
||||
public enum PlayLandCondition implements Condition {
|
||||
instance;
|
||||
|
||||
@Override
|
||||
public boolean apply(Game game, Ability source) {
|
||||
if (game.getTurn().getPhase() == null) { // only for getFrameColor for River of Tears before game started
|
||||
return false;
|
||||
}
|
||||
PlayLandWatcher watcher = game.getState().getWatcher(PlayLandWatcher.class);
|
||||
return watcher != null
|
||||
&& watcher.landPlayed(source.getControllerId());
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue