mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-19 12:18:00 +00:00
Refactor helper function.
This commit is contained in:
@@ -196,43 +196,8 @@ public class PumpAi extends PumpAiBase {
|
|||||||
return true;
|
return true;
|
||||||
} // pumpPlayAI()
|
} // pumpPlayAI()
|
||||||
|
|
||||||
private boolean pumpTgtAI(final Player ai, final SpellAbility sa, final int defense, final int attack, final boolean mandatory) {
|
private boolean fightAI(final Player ai, final SpellAbility sa, final int defense, final int attack) {
|
||||||
final List<String> keywords = sa.hasParam("KW") ? Arrays.asList(sa.getParam("KW").split(" & ")) : new ArrayList<String>();
|
|
||||||
final Game game = ai.getGame();
|
|
||||||
final Card source = sa.getHostCard();
|
final Card source = sa.getHostCard();
|
||||||
|
|
||||||
if (!mandatory
|
|
||||||
&& !sa.isTrigger()
|
|
||||||
&& game.getPhaseHandler().getPhase().isAfter(PhaseType.COMBAT_DECLARE_BLOCKERS)
|
|
||||||
&& !(sa.isCurse() && defense < 0)
|
|
||||||
&& !containsNonCombatKeyword(keywords)
|
|
||||||
&& !sa.hasParam("UntilYourNextTurn")) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
final Player opp = ai.getOpponent();
|
|
||||||
final TargetRestrictions tgt = sa.getTargetRestrictions();
|
|
||||||
sa.resetTargets();
|
|
||||||
if (sa.hasParam("TargetingPlayer") && sa.getActivatingPlayer().equals(ai) && !sa.isTrigger()) {
|
|
||||||
Player targetingPlayer = AbilityUtils.getDefinedPlayers(source, sa.getParam("TargetingPlayer"), sa).get(0);
|
|
||||||
sa.setTargetingPlayer(targetingPlayer);
|
|
||||||
return targetingPlayer.getController().chooseTargetsFor(sa);
|
|
||||||
}
|
|
||||||
|
|
||||||
CardCollection list;
|
|
||||||
if (sa.hasParam("AILogic")) {
|
|
||||||
if (sa.getParam("AILogic").equals("HighestPower")) {
|
|
||||||
list = CardLists.getValidCards(CardLists.filter(game.getCardsIn(ZoneType.Battlefield), Presets.CREATURES), tgt.getValidTgts(), ai, source);
|
|
||||||
list = CardLists.getTargetableCards(list, sa);
|
|
||||||
CardLists.sortByPowerDesc(list);
|
|
||||||
if (!list.isEmpty()) {
|
|
||||||
sa.getTargets().add(list.get(0));
|
|
||||||
return true;
|
|
||||||
} else {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (sa.getParam("AILogic").equals("Fight") || sa.getParam("AILogic").equals("PowerDmg")) {
|
|
||||||
final AbilitySub tgtFight = sa.getSubAbility();
|
final AbilitySub tgtFight = sa.getSubAbility();
|
||||||
CardCollection aiCreatures = ai.getCreaturesInPlay();
|
CardCollection aiCreatures = ai.getCreaturesInPlay();
|
||||||
aiCreatures = CardLists.getTargetableCards(aiCreatures, sa);
|
aiCreatures = CardLists.getTargetableCards(aiCreatures, sa);
|
||||||
@@ -293,6 +258,46 @@ public class PumpAi extends PumpAiBase {
|
|||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private boolean pumpTgtAI(final Player ai, final SpellAbility sa, final int defense, final int attack, final boolean mandatory) {
|
||||||
|
final List<String> keywords = sa.hasParam("KW") ? Arrays.asList(sa.getParam("KW").split(" & ")) : new ArrayList<String>();
|
||||||
|
final Game game = ai.getGame();
|
||||||
|
final Card source = sa.getHostCard();
|
||||||
|
|
||||||
|
if (!mandatory
|
||||||
|
&& !sa.isTrigger()
|
||||||
|
&& game.getPhaseHandler().getPhase().isAfter(PhaseType.COMBAT_DECLARE_BLOCKERS)
|
||||||
|
&& !(sa.isCurse() && defense < 0)
|
||||||
|
&& !containsNonCombatKeyword(keywords)
|
||||||
|
&& !sa.hasParam("UntilYourNextTurn")) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
final Player opp = ai.getOpponent();
|
||||||
|
final TargetRestrictions tgt = sa.getTargetRestrictions();
|
||||||
|
sa.resetTargets();
|
||||||
|
if (sa.hasParam("TargetingPlayer") && sa.getActivatingPlayer().equals(ai) && !sa.isTrigger()) {
|
||||||
|
Player targetingPlayer = AbilityUtils.getDefinedPlayers(source, sa.getParam("TargetingPlayer"), sa).get(0);
|
||||||
|
sa.setTargetingPlayer(targetingPlayer);
|
||||||
|
return targetingPlayer.getController().chooseTargetsFor(sa);
|
||||||
|
}
|
||||||
|
|
||||||
|
CardCollection list;
|
||||||
|
if (sa.hasParam("AILogic")) {
|
||||||
|
if (sa.getParam("AILogic").equals("HighestPower")) {
|
||||||
|
list = CardLists.getValidCards(CardLists.filter(game.getCardsIn(ZoneType.Battlefield), Presets.CREATURES), tgt.getValidTgts(), ai, source);
|
||||||
|
list = CardLists.getTargetableCards(list, sa);
|
||||||
|
CardLists.sortByPowerDesc(list);
|
||||||
|
if (!list.isEmpty()) {
|
||||||
|
sa.getTargets().add(list.get(0));
|
||||||
|
return true;
|
||||||
|
} else {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (sa.getParam("AILogic").equals("Fight") || sa.getParam("AILogic").equals("PowerDmg")) {
|
||||||
|
return fightAI(ai, sa, defense, attack);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (sa.isCurse()) {
|
if (sa.isCurse()) {
|
||||||
|
|||||||
Reference in New Issue
Block a user