Fix AI killing itself with poison + proliferate

This commit is contained in:
tool4EvEr
2021-03-29 23:27:38 +02:00
parent 6971d320ae
commit 3ccce18f23

View File

@@ -8,8 +8,10 @@ import com.google.common.base.Predicate;
import com.google.common.collect.Iterables; import com.google.common.collect.Iterables;
import com.google.common.collect.Lists; import com.google.common.collect.Lists;
import forge.ai.AiProps;
import forge.ai.ComputerUtil; import forge.ai.ComputerUtil;
import forge.ai.ComputerUtilCard; import forge.ai.ComputerUtilCard;
import forge.ai.PlayerControllerAi;
import forge.ai.SpellAbilityAi; import forge.ai.SpellAbilityAi;
import forge.game.GameEntity; import forge.game.GameEntity;
import forge.game.card.Card; import forge.game.card.Card;
@@ -121,6 +123,7 @@ public class CountersProliferateAi extends SpellAbilityAi {
final CounterType poison = CounterType.get(CounterEnumType.POISON); final CounterType poison = CounterType.get(CounterEnumType.POISON);
boolean aggroAI = (((PlayerControllerAi) ai.getController()).getAi()).getBooleanProperty(AiProps.PLAY_AGGRO);
// because countertype can't be chosen anymore, only look for posion counters // because countertype can't be chosen anymore, only look for posion counters
for (final Player p : Iterables.filter(options, Player.class)) { for (final Player p : Iterables.filter(options, Player.class)) {
if (p.isOpponentOf(ai)) { if (p.isOpponentOf(ai)) {
@@ -128,7 +131,8 @@ public class CountersProliferateAi extends SpellAbilityAi {
return (T)p; return (T)p;
} }
} else { } else {
if (p.getCounters(poison) <= 5 || p.canReceiveCounters(poison)) { // poison is risky, should not proliferate them in most cases
if ((p.getCounters(poison) <= 5 && aggroAI && p.getCounters(CounterEnumType.EXPERIENCE) + p.getCounters(CounterEnumType.ENERGY) >= 1) || !p.canReceiveCounters(poison)) {
return (T)p; return (T)p;
} }
} }