From 20c8c1a9c9e6e778aeee6437d1313f17571fc411 Mon Sep 17 00:00:00 2001 From: LevelX2 Date: Sun, 16 Jul 2017 15:58:50 +0200 Subject: [PATCH] * Fixed that Persist did not working with Hapatra, Vizier of Poisons and Obelisk Spider (fixes #3679). --- Mage.Sets/src/mage/cards/k/KitchenFinks.java | 6 ++-- .../AddingCountersToPermanentsTest.java | 32 +++++++++++++++++++ Mage/src/main/java/mage/cards/CardImpl.java | 14 ++++---- 3 files changed, 42 insertions(+), 10 deletions(-) diff --git a/Mage.Sets/src/mage/cards/k/KitchenFinks.java b/Mage.Sets/src/mage/cards/k/KitchenFinks.java index b7a3309b3ee..1ba1766963a 100644 --- a/Mage.Sets/src/mage/cards/k/KitchenFinks.java +++ b/Mage.Sets/src/mage/cards/k/KitchenFinks.java @@ -28,13 +28,13 @@ package mage.cards.k; import java.util.UUID; -import mage.constants.CardType; import mage.MageInt; import mage.abilities.common.EntersBattlefieldTriggeredAbility; import mage.abilities.effects.common.GainLifeEffect; import mage.abilities.keyword.PersistAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; +import mage.constants.CardType; /** * @@ -43,7 +43,7 @@ import mage.cards.CardSetInfo; public class KitchenFinks extends CardImpl { public KitchenFinks(UUID ownerId, CardSetInfo setInfo) { - super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G/W}{G/W}"); + super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{G/W}{G/W}"); this.subtype.add("Ouphe"); this.power = new MageInt(3); @@ -51,7 +51,7 @@ public class KitchenFinks extends CardImpl { // When Kitchen Finks enters the battlefield, you gain 2 life. this.addAbility(new EntersBattlefieldTriggeredAbility(new GainLifeEffect(2))); - // Persist + // Persist (When this creature dies, if it had no -1/-1 counters on it, return it to the battlefield under its owner's control with a -1/-1 counter on it.) this.addAbility(new PersistAbility()); } diff --git a/Mage.Tests/src/test/java/org/mage/test/cards/abilities/oneshot/counter/AddingCountersToPermanentsTest.java b/Mage.Tests/src/test/java/org/mage/test/cards/abilities/oneshot/counter/AddingCountersToPermanentsTest.java index 5dd20d068df..50d5872475f 100644 --- a/Mage.Tests/src/test/java/org/mage/test/cards/abilities/oneshot/counter/AddingCountersToPermanentsTest.java +++ b/Mage.Tests/src/test/java/org/mage/test/cards/abilities/oneshot/counter/AddingCountersToPermanentsTest.java @@ -153,4 +153,36 @@ public class AddingCountersToPermanentsTest extends CardTestPlayerBase { assertPowerToughness(playerB, "Silvercoat Lion", 2, 2); } + + /** + * Considering rule 121.6 Persist is not working with Hapatra, Vizier of + * Poisons and Obelisk Spider. Hapatra and Obelisk Spider do not trigger + * their second abilities when Kitchen Finks returns with -1/-1 counter. + */ + @Test + public void HapatraVizierOfPoisons() { + + // Whenever Hapatra, Vizier of Poisons deals combat damage to a player, you may put a -1/-1 counter on target creature. + // Whenever you put one or more -1/-1 counters on a creature, create a 1/1 green Snake creature token with deathtouch. + addCard(Zone.BATTLEFIELD, playerA, "Hapatra, Vizier of Poisons", 1); + + // When Kitchen Finks enters the battlefield, you gain 2 life. + // Persist (When this creature dies, if it had no -1/-1 counters on it, return it to the battlefield under its owner's control with a -1/-1 counter on it.) + addCard(Zone.BATTLEFIELD, playerA, "Kitchen Finks", 1); // Creature 3/2 + + addCard(Zone.HAND, playerB, "Lightning Bolt"); + addCard(Zone.BATTLEFIELD, playerB, "Mountain"); + + castSpell(1, PhaseStep.PRECOMBAT_MAIN, playerB, "Lightning Bolt", "Kitchen Finks"); + + setStopAt(1, PhaseStep.BEGIN_COMBAT); + execute(); + + assertGraveyardCount(playerB, "Lightning Bolt", 1); + + assertPowerToughness(playerA, "Kitchen Finks", 2, 1); + + assertPermanentCount(playerA, "Snake", 1); + + } } diff --git a/Mage/src/main/java/mage/cards/CardImpl.java b/Mage/src/main/java/mage/cards/CardImpl.java index 8248c1bb1bc..9f18f5371d6 100644 --- a/Mage/src/main/java/mage/cards/CardImpl.java +++ b/Mage/src/main/java/mage/cards/CardImpl.java @@ -27,6 +27,11 @@ */ package mage.cards; +import java.lang.reflect.Constructor; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.UUID; import mage.MageObject; import mage.MageObjectImpl; import mage.Mana; @@ -47,12 +52,6 @@ import mage.util.GameLog; import mage.watchers.Watcher; import org.apache.log4j.Logger; -import java.lang.reflect.Constructor; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; -import java.util.UUID; - public abstract class CardImpl extends MageObjectImpl implements Card { private static final long serialVersionUID = 1L; @@ -281,6 +280,7 @@ public abstract class CardImpl extends MageObjectImpl implements Card { /** * Public in order to support adding abilities to SplitCardHalf's + * * @param ability */ public void addAbility(Ability ability) { @@ -624,7 +624,7 @@ public abstract class CardImpl extends MageObjectImpl implements Card { @Override public boolean addCounters(Counter counter, Ability source, Game game, List appliedEffects) { boolean returnCode = true; - UUID sourceId = (source == null ? null : source.getSourceId()); + UUID sourceId = (source == null ? getId() : source.getSourceId()); GameEvent countersEvent = GameEvent.getEvent(GameEvent.EventType.ADD_COUNTERS, objectId, sourceId, getControllerOrOwner(), counter.getName(), counter.getCount()); countersEvent.setAppliedEffects(appliedEffects); if (!game.replaceEvent(countersEvent)) {