mirror of
https://github.com/correl/mage.git
synced 2024-12-26 19:16:54 +00:00
Merge pull request #3979 from theelk801/master
Added XLN cards, convered Menace to a singleton
This commit is contained in:
commit
281b1ab846
101 changed files with 701 additions and 103 deletions
|
@ -51,7 +51,7 @@ public class AdroitHateflayer extends CardImpl {
|
|||
this.toughness = new MageInt(3);
|
||||
|
||||
// Menace
|
||||
this.addAbility(new MenaceAbility());
|
||||
this.addAbility(MenaceAbility.getInstance());
|
||||
|
||||
// Whenever Adroit Hateflayer attacks, each opponent loses 2 life.
|
||||
this.addAbility(new AttacksTriggeredAbility(new LoseLifeOpponentsEffect(2), false));
|
||||
|
|
|
@ -50,7 +50,7 @@ public class AlleyStrangler extends CardImpl {
|
|||
this.toughness = new MageInt(3);
|
||||
|
||||
// Menace
|
||||
this.addAbility(new MenaceAbility());
|
||||
this.addAbility(MenaceAbility.getInstance());
|
||||
}
|
||||
|
||||
public AlleyStrangler(final AlleyStrangler card) {
|
||||
|
|
|
@ -49,7 +49,7 @@ public class AradaraExpress extends CardImpl {
|
|||
this.toughness = new MageInt(6);
|
||||
|
||||
// Menace
|
||||
this.addAbility(new MenaceAbility());
|
||||
this.addAbility(MenaceAbility.getInstance());
|
||||
// Crew 4
|
||||
this.addAbility(new CrewAbility(4));
|
||||
}
|
||||
|
|
|
@ -63,7 +63,7 @@ public class AtarkaPummeler extends CardImpl {
|
|||
// <i>Formidable</i> - {3}{R}{R}: Creatures you control gain menace until end of turn. Activate this ability only if creature you control have total power 8 or greater. (They can't be blocked except by two or more creatures.)
|
||||
Ability ability = new ActivateIfConditionActivatedAbility(
|
||||
Zone.BATTLEFIELD,
|
||||
new GainAbilityAllEffect(new MenaceAbility(), Duration.EndOfTurn, filter),
|
||||
new GainAbilityAllEffect(MenaceAbility.getInstance(), Duration.EndOfTurn, filter),
|
||||
new ManaCostsImpl("{3}{R}{R}"),
|
||||
FormidableCondition.instance);
|
||||
ability.setAbilityWord(AbilityWord.FORMIDABLE);
|
||||
|
|
|
@ -62,7 +62,7 @@ public class BelligerentSliver extends CardImpl {
|
|||
this.toughness = new MageInt(2);
|
||||
|
||||
// Sliver creatures you control have menace. (They can't be blocked except by two or more creatures.)"
|
||||
Effect effect = new GainAbilityAllEffect(new MenaceAbility(), Duration.WhileOnBattlefield, filter);
|
||||
Effect effect = new GainAbilityAllEffect(MenaceAbility.getInstance(), Duration.WhileOnBattlefield, filter);
|
||||
effect.setText("Sliver creatures you control have menace. (They can't be blocked except by two or more creatures.)");
|
||||
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, effect));
|
||||
}
|
||||
|
|
|
@ -60,7 +60,7 @@ public class BloodChinRager extends CardImpl {
|
|||
this.toughness = new MageInt(2);
|
||||
|
||||
// Whenever Blood-Chin Rager attacks, Warrior creatures you control gain menace until end of turn. (They can't be blocked except by two or more creatures.)
|
||||
this.addAbility(new AttacksTriggeredAbility(new GainAbilityAllEffect(new MenaceAbility(), Duration.EndOfTurn, filter), false));
|
||||
this.addAbility(new AttacksTriggeredAbility(new GainAbilityAllEffect(MenaceAbility.getInstance(), Duration.EndOfTurn, filter), false));
|
||||
}
|
||||
|
||||
public BloodChinRager(final BloodChinRager card) {
|
||||
|
|
|
@ -60,7 +60,7 @@ public class BobaFett extends CardImpl {
|
|||
this.toughness = new MageInt(4);
|
||||
|
||||
// Menace
|
||||
this.addAbility(new MenaceAbility());
|
||||
this.addAbility(MenaceAbility.getInstance());
|
||||
|
||||
// Deathtouch
|
||||
this.addAbility(DeathtouchAbility.getInstance());
|
||||
|
|
|
@ -48,7 +48,7 @@ public class BoggartBrute extends CardImpl {
|
|||
this.toughness = new MageInt(2);
|
||||
|
||||
// Menace
|
||||
this.addAbility(new MenaceAbility());
|
||||
this.addAbility(MenaceAbility.getInstance());
|
||||
}
|
||||
|
||||
public BoggartBrute(final BoggartBrute card) {
|
||||
|
|
|
@ -65,7 +65,7 @@ public class BontuTheGlorified extends CardImpl {
|
|||
this.toughness = new MageInt(6);
|
||||
|
||||
//Menace
|
||||
this.addAbility(new MenaceAbility());
|
||||
this.addAbility(MenaceAbility.getInstance());
|
||||
|
||||
//Indestructible
|
||||
this.addAbility(IndestructibleAbility.getInstance());
|
||||
|
|
69
Mage.Sets/src/mage/cards/b/BrazenBuccaneers.java
Normal file
69
Mage.Sets/src/mage/cards/b/BrazenBuccaneers.java
Normal file
|
@ -0,0 +1,69 @@
|
|||
/*
|
||||
* 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.cards.b;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.MageInt;
|
||||
import mage.abilities.common.EntersBattlefieldTriggeredAbility;
|
||||
import mage.abilities.effects.keyword.ExploreSourceEffect;
|
||||
import mage.constants.SubType;
|
||||
import mage.abilities.keyword.HasteAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author TheElk801
|
||||
*/
|
||||
public class BrazenBuccaneers extends CardImpl {
|
||||
|
||||
public BrazenBuccaneers(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{R}");
|
||||
|
||||
this.subtype.add(SubType.HUMAN);
|
||||
this.subtype.add(SubType.PIRATE);
|
||||
this.power = new MageInt(2);
|
||||
this.toughness = new MageInt(2);
|
||||
|
||||
// Haste
|
||||
this.addAbility(HasteAbility.getInstance());
|
||||
|
||||
// When Brazen Buccaneers enters the battlefield, it explores.
|
||||
this.addAbility(new EntersBattlefieldTriggeredAbility(new ExploreSourceEffect()));
|
||||
}
|
||||
|
||||
public BrazenBuccaneers(final BrazenBuccaneers card) {
|
||||
super(card);
|
||||
}
|
||||
|
||||
@Override
|
||||
public BrazenBuccaneers copy() {
|
||||
return new BrazenBuccaneers(this);
|
||||
}
|
||||
}
|
|
@ -59,7 +59,7 @@ public class BullRancor extends CardImpl {
|
|||
|
||||
// As long as Bull Rancor is monstrous, creatures you control have menace.
|
||||
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new ConditionalContinuousEffect(
|
||||
new GainAbilityControlledEffect(new MenaceAbility(), Duration.WhileOnBattlefield),
|
||||
new GainAbilityControlledEffect(MenaceAbility.getInstance(), Duration.WhileOnBattlefield),
|
||||
MonstrousCondition.instance,
|
||||
"As long as Bull Rancor is monstrous, creatures you control have menace")
|
||||
));
|
||||
|
|
|
@ -66,13 +66,13 @@ public class CaterwaulingBoggart extends CardImpl {
|
|||
|
||||
// Each Goblin you control has menace. (They can't be blocked except by two or more creatures.)
|
||||
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new GainAbilityAllEffect(
|
||||
new MenaceAbility(),
|
||||
MenaceAbility.getInstance(),
|
||||
Duration.WhileOnBattlefield, filterGoblin,
|
||||
"Each Goblin you control has menace. (They can't be blocked except by two or more creatures.)")));
|
||||
|
||||
// Each Elemental you control has menace. (They can't be blocked except by two or more creatures.)
|
||||
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new GainAbilityAllEffect(
|
||||
new MenaceAbility(),
|
||||
MenaceAbility.getInstance(),
|
||||
Duration.WhileOnBattlefield, filterElemental,
|
||||
"Each Elemental you control has menace. (They can't be blocked except by two or more creatures.)")));
|
||||
}
|
||||
|
|
|
@ -56,7 +56,7 @@ public class ChitinousCloak extends CardImpl {
|
|||
|
||||
// Equipped creature gets +2/+2 and has menace.
|
||||
Ability ability = new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostEquippedEffect(2, 2));
|
||||
Effect effect = new GainAbilityAttachedEffect(new MenaceAbility(), AttachmentType.EQUIPMENT);
|
||||
Effect effect = new GainAbilityAttachedEffect(MenaceAbility.getInstance(), AttachmentType.EQUIPMENT);
|
||||
effect.setText("and has menace");
|
||||
ability.addEffect(effect);
|
||||
this.addAbility(ability);
|
||||
|
|
|
@ -61,13 +61,13 @@ public class ChitteringHost extends MeldCard {
|
|||
this.addAbility(HasteAbility.getInstance());
|
||||
|
||||
// Menace <i>(This creature can't be blocked except by two or more creatures.
|
||||
this.addAbility(new MenaceAbility());
|
||||
this.addAbility(MenaceAbility.getInstance());
|
||||
|
||||
// When Chittering Host enters the battlefield, other creatures you control get +1/+0 and gain menace until end of turn.
|
||||
Effect effect = new BoostControlledEffect(1, 0, Duration.EndOfTurn, true);
|
||||
effect.setText("other creatures you control get +1/+0");
|
||||
Ability ability = new EntersBattlefieldTriggeredAbility(effect, false);
|
||||
effect = new GainAbilityAllEffect(new MenaceAbility(), Duration.EndOfTurn, new FilterControlledCreaturePermanent("other creatures"), true);
|
||||
effect = new GainAbilityAllEffect(MenaceAbility.getInstance(), Duration.EndOfTurn, new FilterControlledCreaturePermanent("other creatures"), true);
|
||||
effect.setText("and gain menace until end of turn");
|
||||
ability.addEffect(effect);
|
||||
this.addAbility(ability);
|
||||
|
|
|
@ -50,7 +50,7 @@ public class CursedMinotaur extends CardImpl {
|
|||
this.toughness = new MageInt(2);
|
||||
|
||||
// Menace
|
||||
this.addAbility(new MenaceAbility());
|
||||
this.addAbility(MenaceAbility.getInstance());
|
||||
|
||||
}
|
||||
|
||||
|
|
|
@ -63,7 +63,7 @@ public class DarthVader extends CardImpl {
|
|||
this.nightCard = true;
|
||||
|
||||
// Menace
|
||||
this.addAbility(new MenaceAbility());
|
||||
this.addAbility(MenaceAbility.getInstance());
|
||||
|
||||
// Lifelink
|
||||
this.addAbility(LifelinkAbility.getInstance());
|
||||
|
|
|
@ -52,7 +52,7 @@ public class Demoralize extends CardImpl {
|
|||
|
||||
|
||||
// All creatures gain menace until end of turn. (They can't be blocked except by two or more creatures.)
|
||||
this.getSpellAbility().addEffect(new GainAbilityAllEffect(new MenaceAbility(), Duration.EndOfTurn, StaticFilters.FILTER_PERMANENT_CREATURES));
|
||||
this.getSpellAbility().addEffect(new GainAbilityAllEffect(MenaceAbility.getInstance(), Duration.EndOfTurn, StaticFilters.FILTER_PERMANENT_CREATURES));
|
||||
|
||||
// Threshold — If seven or more cards are in your graveyard, creatures can't block this turn.
|
||||
this.getSpellAbility().addEffect(
|
||||
|
|
|
@ -50,7 +50,7 @@ public class DeputizedProtester extends CardImpl {
|
|||
this.toughness = new MageInt(1);
|
||||
|
||||
// Menace
|
||||
this.addAbility(new MenaceAbility());
|
||||
this.addAbility(MenaceAbility.getInstance());
|
||||
// Melee
|
||||
this.addAbility(new MeleeAbility());
|
||||
}
|
||||
|
|
|
@ -48,7 +48,7 @@ public class DerangedWhelp extends CardImpl {
|
|||
this.toughness = new MageInt(1);
|
||||
|
||||
// Menace
|
||||
this.addAbility(new MenaceAbility());
|
||||
this.addAbility(MenaceAbility.getInstance());
|
||||
}
|
||||
|
||||
public DerangedWhelp(final DerangedWhelp card) {
|
||||
|
|
104
Mage.Sets/src/mage/cards/d/DesperateCastaways.java
Normal file
104
Mage.Sets/src/mage/cards/d/DesperateCastaways.java
Normal file
|
@ -0,0 +1,104 @@
|
|||
/*
|
||||
* 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.cards.d;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.MageInt;
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.common.SimpleStaticAbility;
|
||||
import mage.abilities.effects.RestrictionEffect;
|
||||
import mage.constants.SubType;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.Duration;
|
||||
import mage.constants.Zone;
|
||||
import mage.filter.StaticFilters;
|
||||
import mage.game.Game;
|
||||
import mage.game.permanent.Permanent;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author TheElk801
|
||||
*/
|
||||
public class DesperateCastaways extends CardImpl {
|
||||
|
||||
public DesperateCastaways(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{B}");
|
||||
|
||||
this.subtype.add(SubType.HUMAN);
|
||||
this.subtype.add(SubType.PIRATE);
|
||||
this.power = new MageInt(2);
|
||||
this.toughness = new MageInt(3);
|
||||
|
||||
// Desperate Castaways can't attack unless you control an artifact.
|
||||
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new DesperateCastawaysEffect()));
|
||||
}
|
||||
|
||||
public DesperateCastaways(final DesperateCastaways card) {
|
||||
super(card);
|
||||
}
|
||||
|
||||
@Override
|
||||
public DesperateCastaways copy() {
|
||||
return new DesperateCastaways(this);
|
||||
}
|
||||
}
|
||||
|
||||
class DesperateCastawaysEffect extends RestrictionEffect {
|
||||
|
||||
public DesperateCastawaysEffect() {
|
||||
super(Duration.WhileOnBattlefield);
|
||||
staticText = "{this} can't attack unless you control an artifact";
|
||||
}
|
||||
|
||||
public DesperateCastawaysEffect(final DesperateCastawaysEffect effect) {
|
||||
super(effect);
|
||||
}
|
||||
|
||||
@Override
|
||||
public DesperateCastawaysEffect copy() {
|
||||
return new DesperateCastawaysEffect(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canAttack(Game game) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean applies(Permanent permanent, Ability source, Game game) {
|
||||
if (permanent.getId().equals(source.getSourceId())) {
|
||||
if (game.getBattlefield().countAll(StaticFilters.FILTER_CONTROLLED_PERMANENT_ARTIFACT, source.getControllerId(), game) > 0) {
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
} // do not apply to other creatures.
|
||||
return false;
|
||||
}
|
||||
}
|
66
Mage.Sets/src/mage/cards/d/DireFleetHoarder.java
Normal file
66
Mage.Sets/src/mage/cards/d/DireFleetHoarder.java
Normal file
|
@ -0,0 +1,66 @@
|
|||
/*
|
||||
* 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.cards.d;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.MageInt;
|
||||
import mage.abilities.common.DiesTriggeredAbility;
|
||||
import mage.abilities.effects.common.CreateTokenEffect;
|
||||
import mage.constants.SubType;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.game.permanent.token.TreasureToken;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author TheElk801
|
||||
*/
|
||||
public class DireFleetHoarder extends CardImpl {
|
||||
|
||||
public DireFleetHoarder(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{B}");
|
||||
|
||||
this.subtype.add(SubType.HUMAN);
|
||||
this.subtype.add(SubType.PIRATE);
|
||||
this.power = new MageInt(2);
|
||||
this.toughness = new MageInt(1);
|
||||
|
||||
// When Dire Fleet Hoarder dies, create a colorless Treasure artifact token with "{t}, Sacrifice this artifact: Add one mana of any color to your mana pool."
|
||||
this.addAbility(new DiesTriggeredAbility(new CreateTokenEffect(new TreasureToken())));
|
||||
}
|
||||
|
||||
public DireFleetHoarder(final DireFleetHoarder card) {
|
||||
super(card);
|
||||
}
|
||||
|
||||
@Override
|
||||
public DireFleetHoarder copy() {
|
||||
return new DireFleetHoarder(this);
|
||||
}
|
||||
}
|
|
@ -58,7 +58,7 @@ public class Dreamstealer extends CardImpl {
|
|||
this.toughness = new MageInt(2);
|
||||
|
||||
// Menace
|
||||
this.addAbility(new MenaceAbility());
|
||||
this.addAbility(MenaceAbility.getInstance());
|
||||
|
||||
// When Dreamstealer deals combat damage to a player, that player discards that many cards.
|
||||
this.addAbility(new DealsCombatDamageToAPlayerTriggeredAbility(new DreamstealerDiscardEffect(), false, true));
|
||||
|
|
|
@ -63,7 +63,7 @@ public class DrivenDespair extends SplitCard {
|
|||
// Aftermath
|
||||
((CardImpl) (getRightHalfCard())).addAbility(new AftermathAbility().setRuleAtTheTop(true));
|
||||
// Until end of turn, creatures you control gain menace and "Whenever this creature deals combat damage to a player, that player discards a card."
|
||||
getRightHalfCard().getSpellAbility().addEffect(new GainAbilityControlledEffect(new MenaceAbility(), Duration.EndOfTurn));
|
||||
getRightHalfCard().getSpellAbility().addEffect(new GainAbilityControlledEffect(MenaceAbility.getInstance(), Duration.EndOfTurn));
|
||||
ability = new DealsCombatDamageToAPlayerTriggeredAbility(new DiscardTargetEffect(1), false, true);
|
||||
getRightHalfCard().getSpellAbility().addEffect(new GainAbilityControlledEffect(ability, Duration.EndOfTurn)
|
||||
.setText("and \"Whenever this creature deals combat damage to a player, that player discards a card.\""));
|
||||
|
|
|
@ -59,7 +59,7 @@ public class EmberhornMinotaur extends CardImpl {
|
|||
Effect effect = new BoostSourceEffect(1, 1, Duration.EndOfTurn);
|
||||
effect.setText("it gets +1/+1");
|
||||
BecomesExertSourceTriggeredAbility ability = new BecomesExertSourceTriggeredAbility(effect);
|
||||
effect = new GainAbilitySourceEffect(new MenaceAbility(), Duration.EndOfTurn);
|
||||
effect = new GainAbilitySourceEffect(MenaceAbility.getInstance(), Duration.EndOfTurn);
|
||||
effect.setText("and gains menace until end of turn");
|
||||
ability.addEffect(effect);
|
||||
this.addAbility(new ExertAbility(ability));
|
||||
|
|
|
@ -60,7 +60,7 @@ public class EmbraalBruiser extends CardImpl {
|
|||
|
||||
// Embraal Bruiser has menace as long as you control an artifact.
|
||||
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new ConditionalContinuousEffect(
|
||||
new GainAbilitySourceEffect(new MenaceAbility()),
|
||||
new GainAbilitySourceEffect(MenaceAbility.getInstance()),
|
||||
new PermanentsOnTheBattlefieldCondition(StaticFilters.FILTER_CONTROLLED_PERMANENT_ARTIFACT),
|
||||
"{this} has menace as long as you control an artifact")));
|
||||
}
|
||||
|
|
|
@ -70,7 +70,7 @@ public class FathomFleetCaptain extends CardImpl {
|
|||
this.toughness = new MageInt(1);
|
||||
|
||||
// Menace
|
||||
this.addAbility(new MenaceAbility());
|
||||
this.addAbility(MenaceAbility.getInstance());
|
||||
|
||||
// Whenever Fathom Fleet Captain attacks, if you control another nontoken Pirate, you may pay {2}. If you do, creature a 2/2 black Pirate creature token with menace.
|
||||
this.addAbility(new ConditionalTriggeredAbility(
|
||||
|
|
|
@ -55,7 +55,7 @@ public class FiremantleMage extends CardImpl {
|
|||
|
||||
// <i>Rally</i> — Whenver Firemantle Mage or another Ally enters the battlefield under your control, creatures you control gain menace until end of turn.
|
||||
this.addAbility(new AllyEntersBattlefieldTriggeredAbility(
|
||||
new GainAbilityControlledEffect(new MenaceAbility(), Duration.EndOfTurn, FILTER_PERMANENT_CREATURES), false));
|
||||
new GainAbilityControlledEffect(MenaceAbility.getInstance(), Duration.EndOfTurn, FILTER_PERMANENT_CREATURES), false));
|
||||
}
|
||||
|
||||
public FiremantleMage(final FiremantleMage card) {
|
||||
|
|
|
@ -53,7 +53,7 @@ public class FlamebladeAdept extends CardImpl {
|
|||
this.toughness = new MageInt(2);
|
||||
|
||||
// Menace
|
||||
this.addAbility(new MenaceAbility());
|
||||
this.addAbility(MenaceAbility.getInstance());
|
||||
|
||||
// Whenever you cycle or discard a card, Flameblade Adept gets +1/+0 until end of turn.
|
||||
this.addAbility(new CycleOrDiscardControllerTriggeredAbility(new BoostSourceEffect(1, 0, Duration.EndOfTurn)));
|
||||
|
|
|
@ -60,7 +60,7 @@ public class GatstafRavagers extends CardImpl {
|
|||
this.nightCard = true;
|
||||
|
||||
// Menace
|
||||
this.addAbility(new MenaceAbility());
|
||||
this.addAbility(MenaceAbility.getInstance());
|
||||
// At the beginning of each upkeep, if a player cast two or more spells last turn, transform Gatstaf Ravagers.
|
||||
TriggeredAbility ability = new BeginningOfUpkeepTriggeredAbility(new TransformSourceEffect(false), TargetController.ANY, false);
|
||||
this.addAbility(new ConditionalTriggeredAbility(ability, TwoOrMoreSpellsWereCastLastTurnCondition.instance, TransformAbility.TWO_OR_MORE_SPELLS_TRANSFORM_RULE));
|
||||
|
|
|
@ -51,7 +51,7 @@ public class GeyserfieldStalker extends CardImpl {
|
|||
this.toughness = new MageInt(2);
|
||||
|
||||
// Menace
|
||||
this.addAbility(new MenaceAbility());
|
||||
this.addAbility(MenaceAbility.getInstance());
|
||||
// <i>Landfall</i> - Whenever a land enters the battlefield under your control, Geyserfield Stalker gets +2/+2 until end of turn.
|
||||
this.addAbility(new LandfallAbility(new BoostSourceEffect(2, 2, Duration.EndOfTurn), false));
|
||||
}
|
||||
|
|
|
@ -65,7 +65,7 @@ public class GiantSpectacle extends CardImpl {
|
|||
|
||||
// Enchanted creature gets +2/+1 and has menace.
|
||||
ability = new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostEnchantedEffect(2, 1));
|
||||
Effect effect = new GainAbilityAttachedEffect(new MenaceAbility(), AttachmentType.AURA);
|
||||
Effect effect = new GainAbilityAttachedEffect(MenaceAbility.getInstance(), AttachmentType.AURA);
|
||||
effect.setText("and has menace");
|
||||
ability.addEffect(effect);
|
||||
this.addAbility(ability);
|
||||
|
|
|
@ -66,7 +66,7 @@ public class GiltLeafWinnower extends CardImpl {
|
|||
this.toughness = new MageInt(3);
|
||||
|
||||
// Menace
|
||||
this.addAbility(new MenaceAbility());
|
||||
this.addAbility(MenaceAbility.getInstance());
|
||||
|
||||
// When Gilt-Leaf Winnower enters the battlefield, you may destroy target non-Elf creature whose power and toughness aren't equal.
|
||||
Ability ability = new EntersBattlefieldTriggeredAbility(new DestroyTargetEffect(), true);
|
||||
|
|
|
@ -60,7 +60,7 @@ public class GlintSleeveSiphoner extends CardImpl {
|
|||
this.toughness = new MageInt(1);
|
||||
|
||||
// Menace
|
||||
this.addAbility(new MenaceAbility());
|
||||
this.addAbility(MenaceAbility.getInstance());
|
||||
|
||||
// Whenever Glint-Sleeve Siphoner enters the battlefield or attacks, you get {E}.
|
||||
this.addAbility(new EntersBattlefieldOrAttacksSourceTriggeredAbility(new GetEnergyCountersControllerEffect(1)));
|
||||
|
|
|
@ -72,7 +72,7 @@ public class GoblinDarkDwellers extends CardImpl {
|
|||
this.toughness = new MageInt(4);
|
||||
|
||||
// Menace
|
||||
this.addAbility(new MenaceAbility());
|
||||
this.addAbility(MenaceAbility.getInstance());
|
||||
|
||||
// When Goblin Dark-Dwellers enters the battlefield, you may cast target instant or sorcery card with converted mana cost 3 or less
|
||||
// from your graveyard without paying its mana cost. If that card would be put into your graveyard this turn, exile it instead.
|
||||
|
|
|
@ -54,7 +54,7 @@ public class GoblinFreerunner extends CardImpl {
|
|||
addAbility(new SurgeAbility(this, "{1}{R}"));
|
||||
|
||||
// Menace
|
||||
this.addAbility(new MenaceAbility());
|
||||
this.addAbility(MenaceAbility.getInstance());
|
||||
}
|
||||
|
||||
public GoblinFreerunner(final GoblinFreerunner card) {
|
||||
|
|
|
@ -62,7 +62,7 @@ public class GoblinGloryChaser extends CardImpl {
|
|||
|
||||
// As long as Goblin Glory Chaser is renowned, it has menace.
|
||||
Effect effect = new ConditionalContinuousEffect(
|
||||
new GainAbilitySourceEffect(new MenaceAbility(), Duration.WhileOnBattlefield),
|
||||
new GainAbilitySourceEffect(MenaceAbility.getInstance(), Duration.WhileOnBattlefield),
|
||||
RenownedSourceCondition.instance,
|
||||
"As long as {this} is renowned, it has menace");
|
||||
Ability ability = new SimpleStaticAbility(Zone.BATTLEFIELD, effect);
|
||||
|
|
|
@ -56,7 +56,7 @@ import mage.filter.predicate.permanent.ControllerPredicate;
|
|||
|
||||
|
||||
// Creatures you control have menace. (They can't be blocked except by two or more creatures.)
|
||||
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new GainAbilityAllEffect(new MenaceAbility(), Duration.WhileOnBattlefield, filter)));
|
||||
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new GainAbilityAllEffect(MenaceAbility.getInstance(), Duration.WhileOnBattlefield, filter)));
|
||||
}
|
||||
|
||||
public GoblinWarDrums(final GoblinWarDrums card) {
|
||||
|
|
|
@ -56,7 +56,7 @@ public class GorillaWarCry extends CardImpl {
|
|||
this.addAbility(new CastOnlyDuringPhaseStepSourceAbility(TurnPhase.COMBAT, BeforeBlockersAreDeclaredCondition.instance));
|
||||
|
||||
// All creatures gain menace until end of turn. <i>(They can't be blocked except by two or more creatures.)</i>
|
||||
Effect effect = new GainAbilityAllEffect(new MenaceAbility(), Duration.EndOfTurn, new FilterCreaturePermanent());
|
||||
Effect effect = new GainAbilityAllEffect(MenaceAbility.getInstance(), Duration.EndOfTurn, new FilterCreaturePermanent());
|
||||
effect.setText("All creatures gain menace until end of turn. <i>(They can't be blocked except by two or more creatures.)</i>");
|
||||
this.getSpellAbility().addEffect(effect);
|
||||
|
||||
|
|
|
@ -65,7 +65,7 @@ public class GrafHarvest extends CardImpl {
|
|||
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{B}");
|
||||
|
||||
// Zombies you control have menace.
|
||||
Effect effect = new GainAbilityAllEffect(new MenaceAbility(), Duration.WhileOnBattlefield, filter);
|
||||
Effect effect = new GainAbilityAllEffect(MenaceAbility.getInstance(), Duration.WhileOnBattlefield, filter);
|
||||
effect.setText("Zombies you control have menace. <i>(They can't be blocked except by two or more creatures.)</i>");
|
||||
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, effect));
|
||||
|
||||
|
|
|
@ -19,7 +19,7 @@ public class GraniticTitan extends CardImpl {
|
|||
toughness = new MageInt(4);
|
||||
|
||||
// Menace
|
||||
addAbility(new MenaceAbility());
|
||||
addAbility(MenaceAbility.getInstance());
|
||||
|
||||
// Cycling {2}
|
||||
addAbility(new CyclingAbility(new ManaCostsImpl<>("{2}")));
|
||||
|
|
|
@ -54,7 +54,7 @@ public class GruulNodorog extends CardImpl {
|
|||
this.toughness = new MageInt(4);
|
||||
|
||||
//{R}: Gruul Nodorog gains menace until end of turn. (It can't be blocked except by two or more creatures.)
|
||||
this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new GainAbilitySourceEffect(new MenaceAbility(), Duration.EndOfTurn), new ManaCostsImpl("{R}")));
|
||||
this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new GainAbilitySourceEffect(MenaceAbility.getInstance(), Duration.EndOfTurn), new ManaCostsImpl("{R}")));
|
||||
}
|
||||
|
||||
public GruulNodorog(final GruulNodorog card) {
|
||||
|
|
|
@ -60,7 +60,7 @@ public class GruulWarChant extends CardImpl {
|
|||
|
||||
|
||||
// Attacking creatures you control get +1/+0 and have menace. (They can't be blocked except by two or more creatures.)
|
||||
Ability ability = new SimpleStaticAbility(Zone.BATTLEFIELD, new GainAbilityAllEffect(new MenaceAbility(), Duration.WhileOnBattlefield, filter));
|
||||
Ability ability = new SimpleStaticAbility(Zone.BATTLEFIELD, new GainAbilityAllEffect(MenaceAbility.getInstance(), Duration.WhileOnBattlefield, filter));
|
||||
ability.addEffect(new BoostAllEffect(1,0, Duration.WhileOnBattlefield, filter, false));
|
||||
this.addAbility(ability);
|
||||
}
|
||||
|
|
|
@ -66,7 +66,7 @@ public class HordeOfBoggarts extends CardImpl {
|
|||
this.addAbility(new SimpleStaticAbility(Zone.ALL, new SetPowerToughnessSourceEffect(new PermanentsOnBattlefieldCount(filter), Duration.EndOfGame)));
|
||||
|
||||
// Menace (This creature can't be blocked except by two or more creatures.)
|
||||
this.addAbility(new MenaceAbility());
|
||||
this.addAbility(MenaceAbility.getInstance());
|
||||
}
|
||||
|
||||
public HordeOfBoggarts(final HordeOfBoggarts card) {
|
||||
|
|
|
@ -60,7 +60,7 @@ public class HoundOfTheFarbogs extends CardImpl {
|
|||
|
||||
// <i>Delirium</i> — Hound of the Farborgs has menace as long as there are four or more card types among cards in your graveyard.
|
||||
Ability ability = new SimpleStaticAbility(Zone.BATTLEFIELD,
|
||||
new ConditionalContinuousEffect(new GainAbilitySourceEffect(new MenaceAbility(), Duration.WhileOnBattlefield), DeliriumCondition.instance, RULE));
|
||||
new ConditionalContinuousEffect(new GainAbilitySourceEffect(MenaceAbility.getInstance(), Duration.WhileOnBattlefield), DeliriumCondition.instance, RULE));
|
||||
ability.setAbilityWord(AbilityWord.DELIRIUM);
|
||||
this.addAbility(ability);
|
||||
}
|
||||
|
|
|
@ -61,7 +61,7 @@ public class IkraShidiqiTheUsurper extends CardImpl {
|
|||
this.toughness = new MageInt(7);
|
||||
|
||||
// Menace
|
||||
this.addAbility(new MenaceAbility());
|
||||
this.addAbility(MenaceAbility.getInstance());
|
||||
|
||||
// Whenever a creature you control deals combat damage to a player, you gain life equal to that creature's toughness.
|
||||
this.addAbility(new IkraShidiqiTheUsurperTriggeredAbility());
|
||||
|
|
80
Mage.Sets/src/mage/cards/i/ImperialLancer.java
Normal file
80
Mage.Sets/src/mage/cards/i/ImperialLancer.java
Normal file
|
@ -0,0 +1,80 @@
|
|||
/*
|
||||
* 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.cards.i;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.MageInt;
|
||||
import mage.abilities.common.SimpleStaticAbility;
|
||||
import mage.abilities.condition.common.PermanentsOnTheBattlefieldCondition;
|
||||
import mage.abilities.decorator.ConditionalContinuousEffect;
|
||||
import mage.abilities.effects.common.continuous.GainAbilitySourceEffect;
|
||||
import mage.abilities.keyword.DoubleStrikeAbility;
|
||||
import mage.constants.SubType;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.Duration;
|
||||
import mage.constants.Zone;
|
||||
import mage.filter.common.FilterControlledPermanent;
|
||||
import mage.filter.predicate.mageobject.SubtypePredicate;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author TheElk801
|
||||
*/
|
||||
public class ImperialLancer extends CardImpl {
|
||||
|
||||
private static final FilterControlledPermanent filter = new FilterControlledPermanent("a Dinosaur");
|
||||
|
||||
static {
|
||||
filter.add(new SubtypePredicate(SubType.DINOSAUR));
|
||||
}
|
||||
|
||||
public ImperialLancer(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{W}");
|
||||
|
||||
this.subtype.add(SubType.HUMAN);
|
||||
this.subtype.add(SubType.KNIGHT);
|
||||
this.power = new MageInt(1);
|
||||
this.toughness = new MageInt(1);
|
||||
|
||||
// Imperial Lancer has double strike as long as you control a Dinosaur.
|
||||
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD,
|
||||
new ConditionalContinuousEffect(new GainAbilitySourceEffect(DoubleStrikeAbility.getInstance(), Duration.WhileOnBattlefield),
|
||||
new PermanentsOnTheBattlefieldCondition(filter), "{this} has double strike as long as you control a Dinosaur")));
|
||||
}
|
||||
|
||||
public ImperialLancer(final ImperialLancer card) {
|
||||
super(card);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ImperialLancer copy() {
|
||||
return new ImperialLancer(this);
|
||||
}
|
||||
}
|
|
@ -63,7 +63,7 @@ public class ImposingVisage extends CardImpl {
|
|||
this.addAbility(ability);
|
||||
|
||||
// Enchanted creature has menace. (It can't be blocked except by two or more creatures.)
|
||||
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new GainAbilityAttachedEffect(new MenaceAbility(), AttachmentType.AURA)));
|
||||
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new GainAbilityAttachedEffect(MenaceAbility.getInstance(), AttachmentType.AURA)));
|
||||
}
|
||||
|
||||
public ImposingVisage(final ImposingVisage card) {
|
||||
|
|
|
@ -54,7 +54,7 @@ public class InsolentNeonate extends CardImpl {
|
|||
this.toughness = new MageInt(1);
|
||||
|
||||
// Menace
|
||||
this.addAbility(new MenaceAbility());
|
||||
this.addAbility(MenaceAbility.getInstance());
|
||||
// Discard a card, Sacrifice Insolent Neonate: Draw a card.
|
||||
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DrawCardSourceControllerEffect(1), new DiscardCardCost());
|
||||
ability.addCost(new SacrificeSourceCost());
|
||||
|
|
|
@ -64,7 +64,7 @@ public class IreShaman extends CardImpl {
|
|||
this.toughness = new MageInt(1);
|
||||
|
||||
// Menace (This creature can't be blocked except by two or more creatures.)
|
||||
this.addAbility(new MenaceAbility());
|
||||
this.addAbility(MenaceAbility.getInstance());
|
||||
|
||||
// Megamorph {R}
|
||||
this.addAbility(new MorphAbility(this, new ManaCostsImpl("{R}"), true));
|
||||
|
|
|
@ -75,7 +75,7 @@ public class IroasGodOfVictory extends CardImpl {
|
|||
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, effect));
|
||||
|
||||
// Creatures you control have menace. (They can't be blocked except by two or more creatures.)
|
||||
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new GainAbilityAllEffect(new MenaceAbility(), Duration.WhileOnBattlefield, filter)));
|
||||
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new GainAbilityAllEffect(MenaceAbility.getInstance(), Duration.WhileOnBattlefield, filter)));
|
||||
|
||||
// Prevent all damage that would be dealt to attacking creatures you control.
|
||||
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new PreventAllDamageToAllEffect(Duration.WhileOnBattlefield, filterAttacking)));
|
||||
|
|
|
@ -71,7 +71,7 @@ public class JangoFett extends CardImpl {
|
|||
this.toughness = new MageInt(2);
|
||||
|
||||
// Menace
|
||||
this.addAbility(new MenaceAbility());
|
||||
this.addAbility(MenaceAbility.getInstance());
|
||||
|
||||
// Haste
|
||||
this.addAbility(HasteAbility.getInstance());
|
||||
|
|
|
@ -64,7 +64,7 @@ public class KariZevSkyshipRaider extends CardImpl {
|
|||
this.addAbility(FirstStrikeAbility.getInstance());
|
||||
|
||||
// Menace
|
||||
this.addAbility(new MenaceAbility());
|
||||
this.addAbility(MenaceAbility.getInstance());
|
||||
|
||||
// Whenever Kari Zev, Skyship Raider attacks, create a legendary 2/1 red Monkey creature token named Ragavan that's tapped and attacking. Exile that token at end of combat.
|
||||
this.addAbility(new AttacksTriggeredAbility(new KariZevSkyshipRaiderEffect(), false));
|
||||
|
|
|
@ -53,7 +53,7 @@ public class KederektCreeper extends CardImpl {
|
|||
this.addAbility(DeathtouchAbility.getInstance());
|
||||
|
||||
// Menace (This creature can't be blocked except by two or more creatures.)
|
||||
this.addAbility(new MenaceAbility());
|
||||
this.addAbility(MenaceAbility.getInstance());
|
||||
}
|
||||
|
||||
public KederektCreeper(final KederektCreeper card) {
|
||||
|
|
|
@ -54,7 +54,7 @@ public class KhenraScrapper extends CardImpl {
|
|||
this.toughness = new MageInt(3);
|
||||
|
||||
// Menace
|
||||
this.addAbility(new MenaceAbility());
|
||||
this.addAbility(MenaceAbility.getInstance());
|
||||
|
||||
// You may exert Khenra Scrapper as it attacks. When you do, it gets +2/+0 until end of turn.
|
||||
this.addAbility(new ExertAbility(new BecomesExertSourceTriggeredAbility(new BoostSourceEffect(2, 0, Duration.EndOfTurn))));
|
||||
|
|
|
@ -67,7 +67,7 @@ public class KheruMindEater extends CardImpl {
|
|||
this.toughness = new MageInt(3);
|
||||
|
||||
// Menace
|
||||
this.addAbility(new MenaceAbility());
|
||||
this.addAbility(MenaceAbility.getInstance());
|
||||
|
||||
// Whenever Kheru Mind-Eater deals combat damage to a player, that player exiles a card from his or her hand face down.
|
||||
this.addAbility(new DealsDamageToAPlayerTriggeredAbility(new KheruMindEaterExileEffect(), false, true));
|
||||
|
|
74
Mage.Sets/src/mage/cards/k/KinjallisCaller.java
Normal file
74
Mage.Sets/src/mage/cards/k/KinjallisCaller.java
Normal file
|
@ -0,0 +1,74 @@
|
|||
/*
|
||||
* 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.cards.k;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.MageInt;
|
||||
import mage.abilities.common.SimpleStaticAbility;
|
||||
import mage.abilities.effects.common.cost.SpellsCostReductionControllerEffect;
|
||||
import mage.constants.SubType;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.Zone;
|
||||
import mage.filter.FilterCard;
|
||||
import mage.filter.predicate.mageobject.SubtypePredicate;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author TheElk801
|
||||
*/
|
||||
public class KinjallisCaller extends CardImpl {
|
||||
|
||||
private static final FilterCard filter = new FilterCard("Dinosaur spells");
|
||||
|
||||
static {
|
||||
filter.add(new SubtypePredicate(SubType.DINOSAUR));
|
||||
}
|
||||
|
||||
public KinjallisCaller(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{W}");
|
||||
|
||||
this.subtype.add(SubType.HUMAN);
|
||||
this.subtype.add(SubType.CLERIC);
|
||||
this.power = new MageInt(0);
|
||||
this.toughness = new MageInt(3);
|
||||
|
||||
// Dinosaur spells you cast cost {1} less to cast.
|
||||
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new SpellsCostReductionControllerEffect(filter, 1)));
|
||||
}
|
||||
|
||||
public KinjallisCaller(final KinjallisCaller card) {
|
||||
super(card);
|
||||
}
|
||||
|
||||
@Override
|
||||
public KinjallisCaller copy() {
|
||||
return new KinjallisCaller(this);
|
||||
}
|
||||
}
|
|
@ -79,7 +79,7 @@ public class KozilekTheGreatDistortion extends CardImpl {
|
|||
new CardsInHandCondition(ComparisonType.FEWER_THAN, 7),
|
||||
"When you cast {this}, if you have fewer than seven cards in hand, draw cards equal to the difference."));
|
||||
// Menace
|
||||
this.addAbility(new MenaceAbility());
|
||||
this.addAbility(MenaceAbility.getInstance());
|
||||
|
||||
// Discard a card with converted mana cost X: Counter target spell with converted mana cost X.
|
||||
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new CounterTargetEffect(), new KozilekDiscardCost());
|
||||
|
|
|
@ -63,7 +63,7 @@ public class KozileksShrieker extends CardImpl {
|
|||
Effect effect = new BoostSourceEffect(1, 0, Duration.EndOfTurn);
|
||||
effect.setText("{this} gets +1/+0");
|
||||
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, effect, new ManaCostsImpl("{C}"));
|
||||
effect = new GainAbilitySourceEffect(new MenaceAbility(), Duration.EndOfTurn);
|
||||
effect = new GainAbilitySourceEffect(MenaceAbility.getInstance(), Duration.EndOfTurn);
|
||||
effect.setText("and gains menace until end of turn");
|
||||
ability.addEffect(effect);
|
||||
this.addAbility(ability);
|
||||
|
|
|
@ -65,7 +65,7 @@ public class LordOfTheAccursed extends CardImpl {
|
|||
|
||||
//{2}{B}, Tap: All Zombies gain menace until end of turn.
|
||||
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new GainAbilityAllEffect(
|
||||
new MenaceAbility(),
|
||||
MenaceAbility.getInstance(),
|
||||
Duration.EndOfTurn,
|
||||
filter, "All Zombies gains menace until end of turn."),
|
||||
new ManaCostsImpl("{1}{B}"));
|
||||
|
|
|
@ -56,7 +56,7 @@ public class LoseCalm extends CardImpl {
|
|||
this.getSpellAbility().addEffect(effect);
|
||||
this.getSpellAbility().addEffect(new GainAbilityTargetEffect(HasteAbility.getInstance(), Duration.EndOfTurn, "It gains haste until end of turn"));
|
||||
this.getSpellAbility().addTarget(new TargetCreaturePermanent());
|
||||
effect = new GainAbilityTargetEffect(new MenaceAbility(), Duration.EndOfTurn);
|
||||
effect = new GainAbilityTargetEffect(MenaceAbility.getInstance(), Duration.EndOfTurn);
|
||||
effect.setText("and menace until end of turn. (A creature with menace can't be blocked except by two or more creatures.) ");
|
||||
this.getSpellAbility().addEffect(effect);
|
||||
}
|
||||
|
|
|
@ -65,7 +65,7 @@ public class MadcapSkills extends CardImpl {
|
|||
|
||||
// Enchanted creature gets +3/+0 and and has menace. (It can't be blocked except by two or more creatures.)
|
||||
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostEnchantedEffect(3, 0)));
|
||||
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new GainAbilityAttachedEffect(new MenaceAbility(), AttachmentType.AURA)));
|
||||
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new GainAbilityAttachedEffect(MenaceAbility.getInstance(), AttachmentType.AURA)));
|
||||
}
|
||||
|
||||
public MadcapSkills(final MadcapSkills card) {
|
||||
|
|
|
@ -187,7 +187,7 @@ class MajesticMyriarchEffect extends OneShotEffect {
|
|||
|
||||
// Menace
|
||||
if (game.getBattlefield().contains(filterMenace, source.getControllerId(), 1, game)) {
|
||||
game.addEffect(new GainAbilitySourceEffect(new MenaceAbility(), Duration.EndOfTurn), source);
|
||||
game.addEffect(new GainAbilitySourceEffect(MenaceAbility.getInstance(), Duration.EndOfTurn), source);
|
||||
}
|
||||
|
||||
// Reach
|
||||
|
|
|
@ -76,7 +76,7 @@ public class MathasFiendSeeker extends CardImpl {
|
|||
this.toughness = new MageInt(3);
|
||||
|
||||
// Menace
|
||||
this.addAbility(new MenaceAbility());
|
||||
this.addAbility(MenaceAbility.getInstance());
|
||||
|
||||
// At the beginning of your end step, put a bounty counter on target creature an opponent controls. For as long as that creature has a bounty counter on it, it has "When this creature dies, each opponent draws a card and gains 2 life."
|
||||
Ability ability = new BeginningOfYourEndStepTriggeredAbility(new AddCountersTargetEffect(CounterType.BOUNTY.createInstance()), false);
|
||||
|
|
|
@ -50,7 +50,7 @@ public class MaulfistSquad extends CardImpl {
|
|||
this.toughness = new MageInt(1);
|
||||
|
||||
// Menace
|
||||
this.addAbility(new MenaceAbility());
|
||||
this.addAbility(MenaceAbility.getInstance());
|
||||
|
||||
// Fabricate 1
|
||||
this.addAbility(new FabricateAbility(1));
|
||||
|
|
|
@ -60,7 +60,7 @@ public class MoonriseIntruder extends CardImpl {
|
|||
this.transformable = true;
|
||||
|
||||
// Menace
|
||||
this.addAbility(new MenaceAbility());
|
||||
this.addAbility(MenaceAbility.getInstance());
|
||||
|
||||
// At the beginning of each upkeep, if a player cast two or more spells last turn, transform Moonrise Intruder.
|
||||
TriggeredAbility ability = new BeginningOfUpkeepTriggeredAbility(new TransformSourceEffect(false), TargetController.ANY, false);
|
||||
|
|
|
@ -64,7 +64,7 @@ public class MorkrutNecropod extends CardImpl {
|
|||
this.toughness = new MageInt(7);
|
||||
|
||||
// Menace
|
||||
this.addAbility(new MenaceAbility());
|
||||
this.addAbility(MenaceAbility.getInstance());
|
||||
|
||||
// Whenever Morkrut Necropod attacks or blocks, sacrifice another creature or land.
|
||||
this.addAbility(new AttacksOrBlocksTriggeredAbility(new SacrificeControllerEffect(filter, 1, ""), false));
|
||||
|
|
|
@ -64,7 +64,7 @@ public class NoxiousGearhulk extends CardImpl {
|
|||
this.toughness = new MageInt(4);
|
||||
|
||||
// Menace
|
||||
this.addAbility(new MenaceAbility());
|
||||
this.addAbility(MenaceAbility.getInstance());
|
||||
|
||||
// When Noxious Gearhulk enters the battlefield, you may destroy another target creature. If a creature is destroyed this way, you gain life equal to its toughness.
|
||||
Ability ability = new EntersBattlefieldTriggeredAbility(new NoxiousGearhulkEffect());
|
||||
|
|
|
@ -161,7 +161,7 @@ class OdricLunarchMarshalEffect extends OneShotEffect {
|
|||
|
||||
// Menace
|
||||
if (game.getBattlefield().contains(filterMenace, source.getControllerId(), 1, game)) {
|
||||
game.addEffect(new GainAbilityControlledEffect(new MenaceAbility(), Duration.EndOfTurn, filterCreatures), source);
|
||||
game.addEffect(new GainAbilityControlledEffect(MenaceAbility.getInstance(), Duration.EndOfTurn, filterCreatures), source);
|
||||
}
|
||||
|
||||
// Reach
|
||||
|
|
|
@ -70,7 +70,7 @@ public class PlagueBelcher extends CardImpl {
|
|||
this.toughness = new MageInt(4);
|
||||
|
||||
// Menace
|
||||
this.addAbility(new MenaceAbility());
|
||||
this.addAbility(MenaceAbility.getInstance());
|
||||
|
||||
// When Plague Belcher enters the battlefield, put two -1/-1 counters on target creature you control.
|
||||
Ability ability = new EntersBattlefieldTriggeredAbility(new AddCountersTargetEffect(CounterType.M1M1.createInstance(2)));
|
||||
|
|
|
@ -60,11 +60,11 @@ public class PurphorossEmissary extends CardImpl {
|
|||
this.addAbility(new BestowAbility(this, "{6}{R}"));
|
||||
|
||||
// Menace (This creature can't be blocked except by two or more creatures.)
|
||||
this.addAbility(new MenaceAbility());
|
||||
this.addAbility(MenaceAbility.getInstance());
|
||||
|
||||
// Enchanted creature gets +3/+3 and and has menace.
|
||||
Ability ability = new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostEnchantedEffect(3,3));
|
||||
Effect effect = new GainAbilityAttachedEffect(new MenaceAbility(), AttachmentType.AURA);
|
||||
Effect effect = new GainAbilityAttachedEffect(MenaceAbility.getInstance(), AttachmentType.AURA);
|
||||
effect.setText("and has menace");
|
||||
ability.addEffect(effect);
|
||||
this.addAbility(ability);
|
||||
|
|
|
@ -62,7 +62,7 @@ public class PyreheartWolf extends CardImpl {
|
|||
this.toughness = new MageInt(1);
|
||||
|
||||
// Whenever Pyreheart Wolf attacks, creatures you control gain menace until end of turn. (They can't be blocked except by two or more creatures.)
|
||||
this.addAbility(new AttacksTriggeredAbility(new GainAbilityAllEffect(new MenaceAbility(), Duration.EndOfTurn, filter), false));
|
||||
this.addAbility(new AttacksTriggeredAbility(new GainAbilityAllEffect(MenaceAbility.getInstance(), Duration.EndOfTurn, filter), false));
|
||||
|
||||
// Undying (When this creature dies, if it had no +1/+1 counters on it, return it to the battlefield under its owner's control with a +1/+1 counter on it.)
|
||||
this.addAbility(new UndyingAbility());
|
||||
|
|
|
@ -71,7 +71,7 @@ public class RampagingFerocidon extends CardImpl {
|
|||
this.toughness = new MageInt(3);
|
||||
|
||||
// Menace
|
||||
this.addAbility(new MenaceAbility());
|
||||
this.addAbility(MenaceAbility.getInstance());
|
||||
|
||||
// Players can't gain life.
|
||||
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new RampagingFerocidonEffect()));
|
||||
|
|
|
@ -63,7 +63,7 @@ public class RelentlessDead extends CardImpl {
|
|||
this.toughness = new MageInt(2);
|
||||
|
||||
// Menace
|
||||
this.addAbility(new MenaceAbility());
|
||||
this.addAbility(MenaceAbility.getInstance());
|
||||
|
||||
// When Relentless Dead dies, you may pay {B}. If you do, return it to its owner's hand.
|
||||
this.addAbility(new DiesTriggeredAbility(new DoIfCostPaid(new ReturnToHandSourceEffect(), new ManaCostsImpl("{B}"))));
|
||||
|
|
|
@ -49,7 +49,7 @@ public class RipscalePredator extends CardImpl {
|
|||
this.toughness = new MageInt(5);
|
||||
|
||||
// Ripscale Predator can't be blocked except by two or more creatures.
|
||||
this.addAbility(new MenaceAbility());
|
||||
this.addAbility(MenaceAbility.getInstance());
|
||||
}
|
||||
|
||||
public RipscalePredator(final RipscalePredator card) {
|
||||
|
|
|
@ -60,7 +60,7 @@ public class ScroungedScythe extends CardImpl {
|
|||
|
||||
// As long as equipped creature is a Human, it has menace.
|
||||
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD,
|
||||
new ConditionalContinuousEffect(new GainAbilityAttachedEffect(new MenaceAbility(), AttachmentType.EQUIPMENT),
|
||||
new ConditionalContinuousEffect(new GainAbilityAttachedEffect(MenaceAbility.getInstance(), AttachmentType.EQUIPMENT),
|
||||
new EquippedHasSubtypeCondition(SubType.HUMAN), staticText)));
|
||||
|
||||
// Equip {2}
|
||||
|
|
|
@ -59,7 +59,7 @@ public class SearingSpearAskari extends CardImpl {
|
|||
this.addAbility(new FlankingAbility());
|
||||
|
||||
// {1}{R}: Searing Spear Askari gains menace until end of turn. (It can't be blocked except by two or more creatures.)
|
||||
this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new GainAbilitySourceEffect(new MenaceAbility(), Duration.EndOfTurn), new ManaCostsImpl("{1}{R}")));
|
||||
this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new GainAbilitySourceEffect(MenaceAbility.getInstance(), Duration.EndOfTurn), new ManaCostsImpl("{1}{R}")));
|
||||
}
|
||||
|
||||
public SearingSpearAskari(final SearingSpearAskari card) {
|
||||
|
|
|
@ -50,7 +50,7 @@ public class ShatterskullRecruit extends CardImpl {
|
|||
this.toughness = new MageInt(4);
|
||||
|
||||
// Menace
|
||||
this.addAbility(new MenaceAbility());
|
||||
this.addAbility(MenaceAbility.getInstance());
|
||||
}
|
||||
|
||||
public ShatterskullRecruit(final ShatterskullRecruit card) {
|
||||
|
|
|
@ -61,7 +61,7 @@ public class SinProdder extends CardImpl {
|
|||
this.toughness = new MageInt(2);
|
||||
|
||||
// Menace
|
||||
this.addAbility(new MenaceAbility());
|
||||
this.addAbility(MenaceAbility.getInstance());
|
||||
|
||||
// At the beginning of your upkeep, reveal the top card of your library. Any opponent may have you put that card into your graveyard. If a player does,
|
||||
// Sin Prodder deals damage to that player equal to that card's converted mana cost. Otherwise, put that card into your hand.
|
||||
|
|
|
@ -62,7 +62,7 @@ public class SinuousVermin extends CardImpl {
|
|||
// As long as Sinuous Vermin is monstrous, it has menace.
|
||||
Ability ability = new SimpleStaticAbility(
|
||||
Zone.BATTLEFIELD,
|
||||
new ConditionalContinuousEffect(new GainAbilitySourceEffect(new MenaceAbility(), Duration.WhileOnBattlefield),
|
||||
new ConditionalContinuousEffect(new GainAbilitySourceEffect(MenaceAbility.getInstance(), Duration.WhileOnBattlefield),
|
||||
MonstrousCondition.instance,
|
||||
"As long as {this} is monstrous, it has menace"));
|
||||
this.addAbility(ability);
|
||||
|
|
|
@ -59,7 +59,7 @@ public class SithLord extends CardImpl {
|
|||
this.toughness = new MageInt(2);
|
||||
|
||||
// Menace
|
||||
this.addAbility(new MenaceAbility());
|
||||
this.addAbility(MenaceAbility.getInstance());
|
||||
|
||||
// Sith Lord enters the battlefield with X +1/+1 counters on it, where X is the total life lost by your opponents this turn.
|
||||
this.addAbility(new EntersBattlefieldAbility(new SithLordEffect(), rule));
|
||||
|
|
109
Mage.Sets/src/mage/cards/s/Skulduggery.java
Normal file
109
Mage.Sets/src/mage/cards/s/Skulduggery.java
Normal file
|
@ -0,0 +1,109 @@
|
|||
/*
|
||||
* 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.cards.s;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.effects.ContinuousEffectImpl;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.Duration;
|
||||
import mage.constants.Layer;
|
||||
import mage.constants.Outcome;
|
||||
import mage.constants.SubLayer;
|
||||
import mage.constants.TargetController;
|
||||
import mage.filter.common.FilterCreaturePermanent;
|
||||
import mage.filter.predicate.permanent.ControllerPredicate;
|
||||
import mage.game.Game;
|
||||
import mage.game.permanent.Permanent;
|
||||
import mage.target.common.TargetControlledCreaturePermanent;
|
||||
import mage.target.common.TargetCreaturePermanent;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author TheElk801
|
||||
*/
|
||||
public class Skulduggery extends CardImpl {
|
||||
|
||||
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature an opponent controls");
|
||||
|
||||
static {
|
||||
filter.add(new ControllerPredicate(TargetController.OPPONENT));
|
||||
}
|
||||
|
||||
public Skulduggery(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{B}");
|
||||
|
||||
// Until end of turn, target creature you control gets +1/+1 and target creature an opponent controls gets -1/-1.
|
||||
this.getSpellAbility().addEffect(new SkulduggeryEffect());
|
||||
this.getSpellAbility().addTarget(new TargetControlledCreaturePermanent());
|
||||
this.getSpellAbility().addTarget(new TargetCreaturePermanent(filter));
|
||||
}
|
||||
|
||||
public Skulduggery(final Skulduggery card) {
|
||||
super(card);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Skulduggery copy() {
|
||||
return new Skulduggery(this);
|
||||
}
|
||||
}
|
||||
|
||||
class SkulduggeryEffect extends ContinuousEffectImpl {
|
||||
|
||||
public SkulduggeryEffect() {
|
||||
super(Duration.EndOfTurn, Layer.PTChangingEffects_7, SubLayer.ModifyPT_7c, Outcome.BoostCreature);
|
||||
this.staticText = "Until end of turn, target creature you control gets +1/+1 and target creature an opponent controls gets -1/-1";
|
||||
}
|
||||
|
||||
public SkulduggeryEffect(final SkulduggeryEffect effect) {
|
||||
super(effect);
|
||||
}
|
||||
|
||||
@Override
|
||||
public SkulduggeryEffect copy() {
|
||||
return new SkulduggeryEffect(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean apply(Game game, Ability source) {
|
||||
Permanent permanent = game.getPermanent(source.getFirstTarget());
|
||||
if (permanent != null) {
|
||||
permanent.addPower(1);
|
||||
permanent.addToughness(1);
|
||||
}
|
||||
permanent = game.getPermanent(source.getTargets().get(1).getFirstTarget());
|
||||
if (permanent != null) {
|
||||
permanent.addPower(-1);
|
||||
permanent.addToughness(-1);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
|
@ -53,7 +53,7 @@ public class SkyTerror extends CardImpl {
|
|||
this.addAbility(FlyingAbility.getInstance());
|
||||
|
||||
// Menace
|
||||
this.addAbility(new MenaceAbility());
|
||||
this.addAbility(MenaceAbility.getInstance());
|
||||
|
||||
}
|
||||
|
||||
|
|
|
@ -51,7 +51,7 @@ public class StormbloodBerserker extends CardImpl {
|
|||
|
||||
this.addAbility(new BloodthirstAbility(2));
|
||||
// Menace (This creature can't be blocked except by two or more creatures.)
|
||||
this.addAbility(new MenaceAbility());
|
||||
this.addAbility(MenaceAbility.getInstance());
|
||||
}
|
||||
|
||||
public StormbloodBerserker(final StormbloodBerserker card) {
|
||||
|
|
|
@ -65,7 +65,7 @@ public class SummitApes extends CardImpl {
|
|||
|
||||
// As long as you control a Mountain, Summit Apes has menace. (It can't be blocked except by two or more creatures.)
|
||||
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD,
|
||||
new ConditionalContinuousEffect(new GainAbilitySourceEffect(new MenaceAbility()), new PermanentsOnTheBattlefieldCondition(filter), rule)));
|
||||
new ConditionalContinuousEffect(new GainAbilitySourceEffect(MenaceAbility.getInstance()), new PermanentsOnTheBattlefieldCondition(filter), rule)));
|
||||
}
|
||||
|
||||
public SummitApes(final SummitApes card) {
|
||||
|
|
|
@ -54,7 +54,7 @@ public class SweatworksBrawler extends CardImpl {
|
|||
addAbility(new ImproviseAbility());
|
||||
|
||||
// Menace
|
||||
this.addAbility(new MenaceAbility());
|
||||
this.addAbility(MenaceAbility.getInstance());
|
||||
}
|
||||
|
||||
public SweatworksBrawler(final SweatworksBrawler card) {
|
||||
|
|
|
@ -76,7 +76,7 @@ public class TerrorOfKruinPass extends CardImpl {
|
|||
|
||||
this.addAbility(DoubleStrikeAbility.getInstance());
|
||||
// Werewolves you control have menace. (They can't be blocked except by two or more creatures.)
|
||||
Effect effect = new ConditionalContinuousEffect(new GainAbilityAllEffect(new MenaceAbility(), Duration.Custom, filter), new TransformedCondition(), ruleText);
|
||||
Effect effect = new ConditionalContinuousEffect(new GainAbilityAllEffect(MenaceAbility.getInstance(), Duration.Custom, filter), new TransformedCondition(), ruleText);
|
||||
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, effect));
|
||||
|
||||
// At the beginning of each upkeep, if a player cast two or more spells last turn, transform Terror of Kruin Pass.
|
||||
|
|
|
@ -59,7 +59,7 @@ public class ThrabenFoulbloods extends CardImpl {
|
|||
// <i>Delirium</i> — Thraben Foulbloods gets +1/+1 and has menace as long as there are four or more card types among cards in your graveyard. <i>(A creature with menace can't be blocked except by two or more creatures.)<i>
|
||||
ConditionalContinuousEffect effect = new ConditionalContinuousEffect(new BoostSourceEffect(1, 1, Duration.WhileOnBattlefield), DeliriumCondition.instance, "<i>Delirium</i> — {this} gets +1/+1");
|
||||
Ability ability = new SimpleStaticAbility(Zone.BATTLEFIELD, effect);
|
||||
ability.addEffect(new ConditionalContinuousEffect(new GainAbilitySourceEffect(new MenaceAbility()), DeliriumCondition.instance,
|
||||
ability.addEffect(new ConditionalContinuousEffect(new GainAbilitySourceEffect(MenaceAbility.getInstance()), DeliriumCondition.instance,
|
||||
"and has menace as long as there are four or more card types among cards in your graveyard. <i>(A creature with menace can't be blocked except by two or more creatures.)<i>"));
|
||||
this.addAbility(ability);
|
||||
}
|
||||
|
|
82
Mage.Sets/src/mage/cards/t/TilonallisKnight.java
Normal file
82
Mage.Sets/src/mage/cards/t/TilonallisKnight.java
Normal file
|
@ -0,0 +1,82 @@
|
|||
/*
|
||||
* 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.cards.t;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.MageInt;
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.common.AttacksTriggeredAbility;
|
||||
import mage.abilities.condition.common.PermanentsOnTheBattlefieldCondition;
|
||||
import mage.abilities.decorator.ConditionalTriggeredAbility;
|
||||
import mage.abilities.effects.common.continuous.BoostSourceEffect;
|
||||
import mage.constants.SubType;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.Duration;
|
||||
import mage.filter.common.FilterControlledPermanent;
|
||||
import mage.filter.predicate.mageobject.SubtypePredicate;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author TheElk801
|
||||
*/
|
||||
public class TilonallisKnight extends CardImpl {
|
||||
|
||||
private static final FilterControlledPermanent filter = new FilterControlledPermanent();
|
||||
|
||||
static {
|
||||
filter.add(new SubtypePredicate(SubType.DINOSAUR));
|
||||
}
|
||||
|
||||
public TilonallisKnight(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{R}");
|
||||
|
||||
this.subtype.add(SubType.HUMAN);
|
||||
this.subtype.add(SubType.KNIGHT);
|
||||
this.power = new MageInt(2);
|
||||
this.toughness = new MageInt(2);
|
||||
|
||||
// Whenever Tilonalli's Knight attacks, if you control a Dinosaur, Tilonalli's Knight gets +1/+1 until end of turn.
|
||||
Ability ability = new ConditionalTriggeredAbility(
|
||||
new AttacksTriggeredAbility(new BoostSourceEffect(1, 1, Duration.EndOfTurn), false),
|
||||
new PermanentsOnTheBattlefieldCondition(filter),
|
||||
"Whenever {this} attacks, if you control a Dinosaur, {this} gets +1/+1 until end of turn."
|
||||
);
|
||||
this.addAbility(ability);
|
||||
}
|
||||
|
||||
public TilonallisKnight(final TilonallisKnight card) {
|
||||
super(card);
|
||||
}
|
||||
|
||||
@Override
|
||||
public TilonallisKnight copy() {
|
||||
return new TilonallisKnight(this);
|
||||
}
|
||||
}
|
|
@ -63,7 +63,7 @@ public class TwoHeadedDragon extends CardImpl {
|
|||
this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new BoostSourceEffect(2,0, Duration.EndOfTurn),new ManaCostsImpl("{1}{R}")));
|
||||
|
||||
// Menace (This creature can't be blocked except by two or more creatures.)
|
||||
this.addAbility(new MenaceAbility());
|
||||
this.addAbility(MenaceAbility.getInstance());
|
||||
|
||||
// Two-Headed Dragon can block an additional creature each combat.
|
||||
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new CanBlockAdditionalCreatureEffect()));
|
||||
|
|
|
@ -56,7 +56,7 @@ public class TwoHeadedSliver extends CardImpl {
|
|||
|
||||
// All Sliver creatures have menace. (They can't be blocked except by two or more creatures.)
|
||||
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new GainAbilityAllEffect(
|
||||
new MenaceAbility(),
|
||||
MenaceAbility.getInstance(),
|
||||
Duration.WhileOnBattlefield, StaticFilters.FILTER_PERMANENT_CREATURE_SLIVERS,
|
||||
"All Sliver creatures have menace. <i>(They can't be blocked except by two or more creatures.)</i>")));
|
||||
}
|
||||
|
|
|
@ -65,7 +65,7 @@ public class UntamedHunger extends CardImpl {
|
|||
|
||||
// Enchanted creature gets +2/+1 and has menace.
|
||||
ability = new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostEnchantedEffect(2, 1));
|
||||
Effect effect = new GainAbilityAttachedEffect(new MenaceAbility(), AttachmentType.AURA);
|
||||
Effect effect = new GainAbilityAttachedEffect(MenaceAbility.getInstance(), AttachmentType.AURA);
|
||||
effect.setText("and has menace");
|
||||
ability.addEffect(effect);
|
||||
this.addAbility(ability);
|
||||
|
|
|
@ -49,7 +49,7 @@ public class ViashinoRunner extends CardImpl {
|
|||
this.toughness = new MageInt(2);
|
||||
|
||||
// Menace (This creature can't be blocked except by two or more creatures.)
|
||||
this.addAbility(new MenaceAbility());
|
||||
this.addAbility(MenaceAbility.getInstance());
|
||||
}
|
||||
|
||||
public ViashinoRunner(final ViashinoRunner card) {
|
||||
|
|
|
@ -50,7 +50,7 @@ public class VineKami extends CardImpl {
|
|||
this.toughness = new MageInt(4);
|
||||
|
||||
// Menace (This creature can't be blocked except by two or more creatures.)
|
||||
this.addAbility(new MenaceAbility());
|
||||
this.addAbility(MenaceAbility.getInstance());
|
||||
this.addAbility(new SoulshiftAbility(6));
|
||||
}
|
||||
|
||||
|
|
|
@ -48,7 +48,7 @@ public class WaywardGiant extends CardImpl {
|
|||
this.toughness = new MageInt(5);
|
||||
|
||||
// Menace
|
||||
this.addAbility(new MenaceAbility());
|
||||
this.addAbility(MenaceAbility.getInstance());
|
||||
}
|
||||
|
||||
public WaywardGiant(final WaywardGiant card) {
|
||||
|
|
|
@ -55,7 +55,7 @@ public class WeldfastMonitor extends CardImpl {
|
|||
|
||||
// {R}: Weldfast Monitor gains menace until end of turn
|
||||
this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD,
|
||||
new GainAbilitySourceEffect(new MenaceAbility(), Duration.EndOfTurn), new ColoredManaCost(ColoredManaSymbol.R)));
|
||||
new GainAbilitySourceEffect(MenaceAbility.getInstance(), Duration.EndOfTurn), new ColoredManaCost(ColoredManaSymbol.R)));
|
||||
|
||||
}
|
||||
|
||||
|
|
|
@ -54,7 +54,7 @@ public class WindSpirit extends CardImpl {
|
|||
this.addAbility(FlyingAbility.getInstance());
|
||||
|
||||
// Menace (This creature can't be blocked except by two or more creatures.)
|
||||
this.addAbility(new MenaceAbility());
|
||||
this.addAbility(MenaceAbility.getInstance());
|
||||
}
|
||||
|
||||
public WindSpirit(final WindSpirit card) {
|
||||
|
|
|
@ -45,6 +45,7 @@ public class Ixalan extends ExpansionSet {
|
|||
cards.add(new SetCardInfo("Bishop of the Bloodstained", 91, Rarity.UNCOMMON, mage.cards.b.BishopOfTheBloodstained.class));
|
||||
cards.add(new SetCardInfo("Bloodcrazed Paladin", 93, Rarity.RARE, mage.cards.b.BloodcrazedPaladin.class));
|
||||
cards.add(new SetCardInfo("Boneyard Parley", 94, Rarity.MYTHIC, mage.cards.b.BoneyardParley.class));
|
||||
cards.add(new SetCardInfo("Brazen Buccaneers", 134, Rarity.COMMON, mage.cards.b.BrazenBuccaneers.class));
|
||||
cards.add(new SetCardInfo("Burning Sun's Avatar", 135, Rarity.RARE, mage.cards.b.BurningSunsAvatar.class));
|
||||
cards.add(new SetCardInfo("Call to the Feast", 219, Rarity.UNCOMMON, mage.cards.c.CallToTheFeast.class));
|
||||
cards.add(new SetCardInfo("Captain Lannery Storm", 136, Rarity.RARE, mage.cards.c.CaptainLanneryStorm.class));
|
||||
|
@ -64,8 +65,10 @@ public class Ixalan extends ExpansionSet {
|
|||
cards.add(new SetCardInfo("Deathless Ancient", 100, Rarity.UNCOMMON, mage.cards.d.DeathlessAncient.class));
|
||||
cards.add(new SetCardInfo("Deeproot Champion", 185, Rarity.RARE, mage.cards.d.DeeprootChampion.class));
|
||||
cards.add(new SetCardInfo("Deeproot Waters", 51, Rarity.UNCOMMON, mage.cards.d.DeeprootWaters.class));
|
||||
cards.add(new SetCardInfo("Desperate Castaways", 101, Rarity.COMMON, mage.cards.d.DesperateCastaways.class));
|
||||
cards.add(new SetCardInfo("Dinosaur Stampede", 140, Rarity.UNCOMMON, mage.cards.d.DinosaurStampede.class));
|
||||
cards.add(new SetCardInfo("Dire Fleet Captain", 221, Rarity.UNCOMMON, mage.cards.d.DireFleetCaptain.class));
|
||||
cards.add(new SetCardInfo("Dire Fleet Hoarder", 102, Rarity.COMMON, mage.cards.d.DireFleetHoarder.class));
|
||||
cards.add(new SetCardInfo("Dowsing Dagger", 235, Rarity.RARE, mage.cards.d.DowsingDagger.class));
|
||||
cards.add(new SetCardInfo("Dragonskull Summit", 252, Rarity.RARE, mage.cards.d.DragonskullSummit.class));
|
||||
cards.add(new SetCardInfo("Dreamcaller Siren", 54, Rarity.RARE, mage.cards.d.DreamcallerSiren.class));
|
||||
|
@ -93,12 +96,14 @@ public class Ixalan extends ExpansionSet {
|
|||
cards.add(new SetCardInfo("Huatli's Spurring", 287, Rarity.UNCOMMON, mage.cards.h.HuatlisSpurring.class));
|
||||
cards.add(new SetCardInfo("Huatli, Dinosaur Knight", 285, Rarity.MYTHIC, mage.cards.h.HuatliDinosaurKnight.class));
|
||||
cards.add(new SetCardInfo("Huatli, Warrior Poet", 224, Rarity.MYTHIC, mage.cards.h.HuatliWarriorPoet.class));
|
||||
cards.add(new SetCardInfo("Imperial Lancer", 15, Rarity.UNCOMMON, mage.cards.i.ImperialLancer.class));
|
||||
cards.add(new SetCardInfo("Island", 265, Rarity.LAND, mage.cards.basiclands.Island.class));
|
||||
cards.add(new SetCardInfo("Itlimoc, Cradle of the Sun", 191, Rarity.RARE, mage.cards.i.ItlimocCradleOfTheSun.class));
|
||||
cards.add(new SetCardInfo("Ixalan's Binding", 17, Rarity.UNCOMMON, mage.cards.i.IxalansBinding.class));
|
||||
cards.add(new SetCardInfo("Jace's Sentinel", 283, Rarity.UNCOMMON, mage.cards.j.JacesSentinel.class));
|
||||
cards.add(new SetCardInfo("Jace, Cunning Castaway", 60, Rarity.MYTHIC, mage.cards.j.JaceCunningCastaway.class));
|
||||
cards.add(new SetCardInfo("Jace, Ingenious Mind-Mage", 280, Rarity.MYTHIC, mage.cards.j.JaceIngeniousMindMage.class));
|
||||
cards.add(new SetCardInfo("Kinjalli's Caller", 18, Rarity.COMMON, mage.cards.k.KinjallisCaller.class));
|
||||
cards.add(new SetCardInfo("Kinjalli's Sunwing", 19, Rarity.RARE, mage.cards.k.KinjallisSunwing.class));
|
||||
cards.add(new SetCardInfo("Kitesail Freebooter", 110, Rarity.UNCOMMON, mage.cards.k.KitesailFreebooter.class));
|
||||
cards.add(new SetCardInfo("Kopala, Warden of Waves", 61, Rarity.RARE, mage.cards.k.KopalaWardenOfWaves.class));
|
||||
|
@ -152,6 +157,7 @@ public class Ixalan extends ExpansionSet {
|
|||
cards.add(new SetCardInfo("Shapers' Sanctuary", 206, Rarity.RARE, mage.cards.s.ShapersSanctuary.class));
|
||||
cards.add(new SetCardInfo("Siren Stormtamer", 79, Rarity.UNCOMMON, mage.cards.s.SirenStormtamer.class));
|
||||
cards.add(new SetCardInfo("Skittering Heartstopper", 122, Rarity.COMMON, mage.cards.s.SkitteringHeartstopper.class));
|
||||
cards.add(new SetCardInfo("Skulduggery", 123, Rarity.COMMON, mage.cards.s.Skulduggery.class));
|
||||
cards.add(new SetCardInfo("Sky Terror", 229, Rarity.UNCOMMON, mage.cards.s.SkyTerror.class));
|
||||
cards.add(new SetCardInfo("Sleek Schooner", 247, Rarity.UNCOMMON, mage.cards.s.SleekSchooner.class));
|
||||
cards.add(new SetCardInfo("Slice in Twain", 207, Rarity.UNCOMMON, mage.cards.s.SliceinTwain.class));
|
||||
|
@ -172,6 +178,7 @@ public class Ixalan extends ExpansionSet {
|
|||
cards.add(new SetCardInfo("Temple of Aclazotz", 90, Rarity.RARE, mage.cards.t.TempleOfAclazotz.class));
|
||||
cards.add(new SetCardInfo("Thaumatic Compass", 249, Rarity.RARE, mage.cards.t.ThaumaticCompass.class));
|
||||
cards.add(new SetCardInfo("Thundering Spineback", 210, Rarity.UNCOMMON, mage.cards.t.ThunderingSpineback.class));
|
||||
cards.add(new SetCardInfo("Tilonalli's Knight", 169, Rarity.COMMON, mage.cards.t.TilonallisKnight.class));
|
||||
cards.add(new SetCardInfo("Tilonalli's Skinshifter", 170, Rarity.RARE, mage.cards.t.TilonallisSkinshifter.class));
|
||||
cards.add(new SetCardInfo("Tishana's Wayfinder", 211, Rarity.COMMON, mage.cards.t.TishanasWayfinder.class));
|
||||
cards.add(new SetCardInfo("Tishana, Voice of Thunder", 230, Rarity.MYTHIC, mage.cards.t.TishanaVoiceOfThunder.class));
|
||||
|
|
|
@ -105,7 +105,7 @@ public class ExertTest extends CardTestPlayerBase {
|
|||
setStopAt(1, PhaseStep.POSTCOMBAT_MAIN);
|
||||
execute();
|
||||
|
||||
assertAbility(playerA, minotaur, new MenaceAbility(), true);
|
||||
assertAbility(playerA, minotaur, MenaceAbility.getInstance(), true);
|
||||
assertPowerToughness(playerA, minotaur, 5, 4);
|
||||
}
|
||||
|
||||
|
|
|
@ -203,7 +203,7 @@ public class RenownTest extends CardTestPlayerBase {
|
|||
|
||||
Permanent goblin = getPermanent("Goblin Glory Chaser", playerA);
|
||||
Assert.assertEquals("has has renown", true, goblin.isRenowned());
|
||||
assertAbility(playerA, "Goblin Glory Chaser", new MenaceAbility(), true);
|
||||
assertAbility(playerA, "Goblin Glory Chaser", MenaceAbility.getInstance(), true);
|
||||
assertPowerToughness(playerA, "Goblin Glory Chaser", 2, 2);
|
||||
|
||||
assertLife(playerA, 20);
|
||||
|
|
|
@ -5,28 +5,35 @@
|
|||
*/
|
||||
package mage.abilities.keyword;
|
||||
|
||||
import java.io.ObjectStreamException;
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.StaticAbility;
|
||||
import mage.abilities.EvasionAbility;
|
||||
import mage.abilities.MageSingleton;
|
||||
import mage.abilities.effects.common.combat.CantBeBlockedByOneEffect;
|
||||
import mage.constants.Zone;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author LevelX2
|
||||
*/
|
||||
public class MenaceAbility extends StaticAbility {
|
||||
public class MenaceAbility extends EvasionAbility implements MageSingleton {
|
||||
|
||||
public MenaceAbility() {
|
||||
super(Zone.BATTLEFIELD, new CantBeBlockedByOneEffect(2));
|
||||
private static final MenaceAbility instance = new MenaceAbility();
|
||||
|
||||
private Object readResolve() throws ObjectStreamException {
|
||||
return instance;
|
||||
}
|
||||
|
||||
public MenaceAbility(final MenaceAbility ability) {
|
||||
super(ability);
|
||||
public static MenaceAbility getInstance() {
|
||||
return instance;
|
||||
}
|
||||
|
||||
private MenaceAbility() {
|
||||
this.addEffect(new CantBeBlockedByOneEffect(2));
|
||||
}
|
||||
|
||||
@Override
|
||||
public Ability copy() {
|
||||
return new MenaceAbility(this);
|
||||
return instance;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue