From 8693e77e322e53214dfc49e2c8e0ce73bd5be5b1 Mon Sep 17 00:00:00 2001 From: Evan Kranzler Date: Tue, 27 Jul 2021 08:49:20 -0400 Subject: [PATCH] [M21] reworked implementation of Terror of the Peaks (fixes #8057) --- .../src/mage/cards/t/TerrorOfThePeaks.java | 50 ++++++++----------- 1 file changed, 20 insertions(+), 30 deletions(-) diff --git a/Mage.Sets/src/mage/cards/t/TerrorOfThePeaks.java b/Mage.Sets/src/mage/cards/t/TerrorOfThePeaks.java index a27527b2a2a..fa013326bdd 100644 --- a/Mage.Sets/src/mage/cards/t/TerrorOfThePeaks.java +++ b/Mage.Sets/src/mage/cards/t/TerrorOfThePeaks.java @@ -6,6 +6,8 @@ import mage.abilities.SpellAbility; import mage.abilities.common.EntersBattlefieldAllTriggeredAbility; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.costs.common.PayLifeCost; +import mage.abilities.dynamicvalue.DynamicValue; +import mage.abilities.effects.Effect; import mage.abilities.effects.common.DamageTargetEffect; import mage.abilities.effects.common.cost.CostModificationEffectImpl; import mage.abilities.keyword.FlyingAbility; @@ -14,7 +16,6 @@ import mage.cards.CardSetInfo; import mage.constants.*; import mage.filter.StaticFilters; import mage.game.Game; -import mage.game.events.GameEvent; import mage.game.permanent.Permanent; import mage.game.stack.Spell; import mage.target.common.TargetAnyTarget; @@ -43,7 +44,14 @@ public final class TerrorOfThePeaks extends CardImpl { this.addAbility(new SimpleStaticAbility(new TerrorOfThePeaksCostIncreaseEffect())); // Whenever another creature enters the battlefield under your control, Terror of the Peaks deals damage equal to that creature's power to any target. - this.addAbility(new TerrorOfThePeaksTriggeredAbility()); + Ability ability = new EntersBattlefieldAllTriggeredAbility( + new DamageTargetEffect(TerrorOfThePeaksValue.instance), + StaticFilters.FILTER_CONTROLLED_ANOTHER_CREATURE, + "Whenever another creature enters the battlefield under your control, " + + "{this} deals damage equal to that creature's power to any target." + ); + ability.addTarget(new TargetAnyTarget()); + this.addAbility(ability); } private TerrorOfThePeaks(final TerrorOfThePeaks card) { @@ -113,40 +121,22 @@ class TerrorOfThePeaksCostIncreaseEffect extends CostModificationEffectImpl { } } -class TerrorOfThePeaksTriggeredAbility extends EntersBattlefieldAllTriggeredAbility { +enum TerrorOfThePeaksValue implements DynamicValue { + instance; - TerrorOfThePeaksTriggeredAbility() { - super(null, StaticFilters.FILTER_CONTROLLED_ANOTHER_CREATURE); - } - - private TerrorOfThePeaksTriggeredAbility(final TerrorOfThePeaksTriggeredAbility ability) { - super(ability); + @Override + public int calculate(Game game, Ability sourceAbility, Effect effect) { + Permanent permanent = (Permanent) effect.getValue("permanentEnteringBattlefield"); + return permanent != null ? permanent.getPower().getValue() : 0; } @Override - public TerrorOfThePeaksTriggeredAbility copy() { - return new TerrorOfThePeaksTriggeredAbility(this); + public TerrorOfThePeaksValue copy() { + return this; } @Override - public boolean checkTrigger(GameEvent event, Game game) { - if (!super.checkTrigger(event, game)) { - return false; - } - Permanent permanent = game.getPermanent(event.getTargetId()); - if (permanent == null) { - return false; - } - this.getEffects().clear(); - this.getTargets().clear(); - this.addEffect(new DamageTargetEffect(permanent.getPower().getValue())); - this.addTarget(new TargetAnyTarget().withChooseHint("gets " + permanent.getPower().getValue() + " damage")); - return true; - } - - @Override - public String getRule() { - return "Whenever another creature enters the battlefield under your control, " + - "{this} deals damage equal to that creature's power to any target."; + public String getMessage() { + return ""; } }