- A more appropriate solution for the manland animation AI problem.

git-svn-id: http://svn.slightlymagic.net/forge/trunk@35765 269b9781-a132-4a9b-9d4e-f004f1b56b58
This commit is contained in:
Agetian 2017-09-25 11:21:48 +00:00
parent 5b598b1629
commit 11236a9749
2 changed files with 7 additions and 4 deletions

View File

@ -204,10 +204,9 @@ public class ComputerUtilMana {
} }
// If a manland was previously animated this turn, do not tap it to animate another manland // If a manland was previously animated this turn, do not tap it to animate another manland
// Also, don't animate a land that is already tapped (not very useful)
if (sa.getHostCard().isLand() && ma.getHostCard().isLand() if (sa.getHostCard().isLand() && ma.getHostCard().isLand()
&& ai.getController().isAI() && ai.getController().isAI()
&& (AnimateAi.isAnimatedThisTurn(ai, ma.getHostCard())) || sa.getHostCard().isTapped()) { && AnimateAi.isAnimatedThisTurn(ai, ma.getHostCard())) {
continue; continue;
} }
} else if (sa.getApi() == ApiType.Pump) { } else if (sa.getApi() == ApiType.Pump) {

View File

@ -163,9 +163,11 @@ public class AnimateAi extends SpellAbilityAi {
} }
} }
if (power + toughness > c.getCurrentPower() + c.getCurrentToughness()) { if (power + toughness > c.getCurrentPower() + c.getCurrentToughness()) {
if (!c.isTapped() || (game.getCombat() != null && game.getCombat().isAttacking(c))) {
bFlag = true; bFlag = true;
} }
} }
}
if (!SpellAbilityAi.isSorcerySpeed(sa) && !sa.hasParam("Permanent")) { if (!SpellAbilityAi.isSorcerySpeed(sa) && !sa.hasParam("Permanent")) {
Card animatedCopy = becomeAnimated(c, sa); Card animatedCopy = becomeAnimated(c, sa);
@ -182,11 +184,13 @@ public class AnimateAi extends SpellAbilityAi {
if (animatedCopy.getCurrentPower() + animatedCopy.getCurrentToughness() > if (animatedCopy.getCurrentPower() + animatedCopy.getCurrentToughness() >
c.getCurrentPower() + c.getCurrentToughness()) { c.getCurrentPower() + c.getCurrentToughness()) {
if (!isAnimatedThisTurn(aiPlayer, sa.getHostCard())) { if (!isAnimatedThisTurn(aiPlayer, sa.getHostCard())) {
if (!sa.getHostCard().isTapped() || (game.getCombat() != null && game.getCombat().isAttacking(sa.getHostCard()))) {
bFlag = true; bFlag = true;
} }
} }
} }
} }
}
if (bFlag) { if (bFlag) {
this.rememberAnimatedThisTurn(aiPlayer, sa.getHostCard()); this.rememberAnimatedThisTurn(aiPlayer, sa.getHostCard());
} }