mirror of
https://github.com/correl/mage.git
synced 2025-04-10 09:11:04 -09:00
* Vivien, Arkbow Ranger - Fixed target handling of +1 ability.
This commit is contained in:
parent
e91639a478
commit
2a0723b7cd
2 changed files with 90 additions and 6 deletions
Mage.Sets/src/mage/cards/v
Mage.Tests/src/test/java/org/mage/test/cards/planeswalker
|
@ -21,9 +21,7 @@ import mage.target.common.TargetCreatureOrPlaneswalker;
|
||||||
import mage.target.common.TargetCreaturePermanentAmount;
|
import mage.target.common.TargetCreaturePermanentAmount;
|
||||||
|
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
import mage.filter.common.FilterCreaturePermanent;
|
|
||||||
import mage.game.Game;
|
import mage.game.Game;
|
||||||
import mage.target.common.TargetCreaturePermanent;
|
|
||||||
import mage.target.targetadjustment.TargetAdjuster;
|
import mage.target.targetadjustment.TargetAdjuster;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -45,8 +43,12 @@ public final class VivienArkbowRanger extends CardImpl {
|
||||||
TrampleAbility.getInstance(), Duration.EndOfTurn,
|
TrampleAbility.getInstance(), Duration.EndOfTurn,
|
||||||
"They gain trample until end of turn"
|
"They gain trample until end of turn"
|
||||||
));
|
));
|
||||||
ability.addTarget(new TargetCreaturePermanent(0, 2, new FilterCreaturePermanent(), false));
|
TargetCreaturePermanentAmount target = new TargetCreaturePermanentAmount(2);
|
||||||
ability.setTargetAdjuster(VivienArkbowRangerAdjuster.instance);
|
target.setMinNumberOfTargets(0);
|
||||||
|
target.setMaxNumberOfTargets(2);
|
||||||
|
ability.addTarget(target);
|
||||||
|
|
||||||
|
// ability.setTargetAdjuster(VivienArkbowRangerAdjuster.instance);
|
||||||
this.addAbility(ability);
|
this.addAbility(ability);
|
||||||
|
|
||||||
// −3: Target creature you control deals damage equal to its power to target creature or planeswalker.
|
// −3: Target creature you control deals damage equal to its power to target creature or planeswalker.
|
||||||
|
@ -77,7 +79,7 @@ public final class VivienArkbowRanger extends CardImpl {
|
||||||
@Override
|
@Override
|
||||||
public void adjustTargets(Ability ability, Game game) {
|
public void adjustTargets(Ability ability, Game game) {
|
||||||
// if targets are available, switch over to a working target method
|
// if targets are available, switch over to a working target method
|
||||||
if (game.getBattlefield().getAllActivePermanents(new FilterCreaturePermanent(), game).size() > 0) {
|
if (game.getBattlefield().getAllActivePermanents(StaticFilters.FILTER_PERMANENT_CREATURE, game).size() > 0) {
|
||||||
ability.getTargets().clear();
|
ability.getTargets().clear();
|
||||||
ability.addTarget(new TargetCreaturePermanentAmount(2));
|
ability.addTarget(new TargetCreaturePermanentAmount(2));
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,6 +5,7 @@
|
||||||
*/
|
*/
|
||||||
package org.mage.test.cards.planeswalker;
|
package org.mage.test.cards.planeswalker;
|
||||||
|
|
||||||
|
import mage.abilities.keyword.TrampleAbility;
|
||||||
import mage.constants.PhaseStep;
|
import mage.constants.PhaseStep;
|
||||||
import mage.constants.Zone;
|
import mage.constants.Zone;
|
||||||
import mage.counters.CounterType;
|
import mage.counters.CounterType;
|
||||||
|
@ -18,7 +19,8 @@ import org.mage.test.serverside.base.CardTestPlayerBase;
|
||||||
public class VivienTest extends CardTestPlayerBase {
|
public class VivienTest extends CardTestPlayerBase {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void VivienArkbowRangerAbility1NoTargetsTest() {
|
public void testVivienArkbowRangerAbility1NoTargets() {
|
||||||
|
setStrictChooseMode(true);
|
||||||
// +1: Distribute two +1/+1 counters among up to two target creatures. They gain trample until end of turn.
|
// +1: Distribute two +1/+1 counters among up to two target creatures. They gain trample until end of turn.
|
||||||
// −3: Target creature you control deals damage equal to its power to target creature or planeswalker.
|
// −3: Target creature you control deals damage equal to its power to target creature or planeswalker.
|
||||||
// −5: You may choose a creature card you own from outside the game, reveal it, and put it into your hand.
|
// −5: You may choose a creature card you own from outside the game, reveal it, and put it into your hand.
|
||||||
|
@ -37,4 +39,84 @@ public class VivienTest extends CardTestPlayerBase {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testVivienArkbowRangerAbility1OnePossibleTarget() {
|
||||||
|
setStrictChooseMode(true);
|
||||||
|
// +1: Distribute two +1/+1 counters among up to two target creatures. They gain trample until end of turn.
|
||||||
|
// −3: Target creature you control deals damage equal to its power to target creature or planeswalker.
|
||||||
|
// −5: You may choose a creature card you own from outside the game, reveal it, and put it into your hand.
|
||||||
|
addCard(Zone.HAND, playerA, "Vivien, Arkbow Ranger"); // Planeswalker {1}{G}{G}{G} - starts with 4 Loyality counters
|
||||||
|
addCard(Zone.BATTLEFIELD, playerA, "Forest", 4);
|
||||||
|
|
||||||
|
addCard(Zone.BATTLEFIELD, playerB, "Silvercoat Lion");
|
||||||
|
|
||||||
|
castSpell(1, PhaseStep.PRECOMBAT_MAIN, playerA, "Vivien, Arkbow Ranger");
|
||||||
|
|
||||||
|
activateAbility(1, PhaseStep.PRECOMBAT_MAIN, playerA, "+1: Distribute");
|
||||||
|
|
||||||
|
setStopAt(1, PhaseStep.BEGIN_COMBAT);
|
||||||
|
execute();
|
||||||
|
|
||||||
|
assertPermanentCount(playerA, "Vivien, Arkbow Ranger", 1);
|
||||||
|
assertCounterCount("Vivien, Arkbow Ranger", CounterType.LOYALTY, 5);
|
||||||
|
|
||||||
|
assertPowerToughness(playerB, "Silvercoat Lion", 2, 2);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testVivienArkbowRangerAbility1OneOwnPossibleTarget() {
|
||||||
|
// +1: Distribute two +1/+1 counters among up to two target creatures. They gain trample until end of turn.
|
||||||
|
// −3: Target creature you control deals damage equal to its power to target creature or planeswalker.
|
||||||
|
// −5: You may choose a creature card you own from outside the game, reveal it, and put it into your hand.
|
||||||
|
addCard(Zone.HAND, playerA, "Vivien, Arkbow Ranger"); // Planeswalker {1}{G}{G}{G} - starts with 4 Loyality counters
|
||||||
|
addCard(Zone.BATTLEFIELD, playerA, "Forest", 4);
|
||||||
|
|
||||||
|
addCard(Zone.BATTLEFIELD, playerA, "Silvercoat Lion");
|
||||||
|
|
||||||
|
castSpell(1, PhaseStep.PRECOMBAT_MAIN, playerA, "Vivien, Arkbow Ranger");
|
||||||
|
|
||||||
|
activateAbility(1, PhaseStep.PRECOMBAT_MAIN, playerA, "+1: Distribute");
|
||||||
|
addTargetAmount(playerA, "Silvercoat Lion", 2);
|
||||||
|
|
||||||
|
setStopAt(1, PhaseStep.BEGIN_COMBAT);
|
||||||
|
execute();
|
||||||
|
|
||||||
|
assertPermanentCount(playerA, "Vivien, Arkbow Ranger", 1);
|
||||||
|
assertCounterCount("Vivien, Arkbow Ranger", CounterType.LOYALTY, 5);
|
||||||
|
|
||||||
|
assertPowerToughness(playerA, "Silvercoat Lion", 4, 4);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testVivienArkbowRangerAbility1TwoOwnPossibleTarget() {
|
||||||
|
// +1: Distribute two +1/+1 counters among up to two target creatures. They gain trample until end of turn.
|
||||||
|
// −3: Target creature you control deals damage equal to its power to target creature or planeswalker.
|
||||||
|
// −5: You may choose a creature card you own from outside the game, reveal it, and put it into your hand.
|
||||||
|
addCard(Zone.HAND, playerA, "Vivien, Arkbow Ranger"); // Planeswalker {1}{G}{G}{G} - starts with 4 Loyality counters
|
||||||
|
addCard(Zone.BATTLEFIELD, playerA, "Forest", 4);
|
||||||
|
|
||||||
|
addCard(Zone.BATTLEFIELD, playerA, "Silvercoat Lion");
|
||||||
|
addCard(Zone.BATTLEFIELD, playerA, "Pillarfield Ox");
|
||||||
|
|
||||||
|
castSpell(1, PhaseStep.PRECOMBAT_MAIN, playerA, "Vivien, Arkbow Ranger");
|
||||||
|
|
||||||
|
activateAbility(1, PhaseStep.PRECOMBAT_MAIN, playerA, "+1: Distribute");
|
||||||
|
addTargetAmount(playerA, "Silvercoat Lion", 1);
|
||||||
|
addTargetAmount(playerA, "Pillarfield Ox", 1);
|
||||||
|
|
||||||
|
setStopAt(1, PhaseStep.BEGIN_COMBAT);
|
||||||
|
execute();
|
||||||
|
|
||||||
|
assertPermanentCount(playerA, "Vivien, Arkbow Ranger", 1);
|
||||||
|
assertCounterCount("Vivien, Arkbow Ranger", CounterType.LOYALTY, 5);
|
||||||
|
|
||||||
|
assertPowerToughness(playerA, "Silvercoat Lion", 3, 3);
|
||||||
|
assertPowerToughness(playerA, "Pillarfield Ox", 3, 5);
|
||||||
|
assertAbility(playerA, "Silvercoat Lion", TrampleAbility.getInstance(), true);
|
||||||
|
assertAbility(playerA, "Pillarfield Ox", TrampleAbility.getInstance(), true);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue