forked from External/mage
Fix Descent of the Dragons and March of Souls: Destroy all affected creatures first, then create the tokens
This commit is contained in:
parent
18d1d63cc0
commit
429dde295d
2 changed files with 32 additions and 13 deletions
|
|
@ -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<UUID, Integer> playersWithTargets = new HashMap<UUID, Integer>();
|
||||
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;
|
||||
|
|
|
|||
|
|
@ -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<Permanent> 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<Permanent> creatures = game.getBattlefield().getActivePermanents(new FilterCreaturePermanent(),
|
||||
source.getControllerId(), source.getSourceId(), game);
|
||||
HashMap<UUID, Integer> playersWithCreatures = new HashMap<UUID, Integer>();
|
||||
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;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue