mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-20 12:48:00 +00:00
Tweaks
This commit is contained in:
@@ -306,17 +306,16 @@ public class ComputerUtilAbility {
|
|||||||
a1 += getSpellAbilityPriority(a);
|
a1 += getSpellAbilityPriority(a);
|
||||||
b1 += getSpellAbilityPriority(b);
|
b1 += getSpellAbilityPriority(b);
|
||||||
|
|
||||||
int diff = b1 - a1;
|
// If both are creature spells sort them after
|
||||||
|
if (safeToEvaluateCreatures) {
|
||||||
// If both are creature spells with roughly the same priority sort them after
|
a1 += Math.round(ComputerUtilCard.evaluateCreature(a) / 100f);
|
||||||
if (safeToEvaluateCreatures && Math.abs(diff) < 4 && a.getApi() == ApiType.PermanentCreature && b.getApi() == ApiType.PermanentCreature) {
|
b1 += Math.round(ComputerUtilCard.evaluateCreature(b) / 100f);
|
||||||
return 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return diff;
|
return b1 - a1;
|
||||||
}
|
}
|
||||||
|
|
||||||
private int getSpellAbilityPriority(SpellAbility sa) {
|
private static int getSpellAbilityPriority(SpellAbility sa) {
|
||||||
int p = 0;
|
int p = 0;
|
||||||
Card source = sa.getHostCard();
|
Card source = sa.getHostCard();
|
||||||
final Player ai = source == null ? sa.getActivatingPlayer() : source.getController();
|
final Player ai = source == null ? sa.getActivatingPlayer() : source.getController();
|
||||||
@@ -395,6 +394,7 @@ public class ComputerUtilAbility {
|
|||||||
};
|
};
|
||||||
|
|
||||||
public static List<SpellAbility> sortCreatureSpells(List<SpellAbility> all) {
|
public static List<SpellAbility> sortCreatureSpells(List<SpellAbility> all) {
|
||||||
|
// try to smoothen power creeping by making CMC less of a factor
|
||||||
List<SpellAbility> creatures = AiController.filterListByApi(Lists.newArrayList(all), ApiType.PermanentCreature);
|
List<SpellAbility> creatures = AiController.filterListByApi(Lists.newArrayList(all), ApiType.PermanentCreature);
|
||||||
Collections.sort(creatures, ComputerUtilCard.EvaluateCreatureSpellComparator);
|
Collections.sort(creatures, ComputerUtilCard.EvaluateCreatureSpellComparator);
|
||||||
int idx = 0;
|
int idx = 0;
|
||||||
|
|||||||
@@ -570,13 +570,8 @@ public class ComputerUtilCard {
|
|||||||
public static final Comparator<SpellAbility> EvaluateCreatureSpellComparator = new Comparator<SpellAbility>() {
|
public static final Comparator<SpellAbility> EvaluateCreatureSpellComparator = new Comparator<SpellAbility>() {
|
||||||
@Override
|
@Override
|
||||||
public int compare(final SpellAbility a, final SpellAbility b) {
|
public int compare(final SpellAbility a, final SpellAbility b) {
|
||||||
// only reorder if generic priorities can't decide
|
// TODO ideally we could reuse the value from the previous pass with false
|
||||||
// TODO ideally we could reuse the value
|
return ComputerUtilAbility.saEvaluator.compareEvaluator(a, b, true);
|
||||||
int comp = ComputerUtilAbility.saEvaluator.compareEvaluator(a, b, true);
|
|
||||||
if (comp == 0) {
|
|
||||||
return evaluateCreature(b) - evaluateCreature(a);
|
|
||||||
}
|
|
||||||
return comp;
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user