mirror of
https://github.com/correl/mage.git
synced 2024-12-25 03:00:15 +00:00
Benthic Explorers - fixed that it doesn't allow to cast spells with opponent's mana (#6698);
This commit is contained in:
parent
e2792881d5
commit
7b57865071
3 changed files with 55 additions and 12 deletions
|
@ -21,6 +21,7 @@ import mage.game.permanent.Permanent;
|
|||
import mage.players.Player;
|
||||
import mage.target.common.TargetLandPermanent;
|
||||
import mage.util.CardUtil;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
|
@ -45,13 +46,12 @@ public final class BenthicExplorers extends CardImpl {
|
|||
this.power = new MageInt(2);
|
||||
this.toughness = new MageInt(4);
|
||||
|
||||
// {tap}, Untap a tapped land an opponent controls: Add one mana of any type that land could produce.
|
||||
// {T}, Untap a tapped land an opponent controls: Add one mana of any type that land could produce.
|
||||
Ability ability = new BenthicExplorersManaAbility();
|
||||
TargetLandPermanent targetOpponentLand = new TargetLandPermanent(filter);
|
||||
targetOpponentLand.setNotTarget(true); // not a target, it is chosen
|
||||
ability.addCost(new BenthicExplorersCost(targetOpponentLand));
|
||||
ability.addCost(new BenthicExplorersCost(
|
||||
new TargetLandPermanent(1, 1, filter, true)
|
||||
));
|
||||
this.addAbility(ability);
|
||||
|
||||
}
|
||||
|
||||
private BenthicExplorers(final BenthicExplorers card) {
|
||||
|
@ -136,7 +136,20 @@ class BenthicExplorersManaEffect extends ManaEffect {
|
|||
@Override
|
||||
public List<Mana> getNetMana(Game game, Ability source) {
|
||||
List<Mana> netManas = new ArrayList<>();
|
||||
Mana types = getManaTypes(game, source);
|
||||
|
||||
Mana types = new Mana();
|
||||
for (UUID opponentId : game.getOpponents(source.getControllerId())) {
|
||||
for (Permanent permanent : game.getBattlefield().getAllActivePermanents(opponentId)) {
|
||||
if (permanent.isLand() && permanent.isTapped()) {
|
||||
for (ActivatedManaAbilityImpl ability : permanent.getAbilities(game).getActivatedManaAbilities(Zone.BATTLEFIELD)) {
|
||||
for (Mana mana : ability.getNetMana(game)) {
|
||||
types.add(mana);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (types.getBlack() > 0) {
|
||||
netManas.add(new Mana(ColoredManaSymbol.B));
|
||||
}
|
||||
|
|
|
@ -1,7 +1,5 @@
|
|||
|
||||
package mage.cards.r;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.common.SimpleActivatedAbility;
|
||||
import mage.abilities.costs.common.TapSourceCost;
|
||||
|
@ -14,18 +12,19 @@ import mage.constants.CardType;
|
|||
import mage.constants.Zone;
|
||||
import mage.target.common.TargetLandPermanent;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author jonubuu
|
||||
*/
|
||||
public final class RishadanPort extends CardImpl {
|
||||
|
||||
public RishadanPort(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId,setInfo,new CardType[]{CardType.LAND},null);
|
||||
super(ownerId, setInfo, new CardType[]{CardType.LAND}, null);
|
||||
|
||||
// {tap}: Add {C}.
|
||||
// {T}: Add {C}.
|
||||
this.addAbility(new ColorlessManaAbility());
|
||||
// {1}, {tap}: Tap target land.
|
||||
// {1}, {T}: Tap target land.
|
||||
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new TapTargetEffect(), new GenericManaCost(1));
|
||||
ability.addCost(new TapSourceCost());
|
||||
ability.addTarget(new TargetLandPermanent());
|
||||
|
|
|
@ -182,4 +182,35 @@ public class CostReduceForEachTest extends CardTestPlayerBaseWithAIHelps {
|
|||
|
||||
assertGraveyardCount(playerA, "Shower of Coals", 1);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void test_BenthicExplorers_ManaAbilityFromOpponentCard() {
|
||||
// {T}, Untap a tapped land an opponent controls: Add one mana of any type that land could produce.
|
||||
addCard(Zone.BATTLEFIELD, playerA, "Benthic Explorers", 1);
|
||||
//
|
||||
addCard(Zone.HAND, playerA, "Balduvian Bears", 1); // {1}{G}
|
||||
addCard(Zone.BATTLEFIELD, playerA, "Swamp", 1);
|
||||
addCard(Zone.BATTLEFIELD, playerB, "Forest", 1); // give 1 mana
|
||||
//
|
||||
// {1}, {T}: Tap target land.
|
||||
addCard(Zone.BATTLEFIELD, playerA, "Rishadan Port", 1);
|
||||
addCard(Zone.BATTLEFIELD, playerA, "Swamp", 1);
|
||||
|
||||
// prepare tapped land
|
||||
activateAbility(1, PhaseStep.PRECOMBAT_MAIN, playerA, "{1}, {T}: Tap target land", "Forest");
|
||||
waitStackResolved(1, PhaseStep.PRECOMBAT_MAIN);
|
||||
checkPermanentTapped("must be tapped", 1, PhaseStep.PRECOMBAT_MAIN, playerA, playerB, "Forest", true, 1);
|
||||
|
||||
// cast with opponent's mana
|
||||
checkPlayableAbility("must play", 1, PhaseStep.PRECOMBAT_MAIN, playerA, "Cast Balduvian Bears", true);
|
||||
castSpell(1, PhaseStep.PRECOMBAT_MAIN, playerA, "Balduvian Bears");
|
||||
setChoice(playerA, "Forest"); // mana from tapped
|
||||
|
||||
setStrictChooseMode(true);
|
||||
setStopAt(1, PhaseStep.END_TURN);
|
||||
execute();
|
||||
assertAllCommandsUsed();
|
||||
|
||||
assertPermanentCount(playerA, "Balduvian Bears", 1);
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue