- 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/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

View File

@@ -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),

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