diff --git a/Mage/src/mage/abilities/effects/common/continious/GainAbilityAllEffect.java b/Mage/src/mage/abilities/effects/common/continious/GainAbilityAllEffect.java index 3fd623761af..241a6aa3fa0 100644 --- a/Mage/src/mage/abilities/effects/common/continious/GainAbilityAllEffect.java +++ b/Mage/src/mage/abilities/effects/common/continious/GainAbilityAllEffect.java @@ -30,14 +30,14 @@ package mage.abilities.effects.common.continious; import java.util.Iterator; import mage.MageObjectReference; -import mage.constants.Duration; -import mage.constants.Layer; -import mage.constants.Outcome; -import mage.constants.SubLayer; import mage.abilities.Ability; import mage.abilities.TriggeredAbility; import mage.abilities.common.SimpleActivatedAbility; import mage.abilities.effects.ContinuousEffectImpl; +import mage.constants.Duration; +import mage.constants.Layer; +import mage.constants.Outcome; +import mage.constants.SubLayer; import mage.filter.FilterPermanent; import mage.game.Game; import mage.game.permanent.Permanent; @@ -101,11 +101,14 @@ public class GainAbilityAllEffect extends ContinuousEffectImpl { public boolean apply(Game game, Ability source) { if (this.affectedObjectsSet) { for (Iterator it = affectedObjectList.iterator(); it.hasNext();) { // filter may not be used again, because object can have changed filter relevant attributes but still geets boost - Permanent permanent = it.next().getPermanent(game); + Permanent permanent = it.next().getPermanentOrLKIBattlefield(game); //LKI is neccessary for "dies triggered abilities" to work given to permanets (e.g. Showstopper) if (permanent != null) { permanent.addAbility(ability, source.getSourceId(), game); } else { it.remove(); // no longer on the battlefield, remove reference to object + if (affectedObjectList.isEmpty()) { + discard(); + } } } } else { diff --git a/Mage/src/mage/abilities/effects/common/continious/GainAbilityControlledEffect.java b/Mage/src/mage/abilities/effects/common/continious/GainAbilityControlledEffect.java index 0a926d9ff63..75db21acf13 100644 --- a/Mage/src/mage/abilities/effects/common/continious/GainAbilityControlledEffect.java +++ b/Mage/src/mage/abilities/effects/common/continious/GainAbilityControlledEffect.java @@ -36,7 +36,6 @@ import mage.abilities.effects.ContinuousEffectImpl; import mage.constants.Duration; import mage.constants.Layer; import mage.constants.Outcome; -import mage.constants.PhaseStep; import mage.constants.SubLayer; import mage.filter.FilterPermanent; import mage.game.Game; @@ -110,7 +109,7 @@ public class GainAbilityControlledEffect extends ContinuousEffectImpl { Permanent perm = it.next().getPermanentOrLKIBattlefield(game); //LKI is neccessary for "dies triggered abilities" to work given to permanets (e.g. Showstopper) if (perm != null) { for (Ability abilityToAdd : ability) { - perm.addAbility(abilityToAdd, source.getSourceId(), game, false); // new id is neccessary if + perm.addAbility(abilityToAdd, source.getSourceId(), game, false); } } else { it.remove(); diff --git a/Mage/src/mage/abilities/effects/common/continious/GainAbilityTargetEffect.java b/Mage/src/mage/abilities/effects/common/continious/GainAbilityTargetEffect.java index 281b334400b..3b39158ca9c 100644 --- a/Mage/src/mage/abilities/effects/common/continious/GainAbilityTargetEffect.java +++ b/Mage/src/mage/abilities/effects/common/continious/GainAbilityTargetEffect.java @@ -137,17 +137,9 @@ public class GainAbilityTargetEffect extends ContinuousEffectImpl { } } else { for (UUID permanentId : targetPointer.getTargets(game, source)) { - Permanent permanent = game.getPermanent(permanentId); - boolean shortLivingLKI = false; - if (permanent == null) { - permanent = (Permanent) game.getShortLivingLKI(permanentId, Zone.BATTLEFIELD); - shortLivingLKI = true; - } + Permanent permanent = game.getPermanentOrLKIBattlefield(permanentId); if (permanent != null) { - permanent.addAbility(ability, source.getSourceId(), game); - if (shortLivingLKI) { // needed for undying because TriggeredAbilities checks if the permanent has still the ability - game.rememberLKI(permanentId, Zone.BATTLEFIELD, permanent); - } + permanent.addAbility(ability, source.getSourceId(), game, false); affectedTargets++; } }