From 94d08025286ace70b492ab2e663ed15d5bd1b37c Mon Sep 17 00:00:00 2001 From: tool4EvEr Date: Thu, 10 Mar 2022 08:22:55 +0100 Subject: [PATCH] Some clean up fix --- .../java/forge/ai/PlayerControllerAi.java | 5 +---- .../forge/ai/ability/ChangeZoneAllAi.java | 11 ++++------ .../java/forge/ai/ability/ChooseCardAi.java | 4 +--- .../java/forge/ai/ability/ChooseTypeAi.java | 7 ++----- .../main/java/forge/ai/ability/ProtectAi.java | 21 +++++++++---------- .../main/java/forge/ai/ability/PumpAi.java | 2 +- .../forge/game/ability/effects/DigEffect.java | 4 ++-- 7 files changed, 21 insertions(+), 33 deletions(-) diff --git a/forge-ai/src/main/java/forge/ai/PlayerControllerAi.java b/forge-ai/src/main/java/forge/ai/PlayerControllerAi.java index bc7472c011d..ee6af78bb3c 100644 --- a/forge-ai/src/main/java/forge/ai/PlayerControllerAi.java +++ b/forge-ai/src/main/java/forge/ai/PlayerControllerAi.java @@ -987,10 +987,7 @@ public class PlayerControllerAi extends PlayerController { } final String logic = sa.getParam("AILogic"); if (logic == null || logic.equals("MostProminentHumanCreatures")) { - CardCollection list = new CardCollection(); - for (Player opp : player.getOpponents()) { - list.addAll(opp.getCreaturesInPlay()); - } + CardCollection list = player.getOpponents().getCreaturesInPlay(); if (list.isEmpty()) { list = CardLists.filterControlledBy(getGame().getCardsInGame(), player.getOpponents()); } diff --git a/forge-ai/src/main/java/forge/ai/ability/ChangeZoneAllAi.java b/forge-ai/src/main/java/forge/ai/ability/ChangeZoneAllAi.java index edd626ac285..baf3306bae9 100644 --- a/forge-ai/src/main/java/forge/ai/ability/ChangeZoneAllAi.java +++ b/forge-ai/src/main/java/forge/ai/ability/ChangeZoneAllAi.java @@ -138,7 +138,7 @@ public class ChangeZoneAllAi extends SpellAbilityAi { return true; } else { // search targetable Opponents - final PlayerCollection oppList = new PlayerCollection(Iterables.filter(ai.getOpponents(), PlayerPredicates.isTargetableBy(sa))); + final PlayerCollection oppList = ai.getOpponents().filter(PlayerPredicates.isTargetableBy(sa)); if (oppList.isEmpty()) { return false; @@ -162,8 +162,7 @@ public class ChangeZoneAllAi extends SpellAbilityAi { // if human creatures are more valuable if (sa.usesTargeting()) { // search targetable Opponents - final PlayerCollection oppList = new PlayerCollection(Iterables.filter(ai.getOpponents(), - PlayerPredicates.isTargetableBy(sa))); + final PlayerCollection oppList = ai.getOpponents().filter(PlayerPredicates.isTargetableBy(sa)); if (oppList.isEmpty()) { return false; @@ -386,8 +385,7 @@ public class ChangeZoneAllAi extends SpellAbilityAi { if (origin.equals(ZoneType.Hand) || origin.equals(ZoneType.Library)) { if (sa.usesTargeting()) { // search targetable Opponents - final PlayerCollection oppList = new PlayerCollection(Iterables.filter(ai.getOpponents(), - PlayerPredicates.isTargetableBy(sa))); + final PlayerCollection oppList = ai.getOpponents().filter(PlayerPredicates.isTargetableBy(sa)); if (oppList.isEmpty()) { if (mandatory && !sa.isTargetNumberValid() && sa.canTarget(ai)) { @@ -432,8 +430,7 @@ public class ChangeZoneAllAi extends SpellAbilityAi { } else if (origin.equals(ZoneType.Graveyard)) { if (sa.usesTargeting()) { // search targetable Opponents - final PlayerCollection oppList = new PlayerCollection(Iterables.filter(ai.getOpponents(), - PlayerPredicates.isTargetableBy(sa))); + final PlayerCollection oppList = ai.getOpponents().filter(PlayerPredicates.isTargetableBy(sa)); if (oppList.isEmpty()) { if (mandatory && !sa.isTargetNumberValid() && sa.canTarget(ai)) { diff --git a/forge-ai/src/main/java/forge/ai/ability/ChooseCardAi.java b/forge-ai/src/main/java/forge/ai/ability/ChooseCardAi.java index ad73c11051c..b6a0b8aaf1e 100644 --- a/forge-ai/src/main/java/forge/ai/ability/ChooseCardAi.java +++ b/forge-ai/src/main/java/forge/ai/ability/ChooseCardAi.java @@ -7,7 +7,6 @@ import java.util.Map; import com.google.common.base.Predicate; import com.google.common.base.Predicates; import com.google.common.collect.Iterables; -import com.google.common.collect.Lists; import forge.ai.AiAttackController; import forge.ai.ComputerUtilAbility; @@ -42,8 +41,7 @@ public class ChooseCardAi extends SpellAbilityAi { if (sa.usesTargeting()) { sa.resetTargets(); // search targetable Opponents - final List oppList = Lists.newArrayList(Iterables.filter( - ai.getOpponents(), PlayerPredicates.isTargetableBy(sa))); + final List oppList = ai.getOpponents().filter(PlayerPredicates.isTargetableBy(sa)); if (oppList.isEmpty()) { return false; diff --git a/forge-ai/src/main/java/forge/ai/ability/ChooseTypeAi.java b/forge-ai/src/main/java/forge/ai/ability/ChooseTypeAi.java index 56cb2c95a21..4ce3c0d70a1 100644 --- a/forge-ai/src/main/java/forge/ai/ability/ChooseTypeAi.java +++ b/forge-ai/src/main/java/forge/ai/ability/ChooseTypeAi.java @@ -7,7 +7,6 @@ import java.util.Set; import com.google.common.base.Predicates; import com.google.common.collect.Iterables; -import com.google.common.collect.Lists; import forge.ai.AiCardMemory; import forge.ai.ComputerUtilAbility; import forge.ai.ComputerUtilCard; @@ -111,10 +110,8 @@ public class ChooseTypeAi extends SpellAbilityAi { boolean isCurse = sa.isCurse(); if (sa.usesTargeting()) { - final List oppList = Lists.newArrayList(Iterables.filter( - ai.getOpponents(), PlayerPredicates.isTargetableBy(sa))); - final List alliesList = Lists.newArrayList(Iterables.filter( - ai.getAllies(), PlayerPredicates.isTargetableBy(sa))); + final List oppList = ai.getOpponents().filter(PlayerPredicates.isTargetableBy(sa)); + final List alliesList = ai.getAllies().filter(PlayerPredicates.isTargetableBy(sa)); sa.resetTargets(); diff --git a/forge-ai/src/main/java/forge/ai/ability/ProtectAi.java b/forge-ai/src/main/java/forge/ai/ability/ProtectAi.java index 47b37126a7d..f27a3326521 100644 --- a/forge-ai/src/main/java/forge/ai/ability/ProtectAi.java +++ b/forge-ai/src/main/java/forge/ai/ability/ProtectAi.java @@ -146,13 +146,12 @@ public class ProtectAi extends SpellAbilityAi { String s = aiAtk.toProtectAttacker(sa); if (s == null) { return false; - } else { - Player opponent = ai.getWeakestOpponent(); - Combat combat = ai.getGame().getCombat(); - int dmg = ComputerUtilCombat.damageIfUnblocked(c, opponent, combat, true); - float ratio = 1.0f * dmg / opponent.getLife(); - return MyRandom.getRandom().nextFloat() < ratio; } + Player opponent = ai.getWeakestOpponent(); + Combat combat = ai.getGame().getCombat(); + int dmg = ComputerUtilCombat.damageIfUnblocked(c, opponent, combat, true); + float ratio = 1.0f * dmg / opponent.getLife(); + return MyRandom.getRandom().nextFloat() < ratio; } return false; } @@ -227,7 +226,7 @@ public class ProtectAi extends SpellAbilityAi { } if (list.isEmpty()) { - return mandatory && protectMandatoryTarget(ai, sa, mandatory); + return mandatory && protectMandatoryTarget(ai, sa); } while (sa.canAddMoreTarget()) { @@ -237,7 +236,7 @@ public class ProtectAi extends SpellAbilityAi { if (list.isEmpty()) { if ((sa.getTargets().size() < tgt.getMinTargets(source, sa)) || sa.getTargets().size() == 0) { if (mandatory) { - return protectMandatoryTarget(ai, sa, mandatory); + return protectMandatoryTarget(ai, sa); } sa.resetTargets(); @@ -256,7 +255,7 @@ public class ProtectAi extends SpellAbilityAi { return true; } // protectTgtAI() - private static boolean protectMandatoryTarget(final Player ai, final SpellAbility sa, final boolean mandatory) { + private static boolean protectMandatoryTarget(final Player ai, final SpellAbility sa) { final Game game = ai.getGame(); final TargetRestrictions tgt = sa.getTargetRestrictions(); @@ -294,7 +293,7 @@ public class ProtectAi extends SpellAbilityAi { break; } - Card c = ComputerUtilCard.getBestAI(list); + Card c = ComputerUtilCard.getBestAI(pref); pref.remove(c); sa.getTargets().add(c); } @@ -304,7 +303,7 @@ public class ProtectAi extends SpellAbilityAi { break; } - Card c = ComputerUtilCard.getBestAI(list); + Card c = ComputerUtilCard.getBestAI(pref2); pref2.remove(c); sa.getTargets().add(c); } diff --git a/forge-ai/src/main/java/forge/ai/ability/PumpAi.java b/forge-ai/src/main/java/forge/ai/ability/PumpAi.java index 5ce91433d59..95ad7c97d46 100644 --- a/forge-ai/src/main/java/forge/ai/ability/PumpAi.java +++ b/forge-ai/src/main/java/forge/ai/ability/PumpAi.java @@ -540,7 +540,7 @@ public class PumpAi extends PumpAiBase { // Filter AI-specific targets if provided list = ComputerUtil.filterAITgts(sa, ai, list, true); - if (list.isEmpty() || ComputerUtil.activateForCost(sa, ai)) { + if (list.isEmpty() && (mandatory || ComputerUtil.activateForCost(sa, ai))) { return pumpMandatoryTarget(ai, sa); } diff --git a/forge-game/src/main/java/forge/game/ability/effects/DigEffect.java b/forge-game/src/main/java/forge/game/ability/effects/DigEffect.java index 2d67e131fd8..1d8a935d8b4 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/DigEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/DigEffect.java @@ -34,8 +34,8 @@ public class DigEffect extends SpellAbilityEffect { final Card host = sa.getHostCard(); final StringBuilder sb = new StringBuilder(); final int numToDig = AbilityUtils.calculateAmount(host, sa.getParam("DigNum"), sa); - final int numToChange = (sa.hasParam("ChangeNum") ? - AbilityUtils.calculateAmount(host, sa.getParam("ChangeNum"), sa) : 1); + final String toChange = sa.getParamOrDefault("ChangeNum", "1"); + final int numToChange = toChange.startsWith("All") ? numToDig : AbilityUtils.calculateAmount(host, sa.getParam("ChangeNum"), sa); final List tgtPlayers = getTargetPlayers(sa); String verb = " looks at ";