- Generalize AI support for Announce$ NumTimes

This commit is contained in:
Michael Kamensky
2021-09-21 11:56:17 +03:00
parent 9faab0c4b9
commit fe1f8fa00a
2 changed files with 13 additions and 16 deletions

View File

@@ -3,7 +3,6 @@ package forge.ai;
import com.google.common.base.Predicate;
import com.google.common.base.Predicates;
import com.google.common.collect.*;
import forge.ai.AiCardMemory.MemorySet;
import forge.ai.ability.AnimateAi;
import forge.card.ColorSet;
@@ -1535,6 +1534,19 @@ public class ComputerUtilMana {
sa.setSVar("Multikicker", String.valueOf(timesMultikicked));
}
if ("NumTimes".equals(sa.getParam("Announce"))) { // e.g. the Adversary cycle
ManaCost mkCost = sa.getPayCosts().getTotalMana();
ManaCost mCost = ManaCost.ZERO;
for (int i = 0; i < 10; i++) {
mCost = ManaCost.combine(mCost, mkCost);
ManaCostBeingPaid mcbp = new ManaCostBeingPaid(mCost);
if (!ComputerUtilMana.canPayManaCost(mcbp, sa, sa.getActivatingPlayer())) {
sa.getHostCard().setSVar("NumTimes", "Number$" + i);
break;
}
}
}
if (test && sa.isSpell()) {
sa.getHostCard().setCastFrom(castFromBackup);
}

View File

@@ -1,8 +1,6 @@
package forge.ai.ability;
import forge.ai.*;
import forge.card.mana.ManaCost;
import forge.game.mana.ManaCostBeingPaid;
import forge.game.player.Player;
import forge.game.spellability.AbilitySub;
import forge.game.spellability.SpellAbility;
@@ -44,19 +42,6 @@ public class ImmediateTriggerAi extends SpellAbilityAi {
sa.setXManaCostPaid(ComputerUtilCost.getMaxXValue(sa, ai));
}
if ("NumTimes".equals(sa.getParam("Announce"))) { // e.g. the Adversary cycle
ManaCost mkCost = sa.getPayCosts().getTotalMana();
ManaCost mCost = ManaCost.ZERO;
for (int i = 0; i < 10; i++) {
mCost = ManaCost.combine(mCost, mkCost);
ManaCostBeingPaid mcbp = new ManaCostBeingPaid(mCost);
if (!ComputerUtilMana.canPayManaCost(mcbp, sa, ai)) {
sa.getHostCard().setSVar("NumTimes", "Number$" + i);
break;
}
}
}
AiController aic = ((PlayerControllerAi)ai.getController()).getAi();
trigsa.setActivatingPlayer(ai);