1
0
Fork 0
mirror of https://github.com/correl/mage.git synced 2025-04-14 09:09:38 -09:00

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

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
Mage.Tests/src/test/java/org/mage/test/cards/single
Mage/src/mage

View file

@ -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() {

View file

@ -133,7 +133,7 @@ public class AbilitiesImpl<T extends Ability> extends ArrayList<T> implements Ab
public Abilities<ActivatedAbility> getPlayableAbilities(Zone zone) {
Abilities<ActivatedAbility> 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);
}

View file

@ -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) {

View file

@ -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);

View file

@ -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;
}
}
}