* Excavation - Fixed that always the controller drew the card instead of correctly the player that activated the ability.

This commit is contained in:
LevelX2 2016-11-22 17:14:58 +01:00
parent d4493ac5f0
commit c9acb11af1

View file

@ -28,17 +28,22 @@
package mage.cards.e;
import java.util.UUID;
import mage.abilities.Ability;
import mage.abilities.ActivatedAbilityImpl;
import mage.abilities.common.SimpleActivatedAbility;
import mage.abilities.costs.common.SacrificeTargetCost;
import mage.abilities.costs.mana.ManaCostsImpl;
import mage.abilities.effects.OneShotEffect;
import mage.abilities.effects.common.DrawCardSourceControllerEffect;
import mage.abilities.effects.common.InfoEffect;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.Outcome;
import mage.constants.TargetController;
import mage.constants.Zone;
import mage.filter.common.FilterControlledLandPermanent;
import mage.game.Game;
import mage.players.Player;
import mage.target.common.TargetControlledPermanent;
/**
@ -48,13 +53,12 @@ import mage.target.common.TargetControlledPermanent;
public class Excavation extends CardImpl {
public Excavation(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{U}");
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{1}{U}");
// {1}, Sacrifice a land: Draw a card. Any player may activate this ability.
SimpleActivatedAbility ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DrawCardSourceControllerEffect(1), new ManaCostsImpl("{1}"));
ability.addCost(new SacrificeTargetCost(new TargetControlledPermanent(new FilterControlledLandPermanent("a land"))));
ability.setMayActivate(TargetController.ANY);
ability.addEffect(new InfoEffect("Any player may activate this ability"));
this.addAbility(ability);
}
@ -67,3 +71,33 @@ public class Excavation extends CardImpl {
return new Excavation(this);
}
}
class ExcavationEffect extends OneShotEffect {
public ExcavationEffect() {
super(Outcome.DrawCard);
this.staticText = "Draw a card. Any player may activate this ability";
}
public ExcavationEffect(final ExcavationEffect effect) {
super(effect);
}
@Override
public ExcavationEffect copy() {
return new ExcavationEffect(this);
}
@Override
public boolean apply(Game game, Ability source) {
if (source instanceof ActivatedAbilityImpl) {
Player activator = game.getPlayer(((ActivatedAbilityImpl) source).getActivatorId());
if (activator != null) {
activator.drawCards(1, game);
return true;
}
}
return false;
}
}