From 1f24b569c73758ff18e997fc2b676fc1e6a328d9 Mon Sep 17 00:00:00 2001 From: LevelX2 Date: Tue, 28 Jul 2015 15:04:37 +0200 Subject: [PATCH] * Fixed a bug of adding abilities to non permanentes if the an effect added an ability to multiple objects. --- Mage/src/mage/game/GameState.java | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/Mage/src/mage/game/GameState.java b/Mage/src/mage/game/GameState.java index b7b9c1850b7..21824f7a41c 100644 --- a/Mage/src/mage/game/GameState.java +++ b/Mage/src/mage/game/GameState.java @@ -41,6 +41,7 @@ import mage.abilities.Ability; import mage.abilities.ActivatedAbility; import mage.abilities.DelayedTriggeredAbilities; import mage.abilities.DelayedTriggeredAbility; +import mage.abilities.MageSingleton; import mage.abilities.Mode; import mage.abilities.SpecialActions; import mage.abilities.StaticAbility; @@ -856,13 +857,19 @@ public class GameState implements Serializable, Copyable { * @param ability */ public void addOtherAbility(Card attachedTo, Ability ability) { - ability.setSourceId(attachedTo.getId()); - ability.setControllerId(attachedTo.getOwnerId()); + Ability newAbility; + if (ability instanceof MageSingleton) { + newAbility = ability; + } else { + newAbility = ability.copy(); + } + newAbility.setSourceId(attachedTo.getId()); + newAbility.setControllerId(attachedTo.getOwnerId()); if (!cardState.containsKey(attachedTo.getId())) { cardState.put(attachedTo.getId(), new CardState()); } - cardState.get(attachedTo.getId()).addAbility(ability); - addAbility(ability, attachedTo.getId(), attachedTo); + cardState.get(attachedTo.getId()).addAbility(newAbility); + addAbility(newAbility, attachedTo.getId(), attachedTo); } /**