diff --git a/forge-game/src/main/java/forge/game/GameActionUtil.java b/forge-game/src/main/java/forge/game/GameActionUtil.java index f37d4cb9b0f..f62eb05b3d3 100644 --- a/forge-game/src/main/java/forge/game/GameActionUtil.java +++ b/forge-game/src/main/java/forge/game/GameActionUtil.java @@ -910,6 +910,11 @@ public final class GameActionUtil { } } + if (ability.getApi() == ApiType.Charm) { + // reset chain + ability.setSubAbility(null); + } + ability.clearTargets(); ability.resetOnceResolved(); diff --git a/forge-game/src/main/java/forge/game/ability/effects/ChangeZoneEffect.java b/forge-game/src/main/java/forge/game/ability/effects/ChangeZoneEffect.java index 97b9d495bb8..8e28d35174e 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/ChangeZoneEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/ChangeZoneEffect.java @@ -636,7 +636,7 @@ public class ChangeZoneEffect extends SpellAbilityEffect { // TODO can't attach later or moveToPlay would attach indirectly // bypass canBeAttached to skip Protection checks when trying to attach multiple auras that would grant protection gameCard.attachToEntity(game.getCardState(attachedTo), sa, true); - } else { // When it should enter the battlefield attached to an illegal permanent it fails + } else if (gameCard.isAura()) { // When it should enter the battlefield attached to an illegal permanent it fails continue; } } @@ -1366,7 +1366,7 @@ public class ChangeZoneEffect extends SpellAbilityEffect { // bypass canBeAttached to skip Protection checks when trying to attach multiple auras that would grant protection c.attachToEntity(game.getCardState(attachedTo), sa, true); } - else { // When it should enter the battlefield attached to an illegal permanent it fails + else if (c.isAura()) { // When it should enter the battlefield attached to an illegal permanent it fails continue; } } diff --git a/forge-game/src/main/java/forge/game/ability/effects/DigUntilEffect.java b/forge-game/src/main/java/forge/game/ability/effects/DigUntilEffect.java index 99dd4659d78..c3382bc1c39 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/DigUntilEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/DigUntilEffect.java @@ -231,7 +231,7 @@ public class DigUntilEffect extends SpellAbilityEffect { params.put("Attach", c); Card attachedTo = p.getController().chooseSingleEntityForEffect(list, sa, Localizer.getInstance().getMessage("lblSelectACardAttachSourceTo", c.toString()), params); c.attachToEntity(game.getCardState(attachedTo), sa, true); - } else { + } else if (c.isAura()) { continue; } } diff --git a/forge-game/src/main/java/forge/game/phase/PhaseHandler.java b/forge-game/src/main/java/forge/game/phase/PhaseHandler.java index c61850c72b0..9d5f9974c1f 100644 --- a/forge-game/src/main/java/forge/game/phase/PhaseHandler.java +++ b/forge-game/src/main/java/forge/game/phase/PhaseHandler.java @@ -1063,7 +1063,6 @@ public class PhaseHandler implements java.io.Serializable { // do setup this.setupFirstTurn(goesFirst, startGameHook); - // MAIN GAME LOOP while (!game.isGameOver()) { this.mainLoopStep(); diff --git a/forge-game/src/main/java/forge/game/spellability/SpellAbilityStackInstance.java b/forge-game/src/main/java/forge/game/spellability/SpellAbilityStackInstance.java index 7bab8458cb4..4bc7e7aabdc 100644 --- a/forge-game/src/main/java/forge/game/spellability/SpellAbilityStackInstance.java +++ b/forge-game/src/main/java/forge/game/spellability/SpellAbilityStackInstance.java @@ -80,6 +80,11 @@ public class SpellAbilityStackInstance implements IIdentifiable, IHasCardView { sVars.put("StoredTransform", String.valueOf(ability.getHostCard().getTransformedTimestamp())); } + if (sa.getApi() == ApiType.Charm && sa.hasParam("ChoiceRestriction")) { + // Remember the Choice here for later handling + sa.getHostCard().addChosenModes(sa, sa.getSubAbility().getDescription(), sa.getHostCard().getGame().getPhaseHandler().inCombat()); + } + view = new StackItemView(this); } diff --git a/forge-game/src/main/java/forge/game/zone/MagicStack.java b/forge-game/src/main/java/forge/game/zone/MagicStack.java index cdf5b6b0c36..dec17f6a45f 100644 --- a/forge-game/src/main/java/forge/game/zone/MagicStack.java +++ b/forge-game/src/main/java/forge/game/zone/MagicStack.java @@ -291,11 +291,6 @@ public class MagicStack /* extends MyObservable */ implements Iterable