From 1b5c2ad932808d42f7396929f1d16cd5404abfc4 Mon Sep 17 00:00:00 2001 From: excessum Date: Sat, 23 Jul 2016 13:02:19 +0000 Subject: [PATCH] - Cleaned up CharmAi --- .../java/forge/ai/PlayerControllerAi.java | 3 +-- .../main/java/forge/ai/ability/CharmAi.java | 19 +++++++------------ 2 files changed, 8 insertions(+), 14 deletions(-) diff --git a/forge-ai/src/main/java/forge/ai/PlayerControllerAi.java b/forge-ai/src/main/java/forge/ai/PlayerControllerAi.java index f936a953860..f46ba9b4207 100644 --- a/forge-ai/src/main/java/forge/ai/PlayerControllerAi.java +++ b/forge-ai/src/main/java/forge/ai/PlayerControllerAi.java @@ -9,7 +9,6 @@ import com.google.common.collect.Multimap; import forge.LobbyPlayer; import forge.ai.ability.ChangeZoneAi; -import forge.ai.ability.CharmAi; import forge.ai.ability.ProtectAi; import forge.card.ColorSet; import forge.card.MagicColor; @@ -497,7 +496,7 @@ public class PlayerControllerAi extends PlayerController { */ @Override public List chooseModeForAbility(SpellAbility sa, int min, int num, boolean allowRepeat) { - return CharmAi.chooseOptionsAi(sa, player, sa.isTrigger(), num, min, allowRepeat, !player.equals(sa.getActivatingPlayer())); + return sa.getChosenList(); } @Override diff --git a/forge-ai/src/main/java/forge/ai/ability/CharmAi.java b/forge-ai/src/main/java/forge/ai/ability/CharmAi.java index e99ce18e597..45466b23150 100644 --- a/forge-ai/src/main/java/forge/ai/ability/CharmAi.java +++ b/forge-ai/src/main/java/forge/ai/ability/CharmAi.java @@ -27,8 +27,9 @@ public class CharmAi extends SpellAbilityAi { // reset the chosen list. Otherwise it will be locked in forever sa.setChosenList(null); - List chosenList = min > 1 ? chooseMultipleOptionsAi(CharmEffect.makePossibleOptions(sa), ai, min) - : chooseOptionsAi(sa, ai, timingRight, num, min, sa.hasParam("CanRepeatModes"), false); + List choices = CharmEffect.makePossibleOptions(sa); + List chosenList = min > 1 ? chooseMultipleOptionsAi(choices, ai, min) + : chooseOptionsAi(choices, sa, ai, timingRight, num, min, sa.hasParam("CanRepeatModes"), false); if (chosenList.isEmpty()) { return false; @@ -40,11 +41,8 @@ public class CharmAi extends SpellAbilityAi { return r.nextFloat() <= Math.pow(.6667, sa.getActivationsThisTurn()); } - public static List chooseOptionsAi(SpellAbility sa, final Player ai, boolean playNow, int num, int min, boolean allowRepeat, boolean opponentChoser) { - if (sa.getChosenList() != null) { - return sa.getChosenList(); - } - List choices = CharmEffect.makePossibleOptions(sa); + private List chooseOptionsAi(List choices, SpellAbility sa, final Player ai, + boolean playNow, int num, int min, boolean allowRepeat, boolean opponentChoser) { List chosenList = new ArrayList(); if (opponentChoser) { @@ -180,7 +178,6 @@ public class CharmAi extends SpellAbilityAi { private List chooseMultipleOptionsAi(List choices, final Player ai, int min) { AbilitySub goodChoice = null; List chosenList = new ArrayList(); - // select first n playable options AiController aic = ((PlayerControllerAi) ai.getController()).getAi(); for (AbilitySub sub : choices) { sub.setActivatingPlayer(ai); @@ -200,13 +197,11 @@ public class CharmAi extends SpellAbilityAi { // Add generic good choice if one more choice is needed if (chosenList.size() == min - 1 && goodChoice != null) { chosenList.add(0, goodChoice); // hack to make Dromoka's Command fight targets work - return chosenList; } if (chosenList.size() != min) { - return new ArrayList(); - } else { - return chosenList; + chosenList.clear(); } + return chosenList; } @Override