mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-18 19:58:00 +00:00
- BNG: Added Fanati of Xenagos and Flame-Wreathed Phoenix
This commit is contained in:
@@ -15,9 +15,9 @@ import forge.ai.ComputerUtilMana;
|
|||||||
import forge.ai.SpellAbilityAi;
|
import forge.ai.SpellAbilityAi;
|
||||||
import forge.game.ability.AbilityUtils;
|
import forge.game.ability.AbilityUtils;
|
||||||
import forge.game.card.Card;
|
import forge.game.card.Card;
|
||||||
import forge.game.card.CardFactoryUtil;
|
|
||||||
import forge.game.card.CardLists;
|
import forge.game.card.CardLists;
|
||||||
import forge.game.card.CounterType;
|
import forge.game.card.CounterType;
|
||||||
|
import forge.game.combat.CombatUtil;
|
||||||
import forge.game.cost.Cost;
|
import forge.game.cost.Cost;
|
||||||
import forge.game.phase.PhaseType;
|
import forge.game.phase.PhaseType;
|
||||||
import forge.game.player.Player;
|
import forge.game.player.Player;
|
||||||
@@ -26,7 +26,6 @@ import forge.game.spellability.SpellAbility;
|
|||||||
import forge.game.spellability.TargetRestrictions;
|
import forge.game.spellability.TargetRestrictions;
|
||||||
import forge.game.zone.ZoneType;
|
import forge.game.zone.ZoneType;
|
||||||
import forge.util.Aggregates;
|
import forge.util.Aggregates;
|
||||||
import forge.util.Expressions;
|
|
||||||
import forge.util.MyRandom;
|
import forge.util.MyRandom;
|
||||||
|
|
||||||
public class CountersPutAi extends SpellAbilityAi {
|
public class CountersPutAi extends SpellAbilityAi {
|
||||||
@@ -355,22 +354,43 @@ public class CountersPutAi extends SpellAbilityAi {
|
|||||||
@Override
|
@Override
|
||||||
public boolean confirmAction(Player player, SpellAbility sa, PlayerActionConfirmMode mode, String message) {
|
public boolean confirmAction(Player player, SpellAbility sa, PlayerActionConfirmMode mode, String message) {
|
||||||
final Card source = sa.getSourceCard();
|
final Card source = sa.getSourceCard();
|
||||||
if (mode == PlayerActionConfirmMode.Tribute && source.hasSVar("TributeAILogic")) {
|
if (mode == PlayerActionConfirmMode.Tribute) {
|
||||||
final String logic = source.getSVar("TributeAILogic");
|
// add counter if that opponent has a giant creature
|
||||||
for (final String tributeAI : logic.split(" & ")) {
|
final List<Card> creats = player.getCreaturesInPlay();
|
||||||
String sVar = tributeAI.split(" ")[0];
|
final int tributeAmount = source.getKeywordMagnitude("Tribute");
|
||||||
String comparator = tributeAI.split(" ")[1];
|
List<Card> threatening = CardLists.filter(creats, new Predicate<Card>() {
|
||||||
String compareTo = comparator.substring(2);
|
@Override
|
||||||
int x = CardFactoryUtil.xCount(source, sVar);
|
public boolean apply(Card c) {
|
||||||
int y = CardFactoryUtil.xCount(source, compareTo);
|
return CombatUtil.canBlock(source, c, true)
|
||||||
if (!Expressions.compare(x, comparator, y)) {
|
&& (c.getNetDefense() > source.getNetAttack() + tributeAmount || c.hasKeyword("DeathTouch"));
|
||||||
|
}
|
||||||
|
});
|
||||||
|
if (!threatening.isEmpty()) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
if (source.hasSVar("TributeAILogic")) {
|
||||||
|
final String logic = source.getSVar("TributeAILogic");
|
||||||
|
if (logic.equals("Always")) {
|
||||||
|
return true;
|
||||||
|
} else if (logic.equals("Never")) {
|
||||||
return false;
|
return false;
|
||||||
|
} else if (logic.equals("CanBlockThisTurn")) {
|
||||||
|
// pump haste
|
||||||
|
List<Card> canBlock = CardLists.filter(creats, new Predicate<Card>() {
|
||||||
|
@Override
|
||||||
|
public boolean apply(Card c) {
|
||||||
|
return CombatUtil.canBlock(source, c) && (c.getNetDefense() > source.getNetAttack() || c.hasKeyword("DeathTouch"));
|
||||||
|
}
|
||||||
|
});
|
||||||
|
if (!canBlock.isEmpty()) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return true;
|
return MyRandom.getRandom().nextBoolean();
|
||||||
}
|
}
|
||||||
|
|
||||||
/* (non-Javadoc)
|
/* (non-Javadoc)
|
||||||
* @see forge.card.ability.SpellAbilityAi#chooseSinglePlayer(Player, SpellAbility, Collection<Player>)
|
* @see forge.card.ability.SpellAbilityAi#chooseSinglePlayer(Player, SpellAbility, Collection<Player>)
|
||||||
*/
|
*/
|
||||||
|
|||||||
Reference in New Issue
Block a user