diff --git a/forge-ai/src/main/java/forge/ai/ability/CharmAi.java b/forge-ai/src/main/java/forge/ai/ability/CharmAi.java index ebb6a5b94a6..957dcb8f03d 100644 --- a/forge-ai/src/main/java/forge/ai/ability/CharmAi.java +++ b/forge-ai/src/main/java/forge/ai/ability/CharmAi.java @@ -89,9 +89,6 @@ public class CharmAi extends SpellAbilityAi { // First pass using standard canPlayAi() for good choices for (AbilitySub sub : choices) { sub.setActivatingPlayer(ai); - sub.getRestrictions().setZone(sub.getParent().getRestrictions().getZone()); - - // TODO checks from MayPlay fail for subs currently if (AiPlayDecision.WillPlay == aic.canPlaySa(sub)) { chosenList.add(sub); if (chosenList.size() == num) { @@ -229,7 +226,6 @@ public class CharmAi extends SpellAbilityAi { } else { // Standard canPlayAi() sub.setActivatingPlayer(ai); - sub.getRestrictions().setZone(sub.getParent().getRestrictions().getZone()); if (AiPlayDecision.WillPlay == aic.canPlaySa(sub)) { chosenList.add(sub); if (chosenList.size() == min) { diff --git a/forge-game/src/main/java/forge/game/ability/AbilityFactory.java b/forge-game/src/main/java/forge/game/ability/AbilityFactory.java index 9396f9ff2df..e8b400abf19 100644 --- a/forge-game/src/main/java/forge/game/ability/AbilityFactory.java +++ b/forge-game/src/main/java/forge/game/ability/AbilityFactory.java @@ -277,7 +277,7 @@ public final class AbilityFactory { } } - if (api == ApiType.Charm || api == ApiType.GenericChoice || api == ApiType.AssignGroup) { + if (api == ApiType.Charm || api == ApiType.GenericChoice || api == ApiType.AssignGroup) { final String key = "Choices"; if (mapParams.containsKey(key)) { List names = Lists.newArrayList(mapParams.get(key).split(",")); diff --git a/forge-game/src/main/java/forge/game/ability/effects/ChooseGenericEffect.java b/forge-game/src/main/java/forge/game/ability/effects/ChooseGenericEffect.java index 5f95d0c4dd8..c1724471c82 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/ChooseGenericEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/ChooseGenericEffect.java @@ -50,7 +50,7 @@ public class ChooseGenericEffect extends SpellAbilityEffect { List saToRemove = Lists.newArrayList(); for (SpellAbility saChoice : abilities) { - if (!saChoice.getRestrictions().checkOtherRestrictions(host, saChoice, sa.getActivatingPlayer()) ) { + if (saChoice.getRestrictions() != null && !saChoice.getRestrictions().checkOtherRestrictions(host, saChoice, sa.getActivatingPlayer())) { saToRemove.add(saChoice); } else if (saChoice.hasParam("UnlessCost")) { // generic check for if the cost can be paid diff --git a/forge-game/src/main/java/forge/game/card/CardFactoryUtil.java b/forge-game/src/main/java/forge/game/card/CardFactoryUtil.java index 3f454c027cf..636794f1037 100644 --- a/forge-game/src/main/java/forge/game/card/CardFactoryUtil.java +++ b/forge-game/src/main/java/forge/game/card/CardFactoryUtil.java @@ -1149,7 +1149,7 @@ public class CardFactoryUtil { final String choose = "DB$ GenericChoice | AILogic$ " + name; final String counter = "DB$ PutCounter | Defined$ Self | CounterType$ P1P1 | CounterNum$ " + n + - " | IsPresent$ Card.StrictlySelf | SpellDescription$ Put " + " | SpellDescription$ Put " + Lang.nounWithNumeral(n, "+1/+1 counter") + " on it."; final String token = "DB$ Token | TokenAmount$ " + n + " | TokenScript$ c_1_1_a_servo | TokenOwner$ You " + " | SpellDescription$ Create " @@ -1160,7 +1160,11 @@ public class CardFactoryUtil { SpellAbility saChoose = AbilityFactory.getAbility(choose, card); List list = Lists.newArrayList(); - list.add((AbilitySub)AbilityFactory.getAbility(counter, card)); + AbilitySub putCounter = (AbilitySub)AbilityFactory.getAbility(counter, card); + SpellAbilityRestriction restriction = new SpellAbilityRestriction(); + restriction.setIsPresent("Card.StrictlySelf"); + putCounter.setRestrictions(restriction); + list.add(putCounter); list.add((AbilitySub)AbilityFactory.getAbility(token, card)); saChoose.setAdditionalAbilityList("Choices", list); saChoose.setIntrinsic(intrinsic);