diff --git a/Mage.Sets/src/mage/sets/dissension/MagewrightsStone.java b/Mage.Sets/src/mage/sets/dissension/MagewrightsStone.java index 345fd9b3df1..04be3109a54 100644 --- a/Mage.Sets/src/mage/sets/dissension/MagewrightsStone.java +++ b/Mage.Sets/src/mage/sets/dissension/MagewrightsStone.java @@ -28,17 +28,23 @@ package mage.sets.dissension; import java.util.UUID; +import mage.MageObject; +import mage.abilities.Abilities; import mage.abilities.Ability; +import mage.abilities.ActivatedAbilityImpl; import mage.abilities.common.SimpleActivatedAbility; +import mage.abilities.costs.Cost; import mage.abilities.costs.common.TapSourceCost; import mage.abilities.costs.mana.ManaCostsImpl; import mage.abilities.effects.common.UntapTargetEffect; +import mage.cards.Card; import mage.cards.CardImpl; import mage.constants.CardType; import mage.constants.Rarity; import mage.constants.Zone; import mage.filter.common.FilterCreaturePermanent; -import mage.filter.predicate.mageobject.AbilityPredicate; +import mage.filter.predicate.Predicate; +import mage.game.Game; import mage.target.common.TargetCreaturePermanent; /** @@ -50,7 +56,7 @@ public class MagewrightsStone extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature that has an ability with {T} in its cost"); static { - filter.add(new AbilityPredicate(SimpleActivatedAbility.class)); + filter.add(new HasAbilityWithTapSymbolPredicate()); } public MagewrightsStone(UUID ownerId) { @@ -73,3 +79,40 @@ public class MagewrightsStone extends CardImpl { return new MagewrightsStone(this); } } + +/** + * + * @author North + */ +class HasAbilityWithTapSymbolPredicate implements Predicate { + + public HasAbilityWithTapSymbolPredicate() { + + } + + @Override + public boolean apply(MageObject input, Game game) { + Abilities abilities; + if (input instanceof Card){ + abilities = ((Card)input).getAbilities(game); + } else { + abilities = input.getAbilities(); + } + + for (Ability ability : abilities) { + if((ability instanceof ActivatedAbilityImpl) && ability.getCosts().size() > 0){ + for (Cost cost : ability.getCosts()) { + if (cost instanceof TapSourceCost) { + return true; + } + } + } + } + return false; + } + + @Override + public String toString() { + return "Ability contains {T} symbol."; + } +} diff --git a/Mage.Sets/src/mage/sets/thedark/GoblinWizard.java b/Mage.Sets/src/mage/sets/thedark/GoblinWizard.java index 4cdf3a6dd54..93478b33642 100644 --- a/Mage.Sets/src/mage/sets/thedark/GoblinWizard.java +++ b/Mage.Sets/src/mage/sets/thedark/GoblinWizard.java @@ -56,9 +56,9 @@ import mage.target.TargetPermanent; */ public class GoblinWizard extends CardImpl { - private static final FilterPermanentCard filter = new FilterPermanentCard("a Goblin permanent card"); + private static final FilterPermanentCard filter = new FilterPermanentCard("Goblin"); private static final FilterCard protectionFilter = new FilterCard("white"); - private static final FilterPermanent goblinCard = new FilterPermanent("a Goblin permanent card"); + private static final FilterPermanent goblinCard = new FilterPermanent("Goblin"); static { filter.add(new SubtypePredicate("Goblin")); @@ -67,8 +67,7 @@ public class GoblinWizard extends CardImpl { } public GoblinWizard(UUID ownerId) { - //Can't find the card ID....? - super(ownerId, 66, "Goblin Wizard", Rarity.RARE, new CardType[]{CardType.CREATURE}, "{2}{R}{R}"); + super(ownerId, 68, "Goblin Wizard", Rarity.RARE, new CardType[]{CardType.CREATURE}, "{2}{R}{R}"); this.expansionSetCode = "DRK"; this.rarity = Rarity.RARE; @@ -99,4 +98,4 @@ public class GoblinWizard extends CardImpl { public GoblinWizard copy() { return new GoblinWizard(this); } -} \ No newline at end of file +} diff --git a/Mage/src/mage/filter/predicate/mageobject/AbilityPredicate.java b/Mage/src/mage/filter/predicate/mageobject/AbilityPredicate.java index 0835c04b638..42489015ab4 100644 --- a/Mage/src/mage/filter/predicate/mageobject/AbilityPredicate.java +++ b/Mage/src/mage/filter/predicate/mageobject/AbilityPredicate.java @@ -30,9 +30,6 @@ package mage.filter.predicate.mageobject; import mage.MageObject; import mage.abilities.Abilities; import mage.abilities.Ability; -import mage.abilities.ActivatedAbilityImpl; -import mage.abilities.costs.Cost; -import mage.abilities.costs.common.TapSourceCost; import mage.cards.Card; import mage.filter.predicate.Predicate; import mage.game.Game; @@ -60,19 +57,7 @@ public class AbilityPredicate implements Predicate { for (Ability ability : abilities) { if (abilityClass.equals(ability.getClass())) { - //Burseg Hack: Magewright's Stone [DIS] specifically looks for activated ability containing {T} - //As of 9/13/2015, no other AbilityPredicate is filtering for ActivatedAbilityImpl - //if (abilityClass.equals(SimpleActivatedAbility.class) && ability.getCosts().size() > 0){ - if((ability instanceof ActivatedAbilityImpl) && ability.getCosts().size() > 0){ - for (Cost cost : ability.getCosts()) { - if (cost instanceof TapSourceCost) { - return true; - } - } - return false; - } else { - return true; - } + return true; } } return false;