* 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; package mage.cards.e;
import java.util.UUID; import java.util.UUID;
import mage.abilities.Ability;
import mage.abilities.ActivatedAbilityImpl;
import mage.abilities.common.SimpleActivatedAbility; import mage.abilities.common.SimpleActivatedAbility;
import mage.abilities.costs.common.SacrificeTargetCost; import mage.abilities.costs.common.SacrificeTargetCost;
import mage.abilities.costs.mana.ManaCostsImpl; import mage.abilities.costs.mana.ManaCostsImpl;
import mage.abilities.effects.OneShotEffect;
import mage.abilities.effects.common.DrawCardSourceControllerEffect; import mage.abilities.effects.common.DrawCardSourceControllerEffect;
import mage.abilities.effects.common.InfoEffect;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.CardType; import mage.constants.CardType;
import mage.constants.Outcome;
import mage.constants.TargetController; import mage.constants.TargetController;
import mage.constants.Zone; import mage.constants.Zone;
import mage.filter.common.FilterControlledLandPermanent; import mage.filter.common.FilterControlledLandPermanent;
import mage.game.Game;
import mage.players.Player;
import mage.target.common.TargetControlledPermanent; import mage.target.common.TargetControlledPermanent;
/** /**
@ -54,7 +59,6 @@ public class Excavation extends CardImpl {
SimpleActivatedAbility ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DrawCardSourceControllerEffect(1), new ManaCostsImpl("{1}")); SimpleActivatedAbility ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DrawCardSourceControllerEffect(1), new ManaCostsImpl("{1}"));
ability.addCost(new SacrificeTargetCost(new TargetControlledPermanent(new FilterControlledLandPermanent("a land")))); ability.addCost(new SacrificeTargetCost(new TargetControlledPermanent(new FilterControlledLandPermanent("a land"))));
ability.setMayActivate(TargetController.ANY); ability.setMayActivate(TargetController.ANY);
ability.addEffect(new InfoEffect("Any player may activate this ability"));
this.addAbility(ability); this.addAbility(ability);
} }
@ -67,3 +71,33 @@ public class Excavation extends CardImpl {
return new Excavation(this); 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;
}
}