From a117cb53c36933f9ce2228a61e25558b4d632189 Mon Sep 17 00:00:00 2001 From: Sloth Date: Thu, 4 Apr 2013 13:23:01 +0000 Subject: [PATCH] - Added AI support to BecomesBlocked. --- .gitattributes | 1 + src/main/java/forge/card/ability/ApiType.java | 3 +- .../card/ability/ai/BecomesBlockedAi.java | 65 +++++++++++++++++++ 3 files changed, 68 insertions(+), 1 deletion(-) create mode 100644 src/main/java/forge/card/ability/ai/BecomesBlockedAi.java diff --git a/.gitattributes b/.gitattributes index 95dafc7a228..318036a40b7 100644 --- a/.gitattributes +++ b/.gitattributes @@ -13527,6 +13527,7 @@ src/main/java/forge/card/ability/ai/AlwaysPlayAi.java -text src/main/java/forge/card/ability/ai/AnimateAi.java -text src/main/java/forge/card/ability/ai/AnimateAllAi.java -text src/main/java/forge/card/ability/ai/AttachAi.java -text +src/main/java/forge/card/ability/ai/BecomesBlockedAi.java -text src/main/java/forge/card/ability/ai/BondAi.java -text src/main/java/forge/card/ability/ai/CanPlayAsDrawbackAi.java -text src/main/java/forge/card/ability/ai/CannotPlayAi.java -text diff --git a/src/main/java/forge/card/ability/ApiType.java b/src/main/java/forge/card/ability/ApiType.java index ca6dfd7fdc4..ae794f7c796 100644 --- a/src/main/java/forge/card/ability/ApiType.java +++ b/src/main/java/forge/card/ability/ApiType.java @@ -10,6 +10,7 @@ import forge.card.ability.ai.AlwaysPlayAi; import forge.card.ability.ai.AnimateAi; import forge.card.ability.ai.AnimateAllAi; import forge.card.ability.ai.AttachAi; +import forge.card.ability.ai.BecomesBlockedAi; import forge.card.ability.ai.BondAi; import forge.card.ability.ai.CanPlayAsDrawbackAi; import forge.card.ability.ai.CannotPlayAi; @@ -112,7 +113,7 @@ public enum ApiType { Animate (AnimateEffect.class, AnimateAi.class), AnimateAll (AnimateAllEffect.class, AnimateAllAi.class), Attach (AttachEffect.class, AttachAi.class), - BecomesBlocked (BecomesBlockedEffect.class, CannotPlayAi.class), + BecomesBlocked (BecomesBlockedEffect.class, BecomesBlockedAi.class), Bond (BondEffect.class, BondAi.class), ChangeZone(ChangeZoneEffect.class, ChangeZoneAi.class), ChangeZoneAll(ChangeZoneAllEffect.class, ChangeZoneAllAi.class), diff --git a/src/main/java/forge/card/ability/ai/BecomesBlockedAi.java b/src/main/java/forge/card/ability/ai/BecomesBlockedAi.java new file mode 100644 index 00000000000..a5c6609c673 --- /dev/null +++ b/src/main/java/forge/card/ability/ai/BecomesBlockedAi.java @@ -0,0 +1,65 @@ +package forge.card.ability.ai; + + +import java.util.List; + +import forge.Card; +import forge.CardLists; +import forge.Singletons; +import forge.card.ability.SpellAbilityAi; +import forge.card.spellability.SpellAbility; +import forge.card.spellability.Target; +import forge.game.ai.ComputerUtilCard; +import forge.game.player.AIPlayer; +import forge.game.zone.ZoneType; + +public class BecomesBlockedAi extends SpellAbilityAi { + + @Override + protected boolean canPlayAI(AIPlayer aiPlayer, SpellAbility sa) { + final Card source = sa.getSourceCard(); + final Target tgt = sa.getTarget(); + + List list = Singletons.getModel().getGame().getCardsIn(ZoneType.Battlefield); + list = CardLists.getValidCards(list, tgt.getValidTgts(), source.getController(), source); + list = CardLists.getTargetableCards(list, sa); + + while (tgt.getNumTargeted() < tgt.getMaxTargets(source, sa)) { + Card choice = null; + + if (list.isEmpty()) { + return false; + } + + choice = ComputerUtilCard.getBestCreatureAI(list); + + if (choice == null) { // can't find anything left + return false; + } + + list.remove(choice); + tgt.addTarget(choice); + } + return true; + } + + @Override + public boolean chkAIDrawback(SpellAbility sa, AIPlayer aiPlayer) { + + // TODO - implement AI + return false; + } + + /* (non-Javadoc) + * @see forge.card.abilityfactory.SpellAiLogic#doTriggerAINoCost(forge.game.player.Player, java.util.Map, forge.card.spellability.SpellAbility, boolean) + */ + @Override + protected boolean doTriggerAINoCost(AIPlayer aiPlayer, SpellAbility sa, boolean mandatory) { + boolean chance; + + // TODO - implement AI + chance = false; + + return chance; + } +}