From 429dde295dcdbfe7e3a1565bf642fc69e6d3681b Mon Sep 17 00:00:00 2001 From: LoneFox Date: Sun, 12 Jul 2015 11:32:09 +0300 Subject: [PATCH] Fix Descent of the Dragons and March of Souls: Destroy all affected creatures first, then create the tokens --- .../dragonsoftarkir/DescentOfTheDragons.java | 14 +++++++-- .../mage/sets/planeshift/MarchOfSouls.java | 31 ++++++++++++------- 2 files changed, 32 insertions(+), 13 deletions(-) diff --git a/Mage.Sets/src/mage/sets/dragonsoftarkir/DescentOfTheDragons.java b/Mage.Sets/src/mage/sets/dragonsoftarkir/DescentOfTheDragons.java index bc33b71c2c0..72670999b84 100644 --- a/Mage.Sets/src/mage/sets/dragonsoftarkir/DescentOfTheDragons.java +++ b/Mage.Sets/src/mage/sets/dragonsoftarkir/DescentOfTheDragons.java @@ -27,6 +27,7 @@ */ package mage.sets.dragonsoftarkir; +import java.util.HashMap; import java.util.UUID; import mage.abilities.Ability; import mage.abilities.effects.OneShotEffect; @@ -87,18 +88,27 @@ class DescentOfTheDragonsEffect extends OneShotEffect { public boolean apply(Game game, Ability source) { Player controller = game.getPlayer(source.getControllerId()); if (controller != null) { + HashMap playersWithTargets = new HashMap(); for (Target target : source.getTargets()) { for (UUID permanentId : target.getTargets()) { Permanent permanent = game.getPermanent(permanentId); if (permanent != null) { UUID controllerOfTargetId = permanent.getControllerId(); if (permanent.destroy(source.getSourceId(), game, false)) { - DragonToken dragonToken = new DragonToken(); - dragonToken.putOntoBattlefield(1, game, source.getSourceId(), controllerOfTargetId); + if(playersWithTargets.containsKey(controllerOfTargetId)) { + playersWithTargets.put(controllerOfTargetId, playersWithTargets.get(controllerOfTargetId) + 1); + } + else { + playersWithTargets.put(controllerOfTargetId, 1); + } } } } } + DragonToken dragonToken = new DragonToken(); + for(UUID playerId : playersWithTargets.keySet()) { + dragonToken.putOntoBattlefield(playersWithTargets.get(playerId), game, source.getSourceId(), playerId); + } return true; } return false; diff --git a/Mage.Sets/src/mage/sets/planeshift/MarchOfSouls.java b/Mage.Sets/src/mage/sets/planeshift/MarchOfSouls.java index d1d0d83b4ea..dc7495bed21 100644 --- a/Mage.Sets/src/mage/sets/planeshift/MarchOfSouls.java +++ b/Mage.Sets/src/mage/sets/planeshift/MarchOfSouls.java @@ -27,6 +27,7 @@ */ package mage.sets.planeshift; +import java.util.HashMap; import java.util.List; import java.util.UUID; import mage.abilities.Ability; @@ -83,16 +84,24 @@ class MarchOfSoulsEffect extends OneShotEffect { @Override public boolean apply(Game game, Ability source) { - List creatures = game.getBattlefield().getActivePermanents(new FilterCreaturePermanent(), - source.getControllerId(), source.getSourceId(), game); - for(Permanent p : creatures) { - UUID controllerId = p.getControllerId(); - if(p.destroy(source.getSourceId(), game, true)) { - SpiritWhiteToken token = new SpiritWhiteToken(); - token.putOntoBattlefield(1, game, source.getSourceId(), controllerId); - } - } - return true; + List creatures = game.getBattlefield().getActivePermanents(new FilterCreaturePermanent(), + source.getControllerId(), source.getSourceId(), game); + HashMap playersWithCreatures = new HashMap(); + for(Permanent p : creatures) { + UUID controllerId = p.getControllerId(); + if(p.destroy(source.getSourceId(), game, true)) { + if(playersWithCreatures.containsKey(controllerId)) { + playersWithCreatures.put(controllerId, playersWithCreatures.get(controllerId) + 1); + } + else { + playersWithCreatures.put(controllerId, 1); + } + } + } + SpiritWhiteToken token = new SpiritWhiteToken(); + for(UUID playerId : playersWithCreatures.keySet()) { + token.putOntoBattlefield(playersWithCreatures.get(playerId), game, source.getSourceId(), playerId); + } + return true; } - }