diff --git a/forge-game/src/main/java/forge/game/ability/effects/CharmEffect.java b/forge-game/src/main/java/forge/game/ability/effects/CharmEffect.java index 560686fbff9..2c88c741a2d 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/CharmEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/CharmEffect.java @@ -153,10 +153,6 @@ public class CharmEffect extends SpellAbilityEffect { } private static void chainAbilities(SpellAbility sa, List chosen) { - SpellAbility saDeepest = sa; - while (saDeepest.getSubAbility() != null) { - saDeepest = saDeepest.getSubAbility(); - } // Sort Chosen by SA order Collections.sort(chosen, new Comparator() { @@ -170,8 +166,8 @@ public class CharmEffect extends SpellAbilityEffect { // Clone the chosen, just in case the some subAb gets chosen multiple times AbilitySub clone = (AbilitySub)sub.getCopy(); - saDeepest.setSubAbility(clone); - clone.setActivatingPlayer(saDeepest.getActivatingPlayer()); + // update ActivatingPlayer + clone.setActivatingPlayer(sa.getActivatingPlayer()); // do not forget what was targeted by the subability SpellAbility ssa = sub; @@ -187,14 +183,10 @@ public class CharmEffect extends SpellAbilityEffect { ssaClone = ssaClone.getSubAbility(); } - clone.setParent(saDeepest); - - // to chain the next one (but make sure it goes all the way at the end of the SA chain) - saDeepest = clone; - while (saDeepest.getSubAbility() != null) { - saDeepest = saDeepest.getSubAbility(); - } + // add Clone to Tail of sa + sa.appendSubAbility(clone); } + }