package mage.player.ai.ma.optimizers.impl;
import mage.abilities.Ability;
import mage.abilities.keyword.LevelUpAbility;
import mage.counters.CounterType;
import mage.game.Game;
import mage.game.permanent.Permanent;
import mage.game.permanent.PermanentCard;
import java.util.List;
/**
* Make sure that AI won't level up whenever there are maximum possible level up counters.
*
* @author ayratn
*/
public class LevelUpOptimizer extends BaseTreeOptimizer {
/**
* Check that ability is level up ability, then compare the current counters of Level type to maximum.
*
* @param game
* @param actions
*/
@Override
public void filter(Game game, List<Ability> actions) {
for (Ability ability : actions) {
if (ability instanceof LevelUpAbility) {
Permanent permanent = game.getPermanent(ability.getSourceId());
if (permanent != null && permanent instanceof PermanentCard) {
PermanentCard leveler = (PermanentCard) permanent;
// check already existing Level counters and compare to maximum that make sense
if (permanent.getCounters(game).getCount(CounterType.LEVEL) >= leveler.getMaxLevelCounters()) {
removeAbility(ability);
}
}
}
}
}
}