From 2fcc77754227cba191452b5ec3a0d63ed95eea1c Mon Sep 17 00:00:00 2001 From: Sloth Date: Sun, 23 Sep 2012 14:02:48 +0000 Subject: [PATCH] - Little AI tweak in AF Animate. --- res/cardsfolder/f/firewing_phoenix.txt | 1 + res/cardsfolder/m/magma_phoenix.txt | 4 ++-- res/cardsfolder/n/necrosavant.txt | 2 +- res/cardsfolder/n/nether_traitor.txt | 2 ++ res/cardsfolder/s/shard_phoenix.txt | 1 + .../abilityfactory/AbilityFactoryAnimate.java | 15 ++++++++++++--- 6 files changed, 19 insertions(+), 6 deletions(-) diff --git a/res/cardsfolder/f/firewing_phoenix.txt b/res/cardsfolder/f/firewing_phoenix.txt index d07a4740337..05e3b456431 100644 --- a/res/cardsfolder/f/firewing_phoenix.txt +++ b/res/cardsfolder/f/firewing_phoenix.txt @@ -5,6 +5,7 @@ Text:no text PT:4/2 K:Flying A:AB$ ChangeZone | Cost$ 1 R R R | Origin$ Graveyard | Destination$ Hand | ActivationZone$ Graveyard | SpellDescription$ Return CARDNAME from your graveyard to your hand. +SVar:DiscardMe:1 SVar:Rarity:Rare SVar:Picture:http://www.wizards.com/global/images/magic/general/firewing_phoenix.jpg SetInfo:M13|Rare|http://magiccards.info/scans/en/m13/131.jpg diff --git a/res/cardsfolder/m/magma_phoenix.txt b/res/cardsfolder/m/magma_phoenix.txt index 9f8939b193e..dcaa9b26ff2 100644 --- a/res/cardsfolder/m/magma_phoenix.txt +++ b/res/cardsfolder/m/magma_phoenix.txt @@ -6,8 +6,8 @@ PT:3/3 K:Flying A:AB$ ChangeZone | Cost$ 3 R R | Origin$ Graveyard | Destination$ Hand | ActivationZone$ Graveyard | SpellDescription$ Return CARDNAME from your graveyard to the hand. T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Graveyard | ValidCard$ Card.Self | Execute$ TrigDamage | TriggerController$ TriggeredCardController | TriggerDescription$ When CARDNAME is put into a graveyard from the battlefield, it deals 3 damage to each creature and each player. -SVar:TrigDamage:AB$DamageAll | Cost$ 0 | ValidCards$ Creature | ValidPlayers$ Each | NumDmg$ 3 | ValidDescription$ each creature and each player. -SVar:RemAIDeck:True +SVar:TrigDamage:AB$ DamageAll | Cost$ 0 | ValidCards$ Creature | ValidPlayers$ Each | NumDmg$ 3 | ValidDescription$ each creature and each player. +SVar:DiscardMe:2 SVar:Rarity:Rare SVar:Picture:http://www.wizards.com/global/images/magic/general/magma_phoenix.jpg SetInfo:M11|Rare|http://magiccards.info/scans/en/m11/150.jpg diff --git a/res/cardsfolder/n/necrosavant.txt b/res/cardsfolder/n/necrosavant.txt index 1acacdd90ce..bd9f662c657 100644 --- a/res/cardsfolder/n/necrosavant.txt +++ b/res/cardsfolder/n/necrosavant.txt @@ -4,7 +4,7 @@ Types:Creature Zombie Giant Text:no text PT:5/5 A:AB$ ChangeZone | Cost$3 B B Sac<1/Creature> | Origin$ Graveyard | Destination$ Battlefield | ActivationZone$ Graveyard | PlayerTurn$ True | ActivationPhases$ Upkeep | SpellDescription$ Return CARDNAME from your graveyard to the battlefield. Activate this ability only during your upkeep. -SVar:RemAIDeck:True +SVar:DiscardMe:1 SVar:Rarity:Rare SVar:Picture:http://www.wizards.com/global/images/magic/general/necrosavant.jpg SetInfo:VIS|Rare|http://magiccards.info/scans/en/vi/15.jpg diff --git a/res/cardsfolder/n/nether_traitor.txt b/res/cardsfolder/n/nether_traitor.txt index 6734b21a29a..5bd331faf21 100644 --- a/res/cardsfolder/n/nether_traitor.txt +++ b/res/cardsfolder/n/nether_traitor.txt @@ -7,6 +7,8 @@ K:Haste K:Shadow T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Graveyard | ValidCard$ Creature.YouCtrl+Other | OptionalDecider$ You | TriggerZones$ Graveyard | Execute$ TrigReturn | TriggerDescription$ Whenever another creature is put into your graveyard from the battlefield, you may pay B. If you do, return CARDNAME from your graveyard to the battlefield. SVar:TrigReturn:AB$ChangeZone | Cost$ B | Defined$ Self | Origin$ Graveyard | Destination$ Battlefield +SVar:SacMe:1 +SVar:DiscardMe:1 SVar:Rarity:Rare SVar:Picture:http://www.wizards.com/global/images/magic/general/nether_traitor.jpg SetInfo:TSP|Rare|http://magiccards.info/scans/en/ts/120.jpg diff --git a/res/cardsfolder/s/shard_phoenix.txt b/res/cardsfolder/s/shard_phoenix.txt index ef3b3f3df94..9e5c94d3a7d 100644 --- a/res/cardsfolder/s/shard_phoenix.txt +++ b/res/cardsfolder/s/shard_phoenix.txt @@ -6,6 +6,7 @@ PT:2/2 K:Flying A:AB$ ChangeZone | Cost$ R R R | Origin$ Graveyard | Destination$ Hand | ActivationZone$ Graveyard | ActivationPhases$ Upkeep | PlayerTurn$ True | SpellDescription$ Return CARDNAME from your graveyard to your hand. Play this ability only during your upkeep. A:AB$ DamageAll | Cost$ Sac<1/CARDNAME> | ValidCards$ Creature.withoutFlying | NumDmg$ 2 | ValidDescription$ each creature without flying. | SpellDescription$ CARDNAME deals 2 damage to each creature without flying. +SVar:DiscardMe:1 SVar:Rarity:Rare SVar:Picture:http://www.wizards.com/global/images/magic/general/shard_phoenix.jpg SetInfo:STH|Rare|http://magiccards.info/scans/en/sh/97.jpg diff --git a/src/main/java/forge/card/abilityfactory/AbilityFactoryAnimate.java b/src/main/java/forge/card/abilityfactory/AbilityFactoryAnimate.java index e870ed69c66..eb47b94c29a 100644 --- a/src/main/java/forge/card/abilityfactory/AbilityFactoryAnimate.java +++ b/src/main/java/forge/card/abilityfactory/AbilityFactoryAnimate.java @@ -359,15 +359,24 @@ public final class AbilityFactoryAnimate { // don't use instant speed animate abilities outside computers // Combat_Begin step if (!Singletons.getModel().getGameState().getPhaseHandler().is(PhaseType.COMBAT_BEGIN) - && Singletons.getModel().getGameState().getPhaseHandler().isPlayerTurn(AllZone.getComputerPlayer()) && !AbilityFactory.isSorcerySpeed(sa) + && Singletons.getModel().getGameState().getPhaseHandler().isPlayerTurn(AllZone.getComputerPlayer()) + && !AbilityFactory.isSorcerySpeed(sa) && !params.containsKey("ActivationPhases") && !params.containsKey("Permanent")) { return false; } + // don't animate if the AI won't attack anyway + if (Singletons.getModel().getGameState().getPhaseHandler().isPlayerTurn(AllZone.getComputerPlayer()) + && AllZone.getComputerPlayer().getLife() < 6 && AllZone.getHumanPlayer().getLife() > 6 + && !AllZone.getHumanPlayer().getCardsIn(ZoneType.Battlefield).getType("Creature").isEmpty()) { + return false; + } + // don't use instant speed animate abilities outside humans // Combat_Declare_Attackers_InstantAbility step - if ((!Singletons.getModel().getGameState().getPhaseHandler().is(PhaseType.COMBAT_DECLARE_ATTACKERS_INSTANT_ABILITY) || (AllZone.getCombat() - .getAttackers().isEmpty())) && Singletons.getModel().getGameState().getPhaseHandler().isPlayerTurn(AllZone.getHumanPlayer())) { + if ((!Singletons.getModel().getGameState().getPhaseHandler().is(PhaseType.COMBAT_DECLARE_ATTACKERS_INSTANT_ABILITY) + || (AllZone.getCombat().getAttackers().isEmpty())) + && Singletons.getModel().getGameState().getPhaseHandler().isPlayerTurn(AllZone.getHumanPlayer())) { return false; }