* Fixed that AI used activated abilities for Battlefield as the card was on hand (fix #588).

This commit is contained in:
LevelX2 2014-10-03 13:12:03 +02:00
parent b3b51f9f1e
commit 54f0fd8fc1
5 changed files with 14 additions and 8 deletions

View file

@ -13,7 +13,14 @@ public class ArrogantBloodlordTest extends CardTestPlayerBase {
// blocked trigger // blocked trigger
@Test @Test
public void testCardBlocked() { 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"); addCard(Zone.BATTLEFIELD, playerA, "Arrogant Bloodlord");
// Wall of Air
// 1/5
// Defender, flying
addCard(Zone.BATTLEFIELD, playerB, "Wall of Air"); addCard(Zone.BATTLEFIELD, playerB, "Wall of Air");
attack(1, playerA, "Arrogant Bloodlord"); attack(1, playerA, "Arrogant Bloodlord");

View file

@ -133,7 +133,7 @@ public class AbilitiesImpl<T extends Ability> extends ArrayList<T> implements Ab
public Abilities<ActivatedAbility> getPlayableAbilities(Zone zone) { public Abilities<ActivatedAbility> getPlayableAbilities(Zone zone) {
Abilities<ActivatedAbility> zonedAbilities = new AbilitiesImpl<>(); Abilities<ActivatedAbility> zonedAbilities = new AbilitiesImpl<>();
for (T ability: this) { for (T ability: this) {
if (((ability instanceof SpellAbility) || (ability instanceof PlayLandAbility)) if ((ability instanceof ActivatedAbility || (ability instanceof PlayLandAbility))
&& ability.getZone().match(zone)) { && ability.getZone().match(zone)) {
zonedAbilities.add((ActivatedAbility)ability); zonedAbilities.add((ActivatedAbility)ability);
} }

View file

@ -38,7 +38,7 @@ import mage.constants.Zone;
public abstract class EvasionAbility extends StaticAbility { public abstract class EvasionAbility extends StaticAbility {
public EvasionAbility() { public EvasionAbility() {
super(AbilityType.EVASION, Zone.BATTLEFIELD); super(AbilityType.EVASION, Zone.ALL);
} }
public EvasionAbility(final EvasionAbility ability) { public EvasionAbility(final EvasionAbility ability) {

View file

@ -45,7 +45,6 @@ import mage.abilities.costs.CostsImpl;
import mage.abilities.costs.mana.GenericManaCost; import mage.abilities.costs.mana.GenericManaCost;
import mage.abilities.costs.mana.ManaCost; import mage.abilities.costs.mana.ManaCost;
import mage.abilities.costs.mana.ManaCosts; import mage.abilities.costs.mana.ManaCosts;
import mage.abilities.costs.mana.ManaCostsImpl;
import mage.abilities.effects.ContinuousEffectImpl; import mage.abilities.effects.ContinuousEffectImpl;
import mage.abilities.effects.common.continious.SourceEffect; import mage.abilities.effects.common.continious.SourceEffect;
import mage.cards.Card; import mage.cards.Card;
@ -131,7 +130,6 @@ public class MorphAbility extends StaticAbility implements AlternativeSourceCost
sb.append(REMINDER_TEXT); sb.append(REMINDER_TEXT);
ruleText = sb.toString(); ruleText = sb.toString();
// alternateCosts.add(new AlternativeCost2Impl(ABILITY_KEYWORD, REMINDER_TEXT, new GenericManaCost(3)));
Ability ability = new SimpleStaticAbility(Zone.BATTLEFIELD, new BecomesFaceDownCreatureEffect(morphCosts)); Ability ability = new SimpleStaticAbility(Zone.BATTLEFIELD, new BecomesFaceDownCreatureEffect(morphCosts));
ability.setRuleVisible(false); ability.setRuleVisible(false);
card.addAbility(ability); card.addAbility(ability);

View file

@ -2021,7 +2021,7 @@ public abstract class PlayerImpl implements Player, Serializable {
if (hidden) { if (hidden) {
for (Card card : hand.getUniqueCards(game)) { for (Card card : hand.getUniqueCards(game)) {
for (Ability ability : card.getAbilities()) { for (Ability ability : card.getAbilities().getPlayableAbilities(Zone.HAND)) { // gets this activated ability from hand? (Morph?)
if (ability instanceof ActivatedAbility) { if (ability instanceof ActivatedAbility) {
if (ability instanceof PlayLandAbility) { if (ability instanceof PlayLandAbility) {
if (game.getContinuousEffects().preventedByRuleModification(GameEvent.getEvent(GameEvent.EventType.PLAY_LAND, ability.getSourceId(), ability.getSourceId(), playerId), ability, game, true)) { if (game.getContinuousEffects().preventedByRuleModification(GameEvent.getEvent(GameEvent.EventType.PLAY_LAND, ability.getSourceId(), ability.getSourceId(), playerId), ability, game, true)) {
@ -2033,7 +2033,8 @@ public abstract class PlayerImpl implements Player, Serializable {
} }
} }
if (ability instanceof AlternativeSourceCosts) { if (ability instanceof AlternativeSourceCosts) {
// something missing here
int test = 6;
} }
} }
} }