Merge remote-tracking branch 'magefree/master'

This commit is contained in:
Samuel Sandeen 2016-07-24 11:53:11 -04:00
commit 05d88b46dd
4 changed files with 69 additions and 12 deletions

View file

@ -88,9 +88,9 @@ class PermeatingMassEffect extends OneShotEffect {
public boolean apply(Game game, Ability ability) { public boolean apply(Game game, Ability ability) {
Permanent copyTo = game.getPermanentOrLKIBattlefield(getTargetPointer().getFirst(game, ability)); Permanent copyTo = game.getPermanentOrLKIBattlefield(getTargetPointer().getFirst(game, ability));
if (copyTo != null) { if (copyTo != null) {
Permanent copyFrom = game.getPermanent(ability.getSourceId()); Permanent copyFrom = (Permanent) ability.getSourceObject(game);
if (copyFrom != null) { if (copyFrom != null) {
game.copyPermanent(Duration.WhileOnBattlefield, copyFrom, copyTo.getId(), ability, new EmptyApplyToPermanent()); game.copyPermanent(Duration.Custom, copyFrom, copyTo.getId(), ability, new EmptyApplyToPermanent());
} }
} }
return true; return true;

View file

@ -108,7 +108,7 @@ class TreeOfPerditionEffect extends OneShotEffect {
return false; return false;
} }
opponent.setLife(amount, game); opponent.setLife(amount, game);
game.addEffect(new SetPowerToughnessSourceEffect(Integer.MIN_VALUE, life, Duration.WhileOnBattlefield, SubLayer.SetPT_7b), source); game.addEffect(new SetPowerToughnessSourceEffect(Integer.MIN_VALUE, life, Duration.Custom, SubLayer.SetPT_7b), source);
return true; return true;
} }
} }

View file

@ -0,0 +1,58 @@
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package org.mage.test.cards.replacement;
import mage.constants.PhaseStep;
import mage.constants.Zone;
import org.junit.Test;
import org.mage.test.serverside.base.CardTestPlayerBase;
/**
*
* @author escplan9 (Derek Monturo - dmontur1 at gmail dot com)
*/
public class DiscardEffectsTest extends CardTestPlayerBase {
@Test
public void testOpponentDiscardsLoxodonSmiter() {
addCard(Zone.HAND, playerA, "Thoughtseize"); // {B} target player, discard non-land card, lose two life.
addCard(Zone.BATTLEFIELD, playerA, "Swamp");
// Loxodon Smiter can't be countered.
// If a spell or ability an opponent controls causes you to discard Loxodon Smiter, put it onto the battlefield instead of putting it into your graveyard.
addCard(Zone.HAND, playerB, "Loxodon Smiter");
castSpell(1, PhaseStep.PRECOMBAT_MAIN, playerA, "Thoughtseize");
addTarget(playerA, playerB);
setChoice(playerA, "Loxodon Smiter");
setStopAt(1, PhaseStep.BEGIN_COMBAT);
execute();
assertLife(playerA, 18);
assertGraveyardCount(playerA, "Thoughtseize", 1);
assertGraveyardCount(playerB, "Loxodon Smiter", 0);
assertPermanentCount(playerB, "Loxodon Smiter", 1);
}
@Test
public void testOwnerDiscardsOwnLoxodonSmiter() {
// Loxodon Smiter can't be countered.
// If a spell or ability an opponent controls causes you to discard Loxodon Smiter, put it onto the battlefield instead of putting it into your graveyard.
addCard(Zone.HAND, playerA, "Loxodon Smiter");
addCard(Zone.HAND, playerA, "Sift"); // {3}{U} Sorcery - draw 3 discard 1
addCard(Zone.BATTLEFIELD, playerA, "Island", 4);
castSpell(1, PhaseStep.PRECOMBAT_MAIN, playerA, "Sift");
setChoice(playerA, "Loxodon Smiter");
setStopAt(1, PhaseStep.BEGIN_COMBAT);
execute();
assertGraveyardCount(playerA, "Sift", 1);
assertGraveyardCount(playerA, "Loxodon Smiter", 1);
assertPermanentCount(playerA, "Loxodon Smiter", 0);
}
}

View file

@ -7,7 +7,6 @@ package org.mage.test.cards.single.emn;
import mage.constants.PhaseStep; import mage.constants.PhaseStep;
import mage.constants.Zone; import mage.constants.Zone;
import mage.game.permanent.Permanent;
import org.junit.Test; import org.junit.Test;
import org.mage.test.serverside.base.CardTestPlayerBase; import org.mage.test.serverside.base.CardTestPlayerBase;
@ -16,24 +15,24 @@ import org.mage.test.serverside.base.CardTestPlayerBase;
* @author escplan9 (Derek Monturo - dmontur1 at gmail dot com) * @author escplan9 (Derek Monturo - dmontur1 at gmail dot com)
*/ */
public class PermeatingMassTest extends CardTestPlayerBase { public class PermeatingMassTest extends CardTestPlayerBase {
@Test @Test
public void testWhenDiesInCombatMakesCopyStill() { public void testWhenDiesInCombatMakesCopyStill() {
addCard(Zone.BATTLEFIELD, playerA, "Hill Giant"); // 3/3 addCard(Zone.BATTLEFIELD, playerA, "Hill Giant"); // 3/3
// Whenever Permeating Mass deals combat damage to a creature, that creature becomes a copy of Permeating Mass. // Whenever Permeating Mass deals combat damage to a creature, that creature becomes a copy of Permeating Mass.
addCard(Zone.BATTLEFIELD, playerB, "Permeating Mass"); // 1/3 addCard(Zone.BATTLEFIELD, playerB, "Permeating Mass"); // 1/3
attack(1, playerA, "Hill Giant"); attack(1, playerA, "Hill Giant");
block(1, playerB, "Permeating Mass", "Hill Giant"); block(1, playerB, "Permeating Mass", "Hill Giant");
setStopAt(1, PhaseStep.END_COMBAT); setStopAt(1, PhaseStep.END_COMBAT);
execute(); execute();
assertLife(playerB, 20); assertLife(playerB, 20);
assertGraveyardCount(playerB, "Permeating Mass", 1); assertGraveyardCount(playerB, "Permeating Mass", 1);
Permanent hilly = getPermanent("Hill Giant", playerA); assertPermanentCount(playerA, "Permeating Mass", 1);
assertPowerToughness(playerA, "Hill Giant", 1, 3); assertPowerToughness(playerA, "Permeating Mass", 1, 3);
} }
} }