diff --git a/Mage.Sets/src/mage/sets/mirrodinbesieged/CorruptedConscience.java b/Mage.Sets/src/mage/sets/mirrodinbesieged/CorruptedConscience.java index 74adb82e24..c26e3cff44 100644 --- a/Mage.Sets/src/mage/sets/mirrodinbesieged/CorruptedConscience.java +++ b/Mage.Sets/src/mage/sets/mirrodinbesieged/CorruptedConscience.java @@ -25,12 +25,9 @@ * authors and should not be interpreted as representing official policies, either expressed * or implied, of BetaSteward_at_googlemail.com. */ - package mage.sets.mirrodinbesieged; import java.util.UUID; - -import mage.constants.*; import mage.abilities.Ability; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.effects.common.AttachEffect; @@ -39,6 +36,11 @@ import mage.abilities.effects.common.continuous.GainAbilityAttachedEffect; import mage.abilities.keyword.EnchantAbility; import mage.abilities.keyword.InfectAbility; import mage.cards.CardImpl; +import mage.constants.AttachmentType; +import mage.constants.CardType; +import mage.constants.Outcome; +import mage.constants.Rarity; +import mage.constants.Zone; import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; @@ -48,21 +50,26 @@ import mage.target.common.TargetCreaturePermanent; */ public class CorruptedConscience extends CardImpl { - public CorruptedConscience (UUID ownerId) { + public CorruptedConscience(UUID ownerId) { super(ownerId, 22, "Corrupted Conscience", Rarity.UNCOMMON, new CardType[]{CardType.ENCHANTMENT}, "{3}{U}{U}"); this.expansionSetCode = "MBS"; this.subtype.add("Aura"); + // Enchant creature TargetPermanent auraTarget = new TargetCreaturePermanent(); this.getSpellAbility().addTarget(auraTarget); this.getSpellAbility().addEffect(new AttachEffect(Outcome.AddAbility)); Ability ability = new EnchantAbility(auraTarget.getTargetName()); this.addAbility(ability); + + // You control enchanted creature. this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new ControlEnchantedEffect())); + + // Enchanted creature has infect. (It deals damage to creatures in the form of -1/-1 counters and to players in the form of poison counters.) this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new GainAbilityAttachedEffect(InfectAbility.getInstance(), AttachmentType.AURA))); } - public CorruptedConscience (final CorruptedConscience card) { + public CorruptedConscience(final CorruptedConscience card) { super(card); } diff --git a/Mage.Sets/src/mage/sets/newphyrexia/Enslave.java b/Mage.Sets/src/mage/sets/newphyrexia/Enslave.java index d158331c83..b9bd782627 100644 --- a/Mage.Sets/src/mage/sets/newphyrexia/Enslave.java +++ b/Mage.Sets/src/mage/sets/newphyrexia/Enslave.java @@ -25,12 +25,9 @@ * authors and should not be interpreted as representing official policies, either expressed * or implied, of BetaSteward_at_googlemail.com. */ - package mage.sets.newphyrexia; import java.util.UUID; - -import mage.constants.*; import mage.abilities.Ability; import mage.abilities.common.BeginningOfUpkeepTriggeredAbility; import mage.abilities.common.SimpleStaticAbility; @@ -39,6 +36,11 @@ import mage.abilities.effects.common.AttachEffect; import mage.abilities.effects.common.continuous.ControlEnchantedEffect; import mage.abilities.keyword.EnchantAbility; import mage.cards.CardImpl; +import mage.constants.CardType; +import mage.constants.Outcome; +import mage.constants.Rarity; +import mage.constants.TargetController; +import mage.constants.Zone; import mage.game.Game; import mage.game.permanent.Permanent; import mage.players.Player; @@ -51,21 +53,26 @@ import mage.target.common.TargetCreaturePermanent; */ public class Enslave extends CardImpl { - public Enslave (UUID ownerId) { + public Enslave(UUID ownerId) { super(ownerId, 58, "Enslave", Rarity.UNCOMMON, new CardType[]{CardType.ENCHANTMENT}, "{4}{B}{B}"); this.expansionSetCode = "NPH"; this.subtype.add("Aura"); + // Enchant creature TargetPermanent auraTarget = new TargetCreaturePermanent(); this.getSpellAbility().addTarget(auraTarget); this.getSpellAbility().addEffect(new AttachEffect(Outcome.BoostCreature)); Ability ability = new EnchantAbility(auraTarget.getTargetName()); this.addAbility(ability); + + // You control enchanted creature. this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new ControlEnchantedEffect())); + + // At the beginning of your upkeep, enchanted creature deals 1 damage to its owner. this.addAbility(new BeginningOfUpkeepTriggeredAbility(Zone.BATTLEFIELD, new EnslaveEffect(), TargetController.YOU, false, false)); } - public Enslave (final Enslave card) { + public Enslave(final Enslave card) { super(card); } @@ -77,6 +84,7 @@ public class Enslave extends CardImpl { } class EnslaveEffect extends OneShotEffect { + EnslaveEffect() { super(Outcome.Damage); staticText = "enchanted creature deals 1 damage to its owner"; @@ -88,13 +96,13 @@ class EnslaveEffect extends OneShotEffect { @Override public boolean apply(Game game, Ability source) { - Permanent sourcePermanent = game.getPermanent(source.getSourceId()); + Permanent sourcePermanent = game.getPermanentOrLKIBattlefield(source.getSourceId()); if (sourcePermanent != null) { - Permanent attached = game.getPermanent(sourcePermanent.getAttachedTo()); + Permanent attached = game.getPermanentOrLKIBattlefield(sourcePermanent.getAttachedTo()); if (attached != null) { Player owner = game.getPlayer(attached.getOwnerId()); if (owner != null) { - owner.damage(1, source.getSourceId(), game, false, true); + owner.damage(1, attached.getId(), game, false, true); return true; } } @@ -108,4 +116,4 @@ class EnslaveEffect extends OneShotEffect { return new EnslaveEffect(this); } -} \ No newline at end of file +} diff --git a/Mage.Sets/src/mage/sets/newphyrexia/PhyrexianObliterator.java b/Mage.Sets/src/mage/sets/newphyrexia/PhyrexianObliterator.java index 5811c99d20..16b0136dbd 100644 --- a/Mage.Sets/src/mage/sets/newphyrexia/PhyrexianObliterator.java +++ b/Mage.Sets/src/mage/sets/newphyrexia/PhyrexianObliterator.java @@ -58,7 +58,10 @@ public class PhyrexianObliterator extends CardImpl { this.power = new MageInt(5); this.toughness = new MageInt(5); + // Trample this.addAbility(TrampleAbility.getInstance()); + + // Whenever a source deals damage to Phyrexian Obliterator, that source's controller sacrifices that many permanents. this.addAbility(new PhyrexianObliteratorTriggeredAbility()); } @@ -73,6 +76,7 @@ public class PhyrexianObliterator extends CardImpl { } class PhyrexianObliteratorTriggeredAbility extends TriggeredAbilityImpl { + PhyrexianObliteratorTriggeredAbility() { super(Zone.BATTLEFIELD, new SacrificeEffect(new FilterPermanent(), 0, "")); } diff --git a/Mage.Tests/src/test/java/org/mage/test/cards/abilities/keywords/InfectTest.java b/Mage.Tests/src/test/java/org/mage/test/cards/abilities/keywords/InfectTest.java index d1f5ab3848..c404d82545 100644 --- a/Mage.Tests/src/test/java/org/mage/test/cards/abilities/keywords/InfectTest.java +++ b/Mage.Tests/src/test/java/org/mage/test/cards/abilities/keywords/InfectTest.java @@ -27,6 +27,7 @@ */ package org.mage.test.cards.abilities.keywords; +import mage.abilities.keyword.InfectAbility; import mage.constants.PhaseStep; import mage.constants.Zone; import mage.counters.CounterType; @@ -126,4 +127,46 @@ public class InfectTest extends CardTestPlayerBase { } + /** + * Phyrexian Obliterator is enchanted with Corrupted Conscience and Enslave + * + * on upkeep Phyrexian Obliterator does 1 damage to its owner but this + * damage was NOT infect damage and it should have been + */ + @Test + public void GainedInfectByEnchantment() { + // Trample + // Whenever a source deals damage to Phyrexian Obliterator, that source's controller sacrifices that many permanents. + addCard(Zone.BATTLEFIELD, playerB, "Phyrexian Obliterator"); + + // Enchant creature + // You control enchanted creature. + // Enchanted creature has infect. (It deals damage to creatures in the form of -1/-1 counters and to players in the form of poison counters.) + addCard(Zone.HAND, playerA, "Corrupted Conscience"); // Enchantment {3}{U}{U} + // Enchant creature + // You control enchanted creature. + // At the beginning of your upkeep, enchanted creature deals 1 damage to its owner. + addCard(Zone.HAND, playerA, "Enslave"); // Enchantment {4}{B}{B} + addCard(Zone.BATTLEFIELD, playerA, "Swamp", 9); + addCard(Zone.BATTLEFIELD, playerA, "Island", 2); + + castSpell(1, PhaseStep.PRECOMBAT_MAIN, playerA, "Corrupted Conscience", "Phyrexian Obliterator"); + castSpell(1, PhaseStep.PRECOMBAT_MAIN, playerA, "Enslave", "Phyrexian Obliterator"); + + setStopAt(3, PhaseStep.POSTCOMBAT_MAIN); + execute(); + + assertPermanentCount(playerA, "Phyrexian Obliterator", 1); + assertPermanentCount(playerA, "Corrupted Conscience", 1); + assertPermanentCount(playerA, "Enslave", 1); + + assertAbility(playerA, "Phyrexian Obliterator", InfectAbility.getInstance(), true); + + assertLife(playerA, 20); + assertLife(playerB, 20); + + assertCounterCount(playerB, CounterType.POISON, 1); + + } + }