From b00aa6a7d2b3838185b0b7dcd5450c7076e33085 Mon Sep 17 00:00:00 2001 From: BetaSteward Date: Tue, 28 Feb 2012 14:27:53 -0500 Subject: [PATCH] fixed WerewolfRansacker --- .../sets/darkascension/AfflictedDeserter.java | 11 ++- .../sets/darkascension/WerewolfRansacker.java | 90 ------------------- .../mage/sets/innistrad/LilianaOfTheVeil.java | 24 ----- .../test/cards/TestWerewolfRansacker.java | 25 +++++- 4 files changed, 30 insertions(+), 120 deletions(-) diff --git a/Mage.Sets/src/mage/sets/darkascension/AfflictedDeserter.java b/Mage.Sets/src/mage/sets/darkascension/AfflictedDeserter.java index c0b28500d69..371d6218f36 100644 --- a/Mage.Sets/src/mage/sets/darkascension/AfflictedDeserter.java +++ b/Mage.Sets/src/mage/sets/darkascension/AfflictedDeserter.java @@ -31,6 +31,7 @@ import java.util.UUID; import mage.Constants; import mage.Constants.CardType; import mage.Constants.Rarity; +import mage.Constants.Zone; import mage.MageInt; import mage.abilities.Ability; import mage.abilities.TriggeredAbility; @@ -100,7 +101,7 @@ class WerewolfRansackerAbility extends TriggeredAbilityImpl { Permanent permanent = game.getPermanent(permanentId); if (permanent != null) { if (permanent.destroy(source.getId(), game, false)) { - Player player = game.getPlayer(permanent.getControllerId()); - if (player != null) - player.damage(3, source.getSourceId(), game, false, true); affectedTargets++; + if (game.getState().getZone(permanent.getId()) == Zone.GRAVEYARD) { + Player player = game.getPlayer(permanent.getControllerId()); + if (player != null) + player.damage(3, source.getSourceId(), game, false, true); + } } } } diff --git a/Mage.Sets/src/mage/sets/darkascension/WerewolfRansacker.java b/Mage.Sets/src/mage/sets/darkascension/WerewolfRansacker.java index a41be84927b..3e04acfd9d7 100644 --- a/Mage.Sets/src/mage/sets/darkascension/WerewolfRansacker.java +++ b/Mage.Sets/src/mage/sets/darkascension/WerewolfRansacker.java @@ -32,25 +32,13 @@ import mage.Constants; import mage.Constants.CardType; import mage.Constants.Rarity; import mage.MageInt; -import mage.abilities.Ability; import mage.abilities.TriggeredAbility; -import mage.abilities.TriggeredAbilityImpl; import mage.abilities.common.BeginningOfUpkeepTriggeredAbility; import mage.abilities.condition.common.TwoOrMoreSpellsWereCastLastTurnCondition; import mage.abilities.decorator.ConditionalTriggeredAbility; -import mage.abilities.effects.OneShotEffect; -import mage.abilities.effects.common.DestroyTargetEffect; import mage.abilities.effects.common.TransformSourceEffect; import mage.abilities.keyword.TransformAbility; import mage.cards.CardImpl; -import mage.filter.Filter; -import mage.filter.FilterPermanent; -import mage.game.Game; -import mage.game.events.GameEvent; -import mage.game.permanent.Permanent; -import mage.players.Player; -import mage.target.Target; -import mage.target.TargetPermanent; /** * @@ -71,7 +59,6 @@ public class WerewolfRansacker extends CardImpl { this.toughness = new MageInt(4); // Whenever this creature transforms into Werewolf Ransacker, you may destroy target artifact. If that artifact is put into a graveyard this way, Werewolf Ransacker deals 3 damage to that artifact's controller. -// this.addAbility(new WerewolfRansackerAbility()); // At the beginning of each upkeep, if a player cast two or more spells last turn, transform Werewolf Ransacker. TriggeredAbility ability = new BeginningOfUpkeepTriggeredAbility(new TransformSourceEffect(false), Constants.TargetController.ANY, false); @@ -88,80 +75,3 @@ public class WerewolfRansacker extends CardImpl { } } -//class WerewolfRansackerAbility extends TriggeredAbilityImpl { -// -// private static final FilterPermanent filter = new FilterPermanent("artifact"); -// -// static { -// filter.getCardType().add(CardType.ARTIFACT); -// filter.setScopeCardType(Filter.ComparisonScope.Any); -// } -// -// public WerewolfRansackerAbility() { -// super(Constants.Zone.BATTLEFIELD, new DestroyTargetEffect(), true); -// Target target = new TargetPermanent(filter); -// target.setRequired(true); -// this.addTarget(target); -// } -// -// public WerewolfRansackerAbility(final WerewolfRansackerAbility ability) { -// super(ability); -// } -// -// @Override -// public WerewolfRansackerAbility copy() { -// return new WerewolfRansackerAbility(this); -// } -// -// @Override -// public boolean checkTrigger(GameEvent event, Game game) { -// if (event.getType() == GameEvent.EventType.TRANSFORMED) { -// if (event.getTargetId().equals(sourceId)) { -// return true; -// } -// } -// return false; -// } -// -// @Override -// public String getRule() { -// return "Whenever this creature transforms into Werewolf Ransacker, you may destroy target artifact. If that artifact is put into a graveyard this way, Werewolf Ransacker deals 3 damage to that artifact's controller."; -// } -// -//} -// -//class WerewolfRansackerEffect extends OneShotEffect { -// -// public WerewolfRansackerEffect() { -// super(Constants.Outcome.DestroyPermanent); -// } -// -// public WerewolfRansackerEffect(final WerewolfRansackerEffect effect) { -// super(effect); -// } -// -// @Override -// public WerewolfRansackerEffect copy() { -// return new WerewolfRansackerEffect(this); -// } -// -// @Override -// public boolean apply(Game game, Ability source) { -// int affectedTargets = 0; -// if (targetPointer.getTargets(source).size() > 0) { -// for (UUID permanentId : targetPointer.getTargets(source)) { -// Permanent permanent = game.getPermanent(permanentId); -// if (permanent != null) { -// if (permanent.destroy(source.getId(), game, false)) { -// Player player = game.getPlayer(permanent.getControllerId()); -// if (player != null) -// player.damage(3, source.getSourceId(), game, false, true); -// affectedTargets++; -// } -// } -// } -// } -// return affectedTargets > 0; -// } -// -//} diff --git a/Mage.Sets/src/mage/sets/innistrad/LilianaOfTheVeil.java b/Mage.Sets/src/mage/sets/innistrad/LilianaOfTheVeil.java index a37ef7b2c21..0dffacb9510 100644 --- a/Mage.Sets/src/mage/sets/innistrad/LilianaOfTheVeil.java +++ b/Mage.Sets/src/mage/sets/innistrad/LilianaOfTheVeil.java @@ -147,30 +147,6 @@ class LilianaOfTheVeilEffect extends OneShotEffect { return false; } -// private Choice createChoice(CardsImpl pile1, CardsImpl cards, Game game) { -// Choice choice = new ChoiceImpl(true); -// choice.setMessage("Select a pile of permanents to sacrifice:"); -// StringBuilder sb = new StringBuilder("Pile 1: "); -// for (UUID cardId : pile1) { -// Card card = pile1.get(cardId, game); -// if (card != null) { -// sb.append(card.getName()).append("; "); -// } -// } -// sb.delete(sb.length() - 2, sb.length()); -// choice.getChoices().add(sb.toString()); -// sb = new StringBuilder("Pile 2: "); -// for (UUID cardId : cards) { -// Card card = cards.get(cardId, game); -// if (card != null) { -// sb.append(card.getName()).append("; "); -// } -// } -// sb.delete(sb.length() - 2, sb.length()); -// choice.getChoices().add(sb.toString()); -// return choice; -// } - private void sacrificePermanents(List pile, Game game, Ability source) { for (Permanent permanent : pile) { if (permanent != null) { diff --git a/Mage.Tests/src/test/java/org/mage/test/cards/TestWerewolfRansacker.java b/Mage.Tests/src/test/java/org/mage/test/cards/TestWerewolfRansacker.java index a9f773c8357..cf3b72ec31c 100644 --- a/Mage.Tests/src/test/java/org/mage/test/cards/TestWerewolfRansacker.java +++ b/Mage.Tests/src/test/java/org/mage/test/cards/TestWerewolfRansacker.java @@ -1,6 +1,7 @@ package org.mage.test.cards; import mage.Constants; +import org.junit.Ignore; import org.junit.Test; import org.mage.test.serverside.base.CardTestPlayerBase; @@ -19,10 +20,30 @@ public class TestWerewolfRansacker extends CardTestPlayerBase { execute(); assertLife(playerA, 20); - assertLife(playerB, 20); + assertLife(playerB, 17); assertPermanentCount(playerB, "Ornithopter", 0); assertPermanentCount(playerA, "Afflicted Deserter", 0); assertPermanentCount(playerA, "Werewolf Ransacker", 1); } - + + @Test + public void testCard1() { + addCard(Constants.Zone.BATTLEFIELD, playerA, "Plains", 3); + addCard(Constants.Zone.HAND, playerA, "Blade Splicer"); + addCard(Constants.Zone.BATTLEFIELD, playerB, "Mountain", 4); + addCard(Constants.Zone.HAND, playerB, "Afflicted Deserter"); + + castSpell(1, Constants.PhaseStep.PRECOMBAT_MAIN, playerA, "Blade Splicer"); + castSpell(2, Constants.PhaseStep.PRECOMBAT_MAIN, playerB, "Afflicted Deserter"); + setStopAt(4, Constants.PhaseStep.DRAW); + execute(); + + assertLife(playerA, 20); + assertLife(playerB, 20); + assertPermanentCount(playerB, "Afflicted Deserter", 0); + assertPermanentCount(playerB, "Werewolf Ransacker", 1); + assertPermanentCount(playerA, "Blade Splicer", 1); + assertPermanentCount(playerA, "Golem", 0); + } + }