playSpellAbilityNoStack - added parameter 'mayChooseNewTargets' - it is passed to HumanPlaySa method and is a key to call doTrigger on AI's side

This commit is contained in:
Maxmtg
2013-07-09 05:55:43 +00:00
parent 23c8590123
commit 0bf2cc8442
10 changed files with 11 additions and 17 deletions

View File

@@ -7299,7 +7299,7 @@ public class Card extends GameEntity implements Comparable<Card> {
cardsInCommand = this.getGame().getCardsIn(ZoneType.Command);
}
this.getController().getController().playSpellAbilityNoStack(shieldSA);
this.getController().getController().playSpellAbilityNoStack(shieldSA, true);
if (apiIsEffect) {
List<Card> newCardsInCommand = this.getGame().getCardsIn(ZoneType.Command);
newCardsInCommand.removeAll(cardsInCommand);

View File

@@ -4,7 +4,6 @@ import java.util.List;
import java.util.Random;
import com.google.common.base.Predicate;
import com.google.common.collect.Iterables;
import com.google.common.collect.Lists;
import forge.Card;

View File

@@ -21,12 +21,10 @@ import java.util.ArrayList;
import java.util.List;
import com.google.common.base.Predicate;
import com.google.common.base.Predicates;
import com.google.common.collect.Iterables;
import forge.Card;
import forge.CardLists;
import forge.CardPredicates;
import forge.Singletons;
import forge.CardPredicates.Presets;
import forge.Command;
@@ -38,19 +36,14 @@ import forge.card.spellability.AbilityActivated;
import forge.card.spellability.AbilityStatic;
import forge.card.spellability.SpellAbility;
import forge.card.spellability.SpellPermanent;
import forge.card.spellability.TargetRestrictions;
import forge.card.trigger.Trigger;
import forge.card.trigger.TriggerHandler;
import forge.game.Game;
import forge.game.ai.ComputerUtilCard;
import forge.game.ai.ComputerUtilCombat;
import forge.game.player.Player;
import forge.game.zone.PlayerZone;
import forge.game.zone.ZoneType;
import forge.gui.GuiChoose;
import forge.gui.input.InputSelectCards;
import forge.gui.input.InputSelectCardsFromList;
import forge.util.Aggregates;
/**
* <p>

View File

@@ -238,7 +238,7 @@ public class ReplacementHandler {
}
Player player = replacementEffect.getHostCard().getController();
player.getController().playSpellAbilityNoStack(effectSA);
player.getController().playSpellAbilityNoStack(effectSA, true);
return ReplacementResult.Replaced;
}

View File

@@ -352,7 +352,7 @@ public class WrappedAbility extends Ability implements ISpellAbility {
if (decider != null && !confirmTrigger(decider, triggerParams))
return;
getActivatingPlayer().getController().playSpellAbilityNoStack(sa);
getActivatingPlayer().getController().playSpellAbilityNoStack(sa, false);
// Add eventual delayed trigger.
if (triggerParams.containsKey("DelayedTrigger")) {

View File

@@ -1624,7 +1624,7 @@ public class GameAction {
if (!takesAction.getZone(ZoneType.Hand).contains(sa.getSourceCard()))
continue;
takesAction.getController().playSpellAbilityNoStack(sa);
takesAction.getController().playSpellAbilityNoStack(sa, true);
}
takesAction = game.getNextPlayerAfter(takesAction);
} while( takesAction != first );

View File

@@ -920,7 +920,7 @@ public class Player extends GameEntity implements Comparable<Player> {
cardsInCommand = this.getGame().getCardsIn(ZoneType.Command);
}
this.getController().playSpellAbilityNoStack(shieldSA);
this.getController().playSpellAbilityNoStack(shieldSA, true);
if (apiIsEffect) {
List<Card> newCardsInCommand = this.getGame().getCardsIn(ZoneType.Command);
newCardsInCommand.removeAll(cardsInCommand);

View File

@@ -97,7 +97,7 @@ public abstract class PlayerController {
//public abstract void playFromSuspend(Card c);
public abstract boolean playCascade(Card cascadedCard, Card sourceCard);
public abstract void playSpellAbilityForFree(SpellAbility copySA, boolean mayChoseNewTargets);
public abstract void playSpellAbilityNoStack(SpellAbility effectSA);
public abstract void playSpellAbilityNoStack(SpellAbility effectSA, boolean mayChoseNewTargets);
public abstract Deck sideboard(final Deck deck, GameType gameType);

View File

@@ -251,7 +251,9 @@ public class PlayerControllerAi extends PlayerController {
}
@Override
public void playSpellAbilityNoStack(SpellAbility effectSA) {
public void playSpellAbilityNoStack(SpellAbility effectSA, boolean canSetupTargets) {
if ( canSetupTargets )
effectSA.doTrigger(true, player); // first parameter does not matter, since return value won't be used
ComputerUtil.playNoStack(player, effectSA, game);
}

View File

@@ -124,8 +124,8 @@ public class PlayerControllerHuman extends PlayerController {
}
@Override
public void playSpellAbilityNoStack(SpellAbility effectSA) {
HumanPlay.playSpellAbilityNoStack(player, effectSA);
public void playSpellAbilityNoStack(SpellAbility effectSA, boolean canSetupTargets) {
HumanPlay.playSpellAbilityNoStack(player, effectSA, !canSetupTargets);
}
/* (non-Javadoc)