diff --git a/Mage/src/mage/abilities/effects/common/SkipUntapSourceEffect.java b/Mage/src/mage/abilities/effects/common/SkipUntapSourceEffect.java new file mode 100644 index 00000000000..7c34c3374d8 --- /dev/null +++ b/Mage/src/mage/abilities/effects/common/SkipUntapSourceEffect.java @@ -0,0 +1,45 @@ +package mage.abilities.effects.common; + +import mage.Constants; +import mage.abilities.Ability; +import mage.abilities.effects.ReplacementEffectImpl; +import mage.game.Game; +import mage.game.events.GameEvent; + +public class SkipUntapSourceEffect extends ReplacementEffectImpl { + + public SkipUntapSourceEffect() { + super(Constants.Duration.WhileOnBattlefield, Constants.Outcome.Detriment); + staticText = "{this} doesn't untap during your next untap step"; + } + + public SkipUntapSourceEffect(final SkipUntapSourceEffect effect) { + super(effect); + } + + @Override + public SkipUntapSourceEffect copy() { + return new SkipUntapSourceEffect(this); + } + + @Override + public boolean apply(Game game, Ability source) { + return false; + } + + @Override + public boolean replaceEvent(GameEvent event, Ability source, Game game) { + return true; + } + + @Override + public boolean applies(GameEvent event, Ability source, Game game) { + if (game.getTurn().getStepType() == Constants.PhaseStep.UNTAP + && event.getType() == GameEvent.EventType.UNTAP + && event.getTargetId().equals(source.getSourceId())) { + return true; + } + return false; + } + +} \ No newline at end of file diff --git a/Mage/src/mage/filter/common/FilterAttackingOrBlockingCreature.java b/Mage/src/mage/filter/common/FilterAttackingOrBlockingCreature.java new file mode 100644 index 00000000000..d98d20d73c5 --- /dev/null +++ b/Mage/src/mage/filter/common/FilterAttackingOrBlockingCreature.java @@ -0,0 +1,57 @@ +/* +* Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved. +* +* Redistribution and use in source and binary forms, with or without modification, are +* permitted provided that the following conditions are met: +* +* 1. Redistributions of source code must retain the above copyright notice, this list of +* conditions and the following disclaimer. +* +* 2. Redistributions in binary form must reproduce the above copyright notice, this list +* of conditions and the following disclaimer in the documentation and/or other materials +* provided with the distribution. +* +* THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED +* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND +* FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR +* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +* +* The views and conclusions contained in the software and documentation are those of the +* authors and should not be interpreted as representing official policies, either expressed +* or implied, of BetaSteward_at_googlemail.com. +*/ + +package mage.filter.common; + +/** + * + * @author nantuko + */ +public class FilterAttackingOrBlockingCreature extends FilterCreaturePermanent { + + public FilterAttackingOrBlockingCreature() { + this("attacking or blocking creature"); + } + + public FilterAttackingOrBlockingCreature(String name) { + super(name); + this.attacking = true; + this.useAttacking = true; + this.blocking = true; + this.useBlocking = true; + } + + public FilterAttackingOrBlockingCreature(final FilterAttackingOrBlockingCreature filter) { + super(filter); + } + + @Override + public FilterAttackingOrBlockingCreature copy() { + return new FilterAttackingOrBlockingCreature(this); + } +} diff --git a/Mage/src/mage/target/common/TargetAttackingOrBlockingCreature.java b/Mage/src/mage/target/common/TargetAttackingOrBlockingCreature.java new file mode 100644 index 00000000000..cf08711746f --- /dev/null +++ b/Mage/src/mage/target/common/TargetAttackingOrBlockingCreature.java @@ -0,0 +1,62 @@ +/* +* Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved. +* +* Redistribution and use in source and binary forms, with or without modification, are +* permitted provided that the following conditions are met: +* +* 1. Redistributions of source code must retain the above copyright notice, this list of +* conditions and the following disclaimer. +* +* 2. Redistributions in binary form must reproduce the above copyright notice, this list +* of conditions and the following disclaimer in the documentation and/or other materials +* provided with the distribution. +* +* THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED +* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND +* FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR +* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +* +* The views and conclusions contained in the software and documentation are those of the +* authors and should not be interpreted as representing official policies, either expressed +* or implied, of BetaSteward_at_googlemail.com. +*/ + +package mage.target.common; + +import mage.filter.common.FilterAttackingCreature; +import mage.filter.common.FilterAttackingOrBlockingCreature; + +/** + * + * @author nantuko + */ +public class TargetAttackingOrBlockingCreature extends TargetCreaturePermanent { + + public TargetAttackingOrBlockingCreature() { + this(1, 1, new FilterAttackingOrBlockingCreature(), false); + } + + public TargetAttackingOrBlockingCreature(int numTargets) { + this(numTargets, numTargets, new FilterAttackingOrBlockingCreature(), false); + } + + public TargetAttackingOrBlockingCreature(int minNumTargets, int maxNumTargets, FilterAttackingOrBlockingCreature filter, boolean notTarget) { + super(minNumTargets, maxNumTargets, filter, notTarget); + this.targetName = filter.getMessage(); + } + + public TargetAttackingOrBlockingCreature(final TargetAttackingOrBlockingCreature target) { + super(target); + } + + @Override + public TargetAttackingOrBlockingCreature copy() { + return new TargetAttackingOrBlockingCreature(this); + } + +}