mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-19 20:28:00 +00:00
- Some refactoring and imports cleanup in ChooseTypeAi.
This commit is contained in:
@@ -17,7 +17,6 @@ import forge.game.phase.PhaseType;
|
||||
import forge.game.player.Player;
|
||||
import forge.game.spellability.SpellAbility;
|
||||
import forge.game.zone.ZoneType;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
public class ChooseTypeAi extends SpellAbilityAi {
|
||||
@@ -27,45 +26,49 @@ public class ChooseTypeAi extends SpellAbilityAi {
|
||||
return false;
|
||||
} else if ("MostProminentComputerControls".equals(sa.getParam("AILogic"))) {
|
||||
if (ComputerUtilAbility.getAbilitySourceName(sa).equals("Mirror Entity Avatar")) {
|
||||
if (AiCardMemory.isRememberedCard(aiPlayer, sa.getHostCard(), AiCardMemory.MemorySet.ANIMATED_THIS_TURN)) {
|
||||
return false;
|
||||
}
|
||||
if (!aiPlayer.getGame().getPhaseHandler().is(PhaseType.MAIN1, aiPlayer)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
List<String> valid = Lists.newArrayList(CardType.getAllCreatureTypes());
|
||||
String chosenType = ComputerUtilCard.getMostProminentType(aiPlayer.getCardsIn(ZoneType.Battlefield), valid);
|
||||
if (chosenType.isEmpty()) {
|
||||
return false;
|
||||
}
|
||||
|
||||
int maxX = ComputerUtilMana.determineMaxAffordableX(aiPlayer, sa);
|
||||
int avgPower = 0;
|
||||
|
||||
if (maxX > 1) {
|
||||
CardCollection cre = CardLists.filter(aiPlayer.getCardsIn(ZoneType.Battlefield),
|
||||
Predicates.and(CardPredicates.isType(chosenType), CardPredicates.Presets.UNTAPPED));
|
||||
if (!cre.isEmpty()) {
|
||||
for (Card c: cre) {
|
||||
avgPower += c.getCurrentPower();
|
||||
}
|
||||
avgPower /= cre.size();
|
||||
if (maxX > avgPower) {
|
||||
sa.setSVar("PayX", String.valueOf(maxX));
|
||||
AiCardMemory.rememberCard(aiPlayer, sa.getHostCard(), AiCardMemory.MemorySet.ANIMATED_THIS_TURN);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
return doMirrorEntityLogic(aiPlayer, sa);
|
||||
}
|
||||
}
|
||||
|
||||
return doTriggerAINoCost(aiPlayer, sa, false);
|
||||
}
|
||||
|
||||
private boolean doMirrorEntityLogic(Player aiPlayer, SpellAbility sa) {
|
||||
if (AiCardMemory.isRememberedCard(aiPlayer, sa.getHostCard(), AiCardMemory.MemorySet.ANIMATED_THIS_TURN)) {
|
||||
return false;
|
||||
}
|
||||
if (!aiPlayer.getGame().getPhaseHandler().is(PhaseType.MAIN1, aiPlayer)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
List<String> valid = Lists.newArrayList(CardType.getAllCreatureTypes());
|
||||
String chosenType = ComputerUtilCard.getMostProminentType(aiPlayer.getCardsIn(ZoneType.Battlefield), valid);
|
||||
if (chosenType.isEmpty()) {
|
||||
return false;
|
||||
}
|
||||
|
||||
int maxX = ComputerUtilMana.determineMaxAffordableX(aiPlayer, sa);
|
||||
int avgPower = 0;
|
||||
|
||||
if (maxX > 1) {
|
||||
CardCollection cre = CardLists.filter(aiPlayer.getCardsIn(ZoneType.Battlefield),
|
||||
Predicates.and(CardPredicates.isType(chosenType), CardPredicates.Presets.UNTAPPED));
|
||||
if (!cre.isEmpty()) {
|
||||
for (Card c: cre) {
|
||||
avgPower += c.getCurrentPower();
|
||||
}
|
||||
avgPower /= cre.size();
|
||||
if (maxX > avgPower) {
|
||||
sa.setSVar("PayX", String.valueOf(maxX));
|
||||
AiCardMemory.rememberCard(aiPlayer, sa.getHostCard(), AiCardMemory.MemorySet.ANIMATED_THIS_TURN);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected boolean doTriggerAINoCost(Player ai, SpellAbility sa, boolean mandatory) {
|
||||
if (sa.usesTargeting()) {
|
||||
|
||||
Reference in New Issue
Block a user