From e96ff73b50440c2e12a9f987a09ef29aaa40e426 Mon Sep 17 00:00:00 2001 From: Maxmtg Date: Sun, 24 Nov 2013 10:02:58 +0000 Subject: [PATCH] modified spells' canPlayAi, doTrigger and playFromEffect methods used by AI to include aiPlayer as 1st parameter --- .gitattributes | 2 +- .../src/main/java/forge/ai/AiController.java | 6 +-- .../{game/ability => ai}/SpellAbilityAi.java | 5 +- .../java/forge/ai/ability/AddPhaseAi.java | 2 +- .../main/java/forge/ai/ability/AddTurnAi.java | 2 +- .../java/forge/ai/ability/AlwaysPlayAi.java | 2 +- .../main/java/forge/ai/ability/AnimateAi.java | 2 +- .../java/forge/ai/ability/AnimateAllAi.java | 2 +- .../main/java/forge/ai/ability/AttachAi.java | 2 +- .../main/java/forge/ai/ability/BalanceAi.java | 2 +- .../forge/ai/ability/BecomesBlockedAi.java | 2 +- .../main/java/forge/ai/ability/BondAi.java | 2 +- .../forge/ai/ability/CanPlayAsDrawbackAi.java | 2 +- .../java/forge/ai/ability/CannotPlayAi.java | 2 +- .../forge/ai/ability/ChangeTargetsAi.java | 2 +- .../java/forge/ai/ability/ChangeZoneAi.java | 2 +- .../forge/ai/ability/ChangeZoneAllAi.java | 2 +- .../main/java/forge/ai/ability/CharmAi.java | 4 +- .../java/forge/ai/ability/ChooseCardAi.java | 2 +- .../forge/ai/ability/ChooseCardNameAi.java | 2 +- .../java/forge/ai/ability/ChooseColorAi.java | 2 +- .../java/forge/ai/ability/ChoosePlayerAi.java | 2 +- .../java/forge/ai/ability/ChooseSourceAi.java | 2 +- .../java/forge/ai/ability/ChooseTypeAi.java | 2 +- .../main/java/forge/ai/ability/ClashAi.java | 2 +- .../main/java/forge/ai/ability/CloneAi.java | 2 +- .../forge/ai/ability/ControlExchangeAi.java | 2 +- .../java/forge/ai/ability/ControlGainAi.java | 2 +- .../forge/ai/ability/CopyPermanentAi.java | 2 +- .../main/java/forge/ai/ability/CounterAi.java | 2 +- .../java/forge/ai/ability/CountersMoveAi.java | 2 +- .../ai/ability/CountersProliferateAi.java | 2 +- .../java/forge/ai/ability/CountersPutAi.java | 2 +- .../forge/ai/ability/CountersPutAllAi.java | 2 +- .../ai/ability/CountersPutOrRemoveAi.java | 2 +- .../forge/ai/ability/CountersRemoveAi.java | 2 +- .../java/forge/ai/ability/DamageAiBase.java | 2 +- .../java/forge/ai/ability/DamageAllAi.java | 2 +- .../java/forge/ai/ability/DamageDealAi.java | 2 +- .../forge/ai/ability/DamagePreventAi.java | 2 +- .../forge/ai/ability/DamagePreventAllAi.java | 2 +- .../main/java/forge/ai/ability/DebuffAi.java | 2 +- .../java/forge/ai/ability/DebuffAllAi.java | 2 +- .../forge/ai/ability/DelayedTriggerAi.java | 6 +-- .../main/java/forge/ai/ability/DestroyAi.java | 2 +- .../java/forge/ai/ability/DestroyAllAi.java | 2 +- .../src/main/java/forge/ai/ability/DigAi.java | 2 +- .../java/forge/ai/ability/DigUntilAi.java | 2 +- .../main/java/forge/ai/ability/DiscardAi.java | 2 +- .../java/forge/ai/ability/DrainManaAi.java | 2 +- .../main/java/forge/ai/ability/DrawAi.java | 2 +- .../main/java/forge/ai/ability/EffectAi.java | 2 +- .../main/java/forge/ai/ability/EncodeAi.java | 2 +- .../main/java/forge/ai/ability/EndTurnAi.java | 2 +- .../main/java/forge/ai/ability/FightAi.java | 2 +- .../java/forge/ai/ability/FlipACoinAi.java | 2 +- .../src/main/java/forge/ai/ability/FogAi.java | 2 +- .../java/forge/ai/ability/GameLossAi.java | 2 +- .../main/java/forge/ai/ability/GameWinAi.java | 2 +- .../forge/ai/ability/LegendaryRuleAi.java | 2 +- .../java/forge/ai/ability/LifeExchangeAi.java | 2 +- .../java/forge/ai/ability/LifeGainAi.java | 2 +- .../java/forge/ai/ability/LifeLoseAi.java | 2 +- .../main/java/forge/ai/ability/LifeSetAi.java | 2 +- .../java/forge/ai/ability/ManaEffectAi.java | 2 +- .../main/java/forge/ai/ability/MillAi.java | 2 +- .../java/forge/ai/ability/MustAttackAi.java | 2 +- .../java/forge/ai/ability/MustBlockAi.java | 2 +- .../forge/ai/ability/PeekAndRevealAi.java | 2 +- .../forge/ai/ability/PermanentCreatureAi.java | 2 +- .../ai/ability/PermanentNoncreatureAi.java | 2 +- .../main/java/forge/ai/ability/PhasesAi.java | 2 +- .../main/java/forge/ai/ability/PlayAi.java | 4 +- .../main/java/forge/ai/ability/PoisonAi.java | 2 +- .../forge/ai/ability/PowerExchangeAi.java | 2 +- .../main/java/forge/ai/ability/ProtectAi.java | 2 +- .../java/forge/ai/ability/ProtectAllAi.java | 2 +- .../main/java/forge/ai/ability/PumpAi.java | 2 +- .../java/forge/ai/ability/PumpAiBase.java | 2 +- .../ai/ability/RearrangeTopOfLibraryAi.java | 2 +- .../java/forge/ai/ability/RegenerateAi.java | 2 +- .../forge/ai/ability/RegenerateAllAi.java | 2 +- .../forge/ai/ability/RemoveFromCombatAi.java | 2 +- .../main/java/forge/ai/ability/RepeatAi.java | 2 +- .../java/forge/ai/ability/RepeatEachAi.java | 2 +- .../java/forge/ai/ability/RestartGameAi.java | 2 +- .../main/java/forge/ai/ability/RevealAi.java | 2 +- .../java/forge/ai/ability/RevealAiBase.java | 2 +- .../java/forge/ai/ability/RevealHandAi.java | 2 +- .../forge/ai/ability/RollPlanarDiceAi.java | 2 +- .../java/forge/ai/ability/SacrificeAi.java | 2 +- .../java/forge/ai/ability/SacrificeAllAi.java | 2 +- .../main/java/forge/ai/ability/ScryAi.java | 2 +- .../java/forge/ai/ability/SetStateAi.java | 2 +- .../main/java/forge/ai/ability/ShuffleAi.java | 2 +- .../java/forge/ai/ability/StoreSVarAi.java | 2 +- .../src/main/java/forge/ai/ability/TapAi.java | 2 +- .../main/java/forge/ai/ability/TapAiBase.java | 2 +- .../main/java/forge/ai/ability/TapAllAi.java | 2 +- .../forge/ai/ability/TapOrUntapAllAi.java | 2 +- .../main/java/forge/ai/ability/TokenAi.java | 2 +- .../java/forge/ai/ability/TwoPilesAi.java | 2 +- .../java/forge/ai/ability/UnattachAllAi.java | 2 +- .../main/java/forge/ai/ability/UntapAi.java | 2 +- .../java/forge/ai/ability/UntapAllAi.java | 2 +- .../java/forge/ai/ability/ZoneExchangeAi.java | 2 +- .../forge/game/ability/AbilityApiBased.java | 5 +- .../main/java/forge/game/ability/ApiType.java | 1 + .../forge/game/ability/SpellApiBased.java | 14 +++--- .../game/ability/effects/PlayEffect.java | 2 +- .../java/forge/game/card/CardFactory.java | 6 +-- .../java/forge/game/card/CardFactoryUtil.java | 21 ++++---- .../forge/game/player/PlayerControllerAi.java | 4 +- .../forge/game/spellability/AbilitySub.java | 6 +-- .../java/forge/game/spellability/Spell.java | 8 ++-- .../forge/game/spellability/SpellAbility.java | 2 +- .../game/spellability/SpellPermanent.java | 48 +++++++++---------- .../forge/game/trigger/WrappedAbility.java | 4 +- 118 files changed, 174 insertions(+), 174 deletions(-) rename forge-gui/src/main/java/forge/{game/ability => ai}/SpellAbilityAi.java (95%) diff --git a/.gitattributes b/.gitattributes index 0660d37d837..f13f2530dae 100644 --- a/.gitattributes +++ b/.gitattributes @@ -14698,6 +14698,7 @@ forge-gui/src/main/java/forge/ai/ComputerUtilCard.java -text forge-gui/src/main/java/forge/ai/ComputerUtilCombat.java -text forge-gui/src/main/java/forge/ai/ComputerUtilCost.java -text forge-gui/src/main/java/forge/ai/ComputerUtilMana.java -text +forge-gui/src/main/java/forge/ai/SpellAbilityAi.java -text forge-gui/src/main/java/forge/ai/ability/AddPhaseAi.java -text forge-gui/src/main/java/forge/ai/ability/AddTurnAi.java svneol=native#text/plain forge-gui/src/main/java/forge/ai/ability/AlwaysPlayAi.java -text @@ -14848,7 +14849,6 @@ forge-gui/src/main/java/forge/game/ability/AbilityFactory.java svneol=native#tex forge-gui/src/main/java/forge/game/ability/AbilityUtils.java -text forge-gui/src/main/java/forge/game/ability/ApiType.java -text forge-gui/src/main/java/forge/game/ability/SaTargetRoutines.java -text -forge-gui/src/main/java/forge/game/ability/SpellAbilityAi.java -text forge-gui/src/main/java/forge/game/ability/SpellAbilityEffect.java -text forge-gui/src/main/java/forge/game/ability/SpellApiBased.java -text forge-gui/src/main/java/forge/game/ability/effects/AbandonEffect.java -text diff --git a/forge-gui/src/main/java/forge/ai/AiController.java b/forge-gui/src/main/java/forge/ai/AiController.java index 7235636e796..7341dc45074 100644 --- a/forge-gui/src/main/java/forge/ai/AiController.java +++ b/forge-gui/src/main/java/forge/ai/AiController.java @@ -476,7 +476,7 @@ public class AiController { return false; } //System.out.printf("Ai thinks of %s @ %s >>> ", sa, sa.getActivatingPlayer().getGame().getPhaseHandler().debugPrintState()); - if (!sa.canPlayAI()) { + if (!sa.canPlayAI(player)) { return false; } //System.out.printf("wouldPlay: %s, canPay: %s%n", aiWouldPlay, canPay); @@ -713,11 +713,11 @@ public class AiController { sa.setActivatingPlayer(player); //Spells if (sa instanceof Spell) { - if (!((Spell) sa).canPlayFromEffectAI(mandatory, withoutPayingManaCost)) { + if (!((Spell) sa).canPlayFromEffectAI(player, mandatory, withoutPayingManaCost)) { continue; } } else { - if (sa.canPlayAI()) { + if (sa.canPlayAI(player)) { continue; } } diff --git a/forge-gui/src/main/java/forge/game/ability/SpellAbilityAi.java b/forge-gui/src/main/java/forge/ai/SpellAbilityAi.java similarity index 95% rename from forge-gui/src/main/java/forge/game/ability/SpellAbilityAi.java rename to forge-gui/src/main/java/forge/ai/SpellAbilityAi.java index eb0aa4f43de..fb6095f2547 100644 --- a/forge-gui/src/main/java/forge/game/ability/SpellAbilityAi.java +++ b/forge-gui/src/main/java/forge/ai/SpellAbilityAi.java @@ -1,4 +1,4 @@ -package forge.game.ability; +package forge.ai; import java.util.Collection; @@ -6,8 +6,7 @@ import java.util.List; import com.google.common.collect.Iterables; -import forge.ai.ComputerUtil; -import forge.ai.ComputerUtilCost; +import forge.game.ability.SaTargetRoutines; import forge.game.card.Card; import forge.game.phase.PhaseHandler; import forge.game.phase.PhaseType; diff --git a/forge-gui/src/main/java/forge/ai/ability/AddPhaseAi.java b/forge-gui/src/main/java/forge/ai/ability/AddPhaseAi.java index 1ef722c2fd8..35235d9f24c 100644 --- a/forge-gui/src/main/java/forge/ai/ability/AddPhaseAi.java +++ b/forge-gui/src/main/java/forge/ai/ability/AddPhaseAi.java @@ -1,6 +1,6 @@ package forge.ai.ability; -import forge.game.ability.SpellAbilityAi; +import forge.ai.SpellAbilityAi; import forge.game.player.Player; import forge.game.spellability.SpellAbility; diff --git a/forge-gui/src/main/java/forge/ai/ability/AddTurnAi.java b/forge-gui/src/main/java/forge/ai/ability/AddTurnAi.java index 7b72893e7a6..a2570608262 100644 --- a/forge-gui/src/main/java/forge/ai/ability/AddTurnAi.java +++ b/forge-gui/src/main/java/forge/ai/ability/AddTurnAi.java @@ -19,8 +19,8 @@ package forge.ai.ability; import java.util.List; +import forge.ai.SpellAbilityAi; import forge.game.ability.AbilityUtils; -import forge.game.ability.SpellAbilityAi; import forge.game.player.Player; import forge.game.spellability.SpellAbility; diff --git a/forge-gui/src/main/java/forge/ai/ability/AlwaysPlayAi.java b/forge-gui/src/main/java/forge/ai/ability/AlwaysPlayAi.java index fc4fc299559..c4810402c71 100644 --- a/forge-gui/src/main/java/forge/ai/ability/AlwaysPlayAi.java +++ b/forge-gui/src/main/java/forge/ai/ability/AlwaysPlayAi.java @@ -1,7 +1,7 @@ package forge.ai.ability; -import forge.game.ability.SpellAbilityAi; +import forge.ai.SpellAbilityAi; import forge.game.player.Player; import forge.game.spellability.SpellAbility; diff --git a/forge-gui/src/main/java/forge/ai/ability/AnimateAi.java b/forge-gui/src/main/java/forge/ai/ability/AnimateAi.java index e88f36a412c..c70e7b399b5 100644 --- a/forge-gui/src/main/java/forge/ai/ability/AnimateAi.java +++ b/forge-gui/src/main/java/forge/ai/ability/AnimateAi.java @@ -4,9 +4,9 @@ import java.util.List; import com.google.common.collect.Iterables; +import forge.ai.SpellAbilityAi; import forge.game.Game; import forge.game.ability.AbilityUtils; -import forge.game.ability.SpellAbilityAi; import forge.game.card.Card; import forge.game.card.CardPredicates; import forge.game.phase.PhaseHandler; diff --git a/forge-gui/src/main/java/forge/ai/ability/AnimateAllAi.java b/forge-gui/src/main/java/forge/ai/ability/AnimateAllAi.java index ae2d21616dc..e663325ba6c 100644 --- a/forge-gui/src/main/java/forge/ai/ability/AnimateAllAi.java +++ b/forge-gui/src/main/java/forge/ai/ability/AnimateAllAi.java @@ -1,6 +1,6 @@ package forge.ai.ability; -import forge.game.ability.SpellAbilityAi; +import forge.ai.SpellAbilityAi; import forge.game.player.Player; import forge.game.spellability.SpellAbility; diff --git a/forge-gui/src/main/java/forge/ai/ability/AttachAi.java b/forge-gui/src/main/java/forge/ai/ability/AttachAi.java index 7899a0663d4..30d88163ee5 100644 --- a/forge-gui/src/main/java/forge/ai/ability/AttachAi.java +++ b/forge-gui/src/main/java/forge/ai/ability/AttachAi.java @@ -15,10 +15,10 @@ import forge.ai.ComputerUtil; import forge.ai.ComputerUtilCard; import forge.ai.ComputerUtilCost; import forge.ai.ComputerUtilMana; +import forge.ai.SpellAbilityAi; import forge.game.GameObject; import forge.game.ability.AbilityUtils; import forge.game.ability.ApiType; -import forge.game.ability.SpellAbilityAi; import forge.game.card.Card; import forge.game.card.CardFactoryUtil; import forge.game.card.CardLists; diff --git a/forge-gui/src/main/java/forge/ai/ability/BalanceAi.java b/forge-gui/src/main/java/forge/ai/ability/BalanceAi.java index 1d8d8f31a52..0656fd72e9b 100644 --- a/forge-gui/src/main/java/forge/ai/ability/BalanceAi.java +++ b/forge-gui/src/main/java/forge/ai/ability/BalanceAi.java @@ -2,7 +2,7 @@ package forge.ai.ability; import java.util.List; -import forge.game.ability.SpellAbilityAi; +import forge.ai.SpellAbilityAi; import forge.game.card.Card; import forge.game.card.CardLists; import forge.game.card.CardPredicates; diff --git a/forge-gui/src/main/java/forge/ai/ability/BecomesBlockedAi.java b/forge-gui/src/main/java/forge/ai/ability/BecomesBlockedAi.java index 8692d89e8ce..a98abe5a271 100644 --- a/forge-gui/src/main/java/forge/ai/ability/BecomesBlockedAi.java +++ b/forge-gui/src/main/java/forge/ai/ability/BecomesBlockedAi.java @@ -4,8 +4,8 @@ package forge.ai.ability; import java.util.List; import forge.ai.ComputerUtilCard; +import forge.ai.SpellAbilityAi; import forge.game.Game; -import forge.game.ability.SpellAbilityAi; import forge.game.card.Card; import forge.game.card.CardLists; import forge.game.phase.PhaseType; diff --git a/forge-gui/src/main/java/forge/ai/ability/BondAi.java b/forge-gui/src/main/java/forge/ai/ability/BondAi.java index 2e56f983889..f5359690e3e 100644 --- a/forge-gui/src/main/java/forge/ai/ability/BondAi.java +++ b/forge-gui/src/main/java/forge/ai/ability/BondAi.java @@ -20,7 +20,7 @@ package forge.ai.ability; import java.util.Collection; import forge.ai.ComputerUtilCard; -import forge.game.ability.SpellAbilityAi; +import forge.ai.SpellAbilityAi; import forge.game.card.Card; import forge.game.player.Player; import forge.game.spellability.SpellAbility; diff --git a/forge-gui/src/main/java/forge/ai/ability/CanPlayAsDrawbackAi.java b/forge-gui/src/main/java/forge/ai/ability/CanPlayAsDrawbackAi.java index 2a26237c13e..327942b8ef9 100644 --- a/forge-gui/src/main/java/forge/ai/ability/CanPlayAsDrawbackAi.java +++ b/forge-gui/src/main/java/forge/ai/ability/CanPlayAsDrawbackAi.java @@ -3,7 +3,7 @@ package forge.ai.ability; import java.util.List; -import forge.game.ability.SpellAbilityAi; +import forge.ai.SpellAbilityAi; import forge.game.player.Player; import forge.game.spellability.SpellAbility; diff --git a/forge-gui/src/main/java/forge/ai/ability/CannotPlayAi.java b/forge-gui/src/main/java/forge/ai/ability/CannotPlayAi.java index c1575a030eb..244526f1986 100644 --- a/forge-gui/src/main/java/forge/ai/ability/CannotPlayAi.java +++ b/forge-gui/src/main/java/forge/ai/ability/CannotPlayAi.java @@ -1,7 +1,7 @@ package forge.ai.ability; -import forge.game.ability.SpellAbilityAi; +import forge.ai.SpellAbilityAi; import forge.game.player.Player; import forge.game.spellability.SpellAbility; diff --git a/forge-gui/src/main/java/forge/ai/ability/ChangeTargetsAi.java b/forge-gui/src/main/java/forge/ai/ability/ChangeTargetsAi.java index b83eff997bb..a57590442de 100644 --- a/forge-gui/src/main/java/forge/ai/ability/ChangeTargetsAi.java +++ b/forge-gui/src/main/java/forge/ai/ability/ChangeTargetsAi.java @@ -1,6 +1,6 @@ package forge.ai.ability; -import forge.game.ability.SpellAbilityAi; +import forge.ai.SpellAbilityAi; import forge.game.player.Player; import forge.game.spellability.SpellAbility; diff --git a/forge-gui/src/main/java/forge/ai/ability/ChangeZoneAi.java b/forge-gui/src/main/java/forge/ai/ability/ChangeZoneAi.java index efa81452042..5957b1f6d37 100644 --- a/forge-gui/src/main/java/forge/ai/ability/ChangeZoneAi.java +++ b/forge-gui/src/main/java/forge/ai/ability/ChangeZoneAi.java @@ -17,6 +17,7 @@ import forge.ai.ComputerUtilCard; import forge.ai.ComputerUtilCombat; import forge.ai.ComputerUtilCost; import forge.ai.ComputerUtilMana; +import forge.ai.SpellAbilityAi; import forge.card.CardCharacteristicName; import forge.card.MagicColor; import forge.game.Game; @@ -25,7 +26,6 @@ import forge.game.GameObject; import forge.game.GlobalRuleChange; import forge.game.ability.AbilityUtils; import forge.game.ability.ApiType; -import forge.game.ability.SpellAbilityAi; import forge.game.ability.effects.AttachEffect; import forge.game.card.Card; import forge.game.card.CardLists; diff --git a/forge-gui/src/main/java/forge/ai/ability/ChangeZoneAllAi.java b/forge-gui/src/main/java/forge/ai/ability/ChangeZoneAllAi.java index 08461aa7419..e1e2c884a32 100644 --- a/forge-gui/src/main/java/forge/ai/ability/ChangeZoneAllAi.java +++ b/forge-gui/src/main/java/forge/ai/ability/ChangeZoneAllAi.java @@ -5,8 +5,8 @@ import java.util.Random; import forge.ai.ComputerUtilCard; import forge.ai.ComputerUtilCost; +import forge.ai.SpellAbilityAi; import forge.game.ability.AbilityUtils; -import forge.game.ability.SpellAbilityAi; import forge.game.card.Card; import forge.game.card.CardLists; import forge.game.cost.Cost; diff --git a/forge-gui/src/main/java/forge/ai/ability/CharmAi.java b/forge-gui/src/main/java/forge/ai/ability/CharmAi.java index df53837cd10..972e0b01973 100644 --- a/forge-gui/src/main/java/forge/ai/ability/CharmAi.java +++ b/forge-gui/src/main/java/forge/ai/ability/CharmAi.java @@ -4,7 +4,7 @@ import java.util.ArrayList; import java.util.List; import java.util.Random; -import forge.game.ability.SpellAbilityAi; +import forge.ai.SpellAbilityAi; import forge.game.ability.effects.CharmEffect; import forge.game.player.Player; import forge.game.spellability.AbilitySub; @@ -49,7 +49,7 @@ public class CharmAi extends SpellAbilityAi { AbilitySub thisPick = null; for (SpellAbility sub : choices) { sub.setActivatingPlayer(ai); - if (!playNow && sub.canPlayAI()) { + if (!playNow && sub.canPlayAI(ai)) { thisPick = (AbilitySub) sub; choices.remove(sub); playNow = true; diff --git a/forge-gui/src/main/java/forge/ai/ability/ChooseCardAi.java b/forge-gui/src/main/java/forge/ai/ability/ChooseCardAi.java index 94585cb8f32..d915fbee1a4 100644 --- a/forge-gui/src/main/java/forge/ai/ability/ChooseCardAi.java +++ b/forge-gui/src/main/java/forge/ai/ability/ChooseCardAi.java @@ -8,8 +8,8 @@ import com.google.common.base.Predicate; import forge.ai.ComputerUtilCard; import forge.ai.ComputerUtilCombat; +import forge.ai.SpellAbilityAi; import forge.game.Game; -import forge.game.ability.SpellAbilityAi; import forge.game.card.Card; import forge.game.card.CardLists; import forge.game.card.CardPredicates.Presets; diff --git a/forge-gui/src/main/java/forge/ai/ability/ChooseCardNameAi.java b/forge-gui/src/main/java/forge/ai/ability/ChooseCardNameAi.java index 994a0cfe5a3..1106a14a1ab 100644 --- a/forge-gui/src/main/java/forge/ai/ability/ChooseCardNameAi.java +++ b/forge-gui/src/main/java/forge/ai/ability/ChooseCardNameAi.java @@ -2,7 +2,7 @@ package forge.ai.ability; import forge.ai.ComputerUtil; import forge.ai.ComputerUtilMana; -import forge.game.ability.SpellAbilityAi; +import forge.ai.SpellAbilityAi; import forge.game.card.Card; import forge.game.phase.PhaseType; import forge.game.player.Player; diff --git a/forge-gui/src/main/java/forge/ai/ability/ChooseColorAi.java b/forge-gui/src/main/java/forge/ai/ability/ChooseColorAi.java index 702636a72dc..837284b0ff2 100644 --- a/forge-gui/src/main/java/forge/ai/ability/ChooseColorAi.java +++ b/forge-gui/src/main/java/forge/ai/ability/ChooseColorAi.java @@ -1,6 +1,6 @@ package forge.ai.ability; -import forge.game.ability.SpellAbilityAi; +import forge.ai.SpellAbilityAi; import forge.game.player.Player; import forge.game.spellability.SpellAbility; import forge.util.MyRandom; diff --git a/forge-gui/src/main/java/forge/ai/ability/ChoosePlayerAi.java b/forge-gui/src/main/java/forge/ai/ability/ChoosePlayerAi.java index 550f613bdd6..048c16ee168 100644 --- a/forge-gui/src/main/java/forge/ai/ability/ChoosePlayerAi.java +++ b/forge-gui/src/main/java/forge/ai/ability/ChoosePlayerAi.java @@ -3,7 +3,7 @@ package forge.ai.ability; import java.util.List; import forge.ai.ComputerUtil; -import forge.game.ability.SpellAbilityAi; +import forge.ai.SpellAbilityAi; import forge.game.player.Player; import forge.game.spellability.SpellAbility; import forge.game.zone.ZoneType; diff --git a/forge-gui/src/main/java/forge/ai/ability/ChooseSourceAi.java b/forge-gui/src/main/java/forge/ai/ability/ChooseSourceAi.java index 24005a8e655..fab0b748c81 100644 --- a/forge-gui/src/main/java/forge/ai/ability/ChooseSourceAi.java +++ b/forge-gui/src/main/java/forge/ai/ability/ChooseSourceAi.java @@ -6,11 +6,11 @@ import com.google.common.base.Predicate; import forge.ai.ComputerUtilCombat; import forge.ai.ComputerUtilCost; +import forge.ai.SpellAbilityAi; import forge.game.Game; import forge.game.GameObject; import forge.game.ability.AbilityUtils; import forge.game.ability.ApiType; -import forge.game.ability.SpellAbilityAi; import forge.game.card.Card; import forge.game.card.CardLists; import forge.game.combat.Combat; diff --git a/forge-gui/src/main/java/forge/ai/ability/ChooseTypeAi.java b/forge-gui/src/main/java/forge/ai/ability/ChooseTypeAi.java index 3465dfc9ae2..687d6530d14 100644 --- a/forge-gui/src/main/java/forge/ai/ability/ChooseTypeAi.java +++ b/forge-gui/src/main/java/forge/ai/ability/ChooseTypeAi.java @@ -1,7 +1,7 @@ package forge.ai.ability; +import forge.ai.SpellAbilityAi; import forge.game.ability.AbilityUtils; -import forge.game.ability.SpellAbilityAi; import forge.game.player.Player; import forge.game.spellability.SpellAbility; diff --git a/forge-gui/src/main/java/forge/ai/ability/ClashAi.java b/forge-gui/src/main/java/forge/ai/ability/ClashAi.java index af8a49d63c9..0bddebce25c 100644 --- a/forge-gui/src/main/java/forge/ai/ability/ClashAi.java +++ b/forge-gui/src/main/java/forge/ai/ability/ClashAi.java @@ -1,7 +1,7 @@ package forge.ai.ability; -import forge.game.ability.SpellAbilityAi; +import forge.ai.SpellAbilityAi; import forge.game.player.Player; import forge.game.spellability.SpellAbility; import forge.game.spellability.TargetRestrictions; diff --git a/forge-gui/src/main/java/forge/ai/ability/CloneAi.java b/forge-gui/src/main/java/forge/ai/ability/CloneAi.java index 1e6f6e9f8f9..6c87181d239 100644 --- a/forge-gui/src/main/java/forge/ai/ability/CloneAi.java +++ b/forge-gui/src/main/java/forge/ai/ability/CloneAi.java @@ -2,9 +2,9 @@ package forge.ai.ability; import java.util.List; +import forge.ai.SpellAbilityAi; import forge.game.Game; import forge.game.ability.AbilityUtils; -import forge.game.ability.SpellAbilityAi; import forge.game.card.Card; import forge.game.phase.PhaseHandler; import forge.game.phase.PhaseType; diff --git a/forge-gui/src/main/java/forge/ai/ability/ControlExchangeAi.java b/forge-gui/src/main/java/forge/ai/ability/ControlExchangeAi.java index d3b498afbc6..b5a41430cfa 100644 --- a/forge-gui/src/main/java/forge/ai/ability/ControlExchangeAi.java +++ b/forge-gui/src/main/java/forge/ai/ability/ControlExchangeAi.java @@ -6,8 +6,8 @@ import java.util.Map; import com.google.common.base.Predicate; import forge.ai.ComputerUtilCard; +import forge.ai.SpellAbilityAi; import forge.game.ability.AbilityUtils; -import forge.game.ability.SpellAbilityAi; import forge.game.card.Card; import forge.game.card.CardLists; import forge.game.player.Player; diff --git a/forge-gui/src/main/java/forge/ai/ability/ControlGainAi.java b/forge-gui/src/main/java/forge/ai/ability/ControlGainAi.java index a3b755a1531..d9e632cb428 100644 --- a/forge-gui/src/main/java/forge/ai/ability/ControlGainAi.java +++ b/forge-gui/src/main/java/forge/ai/ability/ControlGainAi.java @@ -24,9 +24,9 @@ import java.util.Map; import com.google.common.base.Predicate; import forge.ai.ComputerUtilCard; +import forge.ai.SpellAbilityAi; import forge.game.Game; import forge.game.ability.AbilityUtils; -import forge.game.ability.SpellAbilityAi; import forge.game.card.Card; import forge.game.card.CardLists; import forge.game.combat.CombatUtil; diff --git a/forge-gui/src/main/java/forge/ai/ability/CopyPermanentAi.java b/forge-gui/src/main/java/forge/ai/ability/CopyPermanentAi.java index bf615fbd444..68a053c40e4 100644 --- a/forge-gui/src/main/java/forge/ai/ability/CopyPermanentAi.java +++ b/forge-gui/src/main/java/forge/ai/ability/CopyPermanentAi.java @@ -8,7 +8,7 @@ import java.util.Random; import com.google.common.base.Predicate; import forge.ai.ComputerUtilCard; -import forge.game.ability.SpellAbilityAi; +import forge.ai.SpellAbilityAi; import forge.game.card.Card; import forge.game.card.CardLists; import forge.game.card.CardPredicates.Presets; diff --git a/forge-gui/src/main/java/forge/ai/ability/CounterAi.java b/forge-gui/src/main/java/forge/ai/ability/CounterAi.java index 3b2aeee7fb5..6c8106f1b50 100644 --- a/forge-gui/src/main/java/forge/ai/ability/CounterAi.java +++ b/forge-gui/src/main/java/forge/ai/ability/CounterAi.java @@ -2,9 +2,9 @@ package forge.ai.ability; import forge.ai.ComputerUtilCost; import forge.ai.ComputerUtilMana; +import forge.ai.SpellAbilityAi; import forge.game.Game; import forge.game.ability.AbilityUtils; -import forge.game.ability.SpellAbilityAi; import forge.game.card.Card; import forge.game.card.CardFactoryUtil; import forge.game.cost.Cost; diff --git a/forge-gui/src/main/java/forge/ai/ability/CountersMoveAi.java b/forge-gui/src/main/java/forge/ai/ability/CountersMoveAi.java index 42238f8ecc0..71a46c0999b 100644 --- a/forge-gui/src/main/java/forge/ai/ability/CountersMoveAi.java +++ b/forge-gui/src/main/java/forge/ai/ability/CountersMoveAi.java @@ -4,8 +4,8 @@ import java.util.List; import java.util.Random; import forge.ai.ComputerUtilCard; +import forge.ai.SpellAbilityAi; import forge.game.ability.AbilityUtils; -import forge.game.ability.SpellAbilityAi; import forge.game.card.Card; import forge.game.card.CardLists; import forge.game.card.CounterType; diff --git a/forge-gui/src/main/java/forge/ai/ability/CountersProliferateAi.java b/forge-gui/src/main/java/forge/ai/ability/CountersProliferateAi.java index 446c9b4e1cb..e269417d35a 100644 --- a/forge-gui/src/main/java/forge/ai/ability/CountersProliferateAi.java +++ b/forge-gui/src/main/java/forge/ai/ability/CountersProliferateAi.java @@ -5,7 +5,7 @@ import java.util.List; import com.google.common.base.Predicate; import forge.ai.ComputerUtil; -import forge.game.ability.SpellAbilityAi; +import forge.ai.SpellAbilityAi; import forge.game.card.Card; import forge.game.card.CardLists; import forge.game.card.CounterType; diff --git a/forge-gui/src/main/java/forge/ai/ability/CountersPutAi.java b/forge-gui/src/main/java/forge/ai/ability/CountersPutAi.java index 17df9445e73..77a81165df2 100644 --- a/forge-gui/src/main/java/forge/ai/ability/CountersPutAi.java +++ b/forge-gui/src/main/java/forge/ai/ability/CountersPutAi.java @@ -10,8 +10,8 @@ import forge.ai.ComputerUtil; import forge.ai.ComputerUtilCard; import forge.ai.ComputerUtilCost; import forge.ai.ComputerUtilMana; +import forge.ai.SpellAbilityAi; import forge.game.ability.AbilityUtils; -import forge.game.ability.SpellAbilityAi; import forge.game.card.Card; import forge.game.card.CardLists; import forge.game.card.CounterType; diff --git a/forge-gui/src/main/java/forge/ai/ability/CountersPutAllAi.java b/forge-gui/src/main/java/forge/ai/ability/CountersPutAllAi.java index 080651f050a..12f771158e3 100644 --- a/forge-gui/src/main/java/forge/ai/ability/CountersPutAllAi.java +++ b/forge-gui/src/main/java/forge/ai/ability/CountersPutAllAi.java @@ -7,8 +7,8 @@ import com.google.common.base.Predicate; import forge.ai.ComputerUtilCost; import forge.ai.ComputerUtilMana; +import forge.ai.SpellAbilityAi; import forge.game.ability.AbilityUtils; -import forge.game.ability.SpellAbilityAi; import forge.game.card.Card; import forge.game.card.CardLists; import forge.game.cost.Cost; diff --git a/forge-gui/src/main/java/forge/ai/ability/CountersPutOrRemoveAi.java b/forge-gui/src/main/java/forge/ai/ability/CountersPutOrRemoveAi.java index 4dfdb3a6761..9a08edf7dec 100644 --- a/forge-gui/src/main/java/forge/ai/ability/CountersPutOrRemoveAi.java +++ b/forge-gui/src/main/java/forge/ai/ability/CountersPutOrRemoveAi.java @@ -21,7 +21,7 @@ import java.util.List; import com.google.common.base.Predicate; -import forge.game.ability.SpellAbilityAi; +import forge.ai.SpellAbilityAi; import forge.game.card.Card; import forge.game.card.CardLists; import forge.game.player.Player; diff --git a/forge-gui/src/main/java/forge/ai/ability/CountersRemoveAi.java b/forge-gui/src/main/java/forge/ai/ability/CountersRemoveAi.java index 81438f0e306..be8b9e38b5b 100644 --- a/forge-gui/src/main/java/forge/ai/ability/CountersRemoveAi.java +++ b/forge-gui/src/main/java/forge/ai/ability/CountersRemoveAi.java @@ -2,7 +2,7 @@ package forge.ai.ability; import forge.ai.ComputerUtil; import forge.ai.ComputerUtilCost; -import forge.game.ability.SpellAbilityAi; +import forge.ai.SpellAbilityAi; import forge.game.card.Card; import forge.game.card.CounterType; import forge.game.cost.Cost; diff --git a/forge-gui/src/main/java/forge/ai/ability/DamageAiBase.java b/forge-gui/src/main/java/forge/ai/ability/DamageAiBase.java index e179b2c63c5..f1779200692 100644 --- a/forge-gui/src/main/java/forge/ai/ability/DamageAiBase.java +++ b/forge-gui/src/main/java/forge/ai/ability/DamageAiBase.java @@ -5,8 +5,8 @@ import java.util.List; import com.google.common.collect.Iterables; import forge.ai.ComputerUtilCombat; +import forge.ai.SpellAbilityAi; import forge.game.Game; -import forge.game.ability.SpellAbilityAi; import forge.game.card.Card; import forge.game.card.CardPredicates; import forge.game.phase.PhaseType; diff --git a/forge-gui/src/main/java/forge/ai/ability/DamageAllAi.java b/forge-gui/src/main/java/forge/ai/ability/DamageAllAi.java index ada83af84a0..3734564c952 100644 --- a/forge-gui/src/main/java/forge/ai/ability/DamageAllAi.java +++ b/forge-gui/src/main/java/forge/ai/ability/DamageAllAi.java @@ -10,8 +10,8 @@ import forge.ai.ComputerUtilCard; import forge.ai.ComputerUtilCombat; import forge.ai.ComputerUtilCost; import forge.ai.ComputerUtilMana; +import forge.ai.SpellAbilityAi; import forge.game.ability.AbilityUtils; -import forge.game.ability.SpellAbilityAi; import forge.game.card.Card; import forge.game.card.CardLists; import forge.game.cost.Cost; diff --git a/forge-gui/src/main/java/forge/ai/ability/DamageDealAi.java b/forge-gui/src/main/java/forge/ai/ability/DamageDealAi.java index f66e3ad72b7..2d89cd90fef 100644 --- a/forge-gui/src/main/java/forge/ai/ability/DamageDealAi.java +++ b/forge-gui/src/main/java/forge/ai/ability/DamageDealAi.java @@ -11,10 +11,10 @@ import forge.ai.ComputerUtilCard; import forge.ai.ComputerUtilCombat; import forge.ai.ComputerUtilCost; import forge.ai.ComputerUtilMana; +import forge.ai.SpellAbilityAi; import forge.game.Game; import forge.game.GameObject; import forge.game.ability.AbilityUtils; -import forge.game.ability.SpellAbilityAi; import forge.game.card.Card; import forge.game.card.CardLists; import forge.game.card.CardPredicates; diff --git a/forge-gui/src/main/java/forge/ai/ability/DamagePreventAi.java b/forge-gui/src/main/java/forge/ai/ability/DamagePreventAi.java index c51c817365e..d46f6a73998 100644 --- a/forge-gui/src/main/java/forge/ai/ability/DamagePreventAi.java +++ b/forge-gui/src/main/java/forge/ai/ability/DamagePreventAi.java @@ -7,10 +7,10 @@ import forge.ai.ComputerUtil; import forge.ai.ComputerUtilCard; import forge.ai.ComputerUtilCombat; import forge.ai.ComputerUtilCost; +import forge.ai.SpellAbilityAi; import forge.game.Game; import forge.game.GameObject; import forge.game.ability.AbilityUtils; -import forge.game.ability.SpellAbilityAi; import forge.game.card.Card; import forge.game.card.CardLists; import forge.game.card.CardPredicates; diff --git a/forge-gui/src/main/java/forge/ai/ability/DamagePreventAllAi.java b/forge-gui/src/main/java/forge/ai/ability/DamagePreventAllAi.java index bb6e4f58397..744b9456481 100644 --- a/forge-gui/src/main/java/forge/ai/ability/DamagePreventAllAi.java +++ b/forge-gui/src/main/java/forge/ai/ability/DamagePreventAllAi.java @@ -2,7 +2,7 @@ package forge.ai.ability; import forge.ai.ComputerUtilCost; -import forge.game.ability.SpellAbilityAi; +import forge.ai.SpellAbilityAi; import forge.game.card.Card; import forge.game.cost.Cost; import forge.game.phase.PhaseType; diff --git a/forge-gui/src/main/java/forge/ai/ability/DebuffAi.java b/forge-gui/src/main/java/forge/ai/ability/DebuffAi.java index bc99adc998c..a2b0b69ff43 100644 --- a/forge-gui/src/main/java/forge/ai/ability/DebuffAi.java +++ b/forge-gui/src/main/java/forge/ai/ability/DebuffAi.java @@ -10,9 +10,9 @@ import com.google.common.collect.Lists; import forge.ai.ComputerUtilCard; import forge.ai.ComputerUtilCost; +import forge.ai.SpellAbilityAi; import forge.game.Game; import forge.game.ability.AbilityUtils; -import forge.game.ability.SpellAbilityAi; import forge.game.card.Card; import forge.game.card.CardLists; import forge.game.combat.Combat; diff --git a/forge-gui/src/main/java/forge/ai/ability/DebuffAllAi.java b/forge-gui/src/main/java/forge/ai/ability/DebuffAllAi.java index 299af442b77..a7305d4c6c4 100644 --- a/forge-gui/src/main/java/forge/ai/ability/DebuffAllAi.java +++ b/forge-gui/src/main/java/forge/ai/ability/DebuffAllAi.java @@ -5,7 +5,7 @@ import java.util.Random; import com.google.common.base.Predicate; -import forge.game.ability.SpellAbilityAi; +import forge.ai.SpellAbilityAi; import forge.game.card.Card; import forge.game.card.CardLists; import forge.game.combat.CombatUtil; diff --git a/forge-gui/src/main/java/forge/ai/ability/DelayedTriggerAi.java b/forge-gui/src/main/java/forge/ai/ability/DelayedTriggerAi.java index ea8800c2059..dd3c48472cb 100644 --- a/forge-gui/src/main/java/forge/ai/ability/DelayedTriggerAi.java +++ b/forge-gui/src/main/java/forge/ai/ability/DelayedTriggerAi.java @@ -1,7 +1,7 @@ package forge.ai.ability; +import forge.ai.SpellAbilityAi; import forge.game.ability.AbilityFactory; -import forge.game.ability.SpellAbilityAi; import forge.game.player.Player; import forge.game.spellability.AbilitySub; import forge.game.spellability.SpellAbility; @@ -17,7 +17,7 @@ public class DelayedTriggerAi extends SpellAbilityAi { if (trigsa instanceof AbilitySub) { return ((AbilitySub) trigsa).getAi().chkDrawbackWithSubs(ai, (AbilitySub)trigsa); } else { - return trigsa.canPlayAI(); + return trigsa.canPlayAI(ai); } } @@ -39,7 +39,7 @@ public class DelayedTriggerAi extends SpellAbilityAi { final String svarName = sa.getParam("Execute"); final SpellAbility trigsa = AbilityFactory.getAbility(sa.getSourceCard().getSVar(svarName), sa.getSourceCard()); trigsa.setActivatingPlayer(ai); - return trigsa.canPlayAI(); + return trigsa.canPlayAI(ai); } } diff --git a/forge-gui/src/main/java/forge/ai/ability/DestroyAi.java b/forge-gui/src/main/java/forge/ai/ability/DestroyAi.java index b8f9ff562cf..8ce088360b1 100644 --- a/forge-gui/src/main/java/forge/ai/ability/DestroyAi.java +++ b/forge-gui/src/main/java/forge/ai/ability/DestroyAi.java @@ -9,8 +9,8 @@ import com.google.common.base.Predicate; import forge.ai.ComputerUtil; import forge.ai.ComputerUtilCard; import forge.ai.ComputerUtilCost; +import forge.ai.SpellAbilityAi; import forge.game.ability.AbilityUtils; -import forge.game.ability.SpellAbilityAi; import forge.game.card.Card; import forge.game.card.CardLists; import forge.game.card.CounterType; diff --git a/forge-gui/src/main/java/forge/ai/ability/DestroyAllAi.java b/forge-gui/src/main/java/forge/ai/ability/DestroyAllAi.java index 01b884953c3..6ba0688c746 100644 --- a/forge-gui/src/main/java/forge/ai/ability/DestroyAllAi.java +++ b/forge-gui/src/main/java/forge/ai/ability/DestroyAllAi.java @@ -8,7 +8,7 @@ import com.google.common.base.Predicate; import forge.ai.ComputerUtilCard; import forge.ai.ComputerUtilCost; import forge.ai.ComputerUtilMana; -import forge.game.ability.SpellAbilityAi; +import forge.ai.SpellAbilityAi; import forge.game.card.Card; import forge.game.card.CardLists; import forge.game.cost.Cost; diff --git a/forge-gui/src/main/java/forge/ai/ability/DigAi.java b/forge-gui/src/main/java/forge/ai/ability/DigAi.java index 11011e8437f..62eb600202c 100644 --- a/forge-gui/src/main/java/forge/ai/ability/DigAi.java +++ b/forge-gui/src/main/java/forge/ai/ability/DigAi.java @@ -3,8 +3,8 @@ package forge.ai.ability; import java.util.Random; import forge.ai.ComputerUtil; +import forge.ai.SpellAbilityAi; import forge.game.ability.AbilityUtils; -import forge.game.ability.SpellAbilityAi; import forge.game.card.Card; import forge.game.phase.PhaseType; import forge.game.player.Player; diff --git a/forge-gui/src/main/java/forge/ai/ability/DigUntilAi.java b/forge-gui/src/main/java/forge/ai/ability/DigUntilAi.java index 74d11f143af..296c9a2b4f6 100644 --- a/forge-gui/src/main/java/forge/ai/ability/DigUntilAi.java +++ b/forge-gui/src/main/java/forge/ai/ability/DigUntilAi.java @@ -4,7 +4,7 @@ import java.util.List; import java.util.Random; import forge.ai.ComputerUtilMana; -import forge.game.ability.SpellAbilityAi; +import forge.ai.SpellAbilityAi; import forge.game.card.Card; import forge.game.card.CardLists; import forge.game.card.CardPredicates; diff --git a/forge-gui/src/main/java/forge/ai/ability/DiscardAi.java b/forge-gui/src/main/java/forge/ai/ability/DiscardAi.java index 256511d71ce..747100416b2 100644 --- a/forge-gui/src/main/java/forge/ai/ability/DiscardAi.java +++ b/forge-gui/src/main/java/forge/ai/ability/DiscardAi.java @@ -6,8 +6,8 @@ import java.util.Random; import forge.ai.ComputerUtil; import forge.ai.ComputerUtilCost; import forge.ai.ComputerUtilMana; +import forge.ai.SpellAbilityAi; import forge.game.ability.AbilityUtils; -import forge.game.ability.SpellAbilityAi; import forge.game.card.Card; import forge.game.cost.Cost; import forge.game.phase.PhaseType; diff --git a/forge-gui/src/main/java/forge/ai/ability/DrainManaAi.java b/forge-gui/src/main/java/forge/ai/ability/DrainManaAi.java index ce80755099b..35e263aa287 100644 --- a/forge-gui/src/main/java/forge/ai/ability/DrainManaAi.java +++ b/forge-gui/src/main/java/forge/ai/ability/DrainManaAi.java @@ -3,8 +3,8 @@ package forge.ai.ability; import java.util.List; import java.util.Random; +import forge.ai.SpellAbilityAi; import forge.game.ability.AbilityUtils; -import forge.game.ability.SpellAbilityAi; import forge.game.card.Card; import forge.game.player.Player; import forge.game.spellability.SpellAbility; diff --git a/forge-gui/src/main/java/forge/ai/ability/DrawAi.java b/forge-gui/src/main/java/forge/ai/ability/DrawAi.java index ce9e66174a3..8e5040c3e47 100644 --- a/forge-gui/src/main/java/forge/ai/ability/DrawAi.java +++ b/forge-gui/src/main/java/forge/ai/ability/DrawAi.java @@ -21,9 +21,9 @@ package forge.ai.ability; import forge.ai.ComputerUtil; import forge.ai.ComputerUtilCost; import forge.ai.ComputerUtilMana; +import forge.ai.SpellAbilityAi; import forge.game.Game; import forge.game.ability.AbilityUtils; -import forge.game.ability.SpellAbilityAi; import forge.game.card.Card; import forge.game.cost.Cost; import forge.game.cost.CostDiscard; diff --git a/forge-gui/src/main/java/forge/ai/ability/EffectAi.java b/forge-gui/src/main/java/forge/ai/ability/EffectAi.java index e9a7c3e4f5b..e99fb5c8eab 100644 --- a/forge-gui/src/main/java/forge/ai/ability/EffectAi.java +++ b/forge-gui/src/main/java/forge/ai/ability/EffectAi.java @@ -8,9 +8,9 @@ import com.google.common.collect.Iterables; import forge.ai.ComputerUtilCard; import forge.ai.ComputerUtilCombat; +import forge.ai.SpellAbilityAi; import forge.game.Game; import forge.game.ability.ApiType; -import forge.game.ability.SpellAbilityAi; import forge.game.card.Card; import forge.game.card.CardLists; import forge.game.combat.CombatUtil; diff --git a/forge-gui/src/main/java/forge/ai/ability/EncodeAi.java b/forge-gui/src/main/java/forge/ai/ability/EncodeAi.java index c0a80339c32..050f369b8fd 100644 --- a/forge-gui/src/main/java/forge/ai/ability/EncodeAi.java +++ b/forge-gui/src/main/java/forge/ai/ability/EncodeAi.java @@ -23,7 +23,7 @@ import java.util.List; import com.google.common.base.Predicate; import forge.ai.ComputerUtilCard; -import forge.game.ability.SpellAbilityAi; +import forge.ai.SpellAbilityAi; import forge.game.card.Card; import forge.game.card.CardLists; import forge.game.combat.CombatUtil; diff --git a/forge-gui/src/main/java/forge/ai/ability/EndTurnAi.java b/forge-gui/src/main/java/forge/ai/ability/EndTurnAi.java index 9e41febac50..1149d5d23cb 100644 --- a/forge-gui/src/main/java/forge/ai/ability/EndTurnAi.java +++ b/forge-gui/src/main/java/forge/ai/ability/EndTurnAi.java @@ -1,7 +1,7 @@ package forge.ai.ability; -import forge.game.ability.SpellAbilityAi; +import forge.ai.SpellAbilityAi; import forge.game.player.Player; import forge.game.spellability.SpellAbility; diff --git a/forge-gui/src/main/java/forge/ai/ability/FightAi.java b/forge-gui/src/main/java/forge/ai/ability/FightAi.java index b70bf7d6ca8..290278f5c4a 100644 --- a/forge-gui/src/main/java/forge/ai/ability/FightAi.java +++ b/forge-gui/src/main/java/forge/ai/ability/FightAi.java @@ -6,8 +6,8 @@ import java.util.Random; import forge.ai.ComputerUtil; import forge.ai.ComputerUtilCard; import forge.ai.ComputerUtilCombat; +import forge.ai.SpellAbilityAi; import forge.game.ability.AbilityUtils; -import forge.game.ability.SpellAbilityAi; import forge.game.card.Card; import forge.game.card.CardLists; import forge.game.player.Player; diff --git a/forge-gui/src/main/java/forge/ai/ability/FlipACoinAi.java b/forge-gui/src/main/java/forge/ai/ability/FlipACoinAi.java index 289531a2f89..d9c75d0106e 100644 --- a/forge-gui/src/main/java/forge/ai/ability/FlipACoinAi.java +++ b/forge-gui/src/main/java/forge/ai/ability/FlipACoinAi.java @@ -1,6 +1,6 @@ package forge.ai.ability; -import forge.game.ability.SpellAbilityAi; +import forge.ai.SpellAbilityAi; import forge.game.player.Player; import forge.game.spellability.SpellAbility; diff --git a/forge-gui/src/main/java/forge/ai/ability/FogAi.java b/forge-gui/src/main/java/forge/ai/ability/FogAi.java index c8fe28c799d..b1078657c13 100644 --- a/forge-gui/src/main/java/forge/ai/ability/FogAi.java +++ b/forge-gui/src/main/java/forge/ai/ability/FogAi.java @@ -2,8 +2,8 @@ package forge.ai.ability; import forge.ai.ComputerUtilCombat; +import forge.ai.SpellAbilityAi; import forge.game.Game; -import forge.game.ability.SpellAbilityAi; import forge.game.phase.PhaseType; import forge.game.player.Player; import forge.game.spellability.SpellAbility; diff --git a/forge-gui/src/main/java/forge/ai/ability/GameLossAi.java b/forge-gui/src/main/java/forge/ai/ability/GameLossAi.java index 89e6ad61b80..330e376d721 100644 --- a/forge-gui/src/main/java/forge/ai/ability/GameLossAi.java +++ b/forge-gui/src/main/java/forge/ai/ability/GameLossAi.java @@ -1,6 +1,6 @@ package forge.ai.ability; -import forge.game.ability.SpellAbilityAi; +import forge.ai.SpellAbilityAi; import forge.game.player.Player; import forge.game.spellability.SpellAbility; import forge.game.spellability.TargetRestrictions; diff --git a/forge-gui/src/main/java/forge/ai/ability/GameWinAi.java b/forge-gui/src/main/java/forge/ai/ability/GameWinAi.java index d9ee886b7b9..e603b62ee42 100644 --- a/forge-gui/src/main/java/forge/ai/ability/GameWinAi.java +++ b/forge-gui/src/main/java/forge/ai/ability/GameWinAi.java @@ -1,7 +1,7 @@ package forge.ai.ability; -import forge.game.ability.SpellAbilityAi; +import forge.ai.SpellAbilityAi; import forge.game.player.Player; import forge.game.spellability.SpellAbility; diff --git a/forge-gui/src/main/java/forge/ai/ability/LegendaryRuleAi.java b/forge-gui/src/main/java/forge/ai/ability/LegendaryRuleAi.java index c7de1365e26..c9d5cc9c9c1 100644 --- a/forge-gui/src/main/java/forge/ai/ability/LegendaryRuleAi.java +++ b/forge-gui/src/main/java/forge/ai/ability/LegendaryRuleAi.java @@ -4,7 +4,7 @@ import java.util.Collection; import com.google.common.collect.Iterables; -import forge.game.ability.SpellAbilityAi; +import forge.ai.SpellAbilityAi; import forge.game.card.Card; import forge.game.player.Player; import forge.game.spellability.SpellAbility; diff --git a/forge-gui/src/main/java/forge/ai/ability/LifeExchangeAi.java b/forge-gui/src/main/java/forge/ai/ability/LifeExchangeAi.java index 6dbd2e24683..64dc0375c7f 100644 --- a/forge-gui/src/main/java/forge/ai/ability/LifeExchangeAi.java +++ b/forge-gui/src/main/java/forge/ai/ability/LifeExchangeAi.java @@ -2,7 +2,7 @@ package forge.ai.ability; import java.util.Random; -import forge.game.ability.SpellAbilityAi; +import forge.ai.SpellAbilityAi; import forge.game.player.Player; import forge.game.spellability.SpellAbility; import forge.game.spellability.TargetRestrictions; diff --git a/forge-gui/src/main/java/forge/ai/ability/LifeGainAi.java b/forge-gui/src/main/java/forge/ai/ability/LifeGainAi.java index 47143c909a8..1db0800ff66 100644 --- a/forge-gui/src/main/java/forge/ai/ability/LifeGainAi.java +++ b/forge-gui/src/main/java/forge/ai/ability/LifeGainAi.java @@ -4,9 +4,9 @@ import forge.ai.ComputerUtil; import forge.ai.ComputerUtilCombat; import forge.ai.ComputerUtilCost; import forge.ai.ComputerUtilMana; +import forge.ai.SpellAbilityAi; import forge.game.Game; import forge.game.ability.AbilityUtils; -import forge.game.ability.SpellAbilityAi; import forge.game.card.Card; import forge.game.cost.Cost; import forge.game.phase.PhaseType; diff --git a/forge-gui/src/main/java/forge/ai/ability/LifeLoseAi.java b/forge-gui/src/main/java/forge/ai/ability/LifeLoseAi.java index eb54d575411..486dc546667 100644 --- a/forge-gui/src/main/java/forge/ai/ability/LifeLoseAi.java +++ b/forge-gui/src/main/java/forge/ai/ability/LifeLoseAi.java @@ -5,8 +5,8 @@ import java.util.List; import forge.ai.ComputerUtil; import forge.ai.ComputerUtilCost; import forge.ai.ComputerUtilMana; +import forge.ai.SpellAbilityAi; import forge.game.ability.AbilityUtils; -import forge.game.ability.SpellAbilityAi; import forge.game.card.Card; import forge.game.cost.Cost; import forge.game.phase.PhaseType; diff --git a/forge-gui/src/main/java/forge/ai/ability/LifeSetAi.java b/forge-gui/src/main/java/forge/ai/ability/LifeSetAi.java index 3f8d56265fc..65023309c30 100644 --- a/forge-gui/src/main/java/forge/ai/ability/LifeSetAi.java +++ b/forge-gui/src/main/java/forge/ai/ability/LifeSetAi.java @@ -3,8 +3,8 @@ package forge.ai.ability; import java.util.Random; import forge.ai.ComputerUtilMana; +import forge.ai.SpellAbilityAi; import forge.game.ability.AbilityUtils; -import forge.game.ability.SpellAbilityAi; import forge.game.card.Card; import forge.game.card.CounterType; import forge.game.phase.PhaseType; diff --git a/forge-gui/src/main/java/forge/ai/ability/ManaEffectAi.java b/forge-gui/src/main/java/forge/ai/ability/ManaEffectAi.java index 6e2a04a782c..e6650796e4b 100644 --- a/forge-gui/src/main/java/forge/ai/ability/ManaEffectAi.java +++ b/forge-gui/src/main/java/forge/ai/ability/ManaEffectAi.java @@ -2,7 +2,7 @@ package forge.ai.ability; import forge.ai.ComputerUtil; -import forge.game.ability.SpellAbilityAi; +import forge.ai.SpellAbilityAi; import forge.game.phase.PhaseType; import forge.game.player.Player; import forge.game.spellability.SpellAbility; diff --git a/forge-gui/src/main/java/forge/ai/ability/MillAi.java b/forge-gui/src/main/java/forge/ai/ability/MillAi.java index 9f4f63a5c9c..3acf9df4f74 100644 --- a/forge-gui/src/main/java/forge/ai/ability/MillAi.java +++ b/forge-gui/src/main/java/forge/ai/ability/MillAi.java @@ -5,8 +5,8 @@ import java.util.List; import forge.ai.ComputerUtil; import forge.ai.ComputerUtilCost; import forge.ai.ComputerUtilMana; +import forge.ai.SpellAbilityAi; import forge.game.ability.AbilityUtils; -import forge.game.ability.SpellAbilityAi; import forge.game.card.Card; import forge.game.cost.Cost; import forge.game.phase.PhaseType; diff --git a/forge-gui/src/main/java/forge/ai/ability/MustAttackAi.java b/forge-gui/src/main/java/forge/ai/ability/MustAttackAi.java index d18c8af1386..1f147107773 100644 --- a/forge-gui/src/main/java/forge/ai/ability/MustAttackAi.java +++ b/forge-gui/src/main/java/forge/ai/ability/MustAttackAi.java @@ -1,7 +1,7 @@ package forge.ai.ability; -import forge.game.ability.SpellAbilityAi; +import forge.ai.SpellAbilityAi; import forge.game.player.Player; import forge.game.spellability.SpellAbility; diff --git a/forge-gui/src/main/java/forge/ai/ability/MustBlockAi.java b/forge-gui/src/main/java/forge/ai/ability/MustBlockAi.java index bfda33b2341..328df2e9447 100644 --- a/forge-gui/src/main/java/forge/ai/ability/MustBlockAi.java +++ b/forge-gui/src/main/java/forge/ai/ability/MustBlockAi.java @@ -6,8 +6,8 @@ import com.google.common.base.Predicate; import forge.ai.ComputerUtilCard; import forge.ai.ComputerUtilCombat; +import forge.ai.SpellAbilityAi; import forge.game.ability.AbilityUtils; -import forge.game.ability.SpellAbilityAi; import forge.game.card.Card; import forge.game.card.CardLists; import forge.game.card.CardPredicates; diff --git a/forge-gui/src/main/java/forge/ai/ability/PeekAndRevealAi.java b/forge-gui/src/main/java/forge/ai/ability/PeekAndRevealAi.java index bf3a8334e6c..7ef0b40a3cd 100644 --- a/forge-gui/src/main/java/forge/ai/ability/PeekAndRevealAi.java +++ b/forge-gui/src/main/java/forge/ai/ability/PeekAndRevealAi.java @@ -1,6 +1,6 @@ package forge.ai.ability; -import forge.game.ability.SpellAbilityAi; +import forge.ai.SpellAbilityAi; import forge.game.player.Player; import forge.game.player.PlayerActionConfirmMode; import forge.game.spellability.AbilitySub; diff --git a/forge-gui/src/main/java/forge/ai/ability/PermanentCreatureAi.java b/forge-gui/src/main/java/forge/ai/ability/PermanentCreatureAi.java index 7f5d8fdea5b..0fda55aab7c 100644 --- a/forge-gui/src/main/java/forge/ai/ability/PermanentCreatureAi.java +++ b/forge-gui/src/main/java/forge/ai/ability/PermanentCreatureAi.java @@ -6,8 +6,8 @@ import com.google.common.base.Predicates; import com.google.common.collect.Iterables; import forge.ai.ComputerUtil; +import forge.ai.SpellAbilityAi; import forge.game.Game; -import forge.game.ability.SpellAbilityAi; import forge.game.card.Card; import forge.game.card.CardPredicates; import forge.game.phase.PhaseType; diff --git a/forge-gui/src/main/java/forge/ai/ability/PermanentNoncreatureAi.java b/forge-gui/src/main/java/forge/ai/ability/PermanentNoncreatureAi.java index 311d34b24ef..6c8534e8ce8 100644 --- a/forge-gui/src/main/java/forge/ai/ability/PermanentNoncreatureAi.java +++ b/forge-gui/src/main/java/forge/ai/ability/PermanentNoncreatureAi.java @@ -1,7 +1,7 @@ package forge.ai.ability; import forge.ai.ComputerUtil; -import forge.game.ability.SpellAbilityAi; +import forge.ai.SpellAbilityAi; import forge.game.phase.PhaseType; import forge.game.player.Player; import forge.game.spellability.SpellAbility; diff --git a/forge-gui/src/main/java/forge/ai/ability/PhasesAi.java b/forge-gui/src/main/java/forge/ai/ability/PhasesAi.java index 7e72ea707fa..c7589a455a6 100644 --- a/forge-gui/src/main/java/forge/ai/ability/PhasesAi.java +++ b/forge-gui/src/main/java/forge/ai/ability/PhasesAi.java @@ -3,9 +3,9 @@ package forge.ai.ability; import java.util.List; import java.util.Random; +import forge.ai.SpellAbilityAi; import forge.game.Game; import forge.game.ability.AbilityUtils; -import forge.game.ability.SpellAbilityAi; import forge.game.card.Card; import forge.game.card.CardLists; import forge.game.player.Player; diff --git a/forge-gui/src/main/java/forge/ai/ability/PlayAi.java b/forge-gui/src/main/java/forge/ai/ability/PlayAi.java index 5bb58ea9d1c..04a18d36b6c 100644 --- a/forge-gui/src/main/java/forge/ai/ability/PlayAi.java +++ b/forge-gui/src/main/java/forge/ai/ability/PlayAi.java @@ -9,8 +9,8 @@ import com.google.common.base.Predicate; import forge.ai.ComputerUtilCard; import forge.ai.ComputerUtilCost; +import forge.ai.SpellAbilityAi; import forge.game.ability.AbilityUtils; -import forge.game.ability.SpellAbilityAi; import forge.game.card.Card; import forge.game.card.CardLists; import forge.game.cost.Cost; @@ -121,7 +121,7 @@ public class PlayAi extends SpellAbilityAi { Spell spell = (Spell) s; s.setActivatingPlayer(ai); // timing restrictions still apply - if (s.getRestrictions().checkTimingRestrictions(c, s) && spell.canPlayFromEffectAI(false, true)) { + if (s.getRestrictions().checkTimingRestrictions(c, s) && spell.canPlayFromEffectAI(ai, false, true)) { return true; } } diff --git a/forge-gui/src/main/java/forge/ai/ability/PoisonAi.java b/forge-gui/src/main/java/forge/ai/ability/PoisonAi.java index 244f2c4de8c..d86fe41cafa 100644 --- a/forge-gui/src/main/java/forge/ai/ability/PoisonAi.java +++ b/forge-gui/src/main/java/forge/ai/ability/PoisonAi.java @@ -4,8 +4,8 @@ import java.util.List; import forge.ai.ComputerUtil; import forge.ai.ComputerUtilCost; +import forge.ai.SpellAbilityAi; import forge.game.ability.AbilityUtils; -import forge.game.ability.SpellAbilityAi; import forge.game.card.Card; import forge.game.cost.Cost; import forge.game.phase.PhaseType; diff --git a/forge-gui/src/main/java/forge/ai/ability/PowerExchangeAi.java b/forge-gui/src/main/java/forge/ai/ability/PowerExchangeAi.java index 8dff19b8be2..95fe2bd2e47 100644 --- a/forge-gui/src/main/java/forge/ai/ability/PowerExchangeAi.java +++ b/forge-gui/src/main/java/forge/ai/ability/PowerExchangeAi.java @@ -7,8 +7,8 @@ import java.util.Map; import com.google.common.base.Predicate; import forge.ai.ComputerUtilCard; +import forge.ai.SpellAbilityAi; import forge.game.ability.AbilityUtils; -import forge.game.ability.SpellAbilityAi; import forge.game.card.Card; import forge.game.card.CardLists; import forge.game.player.Player; diff --git a/forge-gui/src/main/java/forge/ai/ability/ProtectAi.java b/forge-gui/src/main/java/forge/ai/ability/ProtectAi.java index 2aa3766fa94..125565bd7e2 100644 --- a/forge-gui/src/main/java/forge/ai/ability/ProtectAi.java +++ b/forge-gui/src/main/java/forge/ai/ability/ProtectAi.java @@ -9,10 +9,10 @@ import forge.ai.ComputerUtil; import forge.ai.ComputerUtilCard; import forge.ai.ComputerUtilCombat; import forge.ai.ComputerUtilCost; +import forge.ai.SpellAbilityAi; import forge.card.MagicColor; import forge.game.Game; import forge.game.ability.AbilityUtils; -import forge.game.ability.SpellAbilityAi; import forge.game.ability.effects.ProtectEffect; import forge.game.card.Card; import forge.game.card.CardLists; diff --git a/forge-gui/src/main/java/forge/ai/ability/ProtectAllAi.java b/forge-gui/src/main/java/forge/ai/ability/ProtectAllAi.java index 7f93af07edc..653063baab8 100644 --- a/forge-gui/src/main/java/forge/ai/ability/ProtectAllAi.java +++ b/forge-gui/src/main/java/forge/ai/ability/ProtectAllAi.java @@ -2,7 +2,7 @@ package forge.ai.ability; import forge.ai.ComputerUtilCost; -import forge.game.ability.SpellAbilityAi; +import forge.ai.SpellAbilityAi; import forge.game.card.Card; import forge.game.cost.Cost; import forge.game.player.Player; diff --git a/forge-gui/src/main/java/forge/ai/ability/PumpAi.java b/forge-gui/src/main/java/forge/ai/ability/PumpAi.java index 932eca185cb..1b7e49e85b6 100644 --- a/forge-gui/src/main/java/forge/ai/ability/PumpAi.java +++ b/forge-gui/src/main/java/forge/ai/ability/PumpAi.java @@ -8,9 +8,9 @@ import forge.ai.ComputerUtil; import forge.ai.ComputerUtilCard; import forge.ai.ComputerUtilCost; import forge.ai.ComputerUtilMana; +import forge.ai.SpellAbilityAi; import forge.game.Game; import forge.game.ability.AbilityUtils; -import forge.game.ability.SpellAbilityAi; import forge.game.card.Card; import forge.game.card.CardLists; import forge.game.card.CardPredicates.Presets; diff --git a/forge-gui/src/main/java/forge/ai/ability/PumpAiBase.java b/forge-gui/src/main/java/forge/ai/ability/PumpAiBase.java index 31e81ffb177..f396b8be1f9 100644 --- a/forge-gui/src/main/java/forge/ai/ability/PumpAiBase.java +++ b/forge-gui/src/main/java/forge/ai/ability/PumpAiBase.java @@ -10,8 +10,8 @@ import com.google.common.collect.Iterables; import forge.ai.ComputerUtil; import forge.ai.ComputerUtilCard; import forge.ai.ComputerUtilCombat; +import forge.ai.SpellAbilityAi; import forge.game.Game; -import forge.game.ability.SpellAbilityAi; import forge.game.card.Card; import forge.game.card.CardLists; import forge.game.card.CardPredicates; diff --git a/forge-gui/src/main/java/forge/ai/ability/RearrangeTopOfLibraryAi.java b/forge-gui/src/main/java/forge/ai/ability/RearrangeTopOfLibraryAi.java index 98e16910b3d..50f25de3963 100644 --- a/forge-gui/src/main/java/forge/ai/ability/RearrangeTopOfLibraryAi.java +++ b/forge-gui/src/main/java/forge/ai/ability/RearrangeTopOfLibraryAi.java @@ -1,7 +1,7 @@ package forge.ai.ability; -import forge.game.ability.SpellAbilityAi; +import forge.ai.SpellAbilityAi; import forge.game.player.Player; import forge.game.spellability.SpellAbility; import forge.game.spellability.TargetRestrictions; diff --git a/forge-gui/src/main/java/forge/ai/ability/RegenerateAi.java b/forge-gui/src/main/java/forge/ai/ability/RegenerateAi.java index 263a4ecac22..e2ea3cb125b 100644 --- a/forge-gui/src/main/java/forge/ai/ability/RegenerateAi.java +++ b/forge-gui/src/main/java/forge/ai/ability/RegenerateAi.java @@ -24,10 +24,10 @@ import forge.ai.ComputerUtil; import forge.ai.ComputerUtilCard; import forge.ai.ComputerUtilCombat; import forge.ai.ComputerUtilCost; +import forge.ai.SpellAbilityAi; import forge.game.Game; import forge.game.GameObject; import forge.game.ability.AbilityUtils; -import forge.game.ability.SpellAbilityAi; import forge.game.card.Card; import forge.game.card.CardLists; import forge.game.card.CardPredicates; diff --git a/forge-gui/src/main/java/forge/ai/ability/RegenerateAllAi.java b/forge-gui/src/main/java/forge/ai/ability/RegenerateAllAi.java index b0634b3168a..11ee969a464 100644 --- a/forge-gui/src/main/java/forge/ai/ability/RegenerateAllAi.java +++ b/forge-gui/src/main/java/forge/ai/ability/RegenerateAllAi.java @@ -5,9 +5,9 @@ import java.util.List; import forge.ai.ComputerUtil; import forge.ai.ComputerUtilCombat; import forge.ai.ComputerUtilCost; +import forge.ai.SpellAbilityAi; import forge.game.Game; import forge.game.GameObject; -import forge.game.ability.SpellAbilityAi; import forge.game.card.Card; import forge.game.card.CardLists; import forge.game.card.CardPredicates; diff --git a/forge-gui/src/main/java/forge/ai/ability/RemoveFromCombatAi.java b/forge-gui/src/main/java/forge/ai/ability/RemoveFromCombatAi.java index a4a47447816..f61f3d7b63d 100644 --- a/forge-gui/src/main/java/forge/ai/ability/RemoveFromCombatAi.java +++ b/forge-gui/src/main/java/forge/ai/ability/RemoveFromCombatAi.java @@ -1,7 +1,7 @@ package forge.ai.ability; -import forge.game.ability.SpellAbilityAi; +import forge.ai.SpellAbilityAi; import forge.game.player.Player; import forge.game.spellability.SpellAbility; diff --git a/forge-gui/src/main/java/forge/ai/ability/RepeatAi.java b/forge-gui/src/main/java/forge/ai/ability/RepeatAi.java index e0b3c2495f1..4155794d7ee 100644 --- a/forge-gui/src/main/java/forge/ai/ability/RepeatAi.java +++ b/forge-gui/src/main/java/forge/ai/ability/RepeatAi.java @@ -1,8 +1,8 @@ package forge.ai.ability; +import forge.ai.SpellAbilityAi; import forge.game.ability.AbilityFactory; -import forge.game.ability.SpellAbilityAi; import forge.game.player.Player; import forge.game.player.PlayerActionConfirmMode; import forge.game.spellability.AbilitySub; diff --git a/forge-gui/src/main/java/forge/ai/ability/RepeatEachAi.java b/forge-gui/src/main/java/forge/ai/ability/RepeatEachAi.java index 80b4ac514c2..1c8fbfa4d51 100644 --- a/forge-gui/src/main/java/forge/ai/ability/RepeatEachAi.java +++ b/forge-gui/src/main/java/forge/ai/ability/RepeatEachAi.java @@ -5,7 +5,7 @@ import java.util.List; import com.google.common.base.Predicate; -import forge.game.ability.SpellAbilityAi; +import forge.ai.SpellAbilityAi; import forge.game.card.Card; import forge.game.card.CardLists; import forge.game.card.CounterType; diff --git a/forge-gui/src/main/java/forge/ai/ability/RestartGameAi.java b/forge-gui/src/main/java/forge/ai/ability/RestartGameAi.java index 2bbd7fd2b36..0c315c349e6 100644 --- a/forge-gui/src/main/java/forge/ai/ability/RestartGameAi.java +++ b/forge-gui/src/main/java/forge/ai/ability/RestartGameAi.java @@ -1,6 +1,6 @@ package forge.ai.ability; -import forge.game.ability.SpellAbilityAi; +import forge.ai.SpellAbilityAi; import forge.game.player.Player; import forge.game.spellability.SpellAbility; diff --git a/forge-gui/src/main/java/forge/ai/ability/RevealAi.java b/forge-gui/src/main/java/forge/ai/ability/RevealAi.java index 73062d54fbf..762f3494665 100644 --- a/forge-gui/src/main/java/forge/ai/ability/RevealAi.java +++ b/forge-gui/src/main/java/forge/ai/ability/RevealAi.java @@ -3,7 +3,7 @@ package forge.ai.ability; import java.util.Random; import forge.ai.ComputerUtilCost; -import forge.game.ability.SpellAbilityAi; +import forge.ai.SpellAbilityAi; import forge.game.card.Card; import forge.game.cost.Cost; import forge.game.player.Player; diff --git a/forge-gui/src/main/java/forge/ai/ability/RevealAiBase.java b/forge-gui/src/main/java/forge/ai/ability/RevealAiBase.java index 3fd07870b43..61299cbcf89 100644 --- a/forge-gui/src/main/java/forge/ai/ability/RevealAiBase.java +++ b/forge-gui/src/main/java/forge/ai/ability/RevealAiBase.java @@ -1,7 +1,7 @@ package forge.ai.ability; -import forge.game.ability.SpellAbilityAi; +import forge.ai.SpellAbilityAi; import forge.game.player.Player; import forge.game.spellability.SpellAbility; import forge.game.spellability.TargetRestrictions; diff --git a/forge-gui/src/main/java/forge/ai/ability/RevealHandAi.java b/forge-gui/src/main/java/forge/ai/ability/RevealHandAi.java index 58827e4dfd2..fa80ddf7ea9 100644 --- a/forge-gui/src/main/java/forge/ai/ability/RevealHandAi.java +++ b/forge-gui/src/main/java/forge/ai/ability/RevealHandAi.java @@ -3,7 +3,7 @@ package forge.ai.ability; import java.util.Random; import forge.ai.ComputerUtilCost; -import forge.game.ability.SpellAbilityAi; +import forge.ai.SpellAbilityAi; import forge.game.card.Card; import forge.game.cost.Cost; import forge.game.player.Player; diff --git a/forge-gui/src/main/java/forge/ai/ability/RollPlanarDiceAi.java b/forge-gui/src/main/java/forge/ai/ability/RollPlanarDiceAi.java index ab11cda3ada..24cbcbe35e2 100644 --- a/forge-gui/src/main/java/forge/ai/ability/RollPlanarDiceAi.java +++ b/forge-gui/src/main/java/forge/ai/ability/RollPlanarDiceAi.java @@ -2,7 +2,7 @@ package forge.ai.ability; import forge.ai.AiController; -import forge.game.ability.SpellAbilityAi; +import forge.ai.SpellAbilityAi; import forge.game.ai.AiProps; import forge.game.card.Card; import forge.game.phase.PhaseType; diff --git a/forge-gui/src/main/java/forge/ai/ability/SacrificeAi.java b/forge-gui/src/main/java/forge/ai/ability/SacrificeAi.java index 81b65edf2ad..d7fed184420 100644 --- a/forge-gui/src/main/java/forge/ai/ability/SacrificeAi.java +++ b/forge-gui/src/main/java/forge/ai/ability/SacrificeAi.java @@ -4,8 +4,8 @@ import java.util.List; import forge.ai.ComputerUtilCard; import forge.ai.ComputerUtilMana; +import forge.ai.SpellAbilityAi; import forge.game.ability.AbilityUtils; -import forge.game.ability.SpellAbilityAi; import forge.game.card.Card; import forge.game.card.CardLists; import forge.game.card.CardPredicates; diff --git a/forge-gui/src/main/java/forge/ai/ability/SacrificeAllAi.java b/forge-gui/src/main/java/forge/ai/ability/SacrificeAllAi.java index 43acb772357..4c6b45c98d6 100644 --- a/forge-gui/src/main/java/forge/ai/ability/SacrificeAllAi.java +++ b/forge-gui/src/main/java/forge/ai/ability/SacrificeAllAi.java @@ -6,7 +6,7 @@ import java.util.Random; import forge.ai.ComputerUtilCard; import forge.ai.ComputerUtilCost; import forge.ai.ComputerUtilMana; -import forge.game.ability.SpellAbilityAi; +import forge.ai.SpellAbilityAi; import forge.game.card.Card; import forge.game.card.CardLists; import forge.game.cost.Cost; diff --git a/forge-gui/src/main/java/forge/ai/ability/ScryAi.java b/forge-gui/src/main/java/forge/ai/ability/ScryAi.java index 8f808983664..c26609075f1 100644 --- a/forge-gui/src/main/java/forge/ai/ability/ScryAi.java +++ b/forge-gui/src/main/java/forge/ai/ability/ScryAi.java @@ -2,7 +2,7 @@ package forge.ai.ability; import java.util.Random; -import forge.game.ability.SpellAbilityAi; +import forge.ai.SpellAbilityAi; import forge.game.player.Player; import forge.game.spellability.SpellAbility; import forge.game.spellability.TargetRestrictions; diff --git a/forge-gui/src/main/java/forge/ai/ability/SetStateAi.java b/forge-gui/src/main/java/forge/ai/ability/SetStateAi.java index 08d59b4472f..a53bccb0dd5 100644 --- a/forge-gui/src/main/java/forge/ai/ability/SetStateAi.java +++ b/forge-gui/src/main/java/forge/ai/ability/SetStateAi.java @@ -1,7 +1,7 @@ package forge.ai.ability; -import forge.game.ability.SpellAbilityAi; +import forge.ai.SpellAbilityAi; import forge.game.player.Player; import forge.game.spellability.SpellAbility; diff --git a/forge-gui/src/main/java/forge/ai/ability/ShuffleAi.java b/forge-gui/src/main/java/forge/ai/ability/ShuffleAi.java index 0c426ee3ccc..ad51a491df1 100644 --- a/forge-gui/src/main/java/forge/ai/ability/ShuffleAi.java +++ b/forge-gui/src/main/java/forge/ai/ability/ShuffleAi.java @@ -1,6 +1,6 @@ package forge.ai.ability; -import forge.game.ability.SpellAbilityAi; +import forge.ai.SpellAbilityAi; import forge.game.player.Player; import forge.game.player.PlayerActionConfirmMode; import forge.game.spellability.SpellAbility; diff --git a/forge-gui/src/main/java/forge/ai/ability/StoreSVarAi.java b/forge-gui/src/main/java/forge/ai/ability/StoreSVarAi.java index 0d756d606c9..2d8d8a8e38a 100644 --- a/forge-gui/src/main/java/forge/ai/ability/StoreSVarAi.java +++ b/forge-gui/src/main/java/forge/ai/ability/StoreSVarAi.java @@ -6,8 +6,8 @@ import java.util.List; import forge.ai.ComputerUtil; import forge.ai.ComputerUtilCombat; import forge.ai.ComputerUtilMana; +import forge.ai.SpellAbilityAi; import forge.game.Game; -import forge.game.ability.SpellAbilityAi; import forge.game.card.Card; import forge.game.card.CardLists; import forge.game.card.CardPredicates.Presets; diff --git a/forge-gui/src/main/java/forge/ai/ability/TapAi.java b/forge-gui/src/main/java/forge/ai/ability/TapAi.java index 3611aea2d34..3d9c800e86a 100644 --- a/forge-gui/src/main/java/forge/ai/ability/TapAi.java +++ b/forge-gui/src/main/java/forge/ai/ability/TapAi.java @@ -3,8 +3,8 @@ package forge.ai.ability; import java.util.List; import forge.ai.ComputerUtil; +import forge.ai.SpellAbilityAi; import forge.game.ability.AbilityUtils; -import forge.game.ability.SpellAbilityAi; import forge.game.card.Card; import forge.game.phase.PhaseHandler; import forge.game.phase.PhaseType; diff --git a/forge-gui/src/main/java/forge/ai/ability/TapAiBase.java b/forge-gui/src/main/java/forge/ai/ability/TapAiBase.java index c9323633e30..97f243bf287 100644 --- a/forge-gui/src/main/java/forge/ai/ability/TapAiBase.java +++ b/forge-gui/src/main/java/forge/ai/ability/TapAiBase.java @@ -7,8 +7,8 @@ import com.google.common.collect.Iterables; import forge.ai.ComputerUtil; import forge.ai.ComputerUtilCard; +import forge.ai.SpellAbilityAi; import forge.game.Game; -import forge.game.ability.SpellAbilityAi; import forge.game.card.Card; import forge.game.card.CardLists; import forge.game.card.CardPredicates; diff --git a/forge-gui/src/main/java/forge/ai/ability/TapAllAi.java b/forge-gui/src/main/java/forge/ai/ability/TapAllAi.java index 86b1f849cba..f46fb74612f 100644 --- a/forge-gui/src/main/java/forge/ai/ability/TapAllAi.java +++ b/forge-gui/src/main/java/forge/ai/ability/TapAllAi.java @@ -6,8 +6,8 @@ import java.util.Random; import com.google.common.base.Predicate; import com.google.common.collect.Iterables; +import forge.ai.SpellAbilityAi; import forge.game.Game; -import forge.game.ability.SpellAbilityAi; import forge.game.card.Card; import forge.game.card.CardLists; import forge.game.card.CardPredicates.Presets; diff --git a/forge-gui/src/main/java/forge/ai/ability/TapOrUntapAllAi.java b/forge-gui/src/main/java/forge/ai/ability/TapOrUntapAllAi.java index ee1867e6eb9..f73a23ee6ff 100644 --- a/forge-gui/src/main/java/forge/ai/ability/TapOrUntapAllAi.java +++ b/forge-gui/src/main/java/forge/ai/ability/TapOrUntapAllAi.java @@ -1,6 +1,6 @@ package forge.ai.ability; -import forge.game.ability.SpellAbilityAi; +import forge.ai.SpellAbilityAi; import forge.game.player.Player; import forge.game.spellability.SpellAbility; diff --git a/forge-gui/src/main/java/forge/ai/ability/TokenAi.java b/forge-gui/src/main/java/forge/ai/ability/TokenAi.java index 52d604272bc..0df4cb6913b 100644 --- a/forge-gui/src/main/java/forge/ai/ability/TokenAi.java +++ b/forge-gui/src/main/java/forge/ai/ability/TokenAi.java @@ -5,9 +5,9 @@ import java.util.Random; import forge.ai.ComputerUtil; import forge.ai.ComputerUtilCost; import forge.ai.ComputerUtilMana; +import forge.ai.SpellAbilityAi; import forge.game.Game; import forge.game.ability.AbilityUtils; -import forge.game.ability.SpellAbilityAi; import forge.game.card.Card; import forge.game.cost.Cost; import forge.game.phase.PhaseHandler; diff --git a/forge-gui/src/main/java/forge/ai/ability/TwoPilesAi.java b/forge-gui/src/main/java/forge/ai/ability/TwoPilesAi.java index 9e02224fb1b..a90dff24ad1 100644 --- a/forge-gui/src/main/java/forge/ai/ability/TwoPilesAi.java +++ b/forge-gui/src/main/java/forge/ai/ability/TwoPilesAi.java @@ -3,8 +3,8 @@ package forge.ai.ability; import java.util.ArrayList; import java.util.List; +import forge.ai.SpellAbilityAi; import forge.game.ability.AbilityUtils; -import forge.game.ability.SpellAbilityAi; import forge.game.card.Card; import forge.game.card.CardLists; import forge.game.player.Player; diff --git a/forge-gui/src/main/java/forge/ai/ability/UnattachAllAi.java b/forge-gui/src/main/java/forge/ai/ability/UnattachAllAi.java index fb13e8449c0..0d9d606eab7 100644 --- a/forge-gui/src/main/java/forge/ai/ability/UnattachAllAi.java +++ b/forge-gui/src/main/java/forge/ai/ability/UnattachAllAi.java @@ -6,9 +6,9 @@ import java.util.Random; import forge.ai.ComputerUtilCard; import forge.ai.ComputerUtilMana; +import forge.ai.SpellAbilityAi; import forge.game.GameObject; import forge.game.ability.AbilityUtils; -import forge.game.ability.SpellAbilityAi; import forge.game.card.Card; import forge.game.cost.Cost; import forge.game.phase.PhaseType; diff --git a/forge-gui/src/main/java/forge/ai/ability/UntapAi.java b/forge-gui/src/main/java/forge/ai/ability/UntapAi.java index f391c2f8f90..026f0e5b094 100644 --- a/forge-gui/src/main/java/forge/ai/ability/UntapAi.java +++ b/forge-gui/src/main/java/forge/ai/ability/UntapAi.java @@ -5,8 +5,8 @@ import java.util.Random; import forge.ai.ComputerUtilCard; import forge.ai.ComputerUtilCost; +import forge.ai.SpellAbilityAi; import forge.game.ability.AbilityUtils; -import forge.game.ability.SpellAbilityAi; import forge.game.card.Card; import forge.game.card.CardLists; import forge.game.card.CardPredicates.Presets; diff --git a/forge-gui/src/main/java/forge/ai/ability/UntapAllAi.java b/forge-gui/src/main/java/forge/ai/ability/UntapAllAi.java index 6b38cb1079c..199838237af 100644 --- a/forge-gui/src/main/java/forge/ai/ability/UntapAllAi.java +++ b/forge-gui/src/main/java/forge/ai/ability/UntapAllAi.java @@ -2,7 +2,7 @@ package forge.ai.ability; import java.util.List; -import forge.game.ability.SpellAbilityAi; +import forge.ai.SpellAbilityAi; import forge.game.card.Card; import forge.game.card.CardLists; import forge.game.player.Player; diff --git a/forge-gui/src/main/java/forge/ai/ability/ZoneExchangeAi.java b/forge-gui/src/main/java/forge/ai/ability/ZoneExchangeAi.java index 4e9dd3b2fa3..bc26f082455 100644 --- a/forge-gui/src/main/java/forge/ai/ability/ZoneExchangeAi.java +++ b/forge-gui/src/main/java/forge/ai/ability/ZoneExchangeAi.java @@ -4,8 +4,8 @@ import java.util.ArrayList; import java.util.List; import forge.ai.ComputerUtilCard; +import forge.ai.SpellAbilityAi; import forge.game.ability.AbilityUtils; -import forge.game.ability.SpellAbilityAi; import forge.game.card.Card; import forge.game.card.CardLists; import forge.game.player.Player; diff --git a/forge-gui/src/main/java/forge/game/ability/AbilityApiBased.java b/forge-gui/src/main/java/forge/game/ability/AbilityApiBased.java index 047539ab314..df1d35b253f 100644 --- a/forge-gui/src/main/java/forge/game/ability/AbilityApiBased.java +++ b/forge-gui/src/main/java/forge/game/ability/AbilityApiBased.java @@ -2,6 +2,7 @@ package forge.game.ability; import java.util.Map; +import forge.ai.SpellAbilityAi; import forge.game.ability.effects.ChangeZoneAllEffect; import forge.game.ability.effects.ChangeZoneEffect; import forge.game.ability.effects.ManaEffect; @@ -63,8 +64,8 @@ public class AbilityApiBased extends AbilityActivated { } @Override - public boolean canPlayAI() { - return ai.canPlayAIWithSubs(getActivatingPlayer(), this); + public boolean canPlayAI(Player aiPlayer) { + return ai.canPlayAIWithSubs(aiPlayer, this); } @Override diff --git a/forge-gui/src/main/java/forge/game/ability/ApiType.java b/forge-gui/src/main/java/forge/game/ability/ApiType.java index dad7f3c8e77..97a26a34b27 100644 --- a/forge-gui/src/main/java/forge/game/ability/ApiType.java +++ b/forge-gui/src/main/java/forge/game/ability/ApiType.java @@ -4,6 +4,7 @@ package forge.game.ability; import java.util.Map; import java.util.TreeMap; +import forge.ai.SpellAbilityAi; import forge.ai.ability.*; import forge.game.ability.effects.*; import forge.util.ReflectionUtil; diff --git a/forge-gui/src/main/java/forge/game/ability/SpellApiBased.java b/forge-gui/src/main/java/forge/game/ability/SpellApiBased.java index f6991e57655..c5296b152c7 100644 --- a/forge-gui/src/main/java/forge/game/ability/SpellApiBased.java +++ b/forge-gui/src/main/java/forge/game/ability/SpellApiBased.java @@ -2,12 +2,14 @@ package forge.game.ability; import java.util.Map; +import forge.ai.SpellAbilityAi; import forge.game.ability.effects.ChangeZoneAllEffect; import forge.game.ability.effects.ChangeZoneEffect; import forge.game.ability.effects.ManaEffect; import forge.game.ability.effects.ManaReflectedEffect; import forge.game.card.Card; import forge.game.cost.Cost; +import forge.game.player.Player; import forge.game.spellability.AbilityManaPart; import forge.game.spellability.Spell; import forge.game.spellability.TargetRestrictions; @@ -45,8 +47,8 @@ public class SpellApiBased extends Spell { */ @Override - public boolean canPlayAI() { - return ai.canPlayAIWithSubs(getActivatingPlayer(), this) && super.canPlayAI(); + public boolean canPlayAI(Player aiPlayer) { + return ai.canPlayAIWithSubs(aiPlayer, this) && super.canPlayAI(aiPlayer); } @Override @@ -55,13 +57,13 @@ public class SpellApiBased extends Spell { } @Override - public boolean canPlayFromEffectAI(final boolean mandatory, final boolean withOutManaCost) { + public boolean canPlayFromEffectAI(Player aiPlayer, final boolean mandatory, final boolean withOutManaCost) { boolean chance = false; if (withOutManaCost) { - chance = ai.doTriggerNoCostWithSubs(this.getActivatingPlayer(), this, mandatory); + chance = ai.doTriggerNoCostWithSubs(aiPlayer, this, mandatory); } else { - chance = ai.doTriggerAI(this.getActivatingPlayer(), this, mandatory); + chance = ai.doTriggerAI(aiPlayer, this, mandatory); } - return chance && super.canPlayAI(); + return chance && super.canPlayAI(aiPlayer); } } diff --git a/forge-gui/src/main/java/forge/game/ability/effects/PlayEffect.java b/forge-gui/src/main/java/forge/game/ability/effects/PlayEffect.java index cb90052cb4e..240f5914cff 100644 --- a/forge-gui/src/main/java/forge/game/ability/effects/PlayEffect.java +++ b/forge-gui/src/main/java/forge/game/ability/effects/PlayEffect.java @@ -227,7 +227,7 @@ public class PlayEffect extends SpellAbilityEffect { } else { if (tgtSA instanceof Spell) { // Isn't it ALWAYS a spell? Spell spell = (Spell) tgtSA; - if (spell.canPlayFromEffectAI(!optional, noManaCost) || !optional) { + if (spell.canPlayFromEffectAI(controller, !optional, noManaCost) || !optional) { if (noManaCost) { ComputerUtil.playSpellAbilityWithoutPayingManaCost(controller, tgtSA, game); } else { diff --git a/forge-gui/src/main/java/forge/game/card/CardFactory.java b/forge-gui/src/main/java/forge/game/card/CardFactory.java index 29dc1b5fca3..8ba52866077 100644 --- a/forge-gui/src/main/java/forge/game/card/CardFactory.java +++ b/forge-gui/src/main/java/forge/game/card/CardFactory.java @@ -679,7 +679,7 @@ public class CardFactory { } @Override - public boolean canPlayAI() { + public boolean canPlayAI(Player aiPlayer) { return false; } }; // SpellAbility @@ -744,11 +744,11 @@ public class CardFactory { } @Override - public boolean canPlayAI() { + public boolean canPlayAI(Player aiPlayer) { // creatures enchanted by curse auras have low priority if (card.getGame().getPhaseHandler().getPhase().isBefore(PhaseType.MAIN2)) { for (Card aura : card.getEnchantedBy()) { - if (aura.getController().isOpponentOf(card.getController())) { + if (aura.getController().isOpponentOf(aiPlayer)) { return false; } } diff --git a/forge-gui/src/main/java/forge/game/card/CardFactoryUtil.java b/forge-gui/src/main/java/forge/game/card/CardFactoryUtil.java index 4938e6d6c60..315ec3816bb 100644 --- a/forge-gui/src/main/java/forge/game/card/CardFactoryUtil.java +++ b/forge-gui/src/main/java/forge/game/card/CardFactoryUtil.java @@ -124,7 +124,7 @@ public class CardFactoryUtil { } @Override - public boolean canPlayAI() { + public boolean canPlayAI(Player aiPlayer) { PhaseHandler phase = sourceCard.getGame().getPhaseHandler(); if (phase.getPhase().isAfter(PhaseType.MAIN1) || !phase.isPlayerTurn(getActivatingPlayer())) { return false; @@ -323,7 +323,7 @@ public class CardFactoryUtil { private static final long serialVersionUID = -4960704261761785512L; @Override - public boolean canPlayAI() { + public boolean canPlayAI(Player aiPlayer) { return false; } @@ -412,7 +412,7 @@ public class CardFactoryUtil { } @Override - public boolean canPlayAI() { + public boolean canPlayAI(Player aiPlayer) { return true; // Suspend currently not functional for the AI, // seems to be an issue with regaining Priority after Suspension @@ -2948,21 +2948,20 @@ public class CardFactoryUtil { } @Override - public boolean canPlayAI() { + public boolean canPlayAI(Player aiPlayer) { final Game game = card.getGame(); - final Player ai = getActivatingPlayer(); - if (!SpellPermanent.checkETBEffects(card, this.getActivatingPlayer())) { + if (!SpellPermanent.checkETBEffects(card, aiPlayer)) { return false; } // Wait for Main2 if possible if (game.getPhaseHandler().is(PhaseType.MAIN1) - && game.getPhaseHandler().isPlayerTurn(ai) - && ai.getManaPool().totalMana() <= 0 - && !ComputerUtil.castPermanentInMain1(ai, this)) { + && game.getPhaseHandler().isPlayerTurn(aiPlayer) + && aiPlayer.getManaPool().totalMana() <= 0 + && !ComputerUtil.castPermanentInMain1(aiPlayer, this)) { return false; } - return super.canPlayAI(); + return super.canPlayAI(aiPlayer); } }; card.removeIntrinsicKeyword(evokeKeyword); @@ -3441,7 +3440,7 @@ public class CardFactoryUtil { } @Override - public boolean canPlayAI() { + public boolean canPlayAI(Player aiPlayer) { return false; } diff --git a/forge-gui/src/main/java/forge/game/player/PlayerControllerAi.java b/forge-gui/src/main/java/forge/game/player/PlayerControllerAi.java index 875ce606db5..0a1dfb788c8 100644 --- a/forge-gui/src/main/java/forge/game/player/PlayerControllerAi.java +++ b/forge-gui/src/main/java/forge/game/player/PlayerControllerAi.java @@ -250,11 +250,11 @@ public class PlayerControllerAi extends PlayerController { if( mayChooseNewTargets ) { if (copySA instanceof Spell) { Spell spell = (Spell) copySA; - if (!spell.canPlayFromEffectAI(true, true)) { + if (!spell.canPlayFromEffectAI(player, true, true)) { return; // is this legal at all? } } else { - copySA.canPlayAI(); + copySA.canPlayAI(player); } } ComputerUtil.playSpellAbilityForFree(player, copySA); diff --git a/forge-gui/src/main/java/forge/game/spellability/AbilitySub.java b/forge-gui/src/main/java/forge/game/spellability/AbilitySub.java index ecaa59747f9..935c1db5828 100644 --- a/forge-gui/src/main/java/forge/game/spellability/AbilitySub.java +++ b/forge-gui/src/main/java/forge/game/spellability/AbilitySub.java @@ -19,9 +19,9 @@ package forge.game.spellability; import java.util.Map; +import forge.ai.SpellAbilityAi; import forge.game.ability.AbilityFactory; import forge.game.ability.ApiType; -import forge.game.ability.SpellAbilityAi; import forge.game.ability.SpellAbilityEffect; import forge.game.ability.effects.ChangeZoneAllEffect; import forge.game.ability.effects.ChangeZoneEffect; @@ -121,8 +121,8 @@ public final class AbilitySub extends SpellAbility implements java.io.Serializab } @Override - public boolean canPlayAI() { - return ai.canPlayAIWithSubs(getActivatingPlayer(), this); + public boolean canPlayAI(Player aiPlayer) { + return ai.canPlayAIWithSubs(aiPlayer, this); } @Override diff --git a/forge-gui/src/main/java/forge/game/spellability/Spell.java b/forge-gui/src/main/java/forge/game/spellability/Spell.java index 3eed2015da2..d0ed4345a0b 100644 --- a/forge-gui/src/main/java/forge/game/spellability/Spell.java +++ b/forge-gui/src/main/java/forge/game/spellability/Spell.java @@ -127,7 +127,7 @@ public abstract class Spell extends SpellAbility implements java.io.Serializable /** {@inheritDoc} */ @Override - public boolean canPlayAI() { + public boolean canPlayAI(Player aiPlayer) { final Card card = this.getSourceCard(); final Game game = getActivatingPlayer().getGame(); if (card.getSVar("NeedsToPlay").length() > 0) { @@ -161,7 +161,7 @@ public abstract class Spell extends SpellAbility implements java.io.Serializable } } - return super.canPlayAI(); + return super.canPlayAI(aiPlayer); } @@ -193,8 +193,8 @@ public abstract class Spell extends SpellAbility implements java.io.Serializable * is the spell cast without paying mana * @return a boolean. */ - public boolean canPlayFromEffectAI(boolean mandatory, boolean withOutManaCost) { - return canPlayAI(); + public boolean canPlayFromEffectAI(Player aiPlayer, boolean mandatory, boolean withOutManaCost) { + return canPlayAI(aiPlayer); } /** diff --git a/forge-gui/src/main/java/forge/game/spellability/SpellAbility.java b/forge-gui/src/main/java/forge/game/spellability/SpellAbility.java index 4e3268ec5ac..4034dcf83d1 100644 --- a/forge-gui/src/main/java/forge/game/spellability/SpellAbility.java +++ b/forge-gui/src/main/java/forge/game/spellability/SpellAbility.java @@ -218,7 +218,7 @@ public abstract class SpellAbility extends GameObject implements ISpellAbility { * * @return a boolean. */ - public /*final*/ boolean canPlayAI() { + public /*final*/ boolean canPlayAI(Player aiPlayer) { return true; } diff --git a/forge-gui/src/main/java/forge/game/spellability/SpellPermanent.java b/forge-gui/src/main/java/forge/game/spellability/SpellPermanent.java index 72ebc5477a3..8f578094199 100644 --- a/forge-gui/src/main/java/forge/game/spellability/SpellPermanent.java +++ b/forge-gui/src/main/java/forge/game/spellability/SpellPermanent.java @@ -89,15 +89,14 @@ public class SpellPermanent extends Spell { /** {@inheritDoc} */ @Override - public boolean canPlayAI() { + public boolean canPlayAI(Player aiPlayer) { final Card card = this.getSourceCard(); ManaCost mana = this.getPayCosts().getTotalMana(); - final Player ai = getActivatingPlayer(); - final Game game = ai.getGame(); + final Game game = aiPlayer.getGame(); if (mana.countX() > 0) { // Set PayX here to maximum value. - final int xPay = ComputerUtilMana.determineLeftoverMana(this, ai); + final int xPay = ComputerUtilMana.determineLeftoverMana(this, aiPlayer); if (xPay <= 0) { return false; } @@ -105,7 +104,7 @@ public class SpellPermanent extends Spell { } // Prevent the computer from summoning Ball Lightning type creatures after attacking if (card.hasKeyword("At the beginning of the end step, sacrifice CARDNAME.") - && (game.getPhaseHandler().isPlayerTurn(ai.getOpponent()) + && (game.getPhaseHandler().isPlayerTurn(aiPlayer.getOpponent()) || game.getPhaseHandler().getPhase().isAfter(PhaseType.COMBAT_DECLARE_ATTACKERS))) { return false; } @@ -118,47 +117,46 @@ public class SpellPermanent extends Spell { // Wait for Main2 if possible if (game.getPhaseHandler().is(PhaseType.MAIN1) - && game.getPhaseHandler().isPlayerTurn(ai) - && ai.getManaPool().totalMana() <= 0 - && !ComputerUtil.castPermanentInMain1(ai, this)) { + && game.getPhaseHandler().isPlayerTurn(aiPlayer) + && aiPlayer.getManaPool().totalMana() <= 0 + && !ComputerUtil.castPermanentInMain1(aiPlayer, this)) { return false; } // save cards with flash for surprise blocking if (card.hasKeyword("Flash") - && (ai.isUnlimitedHandSize() || ai.getCardsIn(ZoneType.Hand).size() <= ai.getMaxHandSize()) - && ai.getManaPool().totalMana() <= 0 - && (game.getPhaseHandler().isPlayerTurn(ai) + && (aiPlayer.isUnlimitedHandSize() || aiPlayer.getCardsIn(ZoneType.Hand).size() <= aiPlayer.getMaxHandSize()) + && aiPlayer.getManaPool().totalMana() <= 0 + && (game.getPhaseHandler().isPlayerTurn(aiPlayer) || game.getPhaseHandler().getPhase().isBefore(PhaseType.COMBAT_DECLARE_ATTACKERS) && !card.hasETBTrigger()) - && !ComputerUtil.castPermanentInMain1(ai, this)) { + && !ComputerUtil.castPermanentInMain1(aiPlayer, this)) { return false; } - return canPlayFromEffectAI(false, true); + return canPlayFromEffectAI(aiPlayer, false, true); } // canPlayAI() /** {@inheritDoc} */ @Override - public boolean canPlayFromEffectAI(final boolean mandatory, final boolean withOutManaCost) { + public boolean canPlayFromEffectAI(Player aiPlayer, final boolean mandatory, final boolean withOutManaCost) { if (mandatory) { return true; } - final Player ai = getActivatingPlayer(); final Card card = this.getSourceCard(); ManaCost mana = this.getPayCosts().getTotalMana(); final Cost cost = this.getPayCosts(); if (cost != null) { // AI currently disabled for these costs - if (!ComputerUtilCost.checkLifeCost(ai, cost, card, 4, null)) { + if (!ComputerUtilCost.checkLifeCost(aiPlayer, cost, card, 4, null)) { return false; } - if (!ComputerUtilCost.checkDiscardCost(ai, cost, card)) { + if (!ComputerUtilCost.checkDiscardCost(aiPlayer, cost, card)) { return false; } - if (!ComputerUtilCost.checkSacrificeCost(ai, cost, card)) { + if (!ComputerUtilCost.checkSacrificeCost(aiPlayer, cost, card)) { return false; } @@ -169,14 +167,14 @@ public class SpellPermanent extends Spell { // check on legendary if (card.isType("Legendary") - && !ai.getGame().getStaticEffects().getGlobalRuleChange(GlobalRuleChange.noLegendRule)) { - final List list = ai.getCardsIn(ZoneType.Battlefield); + && !aiPlayer.getGame().getStaticEffects().getGlobalRuleChange(GlobalRuleChange.noLegendRule)) { + final List list = aiPlayer.getCardsIn(ZoneType.Battlefield); if (Iterables.any(list, CardPredicates.nameEquals(card.getName()))) { return false; } } if (card.isPlaneswalker()) { - List list = ai.getCardsIn(ZoneType.Battlefield); + List list = aiPlayer.getCardsIn(ZoneType.Battlefield); list = CardLists.filter(list, CardPredicates.Presets.PLANEWALKERS); for (int i = 0; i < list.size(); i++) { @@ -190,7 +188,7 @@ public class SpellPermanent extends Spell { } } if (card.isType("World")) { - List list = ai.getCardsIn(ZoneType.Battlefield); + List list = aiPlayer.getCardsIn(ZoneType.Battlefield); list = CardLists.getType(list, "World"); if (list.size() > 0) { return false; @@ -203,13 +201,13 @@ public class SpellPermanent extends Spell { return false; } - if (!SpellPermanent.checkETBEffects(card, this, null, ai)) { + if (!SpellPermanent.checkETBEffects(card, this, null, aiPlayer)) { return false; } - if (ComputerUtil.damageFromETB(ai, card) >= ai.getLife() && ai.canLoseLife()) { + if (ComputerUtil.damageFromETB(aiPlayer, card) >= aiPlayer.getLife() && aiPlayer.canLoseLife()) { return false; } - return super.canPlayAI(); + return super.canPlayAI(aiPlayer); } public static boolean checkETBEffects(final Card card, final Player ai) { diff --git a/forge-gui/src/main/java/forge/game/trigger/WrappedAbility.java b/forge-gui/src/main/java/forge/game/trigger/WrappedAbility.java index 44b333615a9..07e5ea19565 100644 --- a/forge-gui/src/main/java/forge/game/trigger/WrappedAbility.java +++ b/forge-gui/src/main/java/forge/game/trigger/WrappedAbility.java @@ -139,8 +139,8 @@ public class WrappedAbility extends Ability implements ISpellAbility { } @Override - public boolean canPlayAI() { - return sa.canPlayAI(); + public boolean canPlayAI(Player aiPlayer) { + return sa.canPlayAI(aiPlayer); } @Override