mirror of
https://github.com/correl/mage.git
synced 2024-11-29 03:00:12 +00:00
* Uba Mask - fixed that it doesn't work with MDF cards (#8222);
This commit is contained in:
parent
2d14d0647d
commit
524f46e7e5
3 changed files with 91 additions and 3 deletions
|
@ -1,4 +1,3 @@
|
||||||
|
|
||||||
package mage.cards.u;
|
package mage.cards.u;
|
||||||
|
|
||||||
import mage.MageObject;
|
import mage.MageObject;
|
||||||
|
@ -14,12 +13,12 @@ import mage.constants.*;
|
||||||
import mage.game.Game;
|
import mage.game.Game;
|
||||||
import mage.game.events.GameEvent;
|
import mage.game.events.GameEvent;
|
||||||
import mage.players.Player;
|
import mage.players.Player;
|
||||||
|
import mage.util.CardUtil;
|
||||||
import mage.watchers.Watcher;
|
import mage.watchers.Watcher;
|
||||||
|
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
|
||||||
* @author LevelX2
|
* @author LevelX2
|
||||||
*/
|
*/
|
||||||
public final class UbaMask extends CardImpl {
|
public final class UbaMask extends CardImpl {
|
||||||
|
@ -112,6 +111,7 @@ class UbaMaskPlayEffect extends AsThoughEffectImpl {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean applies(UUID objectId, Ability source, UUID affectedControllerId, Game game) {
|
public boolean applies(UUID objectId, Ability source, UUID affectedControllerId, Game game) {
|
||||||
|
objectId = CardUtil.getMainCardId(game, objectId); // for split cards
|
||||||
Card card = game.getCard(objectId);
|
Card card = game.getCard(objectId);
|
||||||
if (card != null
|
if (card != null
|
||||||
&& affectedControllerId.equals(card.getOwnerId())
|
&& affectedControllerId.equals(card.getOwnerId())
|
||||||
|
|
|
@ -6,7 +6,7 @@ import org.junit.Ignore;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
import org.mage.test.serverside.base.CardTestPlayerBase;
|
import org.mage.test.serverside.base.CardTestPlayerBase;
|
||||||
|
|
||||||
public class Test_HorobiDeathsWail extends CardTestPlayerBase {
|
public class HorobiDeathsWailTest extends CardTestPlayerBase {
|
||||||
|
|
||||||
// issue 7772
|
// issue 7772
|
||||||
@Test
|
@Test
|
|
@ -0,0 +1,88 @@
|
||||||
|
package org.mage.test.cards.single.chk;
|
||||||
|
|
||||||
|
import mage.constants.PhaseStep;
|
||||||
|
import mage.constants.Zone;
|
||||||
|
import org.junit.Test;
|
||||||
|
import org.mage.test.player.TestPlayer;
|
||||||
|
import org.mage.test.serverside.base.CardTestPlayerBase;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author JayDi85
|
||||||
|
*/
|
||||||
|
public class UbaMaskTest extends CardTestPlayerBase {
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void test_NormalCard() {
|
||||||
|
skipInitShuffling();
|
||||||
|
|
||||||
|
// If a player would draw a card, that player exiles that card face up instead.
|
||||||
|
// Each player may play cards they exiled with Uba Mask this turn.
|
||||||
|
addCard(Zone.BATTLEFIELD, playerA, "Uba Mask");
|
||||||
|
//
|
||||||
|
addCard(Zone.LIBRARY, playerA, "Grizzly Bears"); // {1}{G}
|
||||||
|
addCard(Zone.BATTLEFIELD, playerA, "Forest", 2);
|
||||||
|
//
|
||||||
|
addCard(Zone.LIBRARY, playerB, "Bronze Sable"); // {2}
|
||||||
|
addCard(Zone.BATTLEFIELD, playerB, "Forest", 2);
|
||||||
|
|
||||||
|
// turn 1 - no draws
|
||||||
|
checkExileCount("no exile on turn 1 for A", 1, PhaseStep.PRECOMBAT_MAIN, playerA, "Grizzly Bears", 0);
|
||||||
|
checkExileCount("no exile on turn 1 for B", 1, PhaseStep.PRECOMBAT_MAIN, playerB, "Bronze Sable", 0);
|
||||||
|
|
||||||
|
// turn 2 - B draw and exile
|
||||||
|
checkExileCount("no exile on turn 2 for A", 2, PhaseStep.PRECOMBAT_MAIN, playerA, "Grizzly Bears", 0);
|
||||||
|
checkExileCount("exiled on turn 2 for B", 2, PhaseStep.PRECOMBAT_MAIN, playerB, "Bronze Sable", 1);
|
||||||
|
checkPlayableAbility("A play on 2", 2, PhaseStep.PRECOMBAT_MAIN, playerA, "Cast Grizzly Bears", false);
|
||||||
|
checkPlayableAbility("A play on 2", 2, PhaseStep.PRECOMBAT_MAIN, playerA, "Cast Bronze Sable", false);
|
||||||
|
checkPlayableAbility("B play on 2", 2, PhaseStep.PRECOMBAT_MAIN, playerB, "Cast Grizzly Bears", false);
|
||||||
|
checkPlayableAbility("B play on 2", 2, PhaseStep.PRECOMBAT_MAIN, playerB, "Cast Bronze Sable", true);
|
||||||
|
|
||||||
|
// turn 3 - A draw and exile
|
||||||
|
checkExileCount("exiled on turn 3 for A", 3, PhaseStep.PRECOMBAT_MAIN, playerA, "Grizzly Bears", 1);
|
||||||
|
checkExileCount("no exile on turn 3 for B", 3, PhaseStep.PRECOMBAT_MAIN, playerB, "Bronze Sable", 1); // exiled on prev turn
|
||||||
|
checkPlayableAbility("A play on 3", 3, PhaseStep.PRECOMBAT_MAIN, playerA, "Cast Grizzly Bears", true);
|
||||||
|
checkPlayableAbility("A play on 3", 3, PhaseStep.PRECOMBAT_MAIN, playerA, "Cast Bronze Sable", false);
|
||||||
|
checkPlayableAbility("B play on 3", 3, PhaseStep.PRECOMBAT_MAIN, playerB, "Cast Grizzly Bears", false);
|
||||||
|
checkPlayableAbility("B play on 3", 3, PhaseStep.PRECOMBAT_MAIN, playerB, "Cast Bronze Sable", false);
|
||||||
|
|
||||||
|
// turn 3 - A play
|
||||||
|
castSpell(3, PhaseStep.POSTCOMBAT_MAIN, playerA, "Grizzly Bears");
|
||||||
|
waitStackResolved(3, PhaseStep.POSTCOMBAT_MAIN);
|
||||||
|
|
||||||
|
setStrictChooseMode(true);
|
||||||
|
setStopAt(3, PhaseStep.END_TURN);
|
||||||
|
execute();
|
||||||
|
assertAllCommandsUsed();
|
||||||
|
|
||||||
|
assertPermanentCount(playerA, "Grizzly Bears", 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void test_MDF() {
|
||||||
|
skipInitShuffling();
|
||||||
|
|
||||||
|
// If a player would draw a card, that player exiles that card face up instead.
|
||||||
|
// Each player may play cards they exiled with Uba Mask this turn.
|
||||||
|
addCard(Zone.BATTLEFIELD, playerA, "Uba Mask");
|
||||||
|
//
|
||||||
|
addCard(Zone.LIBRARY, playerB, "Valki, God of Lies"); // {1}{B}
|
||||||
|
addCard(Zone.BATTLEFIELD, playerB, "Swamp", 2);
|
||||||
|
|
||||||
|
// turn 2
|
||||||
|
|
||||||
|
// B draw and exile valki
|
||||||
|
checkExileCount("exiled", 2, PhaseStep.PRECOMBAT_MAIN, playerB, "Valki, God of Lies", 1);
|
||||||
|
checkPlayableAbility("exiled", 2, PhaseStep.PRECOMBAT_MAIN, playerB, "Cast Valki, God of Lies", true);
|
||||||
|
|
||||||
|
// cast valki
|
||||||
|
castSpell(2, PhaseStep.POSTCOMBAT_MAIN, playerB, "Valki, God of Lies");
|
||||||
|
setChoice(playerB, TestPlayer.CHOICE_SKIP);
|
||||||
|
|
||||||
|
setStrictChooseMode(true);
|
||||||
|
setStopAt(2, PhaseStep.END_TURN);
|
||||||
|
execute();
|
||||||
|
assertAllCommandsUsed();
|
||||||
|
|
||||||
|
assertPermanentCount(playerB, "Valki, God of Lies", 1);
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in a new issue