From 354000082b36608412bafb28d88c536688e3cc08 Mon Sep 17 00:00:00 2001 From: tool4EvEr Date: Thu, 22 Apr 2021 18:50:06 +0200 Subject: [PATCH] Clean up --- .../forge/ai/ability/ChangeTargetsAi.java | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/forge-ai/src/main/java/forge/ai/ability/ChangeTargetsAi.java b/forge-ai/src/main/java/forge/ai/ability/ChangeTargetsAi.java index 4a377742dde..3d9f69700b0 100644 --- a/forge-ai/src/main/java/forge/ai/ability/ChangeTargetsAi.java +++ b/forge-ai/src/main/java/forge/ai/ability/ChangeTargetsAi.java @@ -10,6 +10,7 @@ import forge.game.card.Card; import forge.game.mana.ManaCostBeingPaid; import forge.game.player.Player; import forge.game.spellability.SpellAbility; +import forge.game.spellability.TargetChoices; public class ChangeTargetsAi extends SpellAbilityAi { @@ -40,18 +41,20 @@ public class ChangeTargetsAi extends SpellAbilityAi { // nothing on stack, so nothing to target return false; } + final TargetChoices topTargets = topSa.getTargets(); + final Card topHost = topSa.getHostCard(); if (sa.getTargets().size() != 0 && sa.isTrigger()) { // something was already chosen before (e.g. in response to a trigger - Mizzium Meddler), so just proceed return true; } - if (!topSa.usesTargeting() || topSa.getTargets().getTargetCards().contains(sa.getHostCard())) { + if (!topSa.usesTargeting() || topTargets.getTargetCards().contains(sa.getHostCard())) { // if this does not target at all or already targets host, no need to redirect it again return false; } - for (Card tgt : topSa.getTargets().getTargetCards()) { + for (Card tgt : topTargets.getTargetCards()) { if (ComputerUtilAbility.getAbilitySourceName(sa).equals(tgt.getName()) && tgt.getController().equals(aiPlayer)) { // We are already targeting at least one card with the same name (e.g. in presence of 2+ Spellskites), // no need to retarget again to another one @@ -59,7 +62,7 @@ public class ChangeTargetsAi extends SpellAbilityAi { } } - if (topSa.getHostCard() != null && !topSa.getHostCard().getController().isOpponentOf(aiPlayer)) { + if (topHost != null && !topHost.getController().isOpponentOf(aiPlayer)) { // make sure not to redirect our own abilities return false; } @@ -71,7 +74,7 @@ public class ChangeTargetsAi extends SpellAbilityAi { // don't try retargeting a spell that the current card can't legally retarget (e.g. Muck Drubb + Lightning Bolt to the face) return false; } - + if (sa.getPayCosts().getCostMana() != null && sa.getPayCosts().getCostMana().getMana().hasPhyrexian()) { ManaCost manaCost = sa.getPayCosts().getCostMana().getMana(); int payDamage = manaCost.getPhyrexianCount() * 2; @@ -80,18 +83,18 @@ public class ChangeTargetsAi extends SpellAbilityAi { ManaCost normalizedMana = manaCost.getNormalizedMana(); boolean canPay = ComputerUtilMana.canPayManaCost(new ManaCostBeingPaid(normalizedMana), sa, aiPlayer); if (potentialDmg != -1 && potentialDmg <= payDamage && !canPay - && topSa.getTargets().contains(aiPlayer)) { + && topTargets.contains(aiPlayer)) { // do not pay Phyrexian mana if the spell is a damaging one but it deals less damage or the same damage as we'll pay life return false; } } - Card firstCard = topSa.getTargets().getFirstTargetedCard(); + Card firstCard = topTargets.getFirstTargetedCard(); // if we're not the target don't intervene unless we can steal a buff - if (firstCard != null && !aiPlayer.equals(firstCard.getController()) && !topSa.getHostCard().getController().equals(firstCard.getController()) && !topSa.getHostCard().getController().getAllies().contains(firstCard.getController())) { + if (firstCard != null && !aiPlayer.equals(firstCard.getController()) && !topHost.getController().equals(firstCard.getController()) && !topHost.getController().getAllies().contains(firstCard.getController())) { return false; } - Player firstPlayer = topSa.getTargets().getFirstTargetedPlayer(); + Player firstPlayer = topTargets.getFirstTargetedPlayer(); if (firstPlayer != null && !aiPlayer.equals(firstPlayer)) { return false; }