From d192d4977f4e551b98f3fc45281500f23ceb5fd9 Mon Sep 17 00:00:00 2001 From: Maxmtg Date: Fri, 22 Mar 2013 18:17:56 +0000 Subject: [PATCH] code changes from trunk/src --- .../forge/card/ability/ai/ChangeZoneAi.java | 17 ++++++++--------- .../forge/card/spellability/SpellPermanent.java | 1 + src/main/java/forge/game/GameActionUtil.java | 1 + 3 files changed, 10 insertions(+), 9 deletions(-) diff --git a/src/main/java/forge/card/ability/ai/ChangeZoneAi.java b/src/main/java/forge/card/ability/ai/ChangeZoneAi.java index 81f23bd9e65..8f5e49654cd 100644 --- a/src/main/java/forge/card/ability/ai/ChangeZoneAi.java +++ b/src/main/java/forge/card/ability/ai/ChangeZoneAi.java @@ -670,8 +670,7 @@ public class ChangeZoneAi extends SpellAbilityAi { * a boolean. * @return a boolean. */ - private static boolean isPreferredTarget(final AIPlayer ai, final SpellAbility sa, - final boolean mandatory) { + private static boolean isPreferredTarget(final AIPlayer ai, final SpellAbility sa, final boolean mandatory) { final Card source = sa.getSourceCard(); final ZoneType origin = ZoneType.listValueOf(sa.getParam("Origin")).get(0); final ZoneType destination = ZoneType.smartValueOf(sa.getParam("Destination")); @@ -750,8 +749,8 @@ public class ChangeZoneAi extends SpellAbilityAi { } } } - // Blink permanents with ETB triggers - else if (!sa.isTrigger() && SpellAbilityAi.playReusable(ai, sa)) { + // TODO: Blink permanents with ETB triggers + /*else if (!sa.isTrigger() && SpellAbilityAi.playReusable(ai, sa)) { aiPermanents = CardLists.filter(aiPermanents, new Predicate() { @Override public boolean apply(final Card c) { @@ -769,7 +768,7 @@ public class ChangeZoneAi extends SpellAbilityAi { tgt.addTarget(ComputerUtilCard.getBestAI(aiPermanents)); return true; } - } + }*/ } } else if (origin.equals(ZoneType.Graveyard)) { @@ -833,7 +832,7 @@ public class ChangeZoneAi extends SpellAbilityAi { return false; } - if (!mandatory && (list.size() < tgt.getMinTargets(sa.getSourceCard(), sa))) { + if (!mandatory && list.size() < tgt.getMinTargets(sa.getSourceCard(), sa)) { return false; } @@ -843,8 +842,8 @@ public class ChangeZoneAi extends SpellAbilityAi { Card choice = null; if (!list.isEmpty()) { - final Card mostExpensive = ComputerUtilCard.getMostExpensivePermanentAI(list, sa, false); if (destination.equals(ZoneType.Battlefield) || origin.equals(ZoneType.Battlefield)) { + final Card mostExpensive = ComputerUtilCard.getMostExpensivePermanentAI(list, sa, false); if (mostExpensive.isCreature()) { // if a creature is most expensive take the best one if (destination.equals(ZoneType.Exile)) { @@ -887,13 +886,13 @@ public class ChangeZoneAi extends SpellAbilityAi { } } if (choice == null) { // can't find anything left - if ((tgt.getNumTargeted() == 0) || (tgt.getNumTargeted() < tgt.getMinTargets(sa.getSourceCard(), sa))) { + if (tgt.getNumTargeted() == 0 || tgt.getNumTargeted() < tgt.getMinTargets(sa.getSourceCard(), sa)) { if (!mandatory) { tgt.resetTargets(); } return false; } else { - if (!ComputerUtil.shouldCastLessThanMax(ai, source)) { + if (!sa.isTrigger() && !ComputerUtil.shouldCastLessThanMax(ai, source)) { return false; } break; diff --git a/src/main/java/forge/card/spellability/SpellPermanent.java b/src/main/java/forge/card/spellability/SpellPermanent.java index 744d4784c44..a4539088000 100644 --- a/src/main/java/forge/card/spellability/SpellPermanent.java +++ b/src/main/java/forge/card/spellability/SpellPermanent.java @@ -327,6 +327,7 @@ public class SpellPermanent extends Spell { else { throw new InvalidParameterException("Either ai or sa must be not null!"); } + exSA.setTrigger(true); // Run non-mandatory trigger. // These checks only work if the Executing SpellAbility is an diff --git a/src/main/java/forge/game/GameActionUtil.java b/src/main/java/forge/game/GameActionUtil.java index f7fa491a034..d0183522413 100644 --- a/src/main/java/forge/game/GameActionUtil.java +++ b/src/main/java/forge/game/GameActionUtil.java @@ -1333,6 +1333,7 @@ public final class GameActionUtil { while (child.getSubAbility() != null) { AbilitySub newChild = child.getSubAbility().getCopy(); child.setSubAbility(newChild); + child.setActivatingPlayer(s.getActivatingPlayer()); child = newChild; }