mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-20 04:38:00 +00:00
- Added AI support to BecomesBlocked.
This commit is contained in:
1
.gitattributes
vendored
1
.gitattributes
vendored
@@ -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
|
||||||
|
|||||||
@@ -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),
|
||||||
|
|||||||
65
src/main/java/forge/card/ability/ai/BecomesBlockedAi.java
Normal file
65
src/main/java/forge/card/ability/ai/BecomesBlockedAi.java
Normal 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;
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user