Merge branch 'charmRework' into 'master'

Charm rework

Closes #806

See merge request core-developers/forge!1312
This commit is contained in:
Hans Mackowiak
2019-01-26 09:24:25 +00:00
3 changed files with 7 additions and 8 deletions

View File

@@ -150,14 +150,14 @@ public class CharmEffect extends SpellAbilityEffect {
return "";
}
public static void makeChoices(SpellAbility sa) {
public static boolean makeChoices(SpellAbility sa) {
//this resets all previous choices
sa.setSubAbility(null);
// Entwine does use all Choices
if (sa.isEntwine()) {
chainAbilities(sa, makePossibleOptions(sa));
return;
return true;
}
final int num = sa.hasParam("CharmNumOnResolve") ?
@@ -181,6 +181,7 @@ public class CharmEffect extends SpellAbilityEffect {
List<AbilitySub> chosen = chooser.getController().chooseModeForAbility(sa, min, num, sa.hasParam("CanRepeatModes"));
chainAbilities(sa, chosen);
return chosen != null && !chosen.isEmpty();
}
private static void chainAbilities(SpellAbility sa, List<AbilitySub> chosen) {

View File

@@ -25,8 +25,6 @@ import forge.card.mana.ManaCost;
import forge.game.Game;
import forge.game.ability.AbilityFactory;
import forge.game.ability.AbilityUtils;
import forge.game.ability.ApiType;
import forge.game.ability.effects.CharmEffect;
import forge.game.cost.Cost;
import forge.game.player.Player;
import forge.game.replacement.ReplacementHandler;
@@ -680,9 +678,6 @@ public class CardFactory {
}
trig.setStackDescription(trig.toString());
if (trig.getApi() == ApiType.Charm && !trig.isWrapper()) {
CharmEffect.makeChoices(trig);
}
WrappedAbility wrapperAbility = new WrappedAbility(t, trig, ((WrappedAbility) sa).getDecider());
wrapperAbility.setTrigger(true);

View File

@@ -636,7 +636,10 @@ public class TriggerHandler {
sa.setStackDescription(sa.toString());
if (sa.getApi() == ApiType.Charm && !sa.isWrapper()) {
CharmEffect.makeChoices(sa);
if (!CharmEffect.makeChoices(sa)) {
// 603.3c If no mode is chosen, the ability is removed from the stack.
return;
}
}
Player decider = null;