diff --git a/Mage.Tests/src/test/java/org/mage/test/cards/single/SorinLordOfInnistradTest.java b/Mage.Tests/src/test/java/org/mage/test/cards/single/SorinLordOfInnistradTest.java index 6f0ca76cc36..20f0c107517 100644 --- a/Mage.Tests/src/test/java/org/mage/test/cards/single/SorinLordOfInnistradTest.java +++ b/Mage.Tests/src/test/java/org/mage/test/cards/single/SorinLordOfInnistradTest.java @@ -57,7 +57,10 @@ public class SorinLordOfInnistradTest extends CardTestPlayerBase { activateAbility(1, Constants.PhaseStep.PRECOMBAT_MAIN, playerA, "-6: ", "Craw Wurm^Angel of Mercy"); setStopAt(1, Constants.PhaseStep.BEGIN_COMBAT); execute(); - + + assertPermanentCount(playerA, "Craw Wurm", 1); + assertPermanentCount(playerA, "Angel of Mercy", 1); + assertLife(playerA, 23); assertLife(playerB, 20); assertPermanentCount(playerA, "Sorin, Lord of Innistrad", 0); diff --git a/Mage.Tests/src/test/java/org/mage/test/player/TestPlayer.java b/Mage.Tests/src/test/java/org/mage/test/player/TestPlayer.java index 91973d3d5b7..cf25e99c01a 100644 --- a/Mage.Tests/src/test/java/org/mage/test/player/TestPlayer.java +++ b/Mage.Tests/src/test/java/org/mage/test/player/TestPlayer.java @@ -256,6 +256,9 @@ public class TestPlayer extends ComputerPlayer { for (UUID id: ability.getTargets().get(0).possibleTargets(ability.getSourceId(), ability.getControllerId(), game)) { MageObject object = game.getObject(id); if (object != null && object.getName().equals(t)) { + if (index >= ability.getTargets().size()) { + index--; + } if (ability.getTargets().get(index).getNumberOfTargets() == 1) { ability.getTargets().get(index).clearChosen(); } diff --git a/Mage/src/mage/abilities/AbilityImpl.java b/Mage/src/mage/abilities/AbilityImpl.java index 9797a5a02a8..997f4b831d5 100644 --- a/Mage/src/mage/abilities/AbilityImpl.java +++ b/Mage/src/mage/abilities/AbilityImpl.java @@ -44,6 +44,7 @@ import mage.cards.Card; import mage.choices.Choice; import mage.choices.Choices; import mage.game.Game; +import mage.game.permanent.Permanent; import mage.target.Target; import mage.target.Targets; import org.apache.log4j.Logger; @@ -458,8 +459,9 @@ public abstract class AbilityImpl> implements Ability { @Override public boolean isInUseableZone(Game game, boolean checkLKI) { - // try LKI first + Permanent permanent = game.getPermanent(getSourceId()); + // try LKI first if (checkLKI) { MageObject lkiTest = game.getLastKnownInformation(getSourceId(), zone); if (lkiTest != null) { diff --git a/Mage/src/mage/abilities/TriggeredAbilities.java b/Mage/src/mage/abilities/TriggeredAbilities.java index 8ba27bb5780..aaa8c92710e 100644 --- a/Mage/src/mage/abilities/TriggeredAbilities.java +++ b/Mage/src/mage/abilities/TriggeredAbilities.java @@ -54,9 +54,12 @@ public class TriggeredAbilities extends HashMap { public void checkTriggers(GameEvent event, Game game) { for (TriggeredAbility ability: this.values()) { if (ability.isInUseableZone(game, true)) { - MageObject object = game.getLastKnownInformation(ability.getSourceId(), event.getZone()); + MageObject object = game.getPermanent(ability.getSourceId()); if (object == null) { - object = game.getObject(ability.getSourceId()); + object = game.getLastKnownInformation(ability.getSourceId(), event.getZone()); + if (object == null) { + object = game.getObject(ability.getSourceId()); + } } if (object != null && object.getAbilities().contains(ability)) { if (object instanceof Permanent) {