removed some hardcoded checks for ai player

This commit is contained in:
Maxmtg
2012-10-22 19:32:56 +00:00
parent c3f087db9e
commit 34ca0ff335
8 changed files with 22 additions and 23 deletions

View File

@@ -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);
}
/**

View File

@@ -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;
}

View File

@@ -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<Card>() {
@Override
public boolean apply(final Card c) {

View File

@@ -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;
}

View File

@@ -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<Card>() {
@Override
public boolean apply(final Card c) {

View File

@@ -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;
}

View File

@@ -385,7 +385,7 @@ public class AbilityFactoryToken extends AbilityFactory {
}
}
if (AbilityFactory.playReusable(sa)) {
if (AbilityFactory.playReusable(ai, sa)) {
return true;
}

View File

@@ -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
}