- Improved AI using cards with Flash.

This commit is contained in:
Sloth
2015-03-28 22:13:32 +00:00
parent 18088beaf6
commit 5fab7fb644
4 changed files with 15 additions and 7 deletions

View File

@@ -685,11 +685,12 @@ public class AiController {
// save cards with flash for surprise blocking
if (card.hasKeyword("Flash")
&& (player.isUnlimitedHandSize() || player.getCardsIn(ZoneType.Hand).size() <= player.getMaxHandSize())
&& (player.isUnlimitedHandSize() || player.getCardsIn(ZoneType.Hand).size() <= player.getMaxHandSize()
|| game.getPhaseHandler().getPhase().isBefore(PhaseType.END_OF_TURN))
&& player.getManaPool().totalMana() <= 0
&& (game.getPhaseHandler().isPlayerTurn(player)
|| game.getPhaseHandler().getPhase().isBefore(PhaseType.COMBAT_DECLARE_ATTACKERS))
&& (!card.hasETBTrigger() || card.hasSVar("AmbushAI"))
&& (!card.hasETBTrigger(true) || card.hasSVar("AmbushAI"))
&& !ComputerUtil.castPermanentInMain1(player, sa)) {
return AiPlayDecision.AnotherTime;
}
@@ -1070,8 +1071,8 @@ public class AiController {
}
}
if (card.isCreature() && (card.getNetToughness() <= 0) && !card.hasStartOfKeyword("etbCounter")
&& mana.countX() == 0 && !card.hasETBTrigger()
if (card.isCreature() && card.getNetToughness() <= 0 && !card.hasStartOfKeyword("etbCounter")
&& mana.countX() == 0 && !card.hasETBTrigger(false)
&& !card.hasETBReplacement()
&& !card.hasSVar("NoZeroToughnessAI")) {
return AiPlayDecision.WouldBecomeZeroToughnessCreature;

View File

@@ -6254,7 +6254,7 @@ public class Card extends GameEntity implements Comparable<Card> {
clearBlockedThisTurn();
}
public boolean hasETBTrigger() {
public boolean hasETBTrigger(final boolean drawbackOnly) {
for (final Trigger tr : getTriggers()) {
final Map<String, String> params = tr.getMapParams();
if (tr.getMode() != TriggerType.ChangesZone) {
@@ -6268,6 +6268,12 @@ public class Card extends GameEntity implements Comparable<Card> {
if (params.containsKey("ValidCard") && !params.get("ValidCard").contains("Self")) {
continue;
}
if (drawbackOnly && params.containsKey("Execute")){
String exec = this.getSVar(params.get("Execute"));
if (exec.contains("AB$")) {
continue;
}
}
return true;
}
return false;

View File

@@ -3,6 +3,6 @@ ManaCost:1 B B
Types:Enchantment
T:Mode$ SpellCast | ValidCard$ Card | TriggerZones$ Battlefield | Execute$ TrigDiscard | TriggerDescription$ Whenever a player casts a spell, that player discards a card.
SVar:TrigDiscard:AB$Discard | Cost$ 0 | Defined$ TriggeredActivator | NumCards$ 1 | Mode$ TgtChoose
SVar:RemAIDeck:True
SVar:RemRandomDeck:True
SVar:Picture:http://www.wizards.com/global/images/magic/general/oppression.jpg
Oracle:Whenever a player casts a spell, that player discards a card.

View File

@@ -11,7 +11,7 @@ Deck Type=constructed
1 Servant of the Scale
2 High Sentinels of Arashin
1 Anafenza, Kin-Tree Spirit
2 Avatar of the Resolute
1 Avatar of the Resolute
1 Elite Scaleguard
1 Tuskguard Captain
1 Longshot Squad
@@ -28,6 +28,7 @@ Deck Type=constructed
1 Forgotten Ancient
2 Juniper Order Ranger
1 Daghatar the Adamant
1 Kalonian Hydra
1 Dromoka, the Eternal
1 Spike Hatcher
1 Borborygmos