From 6d171991295748f5b2be7e88d00ac290f4c0d7d0 Mon Sep 17 00:00:00 2001 From: LevelX2 Date: Thu, 28 Dec 2017 15:57:31 +0100 Subject: [PATCH] * Toxin Sliver - Fixed that the damaged creature was not destroyed. --- Mage.Sets/src/mage/cards/t/ToxinSliver.java | 8 ++--- .../cards/triggers/ZurTheEnchanterTest.java | 2 +- ...sDamageToACreatureAllTriggeredAbility.java | 33 +++++++++++++++---- .../java/mage/constants/SetTargetPointer.java | 8 ++++- 4 files changed, 39 insertions(+), 12 deletions(-) diff --git a/Mage.Sets/src/mage/cards/t/ToxinSliver.java b/Mage.Sets/src/mage/cards/t/ToxinSliver.java index 36cfe08f38b..a8259c7ea57 100644 --- a/Mage.Sets/src/mage/cards/t/ToxinSliver.java +++ b/Mage.Sets/src/mage/cards/t/ToxinSliver.java @@ -45,7 +45,7 @@ import mage.filter.common.FilterCreaturePermanent; public class ToxinSliver extends CardImpl { public ToxinSliver(UUID ownerId, CardSetInfo setInfo) { - super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{B}"); + super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{B}"); this.subtype.add(SubType.SLIVER); this.power = new MageInt(3); @@ -53,9 +53,9 @@ public class ToxinSliver extends CardImpl { // Whenever a Sliver deals combat damage to a creature, destroy that creature. It can't be regenerated. this.addAbility(new DealsDamageToACreatureAllTriggeredAbility( - new DestroyTargetEffect(true), false, - new FilterCreaturePermanent(SubType.SLIVER,"a Sliver"), - SetTargetPointer.PERMANENT, true)); + new DestroyTargetEffect(true), false, + new FilterCreaturePermanent(SubType.SLIVER, "a Sliver"), + SetTargetPointer.PERMANENT_TARGET, true)); } diff --git a/Mage.Tests/src/test/java/org/mage/test/cards/triggers/ZurTheEnchanterTest.java b/Mage.Tests/src/test/java/org/mage/test/cards/triggers/ZurTheEnchanterTest.java index d5462cb059e..b291d73332e 100644 --- a/Mage.Tests/src/test/java/org/mage/test/cards/triggers/ZurTheEnchanterTest.java +++ b/Mage.Tests/src/test/java/org/mage/test/cards/triggers/ZurTheEnchanterTest.java @@ -66,7 +66,7 @@ public class ZurTheEnchanterTest extends CardTestPlayerBase { addCard(Zone.HAND, playerB, "Diplomatic Immunity"); // {1}{U} // Enchant creature // Enchanted creature gets +1/+1 for each card in your hand. - addCard(Zone.LIBRARY, playerB, "Empyrial Armor"); + addCard(Zone.LIBRARY, playerB, "Empyrial Armor", 2); castSpell(2, PhaseStep.PRECOMBAT_MAIN, playerB, "Diplomatic Immunity", "Zur the Enchanter"); diff --git a/Mage/src/main/java/mage/abilities/common/DealsDamageToACreatureAllTriggeredAbility.java b/Mage/src/main/java/mage/abilities/common/DealsDamageToACreatureAllTriggeredAbility.java index ee6215d7396..87f28e4dfc5 100644 --- a/Mage/src/main/java/mage/abilities/common/DealsDamageToACreatureAllTriggeredAbility.java +++ b/Mage/src/main/java/mage/abilities/common/DealsDamageToACreatureAllTriggeredAbility.java @@ -19,14 +19,29 @@ import mage.target.targetpointer.FixedTarget; /** * - * @author Ludwig.Hirth + * @author LevelX2 */ public class DealsDamageToACreatureAllTriggeredAbility extends TriggeredAbilityImpl { private final boolean combatDamageOnly; private final FilterPermanent filterPermanent; private final SetTargetPointer setTargetPointer; - + + /** + * This ability works only for permanents doing damage. + * + * @param effect + * @param optional + * @param filterPermanent The filter that restricts which permanets have to + * trigger + * @param setTargetPointer The target to be set to target pointer of the + * effect.
+ * - PLAYER = player controlling the damage source.
+ * - PERMANENT = source permanent.
+ * - PERMANENT_TARGET = damaged creature. + * @param combatDamageOnly The flag to determine if only combat damage has + * to trigger + */ public DealsDamageToACreatureAllTriggeredAbility(Effect effect, boolean optional, FilterPermanent filterPermanent, SetTargetPointer setTargetPointer, boolean combatDamageOnly) { super(Zone.BATTLEFIELD, effect, optional); this.combatDamageOnly = combatDamageOnly; @@ -64,7 +79,13 @@ public class DealsDamageToACreatureAllTriggeredAbility extends TriggeredAbilityI effect.setTargetPointer(new FixedTarget(permanent.getControllerId())); break; case PERMANENT: - effect.setTargetPointer(new FixedTarget(permanent.getId(), permanent.getZoneChangeCounter(game))); + effect.setTargetPointer(new FixedTarget(permanent, game)); + break; + case PERMANENT_TARGET: + Permanent permanent_target = game.getPermanentOrLKIBattlefield(event.getTargetId()); + if (permanent_target != null) { + effect.setTargetPointer(new FixedTarget(permanent_target, game)); + } break; } @@ -77,7 +98,7 @@ public class DealsDamageToACreatureAllTriggeredAbility extends TriggeredAbilityI @Override public String getRule() { - return "Whenever " + filterPermanent.getMessage() + " deals " - + (combatDamageOnly ? "combat ":"") + "damage to a creature, " + super.getRule(); + return "Whenever " + filterPermanent.getMessage() + " deals " + + (combatDamageOnly ? "combat " : "") + "damage to a creature, " + super.getRule(); } -} \ No newline at end of file +} diff --git a/Mage/src/main/java/mage/constants/SetTargetPointer.java b/Mage/src/main/java/mage/constants/SetTargetPointer.java index 04c3afb9245..edb71ab241c 100644 --- a/Mage/src/main/java/mage/constants/SetTargetPointer.java +++ b/Mage/src/main/java/mage/constants/SetTargetPointer.java @@ -33,5 +33,11 @@ package mage.constants; */ public enum SetTargetPointer { - NONE, PLAYER, SPELL, CARD, PERMANENT, ATTACHED_TO_CONTROLLER + NONE, + PLAYER, + SPELL, + CARD, + PERMANENT, + PERMANENT_TARGET, + ATTACHED_TO_CONTROLLER }