- Added AI support to BecomesBlocked.

This commit is contained in:
Sloth
2013-04-04 13:23:01 +00:00
parent 354f6f1692
commit a117cb53c3
3 changed files with 68 additions and 1 deletions

1
.gitattributes vendored
View File

@@ -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/AnimateAi.java -text
src/main/java/forge/card/ability/ai/AnimateAllAi.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/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/BondAi.java -text
src/main/java/forge/card/ability/ai/CanPlayAsDrawbackAi.java -text src/main/java/forge/card/ability/ai/CanPlayAsDrawbackAi.java -text
src/main/java/forge/card/ability/ai/CannotPlayAi.java -text src/main/java/forge/card/ability/ai/CannotPlayAi.java -text

View File

@@ -10,6 +10,7 @@ import forge.card.ability.ai.AlwaysPlayAi;
import forge.card.ability.ai.AnimateAi; import forge.card.ability.ai.AnimateAi;
import forge.card.ability.ai.AnimateAllAi; import forge.card.ability.ai.AnimateAllAi;
import forge.card.ability.ai.AttachAi; import forge.card.ability.ai.AttachAi;
import forge.card.ability.ai.BecomesBlockedAi;
import forge.card.ability.ai.BondAi; import forge.card.ability.ai.BondAi;
import forge.card.ability.ai.CanPlayAsDrawbackAi; import forge.card.ability.ai.CanPlayAsDrawbackAi;
import forge.card.ability.ai.CannotPlayAi; import forge.card.ability.ai.CannotPlayAi;
@@ -112,7 +113,7 @@ public enum ApiType {
Animate (AnimateEffect.class, AnimateAi.class), Animate (AnimateEffect.class, AnimateAi.class),
AnimateAll (AnimateAllEffect.class, AnimateAllAi.class), AnimateAll (AnimateAllEffect.class, AnimateAllAi.class),
Attach (AttachEffect.class, AttachAi.class), Attach (AttachEffect.class, AttachAi.class),
BecomesBlocked (BecomesBlockedEffect.class, CannotPlayAi.class), BecomesBlocked (BecomesBlockedEffect.class, BecomesBlockedAi.class),
Bond (BondEffect.class, BondAi.class), Bond (BondEffect.class, BondAi.class),
ChangeZone(ChangeZoneEffect.class, ChangeZoneAi.class), ChangeZone(ChangeZoneEffect.class, ChangeZoneAi.class),
ChangeZoneAll(ChangeZoneAllEffect.class, ChangeZoneAllAi.class), ChangeZoneAll(ChangeZoneAllEffect.class, ChangeZoneAllAi.class),

View File

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