From 44e15fb70502d41f290f7d7bef7d0f3f3102d398 Mon Sep 17 00:00:00 2001 From: LevelX2 Date: Thu, 18 May 2017 00:10:44 +0200 Subject: [PATCH] * Witchbane Orb - Fixed problem of concurrent modification. --- Mage.Sets/src/mage/cards/w/WitchbaneOrb.java | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/Mage.Sets/src/mage/cards/w/WitchbaneOrb.java b/Mage.Sets/src/mage/cards/w/WitchbaneOrb.java index c45e762cf6d..6757e42704a 100644 --- a/Mage.Sets/src/mage/cards/w/WitchbaneOrb.java +++ b/Mage.Sets/src/mage/cards/w/WitchbaneOrb.java @@ -27,6 +27,7 @@ */ package mage.cards.w; +import java.util.ArrayList; import java.util.UUID; import mage.abilities.Ability; import mage.abilities.common.EntersBattlefieldTriggeredAbility; @@ -50,7 +51,7 @@ import mage.players.Player; public class WitchbaneOrb extends CardImpl { public WitchbaneOrb(UUID ownerId, CardSetInfo setInfo) { - super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{4}"); + super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{4}"); // When Witchbane Orb enters the battlefield, destroy all Curses attached to you. this.addAbility(new EntersBattlefieldTriggeredAbility(new WitchbaneOrbEffect())); @@ -83,14 +84,18 @@ class WitchbaneOrbEffect extends OneShotEffect { @Override public boolean apply(Game game, Ability source) { - Player player = game.getPlayer(source.getControllerId()); - if (player != null) { - for (UUID attachmentId: player.getAttachments()) { + Player controller = game.getPlayer(source.getControllerId()); + if (controller != null) { + ArrayList toDestroy = new ArrayList<>(); + for (UUID attachmentId : controller.getAttachments()) { Permanent attachment = game.getPermanent(attachmentId); if (attachment != null && attachment.getSubtype(game).contains("Curse")) { - attachment.destroy(source.getSourceId(), game, false); + toDestroy.add(attachment); } } + for (Permanent curse : toDestroy) { + curse.destroy(source.getSourceId(), game, false); + } return true; } return false;