Fixed Extraplanar Lens implementation (#3510)

This commit is contained in:
Evan Kranzler 2017-08-26 20:20:02 -04:00
parent 22d253acd7
commit a8105e1c60

View file

@ -37,16 +37,19 @@ import mage.abilities.mana.TriggeredManaAbility;
import mage.cards.Card; import mage.cards.Card;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.AbilityWord;
import mage.constants.CardType; import mage.constants.CardType;
import mage.constants.Outcome; import mage.constants.Outcome;
import mage.constants.TargetController;
import mage.constants.Zone; import mage.constants.Zone;
import mage.filter.common.FilterControlledLandPermanent; import mage.filter.common.FilterLandPermanent;
import mage.filter.predicate.permanent.ControllerPredicate;
import mage.game.Game; import mage.game.Game;
import mage.game.events.GameEvent; import mage.game.events.GameEvent;
import mage.game.events.ManaEvent; import mage.game.events.ManaEvent;
import mage.game.permanent.Permanent; import mage.game.permanent.Permanent;
import mage.players.Player; import mage.players.Player;
import mage.target.TargetPermanent; import mage.target.common.TargetLandPermanent;
import mage.target.targetpointer.FixedTarget; import mage.target.targetpointer.FixedTarget;
import mage.util.CardUtil; import mage.util.CardUtil;
@ -56,11 +59,20 @@ import mage.util.CardUtil;
*/ */
public class ExtraplanarLens extends CardImpl { public class ExtraplanarLens extends CardImpl {
private static final FilterLandPermanent filter = new FilterLandPermanent("land you control");
static {
filter.add(new ControllerPredicate(TargetController.YOU));
}
public ExtraplanarLens(UUID ownerId, CardSetInfo setInfo) { public ExtraplanarLens(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{3}"); super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{3}");
// Imprint - When Extraplanar Lens enters the battlefield, you may exile target land you control. // Imprint - When Extraplanar Lens enters the battlefield, you may exile target land you control.
this.addAbility(new EntersBattlefieldTriggeredAbility(new ExtraplanarLensImprintEffect(), true, "<i>Imprint - </i>")); Ability ability = new EntersBattlefieldTriggeredAbility(new ExtraplanarLensImprintEffect(), true);
ability.setAbilityWord(AbilityWord.IMPRINT);
ability.addTarget(new TargetLandPermanent(filter));
this.addAbility(ability);
// Whenever a land with the same name as the exiled card is tapped for mana, its controller adds one mana to his or her mana pool of any type that land produced. // Whenever a land with the same name as the exiled card is tapped for mana, its controller adds one mana to his or her mana pool of any type that land produced.
this.addAbility(new ExtraplanarLensTriggeredAbility()); this.addAbility(new ExtraplanarLensTriggeredAbility());
@ -79,8 +91,6 @@ public class ExtraplanarLens extends CardImpl {
class ExtraplanarLensImprintEffect extends OneShotEffect { class ExtraplanarLensImprintEffect extends OneShotEffect {
private static final FilterControlledLandPermanent filter = new FilterControlledLandPermanent();
public ExtraplanarLensImprintEffect() { public ExtraplanarLensImprintEffect() {
super(Outcome.Neutral); super(Outcome.Neutral);
staticText = "you may exile target land you control"; staticText = "you may exile target land you control";
@ -95,19 +105,13 @@ class ExtraplanarLensImprintEffect extends OneShotEffect {
Player controller = game.getPlayer(source.getControllerId()); Player controller = game.getPlayer(source.getControllerId());
Permanent extraplanarLens = game.getPermanentOrLKIBattlefield(source.getSourceId()); Permanent extraplanarLens = game.getPermanentOrLKIBattlefield(source.getSourceId());
if (controller != null) { if (controller != null) {
if (game.getBattlefield().countAll(filter, controller.getId(), game) > 0) { Permanent targetLand = game.getPermanent(source.getFirstTarget());
TargetPermanent target = new TargetPermanent(1, filter); if (targetLand != null) {
if (target.canChoose(source.getSourceId(), source.getControllerId(), game) targetLand.moveToExile(null, extraplanarLens.getName() + " (Imprint)", source.getSourceId(), game);
&& controller.choose(Outcome.Neutral, target, source.getSourceId(), game)) { extraplanarLens.imprint(targetLand.getId(), game);
Permanent targetLand = game.getPermanent(target.getFirstTarget()); extraplanarLens.addInfo("imprint", CardUtil.addToolTipMarkTags("[Imprinted card - " + targetLand.getLogName() + ']'), game);
if (targetLand != null) {
targetLand.moveToExile(null, extraplanarLens.getName() + " (Imprint)", source.getSourceId(), game);
extraplanarLens.imprint(targetLand.getId(), game);
extraplanarLens.addInfo("imprint", CardUtil.addToolTipMarkTags("[Imprinted card - " + targetLand.getLogName() + ']'), game);
}
}
return true;
} }
return true;
} }
return false; return false;
} }