mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-16 18:58:00 +00:00
- Improved orderBlockers AI.
This commit is contained in:
@@ -917,15 +917,26 @@ public class ComputerUtilBlock {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static List<Card> orderBlockers(Card attacker, List<Card> blockers) {
|
public static List<Card> orderBlockers(Card attacker, List<Card> blockers) {
|
||||||
// very very simple ordering of blockers, sort by evaluate, then sort by attack
|
// ordering of blockers, sort by evaluate, then try to kill the best
|
||||||
//final int damage = attacker.getNetCombatDamage();
|
int damage = attacker.getNetCombatDamage();
|
||||||
CardLists.sortByEvaluateCreature(blockers);
|
CardLists.sortByEvaluateCreature(blockers);
|
||||||
CardLists.sortByPowerDesc(blockers);
|
final List<Card> first = new ArrayList<Card>();
|
||||||
|
final List<Card> last = new ArrayList<Card>();
|
||||||
|
for (Card blocker : blockers) {
|
||||||
|
int lethal = ComputerUtilCombat.getEnoughDamageToKill(blocker, damage, attacker, true);
|
||||||
|
if (lethal > damage) {
|
||||||
|
last.add(blocker);
|
||||||
|
} else {
|
||||||
|
first.add(blocker);
|
||||||
|
damage -= lethal;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
first.addAll(last);
|
||||||
|
|
||||||
// TODO: Take total damage, and attempt to maximize killing the greatest evaluation of creatures
|
// TODO: Take total damage, and attempt to maximize killing the greatest evaluation of creatures
|
||||||
// It's probably generally better to kill the largest creature, but sometimes its better to kill a few smaller ones
|
// It's probably generally better to kill the largest creature, but sometimes its better to kill a few smaller ones
|
||||||
|
|
||||||
return blockers;
|
return first;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static List<Card> orderAttackers(Card attacker, List<Card> blockers) {
|
public static List<Card> orderAttackers(Card attacker, List<Card> blockers) {
|
||||||
|
|||||||
Reference in New Issue
Block a user