From 2f063775a445fc04620364110d01be12da324b22 Mon Sep 17 00:00:00 2001 From: "maurer.it" Date: Wed, 29 Dec 2010 13:32:04 -0500 Subject: [PATCH] Can't Block Ability finally working properly. Added Not condition to be used for inverting other conditions... not sure how handy this will be but it helped with Vampire Lacerator. --- .../abilities/common/CantBlockAbility.java | 14 ++------ .../mage/abilities/condition/common/Not.java | 35 +++++++++++++++++++ 2 files changed, 38 insertions(+), 11 deletions(-) create mode 100644 Mage/src/mage/abilities/condition/common/Not.java diff --git a/Mage/src/mage/abilities/common/CantBlockAbility.java b/Mage/src/mage/abilities/common/CantBlockAbility.java index 58b55c0422b..2cc2b74d2bc 100644 --- a/Mage/src/mage/abilities/common/CantBlockAbility.java +++ b/Mage/src/mage/abilities/common/CantBlockAbility.java @@ -10,14 +10,12 @@ import mage.Constants.Duration; import mage.Constants.Zone; import mage.abilities.Ability; import mage.abilities.effects.RestrictionEffect; -import mage.abilities.keyword.FlyingAbility; -import mage.abilities.keyword.ReachAbility; import mage.game.Game; import mage.game.permanent.Permanent; /** * - * @author matthew.maurer + * @author maurer.it_at_gmail.com */ public class CantBlockAbility extends SimpleStaticAbility { @@ -59,18 +57,12 @@ class CantBlockEffect extends RestrictionEffect { @Override public boolean applies(Permanent permanent, Ability source, Game game) { - if (permanent.getAbilities().containsKey(CantBlockAbility.getInstance().getId())) { - return true; - } - return false; + return permanent.getAbilities().containsKey(CantBlockAbility.getInstance().getId()) || source.getId().equals(CantBlockAbility.getInstance().getId()); } @Override public boolean canBlock(Permanent blocker, Game game) { - if (blocker.getAbilities().containsKey(CantBlockAbility.getInstance().getId())) { - return false; - } - return true; + return !blocker.getAbilities().containsKey(CantBlockAbility.getInstance().getId()); } @Override diff --git a/Mage/src/mage/abilities/condition/common/Not.java b/Mage/src/mage/abilities/condition/common/Not.java new file mode 100644 index 00000000000..4ff5f44cebd --- /dev/null +++ b/Mage/src/mage/abilities/condition/common/Not.java @@ -0,0 +1,35 @@ +/* + * To change this template, choose Tools | Templates + * and open the template in the editor. + */ + +package mage.abilities.condition.common; + +import mage.abilities.Ability; +import mage.abilities.condition.Condition; +import mage.game.Game; + +/** + * A simple {@link Condition} to invert a decorated conditions + * {@link Condition#apply(mage.game.Game, mage.abilities.Ability) apply(mage.game.Game, mage.abilities.Ability)} + * method invocation. + * + * @author maurer.it_at_gmail.com + */ +public class Not implements Condition { + + private Condition condition; + + public Not ( Condition condition ) { + this.condition = condition; + } + + /* + * {@inheritDoc} + */ + @Override + public boolean apply(Game game, Ability source) { + return !condition.apply(game, source); + } + +}