From 83135f347f4174ab91348ccdc656f0fe42983139 Mon Sep 17 00:00:00 2001 From: Oleg Agafonov Date: Tue, 30 Jun 2020 08:51:33 +0400 Subject: [PATCH] Spellwild Ouphe - fixed cost reduction effect (#6698) --- .../src/mage/cards/s/SpellwildOuphe.java | 71 ++++--------------- ...ostModificationThatTargetSourceEffect.java | 6 +- 2 files changed, 16 insertions(+), 61 deletions(-) diff --git a/Mage.Sets/src/mage/cards/s/SpellwildOuphe.java b/Mage.Sets/src/mage/cards/s/SpellwildOuphe.java index ac7dbe287ca..047ca525799 100644 --- a/Mage.Sets/src/mage/cards/s/SpellwildOuphe.java +++ b/Mage.Sets/src/mage/cards/s/SpellwildOuphe.java @@ -1,22 +1,19 @@ - package mage.cards.s; -import java.util.UUID; import mage.MageInt; -import mage.abilities.Ability; -import mage.abilities.Mode; -import mage.abilities.SpellAbility; import mage.abilities.common.SimpleStaticAbility; -import mage.abilities.effects.common.cost.CostModificationEffectImpl; +import mage.abilities.effects.common.cost.SpellsCostModificationThatTargetSourceEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.constants.*; -import mage.game.Game; -import mage.target.Target; -import mage.util.CardUtil; +import mage.constants.CardType; +import mage.constants.SubType; +import mage.constants.TargetController; +import mage.constants.Zone; +import mage.filter.FilterCard; + +import java.util.UUID; /** - * * @author LevelX2 & L_J */ public final class SpellwildOuphe extends CardImpl { @@ -27,8 +24,10 @@ public final class SpellwildOuphe extends CardImpl { this.power = new MageInt(1); this.toughness = new MageInt(3); - // Spells that target Elderwood Scion cost {2} less to cast. - this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new SpellwildOupheCostReductionEffect())); + // Spells that target Spellwild Ouphe cost {2} less to cast. + this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, + new SpellsCostModificationThatTargetSourceEffect(-2, new FilterCard("Spells"), TargetController.ANY)) + ); } public SpellwildOuphe(final SpellwildOuphe card) { @@ -39,48 +38,4 @@ public final class SpellwildOuphe extends CardImpl { public SpellwildOuphe copy() { return new SpellwildOuphe(this); } -} - -class SpellwildOupheCostReductionEffect extends CostModificationEffectImpl { - - private static final String effectText = "Spells that target {this} cost {2} less to cast"; - - SpellwildOupheCostReductionEffect() { - super(Duration.WhileOnBattlefield, Outcome.Benefit, CostModificationType.REDUCE_COST); - staticText = effectText; - } - - SpellwildOupheCostReductionEffect(SpellwildOupheCostReductionEffect effect) { - super(effect); - } - - @Override - public boolean apply(Game game, Ability source, Ability abilityToModify) { - SpellAbility spellAbility = (SpellAbility) abilityToModify; - CardUtil.adjustCost(spellAbility, 2); - return true; - } - - @Override - public boolean applies(Ability abilityToModify, Ability source, Game game) { - if (abilityToModify instanceof SpellAbility) { - for (UUID modeId : abilityToModify.getModes().getSelectedModes()) { - Mode mode = abilityToModify.getModes().get(modeId); - for (Target target : mode.getTargets()) { - for (UUID targetUUID : target.getTargets()) { - if (targetUUID.equals(source.getSourceId())) { - return true; - } - } - } - } - } - return false; - } - - @Override - public SpellwildOupheCostReductionEffect copy() { - return new SpellwildOupheCostReductionEffect(this); - } - -} +} \ No newline at end of file diff --git a/Mage/src/main/java/mage/abilities/effects/common/cost/SpellsCostModificationThatTargetSourceEffect.java b/Mage/src/main/java/mage/abilities/effects/common/cost/SpellsCostModificationThatTargetSourceEffect.java index de525432ba5..da1f412c2a7 100644 --- a/Mage/src/main/java/mage/abilities/effects/common/cost/SpellsCostModificationThatTargetSourceEffect.java +++ b/Mage/src/main/java/mage/abilities/effects/common/cost/SpellsCostModificationThatTargetSourceEffect.java @@ -46,16 +46,16 @@ public class SpellsCostModificationThatTargetSourceEffect extends CostModificati case ANY: break; case YOU: - sb.append(" you"); + sb.append(" you cast"); break; case OPPONENT: - sb.append(" your opponents"); + sb.append(" your opponents cast"); break; default: throw new IllegalArgumentException("Unsupported target controller " + this.targetController); } - sb.append(" cast that target ").append(this.targetName); + sb.append(" that target ").append(this.targetName); if (this.modificationAmount < 0) { sb.append(" cost {").append(-1 * this.modificationAmount).append("} less to cast"); } else {