From c9acb11af1c43b1e042ae407f00c9371c78f9f55 Mon Sep 17 00:00:00 2001 From: LevelX2 Date: Tue, 22 Nov 2016 17:14:58 +0100 Subject: [PATCH] * Excavation - Fixed that always the controller drew the card instead of correctly the player that activated the ability. --- Mage.Sets/src/mage/cards/e/Excavation.java | 40 ++++++++++++++++++++-- 1 file changed, 37 insertions(+), 3 deletions(-) diff --git a/Mage.Sets/src/mage/cards/e/Excavation.java b/Mage.Sets/src/mage/cards/e/Excavation.java index b1a1b6fc291..64548bb255a 100644 --- a/Mage.Sets/src/mage/cards/e/Excavation.java +++ b/Mage.Sets/src/mage/cards/e/Excavation.java @@ -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; + } +}