From 54f0fd8fc1b81dc02fbd544b78e2a84cdec45246 Mon Sep 17 00:00:00 2001 From: LevelX2 Date: Fri, 3 Oct 2014 13:12:03 +0200 Subject: [PATCH] * Fixed that AI used activated abilities for Battlefield as the card was on hand (fix #588). --- .../mage/test/cards/single/ArrogantBloodlordTest.java | 9 ++++++++- Mage/src/mage/abilities/AbilitiesImpl.java | 2 +- Mage/src/mage/abilities/EvasionAbility.java | 2 +- Mage/src/mage/abilities/keyword/MorphAbility.java | 2 -- Mage/src/mage/players/PlayerImpl.java | 7 ++++--- 5 files changed, 14 insertions(+), 8 deletions(-) diff --git a/Mage.Tests/src/test/java/org/mage/test/cards/single/ArrogantBloodlordTest.java b/Mage.Tests/src/test/java/org/mage/test/cards/single/ArrogantBloodlordTest.java index 451eabfa2c9..64b6782f610 100644 --- a/Mage.Tests/src/test/java/org/mage/test/cards/single/ArrogantBloodlordTest.java +++ b/Mage.Tests/src/test/java/org/mage/test/cards/single/ArrogantBloodlordTest.java @@ -13,7 +13,14 @@ public class ArrogantBloodlordTest extends CardTestPlayerBase { // blocked trigger @Test public void testCardBlocked() { + // Arrogant Bloodlord + // 4/4 + // Whenever Arrogant Bloodlord blocks or becomes blocked by a creature with power 1 or less, + // destroy Arrogant Bloodlord at end of combat. addCard(Zone.BATTLEFIELD, playerA, "Arrogant Bloodlord"); + // Wall of Air + // 1/5 + // Defender, flying addCard(Zone.BATTLEFIELD, playerB, "Wall of Air"); attack(1, playerA, "Arrogant Bloodlord"); @@ -26,7 +33,7 @@ public class ArrogantBloodlordTest extends CardTestPlayerBase { assertLife(playerB, 20); assertPermanentCount(playerA, "Arrogant Bloodlord", 0); assertPermanentCount(playerB, "Wall of Air", 1); - } + } // blocks trigger @Test public void testCardBlocker() { diff --git a/Mage/src/mage/abilities/AbilitiesImpl.java b/Mage/src/mage/abilities/AbilitiesImpl.java index 37960ac1fbc..717689c9520 100644 --- a/Mage/src/mage/abilities/AbilitiesImpl.java +++ b/Mage/src/mage/abilities/AbilitiesImpl.java @@ -133,7 +133,7 @@ public class AbilitiesImpl extends ArrayList implements Ab public Abilities getPlayableAbilities(Zone zone) { Abilities zonedAbilities = new AbilitiesImpl<>(); for (T ability: this) { - if (((ability instanceof SpellAbility) || (ability instanceof PlayLandAbility)) + if ((ability instanceof ActivatedAbility || (ability instanceof PlayLandAbility)) && ability.getZone().match(zone)) { zonedAbilities.add((ActivatedAbility)ability); } diff --git a/Mage/src/mage/abilities/EvasionAbility.java b/Mage/src/mage/abilities/EvasionAbility.java index 81c040d0581..3026785eec4 100644 --- a/Mage/src/mage/abilities/EvasionAbility.java +++ b/Mage/src/mage/abilities/EvasionAbility.java @@ -38,7 +38,7 @@ import mage.constants.Zone; public abstract class EvasionAbility extends StaticAbility { public EvasionAbility() { - super(AbilityType.EVASION, Zone.BATTLEFIELD); + super(AbilityType.EVASION, Zone.ALL); } public EvasionAbility(final EvasionAbility ability) { diff --git a/Mage/src/mage/abilities/keyword/MorphAbility.java b/Mage/src/mage/abilities/keyword/MorphAbility.java index b1886aa7dad..778f923dd91 100644 --- a/Mage/src/mage/abilities/keyword/MorphAbility.java +++ b/Mage/src/mage/abilities/keyword/MorphAbility.java @@ -45,7 +45,6 @@ import mage.abilities.costs.CostsImpl; import mage.abilities.costs.mana.GenericManaCost; import mage.abilities.costs.mana.ManaCost; import mage.abilities.costs.mana.ManaCosts; -import mage.abilities.costs.mana.ManaCostsImpl; import mage.abilities.effects.ContinuousEffectImpl; import mage.abilities.effects.common.continious.SourceEffect; import mage.cards.Card; @@ -131,7 +130,6 @@ public class MorphAbility extends StaticAbility implements AlternativeSourceCost sb.append(REMINDER_TEXT); ruleText = sb.toString(); - // alternateCosts.add(new AlternativeCost2Impl(ABILITY_KEYWORD, REMINDER_TEXT, new GenericManaCost(3))); Ability ability = new SimpleStaticAbility(Zone.BATTLEFIELD, new BecomesFaceDownCreatureEffect(morphCosts)); ability.setRuleVisible(false); card.addAbility(ability); diff --git a/Mage/src/mage/players/PlayerImpl.java b/Mage/src/mage/players/PlayerImpl.java index cea3de91cdd..b38f0f6f930 100644 --- a/Mage/src/mage/players/PlayerImpl.java +++ b/Mage/src/mage/players/PlayerImpl.java @@ -2021,8 +2021,8 @@ public abstract class PlayerImpl implements Player, Serializable { if (hidden) { for (Card card : hand.getUniqueCards(game)) { - for (Ability ability : card.getAbilities()) { - if (ability instanceof ActivatedAbility) { + for (Ability ability : card.getAbilities().getPlayableAbilities(Zone.HAND)) { // gets this activated ability from hand? (Morph?) + if (ability instanceof ActivatedAbility) { if (ability instanceof PlayLandAbility) { if (game.getContinuousEffects().preventedByRuleModification(GameEvent.getEvent(GameEvent.EventType.PLAY_LAND, ability.getSourceId(), ability.getSourceId(), playerId), ability, game, true)) { break; @@ -2033,7 +2033,8 @@ public abstract class PlayerImpl implements Player, Serializable { } } if (ability instanceof AlternativeSourceCosts) { - + // something missing here + int test = 6; } } }