Fixed the "can only block flying creatures effect" (e.g. Varporkin). It was implemented as replacement effect instead of restriction effect which leads to dead locks in combat if it was forced to block a non flyer.

This commit is contained in:
LevelX2 2014-03-16 10:05:20 +01:00
parent 694e1f2bf2
commit 4232a3b7f1
12 changed files with 89 additions and 135 deletions

View file

@ -28,14 +28,12 @@
package mage.sets.avacynrestored;
import java.util.UUID;
import mage.constants.CardType;
import mage.constants.Rarity;
import mage.constants.Zone;
import mage.MageInt;
import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.effects.common.combat.CanBlockOnlyFlyingEffect;
import mage.abilities.common.CanBlockOnlyFlyingAbility;
import mage.abilities.keyword.ReachAbility;
import mage.cards.CardImpl;
import mage.constants.CardType;
import mage.constants.Rarity;
/**
*
@ -54,7 +52,7 @@ public class Gloomwidow extends CardImpl<Gloomwidow> {
this.addAbility(ReachAbility.getInstance());
// Gloomwidow can block only creatures with flying.
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new CanBlockOnlyFlyingEffect()));
this.addAbility(new CanBlockOnlyFlyingAbility());
}
public Gloomwidow(final Gloomwidow card) {

View file

@ -27,16 +27,13 @@
*/
package mage.sets.avacynrestored;
import mage.constants.CardType;
import mage.constants.Rarity;
import java.util.UUID;
import mage.MageInt;
import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.effects.common.combat.CanBlockOnlyFlyingEffect;
import mage.abilities.common.CanBlockOnlyFlyingAbility;
import mage.abilities.keyword.FlyingAbility;
import mage.cards.CardImpl;
import mage.constants.Zone;
import java.util.UUID;
import mage.constants.CardType;
import mage.constants.Rarity;
/**
*
@ -58,7 +55,7 @@ public class ScrapskinDrake extends CardImpl<ScrapskinDrake> {
this.addAbility(FlyingAbility.getInstance());
// Scrapskin Drake can block only creatures with flying.
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new CanBlockOnlyFlyingEffect()));
this.addAbility(new CanBlockOnlyFlyingAbility());
}
public ScrapskinDrake(final ScrapskinDrake card) {

View file

@ -28,16 +28,13 @@
package mage.sets.darkascension;
import java.util.UUID;
import mage.constants.CardType;
import mage.constants.Rarity;
import mage.MageInt;
import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.effects.common.combat.CanBlockOnlyFlyingEffect;
import mage.abilities.common.CanBlockOnlyFlyingAbility;
import mage.abilities.keyword.FlyingAbility;
import mage.abilities.keyword.UndyingAbility;
import mage.cards.CardImpl;
import mage.constants.Zone;
import mage.constants.CardType;
import mage.constants.Rarity;
/**
* @author Loki
@ -55,7 +52,7 @@ public class StormboundGeist extends CardImpl<StormboundGeist> {
this.addAbility(FlyingAbility.getInstance());
// Stormbound Geist can block only creatures with flying.
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new CanBlockOnlyFlyingEffect()));
this.addAbility(new CanBlockOnlyFlyingAbility());
// Undying
this.addAbility(new UndyingAbility());
}

View file

@ -1,4 +1,4 @@
/*
/*
* Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification, are
@ -28,14 +28,12 @@
package mage.sets.magic2012;
import java.util.UUID;
import mage.constants.CardType;
import mage.constants.Rarity;
import mage.constants.Zone;
import mage.MageInt;
import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.effects.common.combat.CanBlockOnlyFlyingEffect;
import mage.abilities.common.CanBlockOnlyFlyingAbility;
import mage.abilities.keyword.FlyingAbility;
import mage.cards.CardImpl;
import mage.constants.CardType;
import mage.constants.Rarity;
/**
*
@ -53,7 +51,8 @@ public class SkywinderDrake extends CardImpl<SkywinderDrake> {
this.toughness = new MageInt(1);
this.addAbility(FlyingAbility.getInstance());
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new CanBlockOnlyFlyingEffect()));
// Skywinder Drake can block only creatures with flying.
this.addAbility(new CanBlockOnlyFlyingAbility());
}
public SkywinderDrake(final SkywinderDrake card) {

View file

@ -28,14 +28,12 @@
package mage.sets.tenth;
import java.util.UUID;
import mage.constants.CardType;
import mage.constants.Rarity;
import mage.constants.Zone;
import mage.MageInt;
import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.effects.common.combat.CanBlockOnlyFlyingEffect;
import mage.abilities.common.CanBlockOnlyFlyingAbility;
import mage.abilities.keyword.FlyingAbility;
import mage.cards.CardImpl;
import mage.constants.CardType;
import mage.constants.Rarity;
/**
*
@ -53,7 +51,8 @@ public class CloudElemental extends CardImpl<CloudElemental> {
this.toughness = new MageInt(3);
this.addAbility(FlyingAbility.getInstance());
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new CanBlockOnlyFlyingEffect()));
// Cloud Elemental can block only creatures with flying.
this.addAbility(new CanBlockOnlyFlyingAbility());
}
public CloudElemental(final CloudElemental card) {

View file

@ -28,15 +28,12 @@
package mage.sets.tenth;
import java.util.UUID;
import mage.constants.CardType;
import mage.constants.Rarity;
import mage.MageInt;
import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.effects.common.combat.CanBlockOnlyFlyingEffect;
import mage.abilities.common.CanBlockOnlyFlyingAbility;
import mage.abilities.keyword.FlyingAbility;
import mage.cards.CardImpl;
import mage.constants.Zone;
import mage.constants.CardType;
import mage.constants.Rarity;
/**
*
@ -52,7 +49,9 @@ public class CloudSprite extends CardImpl<CloudSprite> {
this.power = new MageInt(1);
this.toughness = new MageInt(1);
this.addAbility(FlyingAbility.getInstance());
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new CanBlockOnlyFlyingEffect()));
// Cloud Sprite can block only creatures with flying.
this.addAbility(new CanBlockOnlyFlyingAbility());
}
public CloudSprite(final CloudSprite card) {

View file

@ -29,13 +29,11 @@ package mage.sets.theros;
import java.util.UUID;
import mage.MageInt;
import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.effects.common.combat.CanBlockOnlyFlyingEffect;
import mage.abilities.common.CanBlockOnlyFlyingAbility;
import mage.abilities.keyword.FlyingAbility;
import mage.cards.CardImpl;
import mage.constants.CardType;
import mage.constants.Rarity;
import mage.constants.Zone;
/**
*
@ -55,7 +53,7 @@ public class Vaporkin extends CardImpl<Vaporkin> {
// Flying
this.addAbility(FlyingAbility.getInstance());
// Vaporkin can block only creatures with flying.
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new CanBlockOnlyFlyingEffect()));
this.addAbility(new CanBlockOnlyFlyingAbility());
}
public Vaporkin(final Vaporkin card) {

View file

@ -29,14 +29,12 @@
package mage.sets.zendikar;
import java.util.UUID;
import mage.constants.CardType;
import mage.constants.Rarity;
import mage.constants.Zone;
import mage.MageInt;
import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.effects.common.combat.CanBlockOnlyFlyingEffect;
import mage.abilities.common.CanBlockOnlyFlyingAbility;
import mage.abilities.keyword.FlyingAbility;
import mage.cards.CardImpl;
import mage.constants.CardType;
import mage.constants.Rarity;
/**
*
@ -54,7 +52,8 @@ public class WelkinTern extends CardImpl<WelkinTern> {
this.toughness = new MageInt( 1);
this.addAbility(FlyingAbility.getInstance());
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new CanBlockOnlyFlyingEffect()));
// Welkin Tern can block only creatures with flying.
this.addAbility(new CanBlockOnlyFlyingAbility());
}
public WelkinTern (final WelkinTern card) {