Resolve "ZNR: Charm Effect tweaks"

This commit is contained in:
Hans Mackowiak
2020-10-01 05:02:41 +00:00
committed by Michael Kamensky
parent 2ce9f9a5b2
commit daf70f7e60
22 changed files with 237 additions and 143 deletions

View File

@@ -85,7 +85,9 @@ public class HumanPlay {
}
if (sa.getApi() == ApiType.Charm && !sa.isWrapper()) {
CharmEffect.makeChoices(sa);
if (!CharmEffect.makeChoices(sa)) {
return false;
}
}
sa = AbilityUtils.addSpliceEffects(sa);
@@ -150,7 +152,9 @@ public class HumanPlay {
if (!sa.isCopied()) {
if (sa.getApi() == ApiType.Charm && !sa.isWrapper()) {
CharmEffect.makeChoices(sa);
if (!CharmEffect.makeChoices(sa)) {
return;
}
}
sa = AbilityUtils.addSpliceEffects(sa);
}

View File

@@ -1,20 +1,8 @@
package forge.player;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileWriter;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import java.util.Map;
import java.io.*;
import java.util.*;
import java.util.Map.Entry;
import java.util.Set;
import org.apache.commons.lang3.Range;
import org.apache.commons.lang3.StringUtils;
@@ -62,7 +50,6 @@ import forge.game.PlanarDice;
import forge.game.ability.AbilityFactory;
import forge.game.ability.AbilityKey;
import forge.game.ability.ApiType;
import forge.game.ability.effects.CharmEffect;
import forge.game.card.Card;
import forge.game.card.CardCollection;
import forge.game.card.CardCollectionView;
@@ -1591,14 +1578,13 @@ public class PlayerControllerHuman extends PlayerController implements IGameCont
* spellability.SpellAbility, java.util.List, int, int)
*/
@Override
public List<AbilitySub> chooseModeForAbility(final SpellAbility sa, final int min, final int num,
public List<AbilitySub> chooseModeForAbility(final SpellAbility sa, List<AbilitySub> possible, final int min, final int num,
boolean allowRepeat) {
boolean trackerFrozen = game.getTracker().isFrozen();
if (trackerFrozen) {
// The view tracker needs to be unfrozen to update the SpellAbilityViews at this point, or it may crash
game.getTracker().unfreeze();
}
final List<AbilitySub> possible = CharmEffect.makePossibleOptions(sa);
Map<SpellAbilityView, AbilitySub> spellViewCache = SpellAbilityView.getMap(possible);
if (trackerFrozen) {
game.getTracker().freeze(); // refreeze if the tracker was frozen prior to this update