From 599c5cf742a68d4992348409c87032c6e53eeb2f Mon Sep 17 00:00:00 2001 From: Evan Kranzler Date: Tue, 21 Apr 2020 21:56:38 -0400 Subject: [PATCH] fixed Yidaro, Wandering Monster --- .../src/mage/cards/y/YidaroWanderingMonster.java | 14 +++++++++++--- .../abilities/common/CycleTriggeredAbility.java | 12 +++++------- 2 files changed, 16 insertions(+), 10 deletions(-) diff --git a/Mage.Sets/src/mage/cards/y/YidaroWanderingMonster.java b/Mage.Sets/src/mage/cards/y/YidaroWanderingMonster.java index cafb50bea42..62862becd01 100644 --- a/Mage.Sets/src/mage/cards/y/YidaroWanderingMonster.java +++ b/Mage.Sets/src/mage/cards/y/YidaroWanderingMonster.java @@ -4,6 +4,8 @@ import mage.MageInt; import mage.MageObjectReference; import mage.abilities.Ability; import mage.abilities.common.CycleTriggeredAbility; +import mage.abilities.costs.Cost; +import mage.abilities.costs.Costs; import mage.abilities.costs.common.CyclingDiscardCost; import mage.abilities.costs.mana.ManaCostsImpl; import mage.abilities.effects.OneShotEffect; @@ -48,7 +50,7 @@ public final class YidaroWanderingMonster extends CardImpl { this.addAbility(new CyclingAbility(new ManaCostsImpl("{1}{R}"))); // When you cycle Yidaro, Wandering Monster, shuffle it into your library from your graveyard. If you've cycled a card named Yidaro, Wandering Monster four or more times this game, put it onto the battlefield from your graveyard instead. - this.addAbility(new CycleTriggeredAbility(new YidaroWanderingMonsterEffect())); + this.addAbility(new CycleTriggeredAbility(new YidaroWanderingMonsterEffect()), new YidaroWanderingMonsterWatcher()); } private YidaroWanderingMonster(final YidaroWanderingMonster card) { @@ -85,8 +87,11 @@ class YidaroWanderingMonsterEffect extends OneShotEffect { if (player == null) { return false; } - MageObjectReference cycledCard = source - .getCosts() + Costs costs = (Costs) this.getValue("cycleCosts"); + if (costs == null) { + return false; + } + MageObjectReference cycledCard = costs .stream() .filter(CyclingDiscardCost.class::isInstance) .map(CyclingDiscardCost.class::cast) @@ -122,6 +127,9 @@ class YidaroWanderingMonsterWatcher extends Watcher { @Override public void watch(GameEvent event, Game game) { + if (event.getType() != GameEvent.EventType.ACTIVATED_ABILITY) { + return; + } StackObject object = game.getStack().getStackObject(event.getSourceId()); if (object == null || !(object.getStackAbility() instanceof CyclingAbility)) { return; diff --git a/Mage/src/main/java/mage/abilities/common/CycleTriggeredAbility.java b/Mage/src/main/java/mage/abilities/common/CycleTriggeredAbility.java index fabbf901df2..051b4914573 100644 --- a/Mage/src/main/java/mage/abilities/common/CycleTriggeredAbility.java +++ b/Mage/src/main/java/mage/abilities/common/CycleTriggeredAbility.java @@ -1,5 +1,3 @@ - - package mage.abilities.common; import mage.abilities.effects.Effect; @@ -10,7 +8,6 @@ import mage.game.events.GameEvent; import mage.game.stack.StackObject; /** - * * @author Plopman */ public class CycleTriggeredAbility extends ZoneChangeTriggeredAbility { @@ -26,7 +23,7 @@ public class CycleTriggeredAbility extends ZoneChangeTriggeredAbility { public CycleTriggeredAbility(CycleTriggeredAbility ability) { super(ability); } - + @Override public boolean checkEventType(GameEvent event, Game game) { return event.getType() == GameEvent.EventType.ACTIVATED_ABILITY; @@ -34,10 +31,11 @@ public class CycleTriggeredAbility extends ZoneChangeTriggeredAbility { @Override public boolean checkTrigger(GameEvent event, Game game) { - if(event.getSourceId().equals(this.getSourceId())) { + if (event.getSourceId().equals(this.getSourceId())) { StackObject object = game.getStack().getStackObject(event.getSourceId()); - if(object != null && object.getStackAbility() instanceof CyclingAbility){ - return true; + if (object != null && object.getStackAbility() instanceof CyclingAbility) { + this.getEffects().setValue("cycleCosts", object.getStackAbility().getCosts()); + return true; } } return false;