From 34ca0ff33583e4458bedd7ce73a24d518932a2e5 Mon Sep 17 00:00:00 2001 From: Maxmtg Date: Mon, 22 Oct 2012 19:32:56 +0000 Subject: [PATCH] removed some hardcoded checks for ai player --- .../forge/card/abilityfactory/AbilityFactory.java | 7 +++---- .../abilityfactory/AbilityFactoryAlterLife.java | 4 ++-- .../abilityfactory/AbilityFactoryChangeZone.java | 2 +- .../abilityfactory/AbilityFactoryCounters.java | 10 +++++----- .../card/abilityfactory/AbilityFactoryDestroy.java | 2 +- .../card/abilityfactory/AbilityFactoryReveal.java | 14 +++++++------- .../card/abilityfactory/AbilityFactoryToken.java | 2 +- .../AbilityFactoryZoneAffecting.java | 4 ++-- 8 files changed, 22 insertions(+), 23 deletions(-) diff --git a/src/main/java/forge/card/abilityfactory/AbilityFactory.java b/src/main/java/forge/card/abilityfactory/AbilityFactory.java index da483271f27..ca93c3c7482 100644 --- a/src/main/java/forge/card/abilityfactory/AbilityFactory.java +++ b/src/main/java/forge/card/abilityfactory/AbilityFactory.java @@ -42,7 +42,6 @@ import forge.card.spellability.Target; import forge.game.phase.PhaseType; import forge.game.player.ComputerUtil; import forge.game.player.Player; -import forge.game.player.PlayerType; import forge.game.zone.ZoneType; /** @@ -1484,7 +1483,7 @@ public class AbilityFactory { * a {@link forge.card.spellability.SpellAbility} object. * @return a boolean. */ - public static boolean playReusable(final SpellAbility sa) { + public static boolean playReusable(final Player ai, final SpellAbility sa) { // TODO probably also consider if winter orb or similar are out if (sa.getPayCosts() == null) { @@ -1499,8 +1498,8 @@ public class AbilityFactory { return true; } - return (Singletons.getModel().getGame().getPhaseHandler().is(PhaseType.END_OF_TURN) - && Singletons.getModel().getGame().getPhaseHandler().isNextTurn(PlayerType.COMPUTER)); + return Singletons.getModel().getGame().getPhaseHandler().is(PhaseType.END_OF_TURN) + && Singletons.getModel().getGame().getNextPlayerAfter(sa.getActivatingPlayer()).equals(ai); } /** diff --git a/src/main/java/forge/card/abilityfactory/AbilityFactoryAlterLife.java b/src/main/java/forge/card/abilityfactory/AbilityFactoryAlterLife.java index 943447f496f..f6709e75b29 100644 --- a/src/main/java/forge/card/abilityfactory/AbilityFactoryAlterLife.java +++ b/src/main/java/forge/card/abilityfactory/AbilityFactoryAlterLife.java @@ -383,7 +383,7 @@ public class AbilityFactoryAlterLife { } boolean randomReturn = r.nextFloat() <= .6667; - if (lifeCritical || AbilityFactory.playReusable(sa)) { + if (lifeCritical || AbilityFactory.playReusable(ai, sa)) { randomReturn = true; } @@ -808,7 +808,7 @@ public class AbilityFactoryAlterLife { } boolean randomReturn = r.nextFloat() <= .6667; - if (AbilityFactory.playReusable(sa) || priority) { + if (AbilityFactory.playReusable(ai, sa) || priority) { randomReturn = true; } diff --git a/src/main/java/forge/card/abilityfactory/AbilityFactoryChangeZone.java b/src/main/java/forge/card/abilityfactory/AbilityFactoryChangeZone.java index 98ac09a8074..da88b956655 100644 --- a/src/main/java/forge/card/abilityfactory/AbilityFactoryChangeZone.java +++ b/src/main/java/forge/card/abilityfactory/AbilityFactoryChangeZone.java @@ -1728,7 +1728,7 @@ public final class AbilityFactoryChangeZone { } } // Blink permanents with ETB triggers - else if (sa.isAbility() && (sa.getPayCosts() != null) && AbilityFactory.playReusable(sa)) { + else if (sa.isAbility() && (sa.getPayCosts() != null) && AbilityFactory.playReusable(ai, sa)) { aiPermanents = CardLists.filter(aiPermanents, new Predicate() { @Override public boolean apply(final Card c) { diff --git a/src/main/java/forge/card/abilityfactory/AbilityFactoryCounters.java b/src/main/java/forge/card/abilityfactory/AbilityFactoryCounters.java index e7f174bbf3f..1e44dda9810 100644 --- a/src/main/java/forge/card/abilityfactory/AbilityFactoryCounters.java +++ b/src/main/java/forge/card/abilityfactory/AbilityFactoryCounters.java @@ -1949,7 +1949,7 @@ public class AbilityFactoryCounters { chance &= subAb.chkAIDrawback(); } - if (sa.isTrigger() || sa instanceof AbilitySub || AbilityFactory.playReusable(sa)) { + if (sa.isTrigger() || sa instanceof AbilitySub || AbilityFactory.playReusable(ai, sa)) { return chance; } @@ -2298,7 +2298,7 @@ public class AbilityFactoryCounters { @Override public boolean canPlayAI() { - return AbilityFactoryCounters.moveCounterCanPlayAI(af, this); + return AbilityFactoryCounters.moveCounterCanPlayAI(getActivatingPlayer(), af, this); } @Override @@ -2336,7 +2336,7 @@ public class AbilityFactoryCounters { @Override public boolean canPlayAI() { - return AbilityFactoryCounters.moveCounterCanPlayAI(af, this); + return AbilityFactoryCounters.moveCounterCanPlayAI(getActivatingPlayer(), af, this); } @Override @@ -2469,7 +2469,7 @@ public class AbilityFactoryCounters { * a {@link forge.card.spellability.SpellAbility} object. * @return a boolean. */ - private static boolean moveCounterCanPlayAI(final AbilityFactory af, final SpellAbility sa) { + private static boolean moveCounterCanPlayAI(final Player ai, final AbilityFactory af, final SpellAbility sa) { // AI needs to be expanded, since this function can be pretty complex // based on what // the expected targets could be @@ -2493,7 +2493,7 @@ public class AbilityFactoryCounters { chance &= subAb.chkAIDrawback(); } - if (AbilityFactory.playReusable(sa)) { + if (AbilityFactory.playReusable(ai, sa)) { return chance; } diff --git a/src/main/java/forge/card/abilityfactory/AbilityFactoryDestroy.java b/src/main/java/forge/card/abilityfactory/AbilityFactoryDestroy.java index ca7def1b25f..24f25b7f347 100644 --- a/src/main/java/forge/card/abilityfactory/AbilityFactoryDestroy.java +++ b/src/main/java/forge/card/abilityfactory/AbilityFactoryDestroy.java @@ -253,7 +253,7 @@ public class AbilityFactoryDestroy { list = CardLists.getValidCards(list, params.get("AITgts"), sa.getActivatingPlayer(), source); } list = CardLists.getNotKeyword(list, "Indestructible"); - if (!AbilityFactory.playReusable(sa)) { + if (!AbilityFactory.playReusable(ai, sa)) { list = CardLists.filter(list, new Predicate() { @Override public boolean apply(final Card c) { diff --git a/src/main/java/forge/card/abilityfactory/AbilityFactoryReveal.java b/src/main/java/forge/card/abilityfactory/AbilityFactoryReveal.java index 97a2147c820..b7a79028073 100644 --- a/src/main/java/forge/card/abilityfactory/AbilityFactoryReveal.java +++ b/src/main/java/forge/card/abilityfactory/AbilityFactoryReveal.java @@ -311,7 +311,7 @@ public final class AbilityFactoryReveal { return false; } - if (AbilityFactory.playReusable(sa)) { + if (AbilityFactory.playReusable(ai, sa)) { randomReturn = true; } @@ -1315,7 +1315,7 @@ public final class AbilityFactoryReveal { final Random r = MyRandom.getRandom(); boolean randomReturn = r.nextFloat() <= Math.pow(.667, sa.getActivationsThisTurn() + 1); - if (AbilityFactory.playReusable(sa)) { + if (AbilityFactory.playReusable(ai, sa)) { randomReturn = true; } @@ -1481,7 +1481,7 @@ public final class AbilityFactoryReveal { @Override public boolean canPlayAI() { - return AbilityFactoryReveal.scryCanPlayAI(af, this); + return AbilityFactoryReveal.scryCanPlayAI(getActivatingPlayer(), af, this); } @Override @@ -1519,7 +1519,7 @@ public final class AbilityFactoryReveal { @Override public boolean canPlayAI() { - return AbilityFactoryReveal.scryCanPlayAI(af, this); + return AbilityFactoryReveal.scryCanPlayAI(getActivatingPlayer(), af, this); } @Override @@ -1720,7 +1720,7 @@ public final class AbilityFactoryReveal { * a {@link forge.card.spellability.SpellAbility} object. * @return a boolean. */ - private static boolean scryCanPlayAI(final AbilityFactory af, final SpellAbility sa) { + private static boolean scryCanPlayAI(final Player ai, final AbilityFactory af, final SpellAbility sa) { // Card source = sa.getSourceCard(); double chance = .4; // 40 percent chance of milling with instant speed @@ -1732,7 +1732,7 @@ public final class AbilityFactoryReveal { final Random r = MyRandom.getRandom(); boolean randomReturn = r.nextFloat() <= Math.pow(chance, sa.getActivationsThisTurn() + 1); - if (AbilityFactory.playReusable(sa)) { + if (AbilityFactory.playReusable(ai, sa)) { randomReturn = true; } @@ -2302,7 +2302,7 @@ public final class AbilityFactoryReveal { final Random r = MyRandom.getRandom(); boolean randomReturn = r.nextFloat() <= Math.pow(.667, sa.getActivationsThisTurn() + 1); - if (AbilityFactory.playReusable(sa)) { + if (AbilityFactory.playReusable(ai, sa)) { randomReturn = true; } diff --git a/src/main/java/forge/card/abilityfactory/AbilityFactoryToken.java b/src/main/java/forge/card/abilityfactory/AbilityFactoryToken.java index 217116e6f41..efdd36707df 100644 --- a/src/main/java/forge/card/abilityfactory/AbilityFactoryToken.java +++ b/src/main/java/forge/card/abilityfactory/AbilityFactoryToken.java @@ -385,7 +385,7 @@ public class AbilityFactoryToken extends AbilityFactory { } } - if (AbilityFactory.playReusable(sa)) { + if (AbilityFactory.playReusable(ai, sa)) { return true; } diff --git a/src/main/java/forge/card/abilityfactory/AbilityFactoryZoneAffecting.java b/src/main/java/forge/card/abilityfactory/AbilityFactoryZoneAffecting.java index 722a43490ed..c9645cb2d41 100644 --- a/src/main/java/forge/card/abilityfactory/AbilityFactoryZoneAffecting.java +++ b/src/main/java/forge/card/abilityfactory/AbilityFactoryZoneAffecting.java @@ -367,7 +367,7 @@ public class AbilityFactoryZoneAffecting { randomReturn = true; } - if (AbilityFactory.playReusable(sa)) { + if (AbilityFactory.playReusable(ai, sa)) { randomReturn = true; } @@ -932,7 +932,7 @@ public class AbilityFactoryZoneAffecting { } } - if (AbilityFactory.playReusable(sa)) { + if (AbilityFactory.playReusable(ai, sa)) { randomReturn = true; // some other variables here, like deck size, and phase and other fun stuff }