mirror of
https://github.com/magefree/mage.git
synced 2025-12-20 02:30:08 -08:00
simplify constructors for ActivateIfConditionActivatedAbility
This commit is contained in:
parent
bbbc2e5baf
commit
84dc2a27ab
128 changed files with 882 additions and 1299 deletions
|
|
@ -1,7 +1,5 @@
|
||||||
|
|
||||||
package mage.cards.a;
|
package mage.cards.a;
|
||||||
|
|
||||||
import java.util.UUID;
|
|
||||||
import mage.MageInt;
|
import mage.MageInt;
|
||||||
import mage.abilities.Ability;
|
import mage.abilities.Ability;
|
||||||
import mage.abilities.common.ActivateIfConditionActivatedAbility;
|
import mage.abilities.common.ActivateIfConditionActivatedAbility;
|
||||||
|
|
@ -13,25 +11,27 @@ import mage.cards.CardSetInfo;
|
||||||
import mage.constants.CardType;
|
import mage.constants.CardType;
|
||||||
import mage.constants.Duration;
|
import mage.constants.Duration;
|
||||||
import mage.constants.SubType;
|
import mage.constants.SubType;
|
||||||
import mage.constants.Zone;
|
|
||||||
import mage.target.common.TargetCreaturePermanent;
|
import mage.target.common.TargetCreaturePermanent;
|
||||||
|
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
|
||||||
* @author fireshoes
|
* @author fireshoes
|
||||||
*/
|
*/
|
||||||
public final class AlabornVeteran extends CardImpl {
|
public final class AlabornVeteran extends CardImpl {
|
||||||
|
|
||||||
public AlabornVeteran(UUID ownerId, CardSetInfo setInfo) {
|
public AlabornVeteran(UUID ownerId, CardSetInfo setInfo) {
|
||||||
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{W}");
|
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{W}");
|
||||||
this.subtype.add(SubType.HUMAN);
|
this.subtype.add(SubType.HUMAN);
|
||||||
this.subtype.add(SubType.KNIGHT);
|
this.subtype.add(SubType.KNIGHT);
|
||||||
this.power = new MageInt(2);
|
this.power = new MageInt(2);
|
||||||
this.toughness = new MageInt(2);
|
this.toughness = new MageInt(2);
|
||||||
|
|
||||||
// {tap}: Target creature gets +2/+2 until end of turn. Activate this ability only during your turn, before attackers are declared.
|
// {tap}: Target creature gets +2/+2 until end of turn. Activate this ability only during your turn, before attackers are declared.
|
||||||
Ability ability = new ActivateIfConditionActivatedAbility(Zone.BATTLEFIELD,
|
Ability ability = new ActivateIfConditionActivatedAbility(
|
||||||
new BoostTargetEffect(2, 2, Duration.EndOfTurn), new TapSourceCost(), MyTurnBeforeAttackersDeclaredCondition.instance);
|
new BoostTargetEffect(2, 2, Duration.EndOfTurn),
|
||||||
|
new TapSourceCost(), MyTurnBeforeAttackersDeclaredCondition.instance
|
||||||
|
);
|
||||||
ability.addTarget(new TargetCreaturePermanent());
|
ability.addTarget(new TargetCreaturePermanent());
|
||||||
this.addAbility(ability);
|
this.addAbility(ability);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -11,7 +11,10 @@ import mage.abilities.hint.common.CovenHint;
|
||||||
import mage.abilities.keyword.TransformAbility;
|
import mage.abilities.keyword.TransformAbility;
|
||||||
import mage.cards.CardImpl;
|
import mage.cards.CardImpl;
|
||||||
import mage.cards.CardSetInfo;
|
import mage.cards.CardSetInfo;
|
||||||
import mage.constants.*;
|
import mage.constants.AbilityWord;
|
||||||
|
import mage.constants.CardType;
|
||||||
|
import mage.constants.SubType;
|
||||||
|
import mage.constants.SuperType;
|
||||||
import mage.filter.FilterCard;
|
import mage.filter.FilterCard;
|
||||||
import mage.target.common.TargetCardInLibrary;
|
import mage.target.common.TargetCardInLibrary;
|
||||||
|
|
||||||
|
|
@ -46,8 +49,7 @@ public final class AmbitiousFarmhand extends CardImpl {
|
||||||
// Coven—{1}{W}{W}: Transform Ambitious Farmhand. Activate only if you control three or more creatures with different powers.
|
// Coven—{1}{W}{W}: Transform Ambitious Farmhand. Activate only if you control three or more creatures with different powers.
|
||||||
this.addAbility(new TransformAbility());
|
this.addAbility(new TransformAbility());
|
||||||
this.addAbility(new ActivateIfConditionActivatedAbility(
|
this.addAbility(new ActivateIfConditionActivatedAbility(
|
||||||
Zone.BATTLEFIELD, new TransformSourceEffect(),
|
new TransformSourceEffect(), new ManaCostsImpl<>("{1}{W}{W}"), CovenCondition.instance
|
||||||
new ManaCostsImpl<>("{1}{W}{W}"), CovenCondition.instance
|
|
||||||
).setAbilityWord(AbilityWord.COVEN).addHint(CovenHint.instance));
|
).setAbilityWord(AbilityWord.COVEN).addHint(CovenHint.instance));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,28 +1,26 @@
|
||||||
|
|
||||||
package mage.cards.a;
|
package mage.cards.a;
|
||||||
|
|
||||||
import java.util.UUID;
|
|
||||||
import mage.MageInt;
|
import mage.MageInt;
|
||||||
import mage.abilities.Ability;
|
import mage.abilities.Ability;
|
||||||
import mage.abilities.common.ActivateIfConditionActivatedAbility;
|
import mage.abilities.common.ActivateIfConditionActivatedAbility;
|
||||||
import mage.abilities.condition.Condition;
|
import mage.abilities.condition.Condition;
|
||||||
import mage.abilities.costs.common.TapSourceCost;
|
import mage.abilities.costs.common.TapSourceCost;
|
||||||
import mage.abilities.costs.mana.ManaCostsImpl;
|
import mage.abilities.costs.mana.ManaCostsImpl;
|
||||||
import mage.abilities.effects.Effect;
|
|
||||||
import mage.abilities.effects.common.PreventAllDamageByAllPermanentsEffect;
|
import mage.abilities.effects.common.PreventAllDamageByAllPermanentsEffect;
|
||||||
import mage.cards.CardImpl;
|
import mage.cards.CardImpl;
|
||||||
import mage.cards.CardSetInfo;
|
import mage.cards.CardSetInfo;
|
||||||
import mage.constants.*;
|
import mage.constants.*;
|
||||||
import mage.game.Game;
|
import mage.game.Game;
|
||||||
|
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
|
||||||
* @author shieldal
|
* @author shieldal
|
||||||
*/
|
*/
|
||||||
public final class AngusMackenzie extends CardImpl {
|
public final class AngusMackenzie extends CardImpl {
|
||||||
|
|
||||||
public AngusMackenzie(UUID ownerId, CardSetInfo setInfo) {
|
public AngusMackenzie(UUID ownerId, CardSetInfo setInfo) {
|
||||||
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{G}{W}{U}");
|
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{G}{W}{U}");
|
||||||
this.supertype.add(SuperType.LEGENDARY);
|
this.supertype.add(SuperType.LEGENDARY);
|
||||||
this.subtype.add(SubType.HUMAN);
|
this.subtype.add(SubType.HUMAN);
|
||||||
this.subtype.add(SubType.CLERIC);
|
this.subtype.add(SubType.CLERIC);
|
||||||
|
|
@ -30,14 +28,11 @@ public final class AngusMackenzie extends CardImpl {
|
||||||
this.power = new MageInt(2);
|
this.power = new MageInt(2);
|
||||||
this.toughness = new MageInt(2);
|
this.toughness = new MageInt(2);
|
||||||
|
|
||||||
Effect effect = new PreventAllDamageByAllPermanentsEffect(Duration.EndOfTurn, true);
|
|
||||||
effect.setText("Prevent all combat damage that would be dealt this turn");
|
|
||||||
// {G}{W}{U}, {tap}: Prevent all combat damage that would be dealt this turn. Activate this ability only before the combat damage step.
|
// {G}{W}{U}, {tap}: Prevent all combat damage that would be dealt this turn. Activate this ability only before the combat damage step.
|
||||||
Ability ability = new ActivateIfConditionActivatedAbility(
|
Ability ability = new ActivateIfConditionActivatedAbility(
|
||||||
Zone.BATTLEFIELD,
|
new PreventAllDamageByAllPermanentsEffect(Duration.EndOfTurn, true)
|
||||||
effect,
|
.setText("Prevent all combat damage that would be dealt this turn"),
|
||||||
new ManaCostsImpl<>("{G}{W}{U}"),
|
new ManaCostsImpl<>("{G}{W}{U}"), BeforeCombatDamageCondition.getInstance()
|
||||||
BeforeCombatDamageCondition.getInstance()
|
|
||||||
);
|
);
|
||||||
ability.addCost(new TapSourceCost());
|
ability.addCost(new TapSourceCost());
|
||||||
this.addAbility(ability);
|
this.addAbility(ability);
|
||||||
|
|
@ -62,15 +57,15 @@ class BeforeCombatDamageCondition implements Condition {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean apply(Game game, Ability source) {
|
public boolean apply(Game game, Ability source) {
|
||||||
PhaseStep phaseStep = game.getTurnStepType();
|
PhaseStep phaseStep = game.getTurnStepType();
|
||||||
if(phaseStep.getIndex() < PhaseStep.FIRST_COMBAT_DAMAGE.getIndex()) {
|
if (phaseStep.getIndex() < PhaseStep.FIRST_COMBAT_DAMAGE.getIndex()) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String toString() {
|
public String toString() {
|
||||||
return "before the combat damage step";
|
return "before the combat damage step";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,5 @@
|
||||||
|
|
||||||
package mage.cards.a;
|
package mage.cards.a;
|
||||||
|
|
||||||
import java.util.UUID;
|
|
||||||
import mage.MageInt;
|
import mage.MageInt;
|
||||||
import mage.abilities.Ability;
|
import mage.abilities.Ability;
|
||||||
import mage.abilities.common.ActivateIfConditionActivatedAbility;
|
import mage.abilities.common.ActivateIfConditionActivatedAbility;
|
||||||
|
|
@ -12,25 +10,27 @@ import mage.cards.CardImpl;
|
||||||
import mage.cards.CardSetInfo;
|
import mage.cards.CardSetInfo;
|
||||||
import mage.constants.CardType;
|
import mage.constants.CardType;
|
||||||
import mage.constants.SubType;
|
import mage.constants.SubType;
|
||||||
import mage.constants.Zone;
|
|
||||||
import mage.target.common.TargetAnyTarget;
|
import mage.target.common.TargetAnyTarget;
|
||||||
|
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
|
||||||
* @author fireshoes
|
* @author fireshoes
|
||||||
*/
|
*/
|
||||||
public final class ApprenticeSorcerer extends CardImpl {
|
public final class ApprenticeSorcerer extends CardImpl {
|
||||||
|
|
||||||
public ApprenticeSorcerer(UUID ownerId, CardSetInfo setInfo) {
|
public ApprenticeSorcerer(UUID ownerId, CardSetInfo setInfo) {
|
||||||
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{U}");
|
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{U}");
|
||||||
this.subtype.add(SubType.HUMAN);
|
this.subtype.add(SubType.HUMAN);
|
||||||
this.subtype.add(SubType.WIZARD);
|
this.subtype.add(SubType.WIZARD);
|
||||||
this.power = new MageInt(1);
|
this.power = new MageInt(1);
|
||||||
this.toughness = new MageInt(1);
|
this.toughness = new MageInt(1);
|
||||||
|
|
||||||
// {tap}: Apprentice Sorcerer deals 1 damage to any target. Activate this ability only during your turn, before attackers are declared.
|
// {tap}: Apprentice Sorcerer deals 1 damage to any target. Activate this ability only during your turn, before attackers are declared.
|
||||||
Ability ability = new ActivateIfConditionActivatedAbility(Zone.BATTLEFIELD,
|
Ability ability = new ActivateIfConditionActivatedAbility(
|
||||||
new DamageTargetEffect(1), new TapSourceCost(), MyTurnBeforeAttackersDeclaredCondition.instance);
|
new DamageTargetEffect(1), new TapSourceCost(),
|
||||||
|
MyTurnBeforeAttackersDeclaredCondition.instance
|
||||||
|
);
|
||||||
ability.addTarget(new TargetAnyTarget());
|
ability.addTarget(new TargetAnyTarget());
|
||||||
this.addAbility(ability);
|
this.addAbility(ability);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -37,13 +37,9 @@ public final class ArgentSphinx extends CardImpl {
|
||||||
this.addAbility(FlyingAbility.getInstance());
|
this.addAbility(FlyingAbility.getInstance());
|
||||||
|
|
||||||
// <i>Metalcraft</i> — {U}: Exile Argent Sphinx. Return it to the battlefield under your control at the beginning of the next end step. Activate this ability only if you control three or more artifacts.
|
// <i>Metalcraft</i> — {U}: Exile Argent Sphinx. Return it to the battlefield under your control at the beginning of the next end step. Activate this ability only if you control three or more artifacts.
|
||||||
Ability ability = new ActivateIfConditionActivatedAbility(
|
this.addAbility(new ActivateIfConditionActivatedAbility(
|
||||||
Zone.BATTLEFIELD, new ArgentSphinxEffect(),
|
new ArgentSphinxEffect(), new ManaCostsImpl<>("{U}"), MetalcraftCondition.instance
|
||||||
new ManaCostsImpl<>("{U}"), MetalcraftCondition.instance
|
).setAbilityWord(AbilityWord.METALCRAFT).addHint(MetalcraftHint.instance));
|
||||||
);
|
|
||||||
ability.setAbilityWord(AbilityWord.METALCRAFT);
|
|
||||||
ability.addHint(MetalcraftHint.instance);
|
|
||||||
this.addAbility(ability);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private ArgentSphinx(final ArgentSphinx card) {
|
private ArgentSphinx(final ArgentSphinx card) {
|
||||||
|
|
|
||||||
|
|
@ -1,38 +1,36 @@
|
||||||
|
|
||||||
package mage.cards.a;
|
package mage.cards.a;
|
||||||
|
|
||||||
import java.util.UUID;
|
|
||||||
import mage.MageInt;
|
import mage.MageInt;
|
||||||
import mage.abilities.Ability;
|
|
||||||
import mage.abilities.common.ActivateIfConditionActivatedAbility;
|
import mage.abilities.common.ActivateIfConditionActivatedAbility;
|
||||||
import mage.abilities.condition.common.FormidableCondition;
|
import mage.abilities.condition.common.FormidableCondition;
|
||||||
import mage.abilities.costs.mana.ManaCostsImpl;
|
import mage.abilities.costs.mana.ManaCostsImpl;
|
||||||
import mage.abilities.effects.common.continuous.BoostSourceEffect;
|
import mage.abilities.effects.common.continuous.BoostSourceEffect;
|
||||||
import mage.cards.CardImpl;
|
import mage.cards.CardImpl;
|
||||||
import mage.cards.CardSetInfo;
|
import mage.cards.CardSetInfo;
|
||||||
import mage.constants.*;
|
import mage.constants.AbilityWord;
|
||||||
|
import mage.constants.CardType;
|
||||||
|
import mage.constants.Duration;
|
||||||
|
import mage.constants.SubType;
|
||||||
|
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
|
||||||
* @author LevelX2
|
* @author LevelX2
|
||||||
*/
|
*/
|
||||||
public final class AtarkaBeastbreaker extends CardImpl {
|
public final class AtarkaBeastbreaker extends CardImpl {
|
||||||
|
|
||||||
public AtarkaBeastbreaker(UUID ownerId, CardSetInfo setInfo) {
|
public AtarkaBeastbreaker(UUID ownerId, CardSetInfo setInfo) {
|
||||||
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}");
|
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{G}");
|
||||||
this.subtype.add(SubType.HUMAN);
|
this.subtype.add(SubType.HUMAN);
|
||||||
this.subtype.add(SubType.WARRIOR);
|
this.subtype.add(SubType.WARRIOR);
|
||||||
this.power = new MageInt(2);
|
this.power = new MageInt(2);
|
||||||
this.toughness = new MageInt(2);
|
this.toughness = new MageInt(2);
|
||||||
|
|
||||||
// <i>Formidable</i> — {4}{G}: Atarka Beastbreaker gets +4/+4 until end of turn. Activate this only if creatures you control have total power 8 or greater.
|
// <i>Formidable</i> — {4}{G}: Atarka Beastbreaker gets +4/+4 until end of turn. Activate this only if creatures you control have total power 8 or greater.
|
||||||
Ability ability = new ActivateIfConditionActivatedAbility(
|
this.addAbility(new ActivateIfConditionActivatedAbility(
|
||||||
Zone.BATTLEFIELD,
|
new BoostSourceEffect(4, 4, Duration.EndOfTurn),
|
||||||
new BoostSourceEffect(4,4, Duration.EndOfTurn),
|
new ManaCostsImpl<>("{4}{G}"), FormidableCondition.instance
|
||||||
new ManaCostsImpl<>("{4}{G}"),
|
).setAbilityWord(AbilityWord.FORMIDABLE));
|
||||||
FormidableCondition.instance);
|
|
||||||
ability.setAbilityWord(AbilityWord.FORMIDABLE);
|
|
||||||
this.addAbility(ability);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private AtarkaBeastbreaker(final AtarkaBeastbreaker card) {
|
private AtarkaBeastbreaker(final AtarkaBeastbreaker card) {
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,6 @@
|
||||||
package mage.cards.a;
|
package mage.cards.a;
|
||||||
|
|
||||||
import java.util.UUID;
|
|
||||||
import mage.MageInt;
|
import mage.MageInt;
|
||||||
import mage.abilities.Ability;
|
|
||||||
import mage.abilities.common.ActivateIfConditionActivatedAbility;
|
import mage.abilities.common.ActivateIfConditionActivatedAbility;
|
||||||
import mage.abilities.condition.common.FormidableCondition;
|
import mage.abilities.condition.common.FormidableCondition;
|
||||||
import mage.abilities.costs.mana.ManaCostsImpl;
|
import mage.abilities.costs.mana.ManaCostsImpl;
|
||||||
|
|
@ -10,31 +8,30 @@ import mage.abilities.effects.common.continuous.GainAbilityAllEffect;
|
||||||
import mage.abilities.keyword.MenaceAbility;
|
import mage.abilities.keyword.MenaceAbility;
|
||||||
import mage.cards.CardImpl;
|
import mage.cards.CardImpl;
|
||||||
import mage.cards.CardSetInfo;
|
import mage.cards.CardSetInfo;
|
||||||
import mage.constants.*;
|
import mage.constants.AbilityWord;
|
||||||
|
import mage.constants.CardType;
|
||||||
|
import mage.constants.Duration;
|
||||||
|
import mage.constants.SubType;
|
||||||
import mage.filter.StaticFilters;
|
import mage.filter.StaticFilters;
|
||||||
|
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
|
||||||
* @author LevelX2
|
* @author LevelX2
|
||||||
*/
|
*/
|
||||||
public final class AtarkaPummeler extends CardImpl {
|
public final class AtarkaPummeler extends CardImpl {
|
||||||
|
|
||||||
public AtarkaPummeler(UUID ownerId, CardSetInfo setInfo) {
|
public AtarkaPummeler(UUID ownerId, CardSetInfo setInfo) {
|
||||||
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{R}");
|
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{R}");
|
||||||
this.subtype.add(SubType.OGRE);
|
this.subtype.add(SubType.OGRE);
|
||||||
this.subtype.add(SubType.WARRIOR);
|
this.subtype.add(SubType.WARRIOR);
|
||||||
this.power = new MageInt(4);
|
this.power = new MageInt(4);
|
||||||
this.toughness = new MageInt(5);
|
this.toughness = new MageInt(5);
|
||||||
|
|
||||||
// <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.)
|
// <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(
|
this.addAbility(new ActivateIfConditionActivatedAbility(new GainAbilityAllEffect(
|
||||||
Zone.BATTLEFIELD,
|
new MenaceAbility(false), Duration.EndOfTurn, StaticFilters.FILTER_CONTROLLED_CREATURES
|
||||||
new GainAbilityAllEffect(new MenaceAbility(), Duration.EndOfTurn, StaticFilters.FILTER_CONTROLLED_CREATURES),
|
), new ManaCostsImpl<>("{3}{R}{R}"), FormidableCondition.instance).setAbilityWord(AbilityWord.FORMIDABLE));
|
||||||
new ManaCostsImpl<>("{3}{R}{R}"),
|
|
||||||
FormidableCondition.instance);
|
|
||||||
ability.setAbilityWord(AbilityWord.FORMIDABLE);
|
|
||||||
this.addAbility(ability);
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private AtarkaPummeler(final AtarkaPummeler card) {
|
private AtarkaPummeler(final AtarkaPummeler card) {
|
||||||
|
|
|
||||||
|
|
@ -9,13 +9,13 @@ import mage.abilities.costs.common.TapSourceCost;
|
||||||
import mage.abilities.costs.mana.ManaCostsImpl;
|
import mage.abilities.costs.mana.ManaCostsImpl;
|
||||||
import mage.abilities.dynamicvalue.common.GetXValue;
|
import mage.abilities.dynamicvalue.common.GetXValue;
|
||||||
import mage.abilities.effects.keyword.AmassEffect;
|
import mage.abilities.effects.keyword.AmassEffect;
|
||||||
|
import mage.abilities.hint.common.MorbidHint;
|
||||||
import mage.abilities.mana.BlackManaAbility;
|
import mage.abilities.mana.BlackManaAbility;
|
||||||
import mage.cards.CardImpl;
|
import mage.cards.CardImpl;
|
||||||
import mage.cards.CardSetInfo;
|
import mage.cards.CardSetInfo;
|
||||||
import mage.constants.CardType;
|
import mage.constants.CardType;
|
||||||
import mage.constants.SubType;
|
import mage.constants.SubType;
|
||||||
import mage.constants.SuperType;
|
import mage.constants.SuperType;
|
||||||
import mage.constants.Zone;
|
|
||||||
import mage.filter.FilterPermanent;
|
import mage.filter.FilterPermanent;
|
||||||
import mage.filter.common.FilterControlledCreaturePermanent;
|
import mage.filter.common.FilterControlledCreaturePermanent;
|
||||||
|
|
||||||
|
|
@ -47,13 +47,11 @@ public final class BaradDur extends CardImpl {
|
||||||
|
|
||||||
// {X}{X}{B}, {T}: Amass Orcs X. Activate only if a creature died this turn.
|
// {X}{X}{B}, {T}: Amass Orcs X. Activate only if a creature died this turn.
|
||||||
Ability ability = new ActivateIfConditionActivatedAbility(
|
Ability ability = new ActivateIfConditionActivatedAbility(
|
||||||
Zone.BATTLEFIELD,
|
|
||||||
new AmassEffect(GetXValue.instance, SubType.ORC, false),
|
new AmassEffect(GetXValue.instance, SubType.ORC, false),
|
||||||
new ManaCostsImpl<>("{X}{X}{B}"),
|
new ManaCostsImpl<>("{X}{X}{B}"), MorbidCondition.instance
|
||||||
MorbidCondition.instance
|
|
||||||
);
|
);
|
||||||
ability.addCost(new TapSourceCost());
|
ability.addCost(new TapSourceCost());
|
||||||
this.addAbility(ability);
|
this.addAbility(ability.addHint(MorbidHint.instance));
|
||||||
}
|
}
|
||||||
|
|
||||||
private BaradDur(final BaradDur card) {
|
private BaradDur(final BaradDur card) {
|
||||||
|
|
|
||||||
|
|
@ -1,18 +1,17 @@
|
||||||
|
|
||||||
package mage.cards.b;
|
package mage.cards.b;
|
||||||
|
|
||||||
import java.util.UUID;
|
|
||||||
|
|
||||||
import mage.MageInt;
|
import mage.MageInt;
|
||||||
import mage.abilities.Ability;
|
|
||||||
import mage.abilities.common.ActivateIfConditionActivatedAbility;
|
import mage.abilities.common.ActivateIfConditionActivatedAbility;
|
||||||
import mage.abilities.common.SimpleActivatedAbility;
|
import mage.abilities.common.SimpleActivatedAbility;
|
||||||
|
import mage.abilities.condition.Condition;
|
||||||
import mage.abilities.condition.common.PermanentsOnTheBattlefieldCondition;
|
import mage.abilities.condition.common.PermanentsOnTheBattlefieldCondition;
|
||||||
import mage.abilities.costs.common.TapSourceCost;
|
import mage.abilities.costs.common.TapSourceCost;
|
||||||
import mage.abilities.costs.mana.ManaCostsImpl;
|
import mage.abilities.costs.mana.ManaCostsImpl;
|
||||||
import mage.abilities.dynamicvalue.common.PermanentsOnBattlefieldCount;
|
import mage.abilities.dynamicvalue.common.PermanentsOnBattlefieldCount;
|
||||||
import mage.abilities.effects.common.CreateTokenEffect;
|
import mage.abilities.effects.common.CreateTokenEffect;
|
||||||
import mage.abilities.effects.common.TransformSourceEffect;
|
import mage.abilities.effects.common.TransformSourceEffect;
|
||||||
|
import mage.abilities.hint.Hint;
|
||||||
import mage.abilities.hint.ValueHint;
|
import mage.abilities.hint.ValueHint;
|
||||||
import mage.abilities.keyword.FlyingAbility;
|
import mage.abilities.keyword.FlyingAbility;
|
||||||
import mage.abilities.keyword.TransformAbility;
|
import mage.abilities.keyword.TransformAbility;
|
||||||
|
|
@ -21,16 +20,22 @@ import mage.cards.CardSetInfo;
|
||||||
import mage.constants.CardType;
|
import mage.constants.CardType;
|
||||||
import mage.constants.ComparisonType;
|
import mage.constants.ComparisonType;
|
||||||
import mage.constants.SubType;
|
import mage.constants.SubType;
|
||||||
import mage.constants.Zone;
|
import mage.filter.FilterPermanent;
|
||||||
import mage.filter.common.FilterControlledPermanent;
|
import mage.filter.common.FilterControlledPermanent;
|
||||||
import mage.game.permanent.token.VampireToken;
|
import mage.game.permanent.token.VampireToken;
|
||||||
|
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author Loki
|
* @author Loki
|
||||||
*/
|
*/
|
||||||
public final class BloodlineKeeper extends CardImpl {
|
public final class BloodlineKeeper extends CardImpl {
|
||||||
|
|
||||||
private static final FilterControlledPermanent filter = new FilterControlledPermanent(SubType.VAMPIRE, "you control five or more Vampires");
|
private static final FilterPermanent filter
|
||||||
|
= new FilterControlledPermanent(SubType.VAMPIRE, "you control five or more Vampires");
|
||||||
|
private static final Condition condition
|
||||||
|
= new PermanentsOnTheBattlefieldCondition(filter, ComparisonType.MORE_THAN, 4);
|
||||||
|
private static final Hint hint = new ValueHint("Vampires you control", new PermanentsOnBattlefieldCount(filter));
|
||||||
|
|
||||||
public BloodlineKeeper(UUID ownerId, CardSetInfo setInfo) {
|
public BloodlineKeeper(UUID ownerId, CardSetInfo setInfo) {
|
||||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{B}{B}");
|
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{B}{B}");
|
||||||
|
|
@ -42,15 +47,15 @@ public final class BloodlineKeeper extends CardImpl {
|
||||||
this.secondSideCardClazz = mage.cards.l.LordOfLineage.class;
|
this.secondSideCardClazz = mage.cards.l.LordOfLineage.class;
|
||||||
|
|
||||||
this.addAbility(FlyingAbility.getInstance());
|
this.addAbility(FlyingAbility.getInstance());
|
||||||
|
|
||||||
// {T}: Create a 2/2 black Vampire creature token with flying.
|
// {T}: Create a 2/2 black Vampire creature token with flying.
|
||||||
this.addAbility(new SimpleActivatedAbility(new CreateTokenEffect(new VampireToken()), new TapSourceCost()));
|
this.addAbility(new SimpleActivatedAbility(new CreateTokenEffect(new VampireToken()), new TapSourceCost()));
|
||||||
|
|
||||||
// {B}: Transform Bloodline Keeper. Activate this ability only if you control five or more Vampires.
|
// {B}: Transform Bloodline Keeper. Activate this ability only if you control five or more Vampires.
|
||||||
this.addAbility(new TransformAbility());
|
this.addAbility(new TransformAbility());
|
||||||
Ability ability = new ActivateIfConditionActivatedAbility(Zone.BATTLEFIELD,
|
this.addAbility(new ActivateIfConditionActivatedAbility(
|
||||||
new TransformSourceEffect(),
|
new TransformSourceEffect(), new ManaCostsImpl<>("{B}"), condition
|
||||||
new ManaCostsImpl<>("{B}"),
|
).addHint(hint));
|
||||||
new PermanentsOnTheBattlefieldCondition(filter, ComparisonType.MORE_THAN, 4));
|
|
||||||
this.addAbility(ability.addHint(new ValueHint("Vampires you control", new PermanentsOnBattlefieldCount(filter))));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private BloodlineKeeper(final BloodlineKeeper card) {
|
private BloodlineKeeper(final BloodlineKeeper card) {
|
||||||
|
|
|
||||||
|
|
@ -10,7 +10,6 @@ import mage.cards.CardImpl;
|
||||||
import mage.cards.CardSetInfo;
|
import mage.cards.CardSetInfo;
|
||||||
import mage.constants.CardType;
|
import mage.constants.CardType;
|
||||||
import mage.constants.SubType;
|
import mage.constants.SubType;
|
||||||
import mage.constants.Zone;
|
|
||||||
import mage.game.Game;
|
import mage.game.Game;
|
||||||
import mage.game.permanent.Permanent;
|
import mage.game.permanent.Permanent;
|
||||||
import mage.target.common.TargetCreaturePermanent;
|
import mage.target.common.TargetCreaturePermanent;
|
||||||
|
|
@ -31,8 +30,7 @@ public final class BloodshotTrainee extends CardImpl {
|
||||||
this.toughness = new MageInt(3);
|
this.toughness = new MageInt(3);
|
||||||
|
|
||||||
Ability ability = new ActivateIfConditionActivatedAbility(
|
Ability ability = new ActivateIfConditionActivatedAbility(
|
||||||
Zone.BATTLEFIELD, new DamageTargetEffect(4),
|
new DamageTargetEffect(4), new TapSourceCost(), BloodshotTraineeCondition.instance
|
||||||
new TapSourceCost(), BloodshotTraineeCondition.instance
|
|
||||||
);
|
);
|
||||||
ability.addTarget(new TargetCreaturePermanent());
|
ability.addTarget(new TargetCreaturePermanent());
|
||||||
this.addAbility(ability);
|
this.addAbility(ability);
|
||||||
|
|
|
||||||
|
|
@ -1,10 +1,10 @@
|
||||||
package mage.cards.b;
|
package mage.cards.b;
|
||||||
|
|
||||||
import java.util.UUID;
|
|
||||||
import mage.MageInt;
|
import mage.MageInt;
|
||||||
import mage.abilities.Ability;
|
import mage.abilities.Ability;
|
||||||
import mage.abilities.common.ActivateIfConditionActivatedAbility;
|
import mage.abilities.common.ActivateIfConditionActivatedAbility;
|
||||||
import mage.abilities.common.SimpleActivatedAbility;
|
import mage.abilities.common.SimpleActivatedAbility;
|
||||||
|
import mage.abilities.condition.Condition;
|
||||||
import mage.abilities.condition.common.PermanentsOnTheBattlefieldCondition;
|
import mage.abilities.condition.common.PermanentsOnTheBattlefieldCondition;
|
||||||
import mage.abilities.costs.common.TapSourceCost;
|
import mage.abilities.costs.common.TapSourceCost;
|
||||||
import mage.abilities.dynamicvalue.DynamicValue;
|
import mage.abilities.dynamicvalue.DynamicValue;
|
||||||
|
|
@ -17,37 +17,40 @@ import mage.cards.CardSetInfo;
|
||||||
import mage.constants.CardType;
|
import mage.constants.CardType;
|
||||||
import mage.constants.Duration;
|
import mage.constants.Duration;
|
||||||
import mage.constants.SubType;
|
import mage.constants.SubType;
|
||||||
import mage.constants.Zone;
|
|
||||||
import mage.counters.CounterType;
|
import mage.counters.CounterType;
|
||||||
import mage.filter.common.FilterControlledPermanent;
|
import mage.filter.common.FilterControlledPermanent;
|
||||||
import mage.target.common.TargetCreaturePermanent;
|
import mage.target.common.TargetCreaturePermanent;
|
||||||
|
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
|
||||||
* @author LevelX
|
* @author LevelX
|
||||||
*/
|
*/
|
||||||
public final class BloodthirstyOgre extends CardImpl {
|
public final class BloodthirstyOgre extends CardImpl {
|
||||||
|
|
||||||
private static final FilterControlledPermanent filter = new FilterControlledPermanent(SubType.DEMON, "you control a Demon");
|
|
||||||
private static final DynamicValue xValue = new SignInversionDynamicValue(new CountersSourceCount(CounterType.DEVOTION));
|
private static final DynamicValue xValue = new SignInversionDynamicValue(new CountersSourceCount(CounterType.DEVOTION));
|
||||||
|
|
||||||
|
private static final Condition condition = new PermanentsOnTheBattlefieldCondition(
|
||||||
|
new FilterControlledPermanent(SubType.DEMON, "you control a Demon")
|
||||||
|
);
|
||||||
|
|
||||||
public BloodthirstyOgre(UUID ownerId, CardSetInfo setInfo) {
|
public BloodthirstyOgre(UUID ownerId, CardSetInfo setInfo) {
|
||||||
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}");
|
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{B}");
|
||||||
this.subtype.add(SubType.OGRE, SubType.WARRIOR, SubType.SHAMAN);
|
this.subtype.add(SubType.OGRE, SubType.WARRIOR, SubType.SHAMAN);
|
||||||
|
|
||||||
this.power = new MageInt(3);
|
this.power = new MageInt(3);
|
||||||
this.toughness = new MageInt(1);
|
this.toughness = new MageInt(1);
|
||||||
|
|
||||||
// {T}: Put a devotion counter on Bloodthirsty Ogre
|
// {T}: Put a devotion counter on Bloodthirsty Ogre
|
||||||
this.addAbility(new SimpleActivatedAbility(new AddCountersSourceEffect(CounterType.DEVOTION.createInstance()),new TapSourceCost()));
|
this.addAbility(new SimpleActivatedAbility(new AddCountersSourceEffect(CounterType.DEVOTION.createInstance()), new TapSourceCost()));
|
||||||
|
|
||||||
// {T}: Target creature gets -X/-X until end of turn, where X is the number of devotion counters on Bloodthirsty Ogre. Activate this ability only if you control a Demon.
|
// {T}: Target creature gets -X/-X until end of turn, where X is the number of devotion counters on Bloodthirsty Ogre. Activate this ability only if you control a Demon.
|
||||||
|
Ability ability = new ActivateIfConditionActivatedAbility(
|
||||||
Ability ability = new ActivateIfConditionActivatedAbility(Zone.BATTLEFIELD,
|
|
||||||
new BoostTargetEffect(xValue, xValue, Duration.EndOfTurn)
|
new BoostTargetEffect(xValue, xValue, Duration.EndOfTurn)
|
||||||
.setText("target creature gets -X/-X until end of turn, where X is the number of devotion counters on {this}"),
|
.setText("target creature gets -X/-X until end of turn, " +
|
||||||
new TapSourceCost(),
|
"where X is the number of devotion counters on {this}"),
|
||||||
new PermanentsOnTheBattlefieldCondition(filter));
|
new TapSourceCost(), condition
|
||||||
|
);
|
||||||
ability.addTarget(new TargetCreaturePermanent());
|
ability.addTarget(new TargetCreaturePermanent());
|
||||||
this.addAbility(ability);
|
this.addAbility(ability);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -10,7 +10,6 @@ import mage.abilities.mana.ColorlessManaAbility;
|
||||||
import mage.cards.CardImpl;
|
import mage.cards.CardImpl;
|
||||||
import mage.cards.CardSetInfo;
|
import mage.cards.CardSetInfo;
|
||||||
import mage.constants.CardType;
|
import mage.constants.CardType;
|
||||||
import mage.constants.Zone;
|
|
||||||
|
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
||||||
|
|
@ -27,8 +26,7 @@ public final class BondersEnclave extends CardImpl {
|
||||||
|
|
||||||
// {3}, {T}: Draw a card. Activate this ability only if you control a creature with power 4 or greater.
|
// {3}, {T}: Draw a card. Activate this ability only if you control a creature with power 4 or greater.
|
||||||
Ability ability = new ActivateIfConditionActivatedAbility(
|
Ability ability = new ActivateIfConditionActivatedAbility(
|
||||||
Zone.BATTLEFIELD, new DrawCardSourceControllerEffect(1),
|
new DrawCardSourceControllerEffect(1), new GenericManaCost(3), FerociousCondition.instance
|
||||||
new GenericManaCost(3), FerociousCondition.instance
|
|
||||||
);
|
);
|
||||||
ability.addCost(new TapSourceCost());
|
ability.addCost(new TapSourceCost());
|
||||||
this.addAbility(ability);
|
this.addAbility(ability);
|
||||||
|
|
|
||||||
|
|
@ -8,8 +8,9 @@ import mage.abilities.costs.mana.GenericManaCost;
|
||||||
import mage.abilities.effects.common.continuous.SetBasePowerToughnessSourceEffect;
|
import mage.abilities.effects.common.continuous.SetBasePowerToughnessSourceEffect;
|
||||||
import mage.cards.CardImpl;
|
import mage.cards.CardImpl;
|
||||||
import mage.cards.CardSetInfo;
|
import mage.cards.CardSetInfo;
|
||||||
import mage.constants.*;
|
import mage.constants.CardType;
|
||||||
import mage.filter.FilterPermanent;
|
import mage.constants.Duration;
|
||||||
|
import mage.constants.SubType;
|
||||||
import mage.filter.common.FilterControlledPlaneswalkerPermanent;
|
import mage.filter.common.FilterControlledPlaneswalkerPermanent;
|
||||||
|
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
@ -19,9 +20,9 @@ import java.util.UUID;
|
||||||
*/
|
*/
|
||||||
public final class BramblefortFink extends CardImpl {
|
public final class BramblefortFink extends CardImpl {
|
||||||
|
|
||||||
private static final FilterPermanent filter
|
private static final Condition condition = new PermanentsOnTheBattlefieldCondition(
|
||||||
= new FilterControlledPlaneswalkerPermanent(SubType.OKO, "you control an Oko planeswalker");
|
new FilterControlledPlaneswalkerPermanent(SubType.OKO, "you control an Oko planeswalker")
|
||||||
private static final Condition condition = new PermanentsOnTheBattlefieldCondition(filter);
|
);
|
||||||
|
|
||||||
public BramblefortFink(UUID ownerId, CardSetInfo setInfo) {
|
public BramblefortFink(UUID ownerId, CardSetInfo setInfo) {
|
||||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{G}");
|
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{G}");
|
||||||
|
|
@ -32,10 +33,10 @@ public final class BramblefortFink extends CardImpl {
|
||||||
|
|
||||||
// {8}: Bramblefort Fink has base power and toughness 10/10 until end of turn. Activate this ability only if you control an Oko planeswalker.
|
// {8}: Bramblefort Fink has base power and toughness 10/10 until end of turn. Activate this ability only if you control an Oko planeswalker.
|
||||||
this.addAbility(new ActivateIfConditionActivatedAbility(
|
this.addAbility(new ActivateIfConditionActivatedAbility(
|
||||||
Zone.BATTLEFIELD,
|
new SetBasePowerToughnessSourceEffect(
|
||||||
new SetBasePowerToughnessSourceEffect(10, 10, Duration.EndOfTurn),
|
10, 10, Duration.EndOfTurn
|
||||||
new GenericManaCost(8),
|
), new GenericManaCost(8), condition
|
||||||
condition));
|
));
|
||||||
}
|
}
|
||||||
|
|
||||||
private BramblefortFink(final BramblefortFink card) {
|
private BramblefortFink(final BramblefortFink card) {
|
||||||
|
|
|
||||||
|
|
@ -12,7 +12,6 @@ import mage.cards.CardImpl;
|
||||||
import mage.cards.CardSetInfo;
|
import mage.cards.CardSetInfo;
|
||||||
import mage.constants.CardType;
|
import mage.constants.CardType;
|
||||||
import mage.constants.SubType;
|
import mage.constants.SubType;
|
||||||
import mage.constants.Zone;
|
|
||||||
|
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
||||||
|
|
@ -30,8 +29,7 @@ public final class CagedZombie extends CardImpl {
|
||||||
|
|
||||||
// {1}{B}, {T}: Each opponent loses 2 life. Activate this ability only if a creature died this turn.
|
// {1}{B}, {T}: Each opponent loses 2 life. Activate this ability only if a creature died this turn.
|
||||||
Ability ability = new ActivateIfConditionActivatedAbility(
|
Ability ability = new ActivateIfConditionActivatedAbility(
|
||||||
Zone.BATTLEFIELD, new LoseLifeOpponentsEffect(2),
|
new LoseLifeOpponentsEffect(2), new ManaCostsImpl<>("{1}{B}"), MorbidCondition.instance
|
||||||
new ManaCostsImpl<>("{1}{B}"), MorbidCondition.instance
|
|
||||||
);
|
);
|
||||||
ability.addCost(new TapSourceCost());
|
ability.addCost(new TapSourceCost());
|
||||||
this.addAbility(ability.addHint(MorbidHint.instance));
|
this.addAbility(ability.addHint(MorbidHint.instance));
|
||||||
|
|
|
||||||
|
|
@ -1,28 +1,27 @@
|
||||||
package mage.cards.c;
|
package mage.cards.c;
|
||||||
|
|
||||||
import java.util.UUID;
|
import mage.abilities.Ability;
|
||||||
|
|
||||||
import mage.abilities.common.ActivateIfConditionActivatedAbility;
|
import mage.abilities.common.ActivateIfConditionActivatedAbility;
|
||||||
import mage.abilities.common.SimpleStaticAbility;
|
import mage.abilities.common.SimpleStaticAbility;
|
||||||
import mage.abilities.condition.common.CovenCondition;
|
import mage.abilities.condition.common.CovenCondition;
|
||||||
import mage.abilities.costs.common.SacrificeSourceCost;
|
import mage.abilities.costs.common.SacrificeSourceCost;
|
||||||
import mage.abilities.costs.mana.ManaCostsImpl;
|
import mage.abilities.costs.mana.ManaCostsImpl;
|
||||||
|
import mage.abilities.effects.common.AttachEffect;
|
||||||
import mage.abilities.effects.common.ExileAttachedEffect;
|
import mage.abilities.effects.common.ExileAttachedEffect;
|
||||||
import mage.abilities.effects.common.PreventAllDamageByAttachedEffect;
|
import mage.abilities.effects.common.PreventAllDamageByAttachedEffect;
|
||||||
import mage.abilities.effects.common.continuous.GainAbilityAttachedEffect;
|
import mage.abilities.effects.common.continuous.GainAbilityAttachedEffect;
|
||||||
import mage.abilities.hint.common.CovenHint;
|
import mage.abilities.hint.common.CovenHint;
|
||||||
import mage.abilities.keyword.DefenderAbility;
|
import mage.abilities.keyword.DefenderAbility;
|
||||||
import mage.constants.*;
|
|
||||||
import mage.target.common.TargetCreaturePermanent;
|
|
||||||
import mage.abilities.Ability;
|
|
||||||
import mage.abilities.effects.common.AttachEffect;
|
|
||||||
import mage.target.TargetPermanent;
|
|
||||||
import mage.abilities.keyword.EnchantAbility;
|
import mage.abilities.keyword.EnchantAbility;
|
||||||
import mage.cards.CardImpl;
|
import mage.cards.CardImpl;
|
||||||
import mage.cards.CardSetInfo;
|
import mage.cards.CardSetInfo;
|
||||||
|
import mage.constants.*;
|
||||||
|
import mage.target.TargetPermanent;
|
||||||
|
import mage.target.common.TargetCreaturePermanent;
|
||||||
|
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
|
||||||
* @author weirddan455
|
* @author weirddan455
|
||||||
*/
|
*/
|
||||||
public final class Candletrap extends CardImpl {
|
public final class Candletrap extends CardImpl {
|
||||||
|
|
@ -36,21 +35,22 @@ public final class Candletrap extends CardImpl {
|
||||||
TargetPermanent auraTarget = new TargetCreaturePermanent();
|
TargetPermanent auraTarget = new TargetCreaturePermanent();
|
||||||
this.getSpellAbility().addTarget(auraTarget);
|
this.getSpellAbility().addTarget(auraTarget);
|
||||||
this.getSpellAbility().addEffect(new AttachEffect(Outcome.BoostCreature));
|
this.getSpellAbility().addEffect(new AttachEffect(Outcome.BoostCreature));
|
||||||
Ability ability = new EnchantAbility(auraTarget);
|
this.addAbility(new EnchantAbility(auraTarget));
|
||||||
this.addAbility(ability);
|
|
||||||
|
|
||||||
// Enchanted creature has defender.
|
// Enchanted creature has defender.
|
||||||
this.addAbility(new SimpleStaticAbility(new GainAbilityAttachedEffect(DefenderAbility.getInstance(), AttachmentType.AURA)));
|
this.addAbility(new SimpleStaticAbility(new GainAbilityAttachedEffect(DefenderAbility.getInstance(), AttachmentType.AURA)));
|
||||||
|
|
||||||
// Prevent all combat damage that would be dealt by enchanted creature.
|
// Prevent all combat damage that would be dealt by enchanted creature.
|
||||||
this.addAbility(new SimpleStaticAbility(new PreventAllDamageByAttachedEffect(Duration.WhileOnBattlefield, "enchanted creature", true)));
|
this.addAbility(new SimpleStaticAbility(new PreventAllDamageByAttachedEffect(
|
||||||
|
Duration.WhileOnBattlefield, "enchanted creature", true
|
||||||
|
)));
|
||||||
|
|
||||||
// Coven — {2}{W}, Sacrifice Candletrap: Exile enchanted creature. Activate only if you control three or more creatures with different powers.
|
// Coven — {2}{W}, Sacrifice Candletrap: Exile enchanted creature. Activate only if you control three or more creatures with different powers.
|
||||||
ability = new ActivateIfConditionActivatedAbility(Zone.BATTLEFIELD, new ExileAttachedEffect(), new ManaCostsImpl<>("{2}{W}"), CovenCondition.instance);
|
Ability ability = new ActivateIfConditionActivatedAbility(
|
||||||
|
new ExileAttachedEffect(), new ManaCostsImpl<>("{2}{W}"), CovenCondition.instance
|
||||||
|
);
|
||||||
ability.addCost(new SacrificeSourceCost());
|
ability.addCost(new SacrificeSourceCost());
|
||||||
ability.setAbilityWord(AbilityWord.COVEN);
|
this.addAbility(ability.setAbilityWord(AbilityWord.COVEN).addHint(CovenHint.instance));
|
||||||
ability.addHint(CovenHint.instance);
|
|
||||||
this.addAbility(ability);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private Candletrap(final Candletrap card) {
|
private Candletrap(final Candletrap card) {
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,5 @@
|
||||||
|
|
||||||
package mage.cards.c;
|
package mage.cards.c;
|
||||||
|
|
||||||
import java.util.UUID;
|
|
||||||
import mage.MageInt;
|
import mage.MageInt;
|
||||||
import mage.abilities.Ability;
|
import mage.abilities.Ability;
|
||||||
import mage.abilities.common.ActivateIfConditionActivatedAbility;
|
import mage.abilities.common.ActivateIfConditionActivatedAbility;
|
||||||
|
|
@ -13,17 +11,17 @@ import mage.cards.CardSetInfo;
|
||||||
import mage.constants.CardType;
|
import mage.constants.CardType;
|
||||||
import mage.constants.SubType;
|
import mage.constants.SubType;
|
||||||
import mage.constants.SuperType;
|
import mage.constants.SuperType;
|
||||||
import mage.constants.Zone;
|
|
||||||
import mage.target.common.TargetOpponent;
|
import mage.target.common.TargetOpponent;
|
||||||
|
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
|
||||||
* @author LevelX2
|
* @author LevelX2
|
||||||
*/
|
*/
|
||||||
public final class CaoCaoLordOfWei extends CardImpl {
|
public final class CaoCaoLordOfWei extends CardImpl {
|
||||||
|
|
||||||
public CaoCaoLordOfWei(UUID ownerId, CardSetInfo setInfo) {
|
public CaoCaoLordOfWei(UUID ownerId, CardSetInfo setInfo) {
|
||||||
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{B}{B}");
|
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{B}{B}");
|
||||||
this.supertype.add(SuperType.LEGENDARY);
|
this.supertype.add(SuperType.LEGENDARY);
|
||||||
this.subtype.add(SubType.HUMAN);
|
this.subtype.add(SubType.HUMAN);
|
||||||
this.subtype.add(SubType.SOLDIER);
|
this.subtype.add(SubType.SOLDIER);
|
||||||
|
|
@ -32,9 +30,11 @@ public final class CaoCaoLordOfWei extends CardImpl {
|
||||||
this.toughness = new MageInt(3);
|
this.toughness = new MageInt(3);
|
||||||
|
|
||||||
// {tap}: Target opponent discards two cards. Activate this ability only during your turn, before attackers are declared.
|
// {tap}: Target opponent discards two cards. Activate this ability only during your turn, before attackers are declared.
|
||||||
Ability ability = new ActivateIfConditionActivatedAbility(Zone.BATTLEFIELD, new DiscardTargetEffect(2), new TapSourceCost(), MyTurnBeforeAttackersDeclaredCondition.instance);
|
Ability ability = new ActivateIfConditionActivatedAbility(
|
||||||
|
new DiscardTargetEffect(2), new TapSourceCost(), MyTurnBeforeAttackersDeclaredCondition.instance
|
||||||
|
);
|
||||||
ability.addTarget(new TargetOpponent());
|
ability.addTarget(new TargetOpponent());
|
||||||
this.addAbility(ability);
|
this.addAbility(ability);
|
||||||
}
|
}
|
||||||
|
|
||||||
private CaoCaoLordOfWei(final CaoCaoLordOfWei card) {
|
private CaoCaoLordOfWei(final CaoCaoLordOfWei card) {
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,5 @@
|
||||||
|
|
||||||
package mage.cards.c;
|
package mage.cards.c;
|
||||||
|
|
||||||
import java.util.UUID;
|
|
||||||
import mage.MageInt;
|
import mage.MageInt;
|
||||||
import mage.abilities.Ability;
|
import mage.abilities.Ability;
|
||||||
import mage.abilities.common.ActivateIfConditionActivatedAbility;
|
import mage.abilities.common.ActivateIfConditionActivatedAbility;
|
||||||
|
|
@ -12,25 +10,27 @@ import mage.cards.CardImpl;
|
||||||
import mage.cards.CardSetInfo;
|
import mage.cards.CardSetInfo;
|
||||||
import mage.constants.CardType;
|
import mage.constants.CardType;
|
||||||
import mage.constants.SubType;
|
import mage.constants.SubType;
|
||||||
import mage.constants.Zone;
|
|
||||||
import mage.target.common.TargetAnyTarget;
|
import mage.target.common.TargetAnyTarget;
|
||||||
|
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
|
||||||
* @author fireshoes
|
* @author fireshoes
|
||||||
*/
|
*/
|
||||||
public final class CapriciousSorcerer extends CardImpl {
|
public final class CapriciousSorcerer extends CardImpl {
|
||||||
|
|
||||||
public CapriciousSorcerer(UUID ownerId, CardSetInfo setInfo) {
|
public CapriciousSorcerer(UUID ownerId, CardSetInfo setInfo) {
|
||||||
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{U}");
|
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{U}");
|
||||||
this.subtype.add(SubType.HUMAN);
|
this.subtype.add(SubType.HUMAN);
|
||||||
this.subtype.add(SubType.WIZARD);
|
this.subtype.add(SubType.WIZARD);
|
||||||
this.power = new MageInt(1);
|
this.power = new MageInt(1);
|
||||||
this.toughness = new MageInt(1);
|
this.toughness = new MageInt(1);
|
||||||
|
|
||||||
// {tap}: Capricious Sorcerer deals 1 damage to any target. Activate this ability only during your turn, before attackers are declared.
|
// {tap}: Capricious Sorcerer deals 1 damage to any target. Activate this ability only during your turn, before attackers are declared.
|
||||||
Ability ability = new ActivateIfConditionActivatedAbility(Zone.BATTLEFIELD,
|
Ability ability = new ActivateIfConditionActivatedAbility(
|
||||||
new DamageTargetEffect(1), new TapSourceCost(), MyTurnBeforeAttackersDeclaredCondition.instance);
|
new DamageTargetEffect(1), new TapSourceCost(),
|
||||||
|
MyTurnBeforeAttackersDeclaredCondition.instance
|
||||||
|
);
|
||||||
ability.addTarget(new TargetAnyTarget());
|
ability.addTarget(new TargetAnyTarget());
|
||||||
this.addAbility(ability);
|
this.addAbility(ability);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -13,7 +13,6 @@ import mage.cards.CardImpl;
|
||||||
import mage.cards.CardSetInfo;
|
import mage.cards.CardSetInfo;
|
||||||
import mage.constants.CardType;
|
import mage.constants.CardType;
|
||||||
import mage.constants.SubType;
|
import mage.constants.SubType;
|
||||||
import mage.constants.Zone;
|
|
||||||
import mage.filter.FilterPermanent;
|
import mage.filter.FilterPermanent;
|
||||||
import mage.filter.common.FilterCreaturePermanent;
|
import mage.filter.common.FilterCreaturePermanent;
|
||||||
import mage.filter.predicate.mageobject.AbilityPredicate;
|
import mage.filter.predicate.mageobject.AbilityPredicate;
|
||||||
|
|
@ -45,7 +44,7 @@ public final class CelestialEnforcer extends CardImpl {
|
||||||
|
|
||||||
// {1}{W}, {T}: Tap target creature. Activate this ability only if you control a creature with flying.
|
// {1}{W}, {T}: Tap target creature. Activate this ability only if you control a creature with flying.
|
||||||
Ability ability = new ActivateIfConditionActivatedAbility(
|
Ability ability = new ActivateIfConditionActivatedAbility(
|
||||||
Zone.BATTLEFIELD, new TapTargetEffect(), new ManaCostsImpl<>("{1}{W}"), condition
|
new TapTargetEffect(), new ManaCostsImpl<>("{1}{W}"), condition
|
||||||
);
|
);
|
||||||
ability.addCost(new TapSourceCost());
|
ability.addCost(new TapSourceCost());
|
||||||
ability.addTarget(new TargetCreaturePermanent());
|
ability.addTarget(new TargetCreaturePermanent());
|
||||||
|
|
|
||||||
|
|
@ -13,9 +13,7 @@ import mage.cards.CardImpl;
|
||||||
import mage.cards.CardSetInfo;
|
import mage.cards.CardSetInfo;
|
||||||
import mage.constants.CardType;
|
import mage.constants.CardType;
|
||||||
import mage.constants.SubType;
|
import mage.constants.SubType;
|
||||||
import mage.constants.Zone;
|
|
||||||
import mage.filter.StaticFilters;
|
import mage.filter.StaticFilters;
|
||||||
import mage.target.common.TargetControlledPermanent;
|
|
||||||
|
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
||||||
|
|
@ -36,8 +34,7 @@ public final class ChainedBrute extends CardImpl {
|
||||||
|
|
||||||
// {1}, Sacrifice another creature: Untap Chained Brute. Activate this ability only during your turn.
|
// {1}, Sacrifice another creature: Untap Chained Brute. Activate this ability only during your turn.
|
||||||
Ability ability = new ActivateIfConditionActivatedAbility(
|
Ability ability = new ActivateIfConditionActivatedAbility(
|
||||||
Zone.BATTLEFIELD, new UntapSourceEffect(),
|
new UntapSourceEffect(), new GenericManaCost(1), MyTurnCondition.instance
|
||||||
new GenericManaCost(1), MyTurnCondition.instance
|
|
||||||
);
|
);
|
||||||
ability.addCost(new SacrificeTargetCost(StaticFilters.FILTER_CONTROLLED_ANOTHER_CREATURE));
|
ability.addCost(new SacrificeTargetCost(StaticFilters.FILTER_CONTROLLED_ANOTHER_CREATURE));
|
||||||
this.addAbility(ability);
|
this.addAbility(ability);
|
||||||
|
|
|
||||||
|
|
@ -2,17 +2,16 @@ package mage.cards.c;
|
||||||
|
|
||||||
import mage.abilities.Ability;
|
import mage.abilities.Ability;
|
||||||
import mage.abilities.common.ActivateIfConditionActivatedAbility;
|
import mage.abilities.common.ActivateIfConditionActivatedAbility;
|
||||||
import mage.abilities.triggers.BeginningOfUpkeepTriggeredAbility;
|
|
||||||
import mage.abilities.condition.Condition;
|
import mage.abilities.condition.Condition;
|
||||||
import mage.abilities.costs.common.TapSourceCost;
|
import mage.abilities.costs.common.TapSourceCost;
|
||||||
import mage.abilities.costs.mana.GenericManaCost;
|
import mage.abilities.costs.mana.GenericManaCost;
|
||||||
import mage.abilities.effects.common.CreateTokenEffect;
|
import mage.abilities.effects.common.CreateTokenEffect;
|
||||||
import mage.abilities.effects.common.counter.AddCountersTargetEffect;
|
import mage.abilities.effects.common.counter.AddCountersTargetEffect;
|
||||||
|
import mage.abilities.triggers.BeginningOfUpkeepTriggeredAbility;
|
||||||
import mage.cards.CardImpl;
|
import mage.cards.CardImpl;
|
||||||
import mage.cards.CardSetInfo;
|
import mage.cards.CardSetInfo;
|
||||||
import mage.constants.CardType;
|
import mage.constants.CardType;
|
||||||
import mage.constants.WatcherScope;
|
import mage.constants.WatcherScope;
|
||||||
import mage.constants.Zone;
|
|
||||||
import mage.counters.CounterType;
|
import mage.counters.CounterType;
|
||||||
import mage.filter.FilterPermanent;
|
import mage.filter.FilterPermanent;
|
||||||
import mage.filter.common.FilterControlledPermanent;
|
import mage.filter.common.FilterControlledPermanent;
|
||||||
|
|
@ -59,7 +58,7 @@ public final class ChurningReservoir extends CardImpl {
|
||||||
|
|
||||||
// {2}, {T}: Create a 1/1 red Phyrexian Goblin creature token. Activate only if an oil counter was removed from a permanent you controlled this turn or a permanent with an oil counter on it was put into a graveyard this turn.
|
// {2}, {T}: Create a 1/1 red Phyrexian Goblin creature token. Activate only if an oil counter was removed from a permanent you controlled this turn or a permanent with an oil counter on it was put into a graveyard this turn.
|
||||||
ability = new ActivateIfConditionActivatedAbility(
|
ability = new ActivateIfConditionActivatedAbility(
|
||||||
Zone.BATTLEFIELD, new CreateTokenEffect(new PhyrexianGoblinToken()),
|
new CreateTokenEffect(new PhyrexianGoblinToken()),
|
||||||
new GenericManaCost(2), ChurningReservoirCondition.instance
|
new GenericManaCost(2), ChurningReservoirCondition.instance
|
||||||
);
|
);
|
||||||
ability.addCost(new TapSourceCost());
|
ability.addCost(new TapSourceCost());
|
||||||
|
|
|
||||||
|
|
@ -14,7 +14,6 @@ import mage.cards.CardImpl;
|
||||||
import mage.cards.CardSetInfo;
|
import mage.cards.CardSetInfo;
|
||||||
import mage.constants.CardType;
|
import mage.constants.CardType;
|
||||||
import mage.constants.SubType;
|
import mage.constants.SubType;
|
||||||
import mage.constants.Zone;
|
|
||||||
import mage.counters.CounterType;
|
import mage.counters.CounterType;
|
||||||
import mage.target.TargetPlayer;
|
import mage.target.TargetPlayer;
|
||||||
|
|
||||||
|
|
@ -34,14 +33,16 @@ public final class CinderhazeWretch extends CardImpl {
|
||||||
this.toughness = new MageInt(2);
|
this.toughness = new MageInt(2);
|
||||||
|
|
||||||
// {T}: Target player discards a card. Activate this ability only during your turn.
|
// {T}: Target player discards a card. Activate this ability only during your turn.
|
||||||
Ability ability = new ActivateIfConditionActivatedAbility(Zone.BATTLEFIELD, new DiscardTargetEffect(1), new TapSourceCost(), MyTurnCondition.instance);
|
Ability ability = new ActivateIfConditionActivatedAbility(
|
||||||
ability.addHint(MyTurnHint.instance);
|
new DiscardTargetEffect(1), new TapSourceCost(), MyTurnCondition.instance
|
||||||
|
);
|
||||||
ability.addTarget(new TargetPlayer());
|
ability.addTarget(new TargetPlayer());
|
||||||
this.addAbility(ability);
|
this.addAbility(ability.addHint(MyTurnHint.instance));
|
||||||
|
|
||||||
// Put a -1/-1 counter on Cinderhaze Wretch: Untap Cinderhaze Wretch.
|
// Put a -1/-1 counter on Cinderhaze Wretch: Untap Cinderhaze Wretch.
|
||||||
this.addAbility(new SimpleActivatedAbility(new UntapSourceEffect(), new PutCountersSourceCost(CounterType.M1M1.createInstance(1))));
|
this.addAbility(new SimpleActivatedAbility(
|
||||||
|
new UntapSourceEffect(), new PutCountersSourceCost(CounterType.M1M1.createInstance(1))
|
||||||
|
));
|
||||||
}
|
}
|
||||||
|
|
||||||
private CinderhazeWretch(final CinderhazeWretch card) {
|
private CinderhazeWretch(final CinderhazeWretch card) {
|
||||||
|
|
|
||||||
|
|
@ -1,51 +1,40 @@
|
||||||
|
|
||||||
package mage.cards.c;
|
package mage.cards.c;
|
||||||
|
|
||||||
import java.util.UUID;
|
|
||||||
import mage.MageInt;
|
import mage.MageInt;
|
||||||
import mage.abilities.Ability;
|
import mage.abilities.Ability;
|
||||||
import mage.abilities.common.ActivateIfConditionActivatedAbility;
|
import mage.abilities.common.ActivateIfConditionActivatedAbility;
|
||||||
import mage.abilities.condition.common.MyTurnBeforeAttackersDeclaredCondition;
|
import mage.abilities.condition.common.MyTurnBeforeAttackersDeclaredCondition;
|
||||||
import mage.abilities.costs.common.TapSourceCost;
|
import mage.abilities.costs.common.TapSourceCost;
|
||||||
import mage.abilities.effects.Effect;
|
|
||||||
import mage.abilities.effects.common.ReturnToHandSourceEffect;
|
import mage.abilities.effects.common.ReturnToHandSourceEffect;
|
||||||
import mage.abilities.effects.common.ReturnToHandTargetEffect;
|
import mage.abilities.effects.common.ReturnToHandTargetEffect;
|
||||||
import mage.cards.CardImpl;
|
import mage.cards.CardImpl;
|
||||||
import mage.cards.CardSetInfo;
|
import mage.cards.CardSetInfo;
|
||||||
import mage.constants.CardType;
|
import mage.constants.CardType;
|
||||||
import mage.constants.SubType;
|
import mage.constants.SubType;
|
||||||
import mage.constants.Zone;
|
import mage.filter.StaticFilters;
|
||||||
import mage.filter.common.FilterCreaturePermanent;
|
import mage.target.TargetPermanent;
|
||||||
import mage.filter.predicate.mageobject.AnotherPredicate;
|
|
||||||
import mage.target.common.TargetCreaturePermanent;
|
import java.util.UUID;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
|
||||||
* @author fireshoes
|
* @author fireshoes
|
||||||
*/
|
*/
|
||||||
public final class CoastalWizard extends CardImpl {
|
public final class CoastalWizard extends CardImpl {
|
||||||
|
|
||||||
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("another target creature");
|
|
||||||
static {
|
|
||||||
filter.add(AnotherPredicate.instance);
|
|
||||||
}
|
|
||||||
|
|
||||||
public CoastalWizard(UUID ownerId, CardSetInfo setInfo) {
|
public CoastalWizard(UUID ownerId, CardSetInfo setInfo) {
|
||||||
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{U}{U}");
|
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{U}{U}");
|
||||||
this.subtype.add(SubType.HUMAN);
|
this.subtype.add(SubType.HUMAN);
|
||||||
this.subtype.add(SubType.WIZARD);
|
this.subtype.add(SubType.WIZARD);
|
||||||
this.power = new MageInt(1);
|
this.power = new MageInt(1);
|
||||||
this.toughness = new MageInt(1);
|
this.toughness = new MageInt(1);
|
||||||
|
|
||||||
// {tap}: Return Coastal Wizard and another target creature to their owners' hands. Activate this ability only during your turn, before attackers are declared.
|
// {tap}: Return Coastal Wizard and another target creature to their owners' hands. Activate this ability only during your turn, before attackers are declared.
|
||||||
Effect effect = new ReturnToHandSourceEffect(true);
|
Ability ability = new ActivateIfConditionActivatedAbility(
|
||||||
effect.setText("Return Coastal Wizard");
|
new ReturnToHandSourceEffect(true).setText("return {this}"),
|
||||||
Ability ability = new ActivateIfConditionActivatedAbility(Zone.BATTLEFIELD,
|
new TapSourceCost(), MyTurnBeforeAttackersDeclaredCondition.instance
|
||||||
effect, new TapSourceCost(), MyTurnBeforeAttackersDeclaredCondition.instance);
|
);
|
||||||
effect = new ReturnToHandTargetEffect();
|
ability.addEffect(new ReturnToHandTargetEffect().setText("and another target creature to their owners' hands"));
|
||||||
effect.setText("and another target creature to their owners' hands");
|
ability.addTarget(new TargetPermanent(StaticFilters.FILTER_ANOTHER_TARGET_CREATURE));
|
||||||
ability.addTarget(new TargetCreaturePermanent(filter));
|
|
||||||
ability.addEffect(effect);
|
|
||||||
this.addAbility(ability);
|
this.addAbility(ability);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,9 @@
|
||||||
|
|
||||||
package mage.cards.c;
|
package mage.cards.c;
|
||||||
|
|
||||||
import mage.MageInt;
|
import mage.MageInt;
|
||||||
import mage.abilities.Ability;
|
import mage.abilities.Ability;
|
||||||
import mage.abilities.common.ActivateIfConditionActivatedAbility;
|
import mage.abilities.common.ActivateIfConditionActivatedAbility;
|
||||||
|
import mage.abilities.condition.Condition;
|
||||||
import mage.abilities.condition.common.PermanentsOnTheBattlefieldCondition;
|
import mage.abilities.condition.common.PermanentsOnTheBattlefieldCondition;
|
||||||
import mage.abilities.costs.mana.ManaCostsImpl;
|
import mage.abilities.costs.mana.ManaCostsImpl;
|
||||||
import mage.abilities.effects.common.UntapTargetEffect;
|
import mage.abilities.effects.common.UntapTargetEffect;
|
||||||
|
|
@ -12,22 +12,19 @@ import mage.cards.CardImpl;
|
||||||
import mage.cards.CardSetInfo;
|
import mage.cards.CardSetInfo;
|
||||||
import mage.constants.CardType;
|
import mage.constants.CardType;
|
||||||
import mage.constants.SubType;
|
import mage.constants.SubType;
|
||||||
import mage.constants.Zone;
|
import mage.filter.common.FilterControlledPlaneswalkerPermanent;
|
||||||
import mage.filter.common.FilterPlaneswalkerPermanent;
|
|
||||||
import mage.target.common.TargetCreaturePermanent;
|
import mage.target.common.TargetCreaturePermanent;
|
||||||
|
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
|
||||||
* @author fireshoes
|
* @author fireshoes
|
||||||
*/
|
*/
|
||||||
public final class CompanionOfTheTrials extends CardImpl {
|
public final class CompanionOfTheTrials extends CardImpl {
|
||||||
|
|
||||||
private static final FilterPlaneswalkerPermanent filter = new FilterPlaneswalkerPermanent("you control a Gideon planeswalker");
|
private static final Condition condition = new PermanentsOnTheBattlefieldCondition(
|
||||||
static {
|
new FilterControlledPlaneswalkerPermanent(SubType.GIDEON, "you control a Gideon planeswalker")
|
||||||
filter.add(SubType.GIDEON.getPredicate());
|
);
|
||||||
}
|
|
||||||
|
|
||||||
public CompanionOfTheTrials(UUID ownerId, CardSetInfo setInfo) {
|
public CompanionOfTheTrials(UUID ownerId, CardSetInfo setInfo) {
|
||||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{W}");
|
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{W}");
|
||||||
|
|
@ -41,10 +38,9 @@ public final class CompanionOfTheTrials extends CardImpl {
|
||||||
this.addAbility(FlyingAbility.getInstance());
|
this.addAbility(FlyingAbility.getInstance());
|
||||||
|
|
||||||
// {1}{W}: Untap target creature. Activate this ability only if you control a Gideon planeswalker.
|
// {1}{W}: Untap target creature. Activate this ability only if you control a Gideon planeswalker.
|
||||||
Ability ability = new ActivateIfConditionActivatedAbility(Zone.BATTLEFIELD,
|
Ability ability = new ActivateIfConditionActivatedAbility(
|
||||||
new UntapTargetEffect(),
|
new UntapTargetEffect(), new ManaCostsImpl<>("{1}{W}"), condition
|
||||||
new ManaCostsImpl<>("{1}{W}"),
|
);
|
||||||
new PermanentsOnTheBattlefieldCondition(filter));
|
|
||||||
ability.addTarget(new TargetCreaturePermanent());
|
ability.addTarget(new TargetCreaturePermanent());
|
||||||
this.addAbility(ability);
|
this.addAbility(ability);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -12,7 +12,10 @@ import mage.abilities.effects.common.DamageTargetEffect;
|
||||||
import mage.abilities.effects.common.continuous.SetBasePowerSourceEffect;
|
import mage.abilities.effects.common.continuous.SetBasePowerSourceEffect;
|
||||||
import mage.cards.CardImpl;
|
import mage.cards.CardImpl;
|
||||||
import mage.cards.CardSetInfo;
|
import mage.cards.CardSetInfo;
|
||||||
import mage.constants.*;
|
import mage.constants.AbilityWord;
|
||||||
|
import mage.constants.CardType;
|
||||||
|
import mage.constants.Duration;
|
||||||
|
import mage.constants.SubType;
|
||||||
import mage.target.common.TargetCreaturePermanent;
|
import mage.target.common.TargetCreaturePermanent;
|
||||||
|
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
@ -38,14 +41,10 @@ public final class CraterElemental extends CardImpl {
|
||||||
this.addAbility(ability);
|
this.addAbility(ability);
|
||||||
|
|
||||||
// <i>Formidable</i> — {2}{R}: Crater Elemental has base power 8 until end of turn. Activate this ability only if creatures you control have total power 8 or greater.
|
// <i>Formidable</i> — {2}{R}: Crater Elemental has base power 8 until end of turn. Activate this ability only if creatures you control have total power 8 or greater.
|
||||||
ability = new ActivateIfConditionActivatedAbility(
|
this.addAbility(new ActivateIfConditionActivatedAbility(
|
||||||
Zone.BATTLEFIELD,
|
|
||||||
new SetBasePowerSourceEffect(8, Duration.EndOfTurn),
|
new SetBasePowerSourceEffect(8, Duration.EndOfTurn),
|
||||||
new ManaCostsImpl<>("{2}{R}"),
|
new ManaCostsImpl<>("{2}{R}"), FormidableCondition.instance
|
||||||
FormidableCondition.instance
|
).setAbilityWord(AbilityWord.FORMIDABLE));
|
||||||
);
|
|
||||||
ability.setAbilityWord(AbilityWord.FORMIDABLE);
|
|
||||||
this.addAbility(ability);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private CraterElemental(final CraterElemental card) {
|
private CraterElemental(final CraterElemental card) {
|
||||||
|
|
|
||||||
|
|
@ -4,16 +4,18 @@ import mage.abilities.Ability;
|
||||||
import mage.abilities.common.ActivateIfConditionActivatedAbility;
|
import mage.abilities.common.ActivateIfConditionActivatedAbility;
|
||||||
import mage.abilities.common.AttacksAllTriggeredAbility;
|
import mage.abilities.common.AttacksAllTriggeredAbility;
|
||||||
import mage.abilities.condition.common.MyTurnCondition;
|
import mage.abilities.condition.common.MyTurnCondition;
|
||||||
import mage.abilities.costs.mana.ManaCostsImpl;
|
import mage.abilities.costs.mana.GenericManaCost;
|
||||||
import mage.abilities.effects.ContinuousEffect;
|
import mage.abilities.effects.ContinuousEffect;
|
||||||
import mage.abilities.effects.Effect;
|
|
||||||
import mage.abilities.effects.OneShotEffect;
|
import mage.abilities.effects.OneShotEffect;
|
||||||
import mage.abilities.effects.common.continuous.BoostTargetEffect;
|
import mage.abilities.effects.common.continuous.BoostTargetEffect;
|
||||||
import mage.abilities.effects.common.continuous.GainControlTargetEffect;
|
import mage.abilities.effects.common.continuous.GainControlTargetEffect;
|
||||||
import mage.abilities.hint.common.MyTurnHint;
|
import mage.abilities.hint.common.MyTurnHint;
|
||||||
import mage.cards.CardImpl;
|
import mage.cards.CardImpl;
|
||||||
import mage.cards.CardSetInfo;
|
import mage.cards.CardSetInfo;
|
||||||
import mage.constants.*;
|
import mage.constants.CardType;
|
||||||
|
import mage.constants.Duration;
|
||||||
|
import mage.constants.Outcome;
|
||||||
|
import mage.constants.SetTargetPointer;
|
||||||
import mage.filter.FilterPlayer;
|
import mage.filter.FilterPlayer;
|
||||||
import mage.filter.StaticFilters;
|
import mage.filter.StaticFilters;
|
||||||
import mage.filter.predicate.ObjectSourcePlayer;
|
import mage.filter.predicate.ObjectSourcePlayer;
|
||||||
|
|
@ -42,22 +44,18 @@ public final class CrownOfDoom extends CardImpl {
|
||||||
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{3}");
|
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{3}");
|
||||||
|
|
||||||
// Whenever a creature attacks you or a planeswalker you control, it gets +2/+0 until end of turn.
|
// Whenever a creature attacks you or a planeswalker you control, it gets +2/+0 until end of turn.
|
||||||
Effect effect = new BoostTargetEffect(2, 0, Duration.EndOfTurn);
|
|
||||||
effect.setText("it gets +2/+0 until end of turn");
|
|
||||||
this.addAbility(new AttacksAllTriggeredAbility(
|
this.addAbility(new AttacksAllTriggeredAbility(
|
||||||
effect,
|
new BoostTargetEffect(2, 0, Duration.EndOfTurn)
|
||||||
false,
|
.setText("it gets +2/+0 until end of turn"),
|
||||||
StaticFilters.FILTER_PERMANENT_CREATURE,
|
false, StaticFilters.FILTER_PERMANENT_CREATURE,
|
||||||
SetTargetPointer.PERMANENT,
|
SetTargetPointer.PERMANENT, true
|
||||||
true));
|
));
|
||||||
|
|
||||||
// {2}: Target player other than Crown of Doom's owner gains control of it. Activate this ability only during your turn.
|
// {2}: Target player other than Crown of Doom's owner gains control of it. Activate this ability only during your turn.
|
||||||
Ability ability = new ActivateIfConditionActivatedAbility(
|
Ability ability = new ActivateIfConditionActivatedAbility(
|
||||||
Zone.BATTLEFIELD,
|
new CrownOfDoomEffect(), new GenericManaCost(2), MyTurnCondition.instance
|
||||||
new CrownOfDoomEffect(),
|
);
|
||||||
new ManaCostsImpl<>("{2}"),
|
ability.addTarget(new TargetPlayer(filter));
|
||||||
MyTurnCondition.instance);
|
|
||||||
ability.addTarget(new TargetPlayer(1, 1, false, filter));
|
|
||||||
ability.addHint(MyTurnHint.instance);
|
ability.addHint(MyTurnHint.instance);
|
||||||
this.addAbility(ability);
|
this.addAbility(ability);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -8,13 +8,12 @@ import mage.abilities.costs.common.SacrificeSourceCost;
|
||||||
import mage.abilities.costs.common.TapSourceCost;
|
import mage.abilities.costs.common.TapSourceCost;
|
||||||
import mage.abilities.costs.mana.GenericManaCost;
|
import mage.abilities.costs.mana.GenericManaCost;
|
||||||
import mage.abilities.effects.common.DrawCardSourceControllerEffect;
|
import mage.abilities.effects.common.DrawCardSourceControllerEffect;
|
||||||
|
import mage.abilities.hint.common.LandsYouControlHint;
|
||||||
import mage.abilities.mana.ColorlessManaAbility;
|
import mage.abilities.mana.ColorlessManaAbility;
|
||||||
import mage.cards.CardImpl;
|
import mage.cards.CardImpl;
|
||||||
import mage.cards.CardSetInfo;
|
import mage.cards.CardSetInfo;
|
||||||
import mage.constants.CardType;
|
import mage.constants.CardType;
|
||||||
import mage.constants.ComparisonType;
|
import mage.constants.ComparisonType;
|
||||||
import mage.constants.Zone;
|
|
||||||
import mage.filter.FilterPermanent;
|
|
||||||
import mage.filter.common.FilterControlledLandPermanent;
|
import mage.filter.common.FilterControlledLandPermanent;
|
||||||
|
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
@ -24,10 +23,9 @@ import java.util.UUID;
|
||||||
*/
|
*/
|
||||||
public final class CrypticCaves extends CardImpl {
|
public final class CrypticCaves extends CardImpl {
|
||||||
|
|
||||||
private static final FilterPermanent filter
|
private static final Condition condition = new PermanentsOnTheBattlefieldCondition(
|
||||||
= new FilterControlledLandPermanent("you control five or more lands");
|
new FilterControlledLandPermanent("you control five or more lands"), ComparisonType.MORE_THAN, 4
|
||||||
private static final Condition condition
|
);
|
||||||
= new PermanentsOnTheBattlefieldCondition(filter, ComparisonType.MORE_THAN, 4);
|
|
||||||
|
|
||||||
public CrypticCaves(UUID ownerId, CardSetInfo setInfo) {
|
public CrypticCaves(UUID ownerId, CardSetInfo setInfo) {
|
||||||
super(ownerId, setInfo, new CardType[]{CardType.LAND}, "");
|
super(ownerId, setInfo, new CardType[]{CardType.LAND}, "");
|
||||||
|
|
@ -37,12 +35,11 @@ public final class CrypticCaves extends CardImpl {
|
||||||
|
|
||||||
// {1}, {T}, Sacrifice Cryptic Caves: Draw a card. Activate this ability only if you control five or more lands.
|
// {1}, {T}, Sacrifice Cryptic Caves: Draw a card. Activate this ability only if you control five or more lands.
|
||||||
Ability ability = new ActivateIfConditionActivatedAbility(
|
Ability ability = new ActivateIfConditionActivatedAbility(
|
||||||
Zone.BATTLEFIELD, new DrawCardSourceControllerEffect(1),
|
new DrawCardSourceControllerEffect(1), new GenericManaCost(1), condition
|
||||||
new GenericManaCost(1), condition
|
|
||||||
);
|
);
|
||||||
ability.addCost(new TapSourceCost());
|
ability.addCost(new TapSourceCost());
|
||||||
ability.addCost(new SacrificeSourceCost());
|
ability.addCost(new SacrificeSourceCost());
|
||||||
this.addAbility(ability);
|
this.addAbility(ability.addHint(LandsYouControlHint.instance));
|
||||||
}
|
}
|
||||||
|
|
||||||
private CrypticCaves(final CrypticCaves card) {
|
private CrypticCaves(final CrypticCaves card) {
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,5 @@
|
||||||
|
|
||||||
package mage.cards.c;
|
package mage.cards.c;
|
||||||
|
|
||||||
import java.util.UUID;
|
|
||||||
import mage.MageInt;
|
import mage.MageInt;
|
||||||
import mage.abilities.Ability;
|
import mage.abilities.Ability;
|
||||||
import mage.abilities.common.ActivateIfConditionActivatedAbility;
|
import mage.abilities.common.ActivateIfConditionActivatedAbility;
|
||||||
|
|
@ -12,25 +10,27 @@ import mage.cards.CardImpl;
|
||||||
import mage.cards.CardSetInfo;
|
import mage.cards.CardSetInfo;
|
||||||
import mage.constants.CardType;
|
import mage.constants.CardType;
|
||||||
import mage.constants.SubType;
|
import mage.constants.SubType;
|
||||||
import mage.constants.Zone;
|
|
||||||
import mage.target.common.TargetOpponent;
|
import mage.target.common.TargetOpponent;
|
||||||
|
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
|
||||||
* @author fireshoes
|
* @author fireshoes
|
||||||
*/
|
*/
|
||||||
public final class CunningAdvisor extends CardImpl {
|
public final class CunningAdvisor extends CardImpl {
|
||||||
|
|
||||||
public CunningAdvisor(UUID ownerId, CardSetInfo setInfo) {
|
public CunningAdvisor(UUID ownerId, CardSetInfo setInfo) {
|
||||||
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{B}");
|
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{B}");
|
||||||
this.subtype.add(SubType.HUMAN);
|
this.subtype.add(SubType.HUMAN);
|
||||||
this.subtype.add(SubType.ADVISOR);
|
this.subtype.add(SubType.ADVISOR);
|
||||||
this.power = new MageInt(1);
|
this.power = new MageInt(1);
|
||||||
this.toughness = new MageInt(1);
|
this.toughness = new MageInt(1);
|
||||||
|
|
||||||
// {tap}: Target opponent discards a card. Activate this ability only during your turn, before attackers are declared.
|
// {tap}: Target opponent discards a card. Activate this ability only during your turn, before attackers are declared.
|
||||||
Ability ability = new ActivateIfConditionActivatedAbility(Zone.BATTLEFIELD,
|
Ability ability = new ActivateIfConditionActivatedAbility(
|
||||||
new DiscardTargetEffect(1), new TapSourceCost(), MyTurnBeforeAttackersDeclaredCondition.instance);
|
new DiscardTargetEffect(1), new TapSourceCost(),
|
||||||
|
MyTurnBeforeAttackersDeclaredCondition.instance
|
||||||
|
);
|
||||||
ability.addTarget(new TargetOpponent());
|
ability.addTarget(new TargetOpponent());
|
||||||
this.addAbility(ability);
|
this.addAbility(ability);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -13,7 +13,10 @@ import mage.abilities.hint.common.CovenHint;
|
||||||
import mage.abilities.keyword.TrampleAbility;
|
import mage.abilities.keyword.TrampleAbility;
|
||||||
import mage.cards.CardImpl;
|
import mage.cards.CardImpl;
|
||||||
import mage.cards.CardSetInfo;
|
import mage.cards.CardSetInfo;
|
||||||
import mage.constants.*;
|
import mage.constants.AbilityWord;
|
||||||
|
import mage.constants.CardType;
|
||||||
|
import mage.constants.Duration;
|
||||||
|
import mage.constants.SubType;
|
||||||
import mage.game.permanent.token.HumanToken;
|
import mage.game.permanent.token.HumanToken;
|
||||||
import mage.target.common.TargetControlledCreaturePermanent;
|
import mage.target.common.TargetControlledCreaturePermanent;
|
||||||
|
|
||||||
|
|
@ -37,8 +40,8 @@ public final class DawnhartMentor extends CardImpl {
|
||||||
|
|
||||||
// Coven — {5}{G}: Target creature you control gets +3/+3 and gains trample until end of turn. Activate only if you control three or more creatures with different powers.
|
// Coven — {5}{G}: Target creature you control gets +3/+3 and gains trample until end of turn. Activate only if you control three or more creatures with different powers.
|
||||||
Ability ability = new ActivateIfConditionActivatedAbility(
|
Ability ability = new ActivateIfConditionActivatedAbility(
|
||||||
Zone.BATTLEFIELD, new BoostTargetEffect(3, 3)
|
new BoostTargetEffect(3, 3)
|
||||||
.setText("target creature you control gets +3/+3"),
|
.setText("target creature you control gets +3/+3"),
|
||||||
new ManaCostsImpl<>("{5}{G}"), CovenCondition.instance
|
new ManaCostsImpl<>("{5}{G}"), CovenCondition.instance
|
||||||
);
|
);
|
||||||
ability.addEffect(new GainAbilityTargetEffect(
|
ability.addEffect(new GainAbilityTargetEffect(
|
||||||
|
|
|
||||||
|
|
@ -17,7 +17,6 @@ import mage.cards.CardImpl;
|
||||||
import mage.cards.CardSetInfo;
|
import mage.cards.CardSetInfo;
|
||||||
import mage.constants.CardType;
|
import mage.constants.CardType;
|
||||||
import mage.constants.ComparisonType;
|
import mage.constants.ComparisonType;
|
||||||
import mage.constants.Zone;
|
|
||||||
import mage.filter.StaticFilters;
|
import mage.filter.StaticFilters;
|
||||||
import mage.game.permanent.token.WhiteAstartesWarriorToken;
|
import mage.game.permanent.token.WhiteAstartesWarriorToken;
|
||||||
|
|
||||||
|
|
@ -29,7 +28,8 @@ import java.util.UUID;
|
||||||
public final class DefendersOfHumanity extends CardImpl {
|
public final class DefendersOfHumanity extends CardImpl {
|
||||||
|
|
||||||
private static final Condition condition = new CompoundCondition(
|
private static final Condition condition = new CompoundCondition(
|
||||||
"you control no creatures and only during your turn", MyTurnCondition.instance,
|
"you control no creatures and only during your turn",
|
||||||
|
MyTurnCondition.instance,
|
||||||
new PermanentsOnTheBattlefieldCondition(
|
new PermanentsOnTheBattlefieldCondition(
|
||||||
StaticFilters.FILTER_PERMANENT_CREATURE,
|
StaticFilters.FILTER_PERMANENT_CREATURE,
|
||||||
ComparisonType.EQUAL_TO, 0, true
|
ComparisonType.EQUAL_TO, 0, true
|
||||||
|
|
@ -46,13 +46,12 @@ public final class DefendersOfHumanity extends CardImpl {
|
||||||
|
|
||||||
// {X}{2}{W}, Exile Defenders of Humanity: Create X 2/2 white Astartes Warrior creature tokens with vigilance. Activate only if you control no creatures and only during your turn.
|
// {X}{2}{W}, Exile Defenders of Humanity: Create X 2/2 white Astartes Warrior creature tokens with vigilance. Activate only if you control no creatures and only during your turn.
|
||||||
Ability ability = new ActivateIfConditionActivatedAbility(
|
Ability ability = new ActivateIfConditionActivatedAbility(
|
||||||
Zone.BATTLEFIELD,
|
|
||||||
new CreateTokenEffect(
|
new CreateTokenEffect(
|
||||||
new WhiteAstartesWarriorToken(), mage.abilities.dynamicvalue.common.GetXValue.instance
|
new WhiteAstartesWarriorToken(), GetXValue.instance
|
||||||
), new ManaCostsImpl<>("{X}{2}{W}"), condition
|
), new ManaCostsImpl<>("{X}{2}{W}"), condition
|
||||||
).addHint(CreaturesYouControlHint.instance).addHint(MyTurnHint.instance);
|
);
|
||||||
ability.addCost(new ExileSourceCost());
|
ability.addCost(new ExileSourceCost());
|
||||||
this.addAbility(ability);
|
this.addAbility(ability.addHint(CreaturesYouControlHint.instance).addHint(MyTurnHint.instance));
|
||||||
}
|
}
|
||||||
|
|
||||||
private DefendersOfHumanity(final DefendersOfHumanity card) {
|
private DefendersOfHumanity(final DefendersOfHumanity card) {
|
||||||
|
|
|
||||||
|
|
@ -10,10 +10,13 @@ import mage.abilities.costs.common.TapSourceCost;
|
||||||
import mage.abilities.effects.OneShotEffect;
|
import mage.abilities.effects.OneShotEffect;
|
||||||
import mage.abilities.effects.common.ChooseACardNameEffect;
|
import mage.abilities.effects.common.ChooseACardNameEffect;
|
||||||
import mage.abilities.effects.common.continuous.GainAbilityAllEffect;
|
import mage.abilities.effects.common.continuous.GainAbilityAllEffect;
|
||||||
import mage.abilities.hint.common.MyTurnHint;
|
|
||||||
import mage.cards.*;
|
import mage.cards.*;
|
||||||
import mage.constants.*;
|
import mage.constants.CardType;
|
||||||
|
import mage.constants.Duration;
|
||||||
|
import mage.constants.Outcome;
|
||||||
|
import mage.constants.SubType;
|
||||||
import mage.filter.FilterPermanent;
|
import mage.filter.FilterPermanent;
|
||||||
|
import mage.filter.StaticFilters;
|
||||||
import mage.game.Game;
|
import mage.game.Game;
|
||||||
import mage.players.Player;
|
import mage.players.Player;
|
||||||
import mage.target.common.TargetOpponent;
|
import mage.target.common.TargetOpponent;
|
||||||
|
|
@ -39,12 +42,15 @@ public final class DementiaSliver extends CardImpl {
|
||||||
this.toughness = new MageInt(3);
|
this.toughness = new MageInt(3);
|
||||||
|
|
||||||
// All Slivers have "{T}: Name a card. Target opponent reveals a card at random from their hand. If it's the named card, that player discards it. Activate this ability only during your turn."
|
// All Slivers have "{T}: Name a card. Target opponent reveals a card at random from their hand. If it's the named card, that player discards it. Activate this ability only during your turn."
|
||||||
Ability gainedAbility = new ActivateIfConditionActivatedAbility(Zone.BATTLEFIELD, new ChooseACardNameEffect(ChooseACardNameEffect.TypeOfName.ALL), new TapSourceCost(), MyTurnCondition.instance);
|
Ability gainedAbility = new ActivateIfConditionActivatedAbility(
|
||||||
|
new ChooseACardNameEffect(ChooseACardNameEffect.TypeOfName.ALL),
|
||||||
|
new TapSourceCost(), MyTurnCondition.instance
|
||||||
|
);
|
||||||
gainedAbility.addEffect(new DementiaSliverEffect());
|
gainedAbility.addEffect(new DementiaSliverEffect());
|
||||||
gainedAbility.addTarget(new TargetOpponent());
|
gainedAbility.addTarget(new TargetOpponent());
|
||||||
gainedAbility.addHint(MyTurnHint.instance);
|
|
||||||
this.addAbility(new SimpleStaticAbility(
|
this.addAbility(new SimpleStaticAbility(
|
||||||
new GainAbilityAllEffect(gainedAbility, Duration.WhileOnBattlefield, filter,
|
new GainAbilityAllEffect(
|
||||||
|
gainedAbility, Duration.WhileOnBattlefield, StaticFilters.FILTER_PERMANENT_ALL_SLIVERS,
|
||||||
"All Slivers have \"{T}: Choose a card name. "
|
"All Slivers have \"{T}: Choose a card name. "
|
||||||
+ "Target opponent reveals a card at random from their hand."
|
+ "Target opponent reveals a card at random from their hand."
|
||||||
+ " If that card has the chosen name, that player discards it."
|
+ " If that card has the chosen name, that player discards it."
|
||||||
|
|
@ -67,7 +73,7 @@ class DementiaSliverEffect extends OneShotEffect {
|
||||||
|
|
||||||
DementiaSliverEffect() {
|
DementiaSliverEffect() {
|
||||||
super(Outcome.Damage);
|
super(Outcome.Damage);
|
||||||
staticText = "Target opponent reveals a card at random from their hand. If that card has the chose name, that player discards it";
|
staticText = "Target opponent reveals a card at random from their hand. If that card has the chosen name, that player discards it";
|
||||||
}
|
}
|
||||||
|
|
||||||
private DementiaSliverEffect(final DementiaSliverEffect effect) {
|
private DementiaSliverEffect(final DementiaSliverEffect effect) {
|
||||||
|
|
|
||||||
|
|
@ -3,6 +3,7 @@ package mage.cards.d;
|
||||||
import mage.MageInt;
|
import mage.MageInt;
|
||||||
import mage.abilities.Ability;
|
import mage.abilities.Ability;
|
||||||
import mage.abilities.common.ActivateIfConditionActivatedAbility;
|
import mage.abilities.common.ActivateIfConditionActivatedAbility;
|
||||||
|
import mage.abilities.condition.Condition;
|
||||||
import mage.abilities.condition.common.PermanentsOnTheBattlefieldCondition;
|
import mage.abilities.condition.common.PermanentsOnTheBattlefieldCondition;
|
||||||
import mage.abilities.costs.mana.ManaCostsImpl;
|
import mage.abilities.costs.mana.ManaCostsImpl;
|
||||||
import mage.abilities.effects.common.GainLifeEffect;
|
import mage.abilities.effects.common.GainLifeEffect;
|
||||||
|
|
@ -11,8 +12,7 @@ import mage.cards.CardImpl;
|
||||||
import mage.cards.CardSetInfo;
|
import mage.cards.CardSetInfo;
|
||||||
import mage.constants.CardType;
|
import mage.constants.CardType;
|
||||||
import mage.constants.SubType;
|
import mage.constants.SubType;
|
||||||
import mage.constants.Zone;
|
import mage.filter.common.FilterControlledPlaneswalkerPermanent;
|
||||||
import mage.filter.common.FilterPlaneswalkerPermanent;
|
|
||||||
import mage.target.common.TargetOpponent;
|
import mage.target.common.TargetOpponent;
|
||||||
|
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
@ -22,11 +22,7 @@ import java.util.UUID;
|
||||||
*/
|
*/
|
||||||
public final class DesiccatedNaga extends CardImpl {
|
public final class DesiccatedNaga extends CardImpl {
|
||||||
|
|
||||||
private static final FilterPlaneswalkerPermanent filter = new FilterPlaneswalkerPermanent("you control a Liliana planeswalker");
|
private static final Condition condition = new PermanentsOnTheBattlefieldCondition(new FilterControlledPlaneswalkerPermanent(SubType.LILIANA, "you control a Liliana planeswalker"));
|
||||||
|
|
||||||
static {
|
|
||||||
filter.add(SubType.LILIANA.getPredicate());
|
|
||||||
}
|
|
||||||
|
|
||||||
public DesiccatedNaga(UUID ownerId, CardSetInfo setInfo) {
|
public DesiccatedNaga(UUID ownerId, CardSetInfo setInfo) {
|
||||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{B}");
|
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{B}");
|
||||||
|
|
@ -37,10 +33,9 @@ public final class DesiccatedNaga extends CardImpl {
|
||||||
this.toughness = new MageInt(2);
|
this.toughness = new MageInt(2);
|
||||||
|
|
||||||
// {3}{B}: Target opponent loses 2 life and you gain 2 life. Activate this ability only if you control a Liliana planeswalker.
|
// {3}{B}: Target opponent loses 2 life and you gain 2 life. Activate this ability only if you control a Liliana planeswalker.
|
||||||
Ability ability = new ActivateIfConditionActivatedAbility(Zone.BATTLEFIELD,
|
Ability ability = new ActivateIfConditionActivatedAbility(
|
||||||
new LoseLifeTargetEffect(2),
|
new LoseLifeTargetEffect(2), new ManaCostsImpl<>("{3}{B}"), condition
|
||||||
new ManaCostsImpl<>("{3}{B}"),
|
);
|
||||||
new PermanentsOnTheBattlefieldCondition(filter));
|
|
||||||
ability.addEffect(new GainLifeEffect(2).concatBy("and"));
|
ability.addEffect(new GainLifeEffect(2).concatBy("and"));
|
||||||
ability.addTarget(new TargetOpponent());
|
ability.addTarget(new TargetOpponent());
|
||||||
this.addAbility(ability);
|
this.addAbility(ability);
|
||||||
|
|
|
||||||
|
|
@ -5,16 +5,16 @@ import mage.abilities.Ability;
|
||||||
import mage.abilities.common.ActivateIfConditionActivatedAbility;
|
import mage.abilities.common.ActivateIfConditionActivatedAbility;
|
||||||
import mage.abilities.condition.common.MyTurnBeforeAttackersDeclaredCondition;
|
import mage.abilities.condition.common.MyTurnBeforeAttackersDeclaredCondition;
|
||||||
import mage.abilities.costs.common.TapSourceCost;
|
import mage.abilities.costs.common.TapSourceCost;
|
||||||
import mage.abilities.effects.OneShotEffect;
|
import mage.abilities.effects.common.DestroyTargetEffect;
|
||||||
import mage.cards.CardImpl;
|
import mage.cards.CardImpl;
|
||||||
import mage.cards.CardSetInfo;
|
import mage.cards.CardSetInfo;
|
||||||
import mage.constants.*;
|
import mage.constants.CardType;
|
||||||
|
import mage.constants.SubType;
|
||||||
|
import mage.constants.SuperType;
|
||||||
import mage.filter.StaticFilters;
|
import mage.filter.StaticFilters;
|
||||||
import mage.game.Game;
|
|
||||||
import mage.game.permanent.Permanent;
|
|
||||||
import mage.players.Player;
|
|
||||||
import mage.target.common.TargetCreaturePermanent;
|
import mage.target.common.TargetCreaturePermanent;
|
||||||
import mage.target.common.TargetOpponentsChoicePermanent;
|
import mage.target.common.TargetOpponentsChoicePermanent;
|
||||||
|
import mage.target.targetpointer.EachTargetPointer;
|
||||||
|
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
||||||
|
|
@ -33,9 +33,16 @@ public final class DiaochanArtfulBeauty extends CardImpl {
|
||||||
this.toughness = new MageInt(1);
|
this.toughness = new MageInt(1);
|
||||||
|
|
||||||
// {tap}: Destroy target creature of your choice, then destroy target creature of an opponent's choice. Activate this ability only during your turn, before attackers are declared.
|
// {tap}: Destroy target creature of your choice, then destroy target creature of an opponent's choice. Activate this ability only during your turn, before attackers are declared.
|
||||||
Ability ability = new ActivateIfConditionActivatedAbility(Zone.BATTLEFIELD, new DiaochanArtfulBeautyDestroyEffect(), new TapSourceCost(), MyTurnBeforeAttackersDeclaredCondition.instance);
|
Ability ability = new ActivateIfConditionActivatedAbility(
|
||||||
|
new DestroyTargetEffect()
|
||||||
|
.setTargetPointer(new EachTargetPointer())
|
||||||
|
.setText("destroy target creature of your choice, then destroy target creature of an opponent's choice"),
|
||||||
|
new TapSourceCost(), MyTurnBeforeAttackersDeclaredCondition.instance
|
||||||
|
);
|
||||||
ability.addTarget(new TargetCreaturePermanent());
|
ability.addTarget(new TargetCreaturePermanent());
|
||||||
ability.addTarget(new TargetOpponentsChoicePermanent(1, 1, StaticFilters.FILTER_PERMANENT_CREATURE, false));
|
ability.addTarget(new TargetOpponentsChoicePermanent(
|
||||||
|
1, 1, StaticFilters.FILTER_PERMANENT_CREATURE, false
|
||||||
|
));
|
||||||
this.addAbility(ability);
|
this.addAbility(ability);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -48,38 +55,3 @@ public final class DiaochanArtfulBeauty extends CardImpl {
|
||||||
return new DiaochanArtfulBeauty(this);
|
return new DiaochanArtfulBeauty(this);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
class DiaochanArtfulBeautyDestroyEffect extends OneShotEffect {
|
|
||||||
|
|
||||||
DiaochanArtfulBeautyDestroyEffect() {
|
|
||||||
super(Outcome.DestroyPermanent);
|
|
||||||
this.staticText = "Destroy target creature of your choice, then destroy target creature of an opponent's choice";
|
|
||||||
}
|
|
||||||
|
|
||||||
private DiaochanArtfulBeautyDestroyEffect(final DiaochanArtfulBeautyDestroyEffect effect) {
|
|
||||||
super(effect);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public DiaochanArtfulBeautyDestroyEffect copy() {
|
|
||||||
return new DiaochanArtfulBeautyDestroyEffect(this);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean apply(Game game, Ability source) {
|
|
||||||
Player controller = game.getPlayer(source.getControllerId());
|
|
||||||
if (controller != null) {
|
|
||||||
Permanent firstTarget = game.getPermanent(source.getFirstTarget());
|
|
||||||
if (firstTarget != null) {
|
|
||||||
firstTarget.destroy(source, game, false);
|
|
||||||
|
|
||||||
}
|
|
||||||
Permanent secondTarget = game.getPermanent(source.getTargets().get(1).getFirstTarget());
|
|
||||||
if (secondTarget != null) {
|
|
||||||
secondTarget.destroy(source, game, false);
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
|
||||||
|
|
@ -4,13 +4,11 @@ import mage.abilities.Ability;
|
||||||
import mage.abilities.common.ActivateIfConditionActivatedAbility;
|
import mage.abilities.common.ActivateIfConditionActivatedAbility;
|
||||||
import mage.abilities.condition.common.MyTurnCondition;
|
import mage.abilities.condition.common.MyTurnCondition;
|
||||||
import mage.abilities.costs.common.TapSourceCost;
|
import mage.abilities.costs.common.TapSourceCost;
|
||||||
import mage.abilities.costs.mana.ManaCostsImpl;
|
import mage.abilities.costs.mana.GenericManaCost;
|
||||||
import mage.abilities.effects.common.discard.DiscardTargetEffect;
|
import mage.abilities.effects.common.discard.DiscardTargetEffect;
|
||||||
import mage.abilities.hint.common.MyTurnHint;
|
|
||||||
import mage.cards.CardImpl;
|
import mage.cards.CardImpl;
|
||||||
import mage.cards.CardSetInfo;
|
import mage.cards.CardSetInfo;
|
||||||
import mage.constants.CardType;
|
import mage.constants.CardType;
|
||||||
import mage.constants.Zone;
|
|
||||||
import mage.target.TargetPlayer;
|
import mage.target.TargetPlayer;
|
||||||
|
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
@ -24,10 +22,11 @@ public final class DisruptingScepter extends CardImpl {
|
||||||
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{3}");
|
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{3}");
|
||||||
|
|
||||||
// {3}, {T}: Target player discards a card. Activate this ability only during your turn.
|
// {3}, {T}: Target player discards a card. Activate this ability only during your turn.
|
||||||
Ability ability = new ActivateIfConditionActivatedAbility(Zone.BATTLEFIELD, new DiscardTargetEffect(1), new ManaCostsImpl<>("{3}"), MyTurnCondition.instance);
|
Ability ability = new ActivateIfConditionActivatedAbility(
|
||||||
|
new DiscardTargetEffect(1), new GenericManaCost(3), MyTurnCondition.instance
|
||||||
|
);
|
||||||
ability.addTarget(new TargetPlayer());
|
ability.addTarget(new TargetPlayer());
|
||||||
ability.addCost(new TapSourceCost());
|
ability.addCost(new TapSourceCost());
|
||||||
ability.addHint(MyTurnHint.instance);
|
|
||||||
this.addAbility(ability);
|
this.addAbility(ability);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,10 +1,9 @@
|
||||||
|
|
||||||
package mage.cards.d;
|
package mage.cards.d;
|
||||||
|
|
||||||
import java.util.UUID;
|
|
||||||
import mage.MageInt;
|
import mage.MageInt;
|
||||||
import mage.abilities.Ability;
|
import mage.abilities.Ability;
|
||||||
import mage.abilities.common.ActivateIfConditionActivatedAbility;
|
import mage.abilities.common.ActivateIfConditionActivatedAbility;
|
||||||
|
import mage.abilities.condition.Condition;
|
||||||
import mage.abilities.condition.InvertCondition;
|
import mage.abilities.condition.InvertCondition;
|
||||||
import mage.abilities.condition.common.IsPhaseCondition;
|
import mage.abilities.condition.common.IsPhaseCondition;
|
||||||
import mage.abilities.costs.common.TapSourceCost;
|
import mage.abilities.costs.common.TapSourceCost;
|
||||||
|
|
@ -15,22 +14,25 @@ import mage.cards.CardSetInfo;
|
||||||
import mage.constants.*;
|
import mage.constants.*;
|
||||||
import mage.filter.common.FilterCreaturePermanent;
|
import mage.filter.common.FilterCreaturePermanent;
|
||||||
import mage.filter.predicate.Predicates;
|
import mage.filter.predicate.Predicates;
|
||||||
import mage.target.common.TargetCreaturePermanent;
|
import mage.target.TargetPermanent;
|
||||||
|
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
|
||||||
* @author LevelX2
|
* @author LevelX2
|
||||||
*/
|
*/
|
||||||
public final class DjinnOfInfiniteDeceits extends CardImpl {
|
public final class DjinnOfInfiniteDeceits extends CardImpl {
|
||||||
|
|
||||||
private static final String rule = "Exchange control of two target nonlegendary creatures";
|
|
||||||
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("nonlegendary creature");
|
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("nonlegendary creature");
|
||||||
|
|
||||||
static {
|
static {
|
||||||
filter.add(Predicates.not(SuperType.LEGENDARY.getPredicate()));
|
filter.add(Predicates.not(SuperType.LEGENDARY.getPredicate()));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static final Condition condition = new InvertCondition(new IsPhaseCondition(TurnPhase.COMBAT));
|
||||||
|
|
||||||
public DjinnOfInfiniteDeceits(UUID ownerId, CardSetInfo setInfo) {
|
public DjinnOfInfiniteDeceits(UUID ownerId, CardSetInfo setInfo) {
|
||||||
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{U}{U}");
|
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{U}{U}");
|
||||||
this.subtype.add(SubType.DJINN);
|
this.subtype.add(SubType.DJINN);
|
||||||
|
|
||||||
this.power = new MageInt(2);
|
this.power = new MageInt(2);
|
||||||
|
|
@ -38,13 +40,12 @@ public final class DjinnOfInfiniteDeceits extends CardImpl {
|
||||||
|
|
||||||
// Flying
|
// Flying
|
||||||
this.addAbility(FlyingAbility.getInstance());
|
this.addAbility(FlyingAbility.getInstance());
|
||||||
|
|
||||||
// {tap}: Exchange control of two target nonlegendary creatures. You can't activate this ability during combat.
|
// {tap}: Exchange control of two target nonlegendary creatures. You can't activate this ability during combat.
|
||||||
Ability ability = new ActivateIfConditionActivatedAbility(
|
Ability ability = new ActivateIfConditionActivatedAbility(new ExchangeControlTargetEffect(
|
||||||
Zone.BATTLEFIELD,
|
Duration.EndOfGame, "exchange control of two target nonlegendary creatures"
|
||||||
new ExchangeControlTargetEffect(Duration.EndOfGame, rule),
|
), new TapSourceCost(), condition);
|
||||||
new TapSourceCost(),
|
ability.addTarget(new TargetPermanent(2, filter));
|
||||||
new InvertCondition(new IsPhaseCondition(TurnPhase.COMBAT)));
|
|
||||||
ability.addTarget(new TargetCreaturePermanent(2,2, filter, false));
|
|
||||||
this.addAbility(ability);
|
this.addAbility(ability);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,6 @@
|
||||||
|
|
||||||
package mage.cards.d;
|
package mage.cards.d;
|
||||||
|
|
||||||
import java.util.UUID;
|
|
||||||
import mage.MageInt;
|
import mage.MageInt;
|
||||||
import mage.abilities.Ability;
|
|
||||||
import mage.abilities.common.ActivateIfConditionActivatedAbility;
|
import mage.abilities.common.ActivateIfConditionActivatedAbility;
|
||||||
import mage.abilities.condition.common.FormidableCondition;
|
import mage.abilities.condition.common.FormidableCondition;
|
||||||
import mage.abilities.costs.mana.ManaCostsImpl;
|
import mage.abilities.costs.mana.ManaCostsImpl;
|
||||||
|
|
@ -13,28 +10,24 @@ import mage.cards.CardSetInfo;
|
||||||
import mage.constants.AbilityWord;
|
import mage.constants.AbilityWord;
|
||||||
import mage.constants.CardType;
|
import mage.constants.CardType;
|
||||||
import mage.constants.SubType;
|
import mage.constants.SubType;
|
||||||
import mage.constants.Zone;
|
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
|
||||||
* @author LevelX2
|
* @author LevelX2
|
||||||
*/
|
*/
|
||||||
public final class DragonScarredBear extends CardImpl {
|
public final class DragonScarredBear extends CardImpl {
|
||||||
|
|
||||||
public DragonScarredBear(UUID ownerId, CardSetInfo setInfo) {
|
public DragonScarredBear(UUID ownerId, CardSetInfo setInfo) {
|
||||||
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}");
|
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{G}");
|
||||||
this.subtype.add(SubType.BEAR);
|
this.subtype.add(SubType.BEAR);
|
||||||
this.power = new MageInt(3);
|
this.power = new MageInt(3);
|
||||||
this.toughness = new MageInt(2);
|
this.toughness = new MageInt(2);
|
||||||
|
|
||||||
// <i>Formidable</i> — {1}{G}: Regenerate Dragon-Scarred Bear. Activate this only if creatures you control have total power 8 or greater.
|
// <i>Formidable</i> — {1}{G}: Regenerate Dragon-Scarred Bear. Activate this only if creatures you control have total power 8 or greater.
|
||||||
Ability ability = new ActivateIfConditionActivatedAbility(
|
this.addAbility(new ActivateIfConditionActivatedAbility(
|
||||||
Zone.BATTLEFIELD,
|
new RegenerateSourceEffect(), new ManaCostsImpl<>("{1}{G}"), FormidableCondition.instance
|
||||||
new RegenerateSourceEffect(),
|
).setAbilityWord(AbilityWord.FORMIDABLE));
|
||||||
new ManaCostsImpl<>("{1}{G}"),
|
|
||||||
FormidableCondition.instance);
|
|
||||||
ability.setAbilityWord(AbilityWord.FORMIDABLE);
|
|
||||||
this.addAbility(ability);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private DragonScarredBear(final DragonScarredBear card) {
|
private DragonScarredBear(final DragonScarredBear card) {
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,6 @@
|
||||||
|
|
||||||
package mage.cards.d;
|
package mage.cards.d;
|
||||||
|
|
||||||
import java.util.UUID;
|
|
||||||
import mage.MageInt;
|
import mage.MageInt;
|
||||||
import mage.abilities.Ability;
|
|
||||||
import mage.abilities.common.ActivateIfConditionActivatedAbility;
|
import mage.abilities.common.ActivateIfConditionActivatedAbility;
|
||||||
import mage.abilities.common.SimpleActivatedAbility;
|
import mage.abilities.common.SimpleActivatedAbility;
|
||||||
import mage.abilities.condition.common.FormidableCondition;
|
import mage.abilities.condition.common.FormidableCondition;
|
||||||
|
|
@ -16,42 +13,38 @@ import mage.cards.CardImpl;
|
||||||
import mage.cards.CardSetInfo;
|
import mage.cards.CardSetInfo;
|
||||||
import mage.constants.AbilityWord;
|
import mage.constants.AbilityWord;
|
||||||
import mage.constants.CardType;
|
import mage.constants.CardType;
|
||||||
import mage.constants.SubType;
|
|
||||||
import mage.constants.Duration;
|
import mage.constants.Duration;
|
||||||
import mage.constants.Zone;
|
import mage.constants.SubType;
|
||||||
import mage.game.permanent.token.DragonToken;
|
import mage.game.permanent.token.DragonToken;
|
||||||
|
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
|
||||||
* @author fireshoes
|
* @author fireshoes
|
||||||
*/
|
*/
|
||||||
public final class DragonWhisperer extends CardImpl {
|
public final class DragonWhisperer extends CardImpl {
|
||||||
|
|
||||||
public DragonWhisperer(UUID ownerId, CardSetInfo setInfo) {
|
public DragonWhisperer(UUID ownerId, CardSetInfo setInfo) {
|
||||||
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{R}{R}");
|
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{R}{R}");
|
||||||
this.subtype.add(SubType.HUMAN);
|
this.subtype.add(SubType.HUMAN);
|
||||||
this.subtype.add(SubType.SHAMAN);
|
this.subtype.add(SubType.SHAMAN);
|
||||||
this.power = new MageInt(2);
|
this.power = new MageInt(2);
|
||||||
this.toughness = new MageInt(2);
|
this.toughness = new MageInt(2);
|
||||||
|
|
||||||
// {R}: Dragon Whisperer gains flying until end of turn.
|
// {R}: Dragon Whisperer gains flying until end of turn.
|
||||||
this.addAbility(new SimpleActivatedAbility(
|
this.addAbility(new SimpleActivatedAbility(new GainAbilitySourceEffect(
|
||||||
new GainAbilitySourceEffect(FlyingAbility.getInstance(),
|
FlyingAbility.getInstance(), Duration.EndOfTurn
|
||||||
Duration.EndOfTurn), new ManaCostsImpl<>("{R}")));
|
), new ManaCostsImpl<>("{R}")));
|
||||||
|
|
||||||
// {1}{R}: Dragon Whisperer get +1/+0 until end of turn
|
// {1}{R}: Dragon Whisperer get +1/+0 until end of turn
|
||||||
this.addAbility(new SimpleActivatedAbility(
|
this.addAbility(new SimpleActivatedAbility(
|
||||||
new BoostSourceEffect(1, 0, Duration.EndOfTurn),
|
new BoostSourceEffect(1, 0, Duration.EndOfTurn), new ManaCostsImpl<>("{1}{R}")
|
||||||
new ManaCostsImpl<>("{1}{R}")));
|
));
|
||||||
|
|
||||||
// <Formidable</i> — {4}{R}{R}: Create a 4/4 red Dragon creature token with flying. Activate this ability only if creatures you control have total power 8 or greater.
|
// <Formidable</i> — {4}{R}{R}: Create a 4/4 red Dragon creature token with flying. Activate this ability only if creatures you control have total power 8 or greater.
|
||||||
Ability ability = new ActivateIfConditionActivatedAbility(
|
this.addAbility(new ActivateIfConditionActivatedAbility(
|
||||||
Zone.BATTLEFIELD,
|
new CreateTokenEffect(new DragonToken()), new ManaCostsImpl<>("{4}{R}{R}"), FormidableCondition.instance
|
||||||
new CreateTokenEffect(new DragonToken()),
|
).setAbilityWord(AbilityWord.FORMIDABLE));
|
||||||
new ManaCostsImpl<>("{4}{R}{R}"),
|
|
||||||
FormidableCondition.instance);
|
|
||||||
ability.setAbilityWord(AbilityWord.FORMIDABLE);
|
|
||||||
this.addAbility(ability);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private DragonWhisperer(final DragonWhisperer card) {
|
private DragonWhisperer(final DragonWhisperer card) {
|
||||||
|
|
|
||||||
|
|
@ -14,7 +14,6 @@ import mage.cards.CardSetInfo;
|
||||||
import mage.constants.CardType;
|
import mage.constants.CardType;
|
||||||
import mage.constants.Duration;
|
import mage.constants.Duration;
|
||||||
import mage.constants.SubType;
|
import mage.constants.SubType;
|
||||||
import mage.constants.Zone;
|
|
||||||
import mage.game.Game;
|
import mage.game.Game;
|
||||||
|
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
|
|
@ -25,10 +24,6 @@ import java.util.UUID;
|
||||||
*/
|
*/
|
||||||
public final class DreadlightMonstrosity extends CardImpl {
|
public final class DreadlightMonstrosity extends CardImpl {
|
||||||
|
|
||||||
private static final Hint hint = new ConditionHint(
|
|
||||||
DreadlightMonstrosityCondition.instance, "You own a card in exile"
|
|
||||||
);
|
|
||||||
|
|
||||||
public DreadlightMonstrosity(UUID ownerId, CardSetInfo setInfo) {
|
public DreadlightMonstrosity(UUID ownerId, CardSetInfo setInfo) {
|
||||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{U}{U}");
|
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{U}{U}");
|
||||||
|
|
||||||
|
|
@ -42,9 +37,9 @@ public final class DreadlightMonstrosity extends CardImpl {
|
||||||
|
|
||||||
// {3}{U}{U}: Dreadlight Monstrosity can't be blocked this turn. Activate only if you own a card in exile.
|
// {3}{U}{U}: Dreadlight Monstrosity can't be blocked this turn. Activate only if you own a card in exile.
|
||||||
this.addAbility(new ActivateIfConditionActivatedAbility(
|
this.addAbility(new ActivateIfConditionActivatedAbility(
|
||||||
Zone.BATTLEFIELD, new CantBeBlockedSourceEffect(Duration.EndOfTurn),
|
new CantBeBlockedSourceEffect(Duration.EndOfTurn),
|
||||||
new ManaCostsImpl<>("{3}{U}{U}"), DreadlightMonstrosityCondition.instance
|
new ManaCostsImpl<>("{3}{U}{U}"), DreadlightMonstrosityCondition.instance
|
||||||
).addHint(hint));
|
).addHint(DreadlightMonstrosityCondition.getHint()));
|
||||||
}
|
}
|
||||||
|
|
||||||
private DreadlightMonstrosity(final DreadlightMonstrosity card) {
|
private DreadlightMonstrosity(final DreadlightMonstrosity card) {
|
||||||
|
|
@ -59,6 +54,11 @@ public final class DreadlightMonstrosity extends CardImpl {
|
||||||
|
|
||||||
enum DreadlightMonstrosityCondition implements Condition {
|
enum DreadlightMonstrosityCondition implements Condition {
|
||||||
instance;
|
instance;
|
||||||
|
private static final Hint hint = new ConditionHint(instance);
|
||||||
|
|
||||||
|
public static Hint getHint() {
|
||||||
|
return hint;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean apply(Game game, Ability source) {
|
public boolean apply(Game game, Ability source) {
|
||||||
|
|
@ -75,4 +75,4 @@ enum DreadlightMonstrosityCondition implements Condition {
|
||||||
public String toString() {
|
public String toString() {
|
||||||
return "you own a card in exile";
|
return "you own a card in exile";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,33 +1,32 @@
|
||||||
package mage.cards.d;
|
package mage.cards.d;
|
||||||
|
|
||||||
import java.util.UUID;
|
|
||||||
import mage.MageInt;
|
import mage.MageInt;
|
||||||
import mage.abilities.Ability;
|
import mage.abilities.Ability;
|
||||||
import mage.abilities.common.ActivateIfConditionActivatedAbility;
|
import mage.abilities.common.ActivateIfConditionActivatedAbility;
|
||||||
import mage.abilities.common.delayed.AtTheEndOfCombatDelayedTriggeredAbility;
|
import mage.abilities.common.delayed.AtTheEndOfCombatDelayedTriggeredAbility;
|
||||||
import mage.abilities.condition.Condition;
|
import mage.abilities.condition.Condition;
|
||||||
import mage.abilities.costs.common.TapSourceCost;
|
import mage.abilities.costs.common.TapSourceCost;
|
||||||
import mage.abilities.effects.Effect;
|
|
||||||
import mage.abilities.effects.common.CreateDelayedTriggeredAbilityEffect;
|
import mage.abilities.effects.common.CreateDelayedTriggeredAbilityEffect;
|
||||||
import mage.abilities.effects.common.DamageTargetEffect;
|
import mage.abilities.effects.common.DamageTargetEffect;
|
||||||
import mage.constants.PhaseStep;
|
|
||||||
import mage.constants.SubType;
|
|
||||||
import mage.cards.CardImpl;
|
import mage.cards.CardImpl;
|
||||||
import mage.cards.CardSetInfo;
|
import mage.cards.CardSetInfo;
|
||||||
import mage.constants.CardType;
|
import mage.constants.CardType;
|
||||||
import mage.constants.Zone;
|
import mage.constants.PhaseStep;
|
||||||
|
import mage.constants.SubType;
|
||||||
|
import mage.filter.FilterPermanent;
|
||||||
import mage.filter.common.FilterAttackingOrBlockingCreature;
|
import mage.filter.common.FilterAttackingOrBlockingCreature;
|
||||||
import mage.filter.predicate.permanent.ControllerControlsIslandPredicate;
|
import mage.filter.predicate.permanent.ControllerControlsIslandPredicate;
|
||||||
import mage.game.Game;
|
import mage.game.Game;
|
||||||
import mage.target.TargetPermanent;
|
import mage.target.TargetPermanent;
|
||||||
|
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
|
||||||
* @author noahg
|
* @author noahg
|
||||||
*/
|
*/
|
||||||
public final class DwarvenSeaClan extends CardImpl {
|
public final class DwarvenSeaClan extends CardImpl {
|
||||||
|
|
||||||
private static final FilterAttackingOrBlockingCreature filter = new FilterAttackingOrBlockingCreature();
|
private static final FilterPermanent filter = new FilterAttackingOrBlockingCreature("attacking or blocking creature whose controller controls an Island");
|
||||||
|
|
||||||
static {
|
static {
|
||||||
filter.add(ControllerControlsIslandPredicate.instance);
|
filter.add(ControllerControlsIslandPredicate.instance);
|
||||||
|
|
@ -35,19 +34,18 @@ public final class DwarvenSeaClan extends CardImpl {
|
||||||
|
|
||||||
public DwarvenSeaClan(UUID ownerId, CardSetInfo setInfo) {
|
public DwarvenSeaClan(UUID ownerId, CardSetInfo setInfo) {
|
||||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{R}");
|
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{R}");
|
||||||
|
|
||||||
this.subtype.add(SubType.DWARF);
|
this.subtype.add(SubType.DWARF);
|
||||||
this.power = new MageInt(1);
|
this.power = new MageInt(1);
|
||||||
this.toughness = new MageInt(1);
|
this.toughness = new MageInt(1);
|
||||||
|
|
||||||
// {tap}: Choose target attacking or blocking creature whose controller controls an Island. Dwarven Sea Clan deals 2 damage to that creature at end of combat. Activate this ability only before the end of combat step.
|
// {tap}: Choose target attacking or blocking creature whose controller controls an Island. Dwarven Sea Clan deals 2 damage to that creature at end of combat. Activate this ability only before the end of combat step.
|
||||||
Effect effect = new CreateDelayedTriggeredAbilityEffect(new AtTheEndOfCombatDelayedTriggeredAbility(new DamageTargetEffect(2, true, "that creature")));
|
|
||||||
effect.setText("Choose target attacking or blocking creature whose controller controls an Island. Dwarven Sea Clan deals 2 damage to that creature at end of combat.");
|
|
||||||
Ability ability = new ActivateIfConditionActivatedAbility(
|
Ability ability = new ActivateIfConditionActivatedAbility(
|
||||||
Zone.BATTLEFIELD,
|
new CreateDelayedTriggeredAbilityEffect(new AtTheEndOfCombatDelayedTriggeredAbility(
|
||||||
effect,
|
new DamageTargetEffect(2, true, "that creature")
|
||||||
new TapSourceCost(),
|
)).setText("Choose target attacking or blocking creature whose controller controls an Island. " +
|
||||||
BeforeEndCombatCondition.getInstance()
|
"{this} deals 2 damage to that creature at end of combat."),
|
||||||
|
new TapSourceCost(), BeforeEndCombatCondition.getInstance()
|
||||||
);
|
);
|
||||||
ability.addTarget(new TargetPermanent(filter));
|
ability.addTarget(new TargetPermanent(filter));
|
||||||
addAbility(ability);
|
addAbility(ability);
|
||||||
|
|
@ -73,7 +71,7 @@ class BeforeEndCombatCondition implements Condition {
|
||||||
@Override
|
@Override
|
||||||
public boolean apply(Game game, Ability source) {
|
public boolean apply(Game game, Ability source) {
|
||||||
PhaseStep phaseStep = game.getTurnStepType();
|
PhaseStep phaseStep = game.getTurnStepType();
|
||||||
if(phaseStep.getIndex() < PhaseStep.END_COMBAT.getIndex()) {
|
if (phaseStep.getIndex() < PhaseStep.END_COMBAT.getIndex()) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
|
|
|
||||||
|
|
@ -1,11 +1,9 @@
|
||||||
|
|
||||||
package mage.cards.e;
|
package mage.cards.e;
|
||||||
|
|
||||||
import java.util.UUID;
|
|
||||||
import mage.abilities.Ability;
|
import mage.abilities.Ability;
|
||||||
import mage.abilities.common.ActivateIfConditionActivatedAbility;
|
import mage.abilities.common.ActivateIfConditionActivatedAbility;
|
||||||
|
import mage.abilities.condition.Condition;
|
||||||
import mage.abilities.condition.common.AttachedToMatchesFilterCondition;
|
import mage.abilities.condition.common.AttachedToMatchesFilterCondition;
|
||||||
import mage.abilities.costs.Cost;
|
|
||||||
import mage.abilities.costs.common.TapAttachedCost;
|
import mage.abilities.costs.common.TapAttachedCost;
|
||||||
import mage.abilities.effects.common.AttachEffect;
|
import mage.abilities.effects.common.AttachEffect;
|
||||||
import mage.abilities.effects.common.continuous.BoostTargetEffect;
|
import mage.abilities.effects.common.continuous.BoostTargetEffect;
|
||||||
|
|
@ -13,55 +11,48 @@ import mage.abilities.keyword.EnchantAbility;
|
||||||
import mage.cards.CardImpl;
|
import mage.cards.CardImpl;
|
||||||
import mage.cards.CardSetInfo;
|
import mage.cards.CardSetInfo;
|
||||||
import mage.constants.CardType;
|
import mage.constants.CardType;
|
||||||
import mage.constants.SubType;
|
|
||||||
import mage.constants.Outcome;
|
import mage.constants.Outcome;
|
||||||
import mage.constants.Duration;
|
import mage.constants.SubType;
|
||||||
import mage.constants.Zone;
|
|
||||||
import mage.filter.FilterPermanent;
|
import mage.filter.FilterPermanent;
|
||||||
|
import mage.filter.StaticFilters;
|
||||||
import mage.filter.common.FilterBlockingCreature;
|
import mage.filter.common.FilterBlockingCreature;
|
||||||
import mage.filter.common.FilterControlledPermanent;
|
|
||||||
import mage.filter.predicate.permanent.TappedPredicate;
|
import mage.filter.predicate.permanent.TappedPredicate;
|
||||||
import mage.target.TargetPermanent;
|
import mage.target.TargetPermanent;
|
||||||
import mage.target.common.TargetControlledPermanent;
|
import mage.target.common.TargetControlledPermanent;
|
||||||
import mage.target.common.TargetCreaturePermanent;
|
import mage.target.common.TargetCreaturePermanent;
|
||||||
|
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
|
||||||
* @author L_J
|
* @author L_J
|
||||||
*/
|
*/
|
||||||
public final class Earthlore extends CardImpl {
|
public final class Earthlore extends CardImpl {
|
||||||
|
|
||||||
private static final FilterControlledPermanent filterLand = new FilterControlledPermanent("land you control");
|
|
||||||
|
|
||||||
static {
|
|
||||||
filterLand.add(CardType.LAND.getPredicate());
|
|
||||||
}
|
|
||||||
|
|
||||||
private static final FilterPermanent filterUntapped = new FilterPermanent("enchanted land is untapped");
|
private static final FilterPermanent filterUntapped = new FilterPermanent("enchanted land is untapped");
|
||||||
|
|
||||||
static {
|
static {
|
||||||
filterUntapped.add(TappedPredicate.UNTAPPED);
|
filterUntapped.add(TappedPredicate.UNTAPPED);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static final Condition condition = new AttachedToMatchesFilterCondition(filterUntapped);
|
||||||
|
|
||||||
public Earthlore(UUID ownerId, CardSetInfo setInfo) {
|
public Earthlore(UUID ownerId, CardSetInfo setInfo) {
|
||||||
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{G}");
|
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{G}");
|
||||||
this.subtype.add(SubType.AURA);
|
this.subtype.add(SubType.AURA);
|
||||||
|
|
||||||
// Enchant land you control
|
// Enchant land you control
|
||||||
TargetPermanent auraTarget = new TargetControlledPermanent(filterLand);
|
TargetPermanent auraTarget = new TargetControlledPermanent(StaticFilters.FILTER_CONTROLLED_PERMANENT_LAND);
|
||||||
this.getSpellAbility().addTarget(auraTarget);
|
this.getSpellAbility().addTarget(auraTarget);
|
||||||
this.getSpellAbility().addEffect(new AttachEffect(Outcome.AddAbility));
|
this.getSpellAbility().addEffect(new AttachEffect(Outcome.AddAbility));
|
||||||
Ability ability = new EnchantAbility(auraTarget);
|
this.addAbility(new EnchantAbility(auraTarget));
|
||||||
this.addAbility(ability);
|
|
||||||
|
|
||||||
// Tap enchanted land: Target blocking creature gets +1/+2 until end of turn. Activate this ability only if enchanted land is untapped.
|
// Tap enchanted land: Target blocking creature gets +1/+2 until end of turn. Activate this ability only if enchanted land is untapped.
|
||||||
Cost cost = new TapAttachedCost();
|
Ability ability = new ActivateIfConditionActivatedAbility(
|
||||||
cost.setText("Tap enchanted land");
|
new BoostTargetEffect(1, 2),
|
||||||
Ability ability2 = new ActivateIfConditionActivatedAbility(Zone.BATTLEFIELD,
|
new TapAttachedCost().setText("Tap enchanted land"), condition
|
||||||
new BoostTargetEffect(1, 2, Duration.EndOfTurn), cost, new AttachedToMatchesFilterCondition(filterUntapped));
|
);
|
||||||
ability2.addTarget(new TargetCreaturePermanent(new FilterBlockingCreature("blocking creature")));
|
ability.addTarget(new TargetCreaturePermanent(new FilterBlockingCreature("blocking creature")));
|
||||||
this.addAbility(ability2);
|
this.addAbility(ability);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private Earthlore(final Earthlore card) {
|
private Earthlore(final Earthlore card) {
|
||||||
|
|
|
||||||
|
|
@ -53,7 +53,7 @@ public final class EladamriKorvecdal extends CardImpl {
|
||||||
|
|
||||||
// {G}, {T}, Tap two untapped creatures you control: Reveal a card from your hand or the top card of your library. If you reveal a creature card this way, put it onto the battlefield. Activate only during your turn.
|
// {G}, {T}, Tap two untapped creatures you control: Reveal a card from your hand or the top card of your library. If you reveal a creature card this way, put it onto the battlefield. Activate only during your turn.
|
||||||
Ability ability = new ActivateIfConditionActivatedAbility(
|
Ability ability = new ActivateIfConditionActivatedAbility(
|
||||||
Zone.BATTLEFIELD, new EladamriKorvecdalEffect(), new ManaCostsImpl<>("{G}"), MyTurnCondition.instance
|
new EladamriKorvecdalEffect(), new ManaCostsImpl<>("{G}"), MyTurnCondition.instance
|
||||||
);
|
);
|
||||||
ability.addCost(new TapSourceCost());
|
ability.addCost(new TapSourceCost());
|
||||||
ability.addCost(new TapTargetCost(new TargetControlledPermanent(
|
ability.addCost(new TapTargetCost(new TargetControlledPermanent(
|
||||||
|
|
@ -163,4 +163,4 @@ class EladamriKorvecdalEffect extends OneShotEffect {
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,5 @@
|
||||||
package mage.cards.e;
|
package mage.cards.e;
|
||||||
|
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.Map;
|
|
||||||
import java.util.UUID;
|
|
||||||
import mage.abilities.Ability;
|
import mage.abilities.Ability;
|
||||||
import mage.abilities.common.ActivateIfConditionActivatedAbility;
|
import mage.abilities.common.ActivateIfConditionActivatedAbility;
|
||||||
import mage.abilities.condition.Condition;
|
import mage.abilities.condition.Condition;
|
||||||
|
|
@ -12,13 +9,15 @@ import mage.abilities.effects.common.DrawCardSourceControllerEffect;
|
||||||
import mage.cards.CardImpl;
|
import mage.cards.CardImpl;
|
||||||
import mage.cards.CardSetInfo;
|
import mage.cards.CardSetInfo;
|
||||||
import mage.constants.CardType;
|
import mage.constants.CardType;
|
||||||
import mage.constants.Zone;
|
|
||||||
import mage.filter.StaticFilters;
|
import mage.filter.StaticFilters;
|
||||||
import mage.game.Game;
|
import mage.game.Game;
|
||||||
import mage.game.permanent.Permanent;
|
import mage.game.permanent.Permanent;
|
||||||
|
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
|
||||||
* @author TheElk801
|
* @author TheElk801
|
||||||
*/
|
*/
|
||||||
public final class EndlessAtlas extends CardImpl {
|
public final class EndlessAtlas extends CardImpl {
|
||||||
|
|
@ -28,10 +27,8 @@ public final class EndlessAtlas extends CardImpl {
|
||||||
|
|
||||||
// {2}, {T}: Draw a card. Activate this ability only if you control three or more lands with the same name.
|
// {2}, {T}: Draw a card. Activate this ability only if you control three or more lands with the same name.
|
||||||
Ability ability = new ActivateIfConditionActivatedAbility(
|
Ability ability = new ActivateIfConditionActivatedAbility(
|
||||||
Zone.BATTLEFIELD,
|
|
||||||
new DrawCardSourceControllerEffect(1),
|
new DrawCardSourceControllerEffect(1),
|
||||||
new GenericManaCost(2),
|
new GenericManaCost(2), EndlessAtlasCondition.instance
|
||||||
new EndlessAtlasCondition()
|
|
||||||
);
|
);
|
||||||
ability.addCost(new TapSourceCost());
|
ability.addCost(new TapSourceCost());
|
||||||
this.addAbility(ability);
|
this.addAbility(ability);
|
||||||
|
|
@ -47,7 +44,8 @@ public final class EndlessAtlas extends CardImpl {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
class EndlessAtlasCondition implements Condition {
|
enum EndlessAtlasCondition implements Condition {
|
||||||
|
instance;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean apply(Game game, Ability source) {
|
public boolean apply(Game game, Ability source) {
|
||||||
|
|
|
||||||
|
|
@ -41,11 +41,12 @@ public final class EverythingamajigC extends CardImpl {
|
||||||
|
|
||||||
// Disrupting Scepter
|
// Disrupting Scepter
|
||||||
// 3, {T}: Target player discards a card. Activate this ability only during your turn.
|
// 3, {T}: Target player discards a card. Activate this ability only during your turn.
|
||||||
Ability ability = new ActivateIfConditionActivatedAbility(Zone.BATTLEFIELD, new DiscardTargetEffect(1), new GenericManaCost(3), MyTurnCondition.instance);
|
Ability ability = new ActivateIfConditionActivatedAbility(
|
||||||
|
new DiscardTargetEffect(1), new GenericManaCost(3), MyTurnCondition.instance
|
||||||
|
);
|
||||||
ability.addTarget(new TargetPlayer());
|
ability.addTarget(new TargetPlayer());
|
||||||
ability.addCost(new TapSourceCost());
|
ability.addCost(new TapSourceCost());
|
||||||
ability.addHint(MyTurnHint.instance);
|
this.addAbility(ability.addHint(MyTurnHint.instance));
|
||||||
this.addAbility(ability);
|
|
||||||
|
|
||||||
// Chimeric Staff
|
// Chimeric Staff
|
||||||
// X: Everythingamajig becomes an X/X Construct artifact creature until end of turn.
|
// X: Everythingamajig becomes an X/X Construct artifact creature until end of turn.
|
||||||
|
|
|
||||||
|
|
@ -13,9 +13,7 @@ import mage.cards.CardImpl;
|
||||||
import mage.cards.CardSetInfo;
|
import mage.cards.CardSetInfo;
|
||||||
import mage.constants.CardType;
|
import mage.constants.CardType;
|
||||||
import mage.constants.SubType;
|
import mage.constants.SubType;
|
||||||
import mage.constants.Zone;
|
|
||||||
import mage.filter.common.FilterControlledPermanent;
|
import mage.filter.common.FilterControlledPermanent;
|
||||||
import mage.target.common.TargetControlledPermanent;
|
|
||||||
|
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
||||||
|
|
@ -36,7 +34,7 @@ public final class FalkenrathPitFighter extends CardImpl {
|
||||||
|
|
||||||
// {1}{R}, Discard a card, Sacrifice a Vampire: Draw two cards. Activate only if an opponent lost life this turn.
|
// {1}{R}, Discard a card, Sacrifice a Vampire: Draw two cards. Activate only if an opponent lost life this turn.
|
||||||
Ability ability = new ActivateIfConditionActivatedAbility(
|
Ability ability = new ActivateIfConditionActivatedAbility(
|
||||||
Zone.BATTLEFIELD, new DrawCardSourceControllerEffect(2),
|
new DrawCardSourceControllerEffect(2),
|
||||||
new ManaCostsImpl<>("{1}{R}"), OpponentsLostLifeCondition.instance
|
new ManaCostsImpl<>("{1}{R}"), OpponentsLostLifeCondition.instance
|
||||||
);
|
);
|
||||||
ability.addCost(new DiscardCardCost());
|
ability.addCost(new DiscardCardCost());
|
||||||
|
|
|
||||||
|
|
@ -10,7 +10,6 @@ import mage.cards.CardImpl;
|
||||||
import mage.cards.CardSetInfo;
|
import mage.cards.CardSetInfo;
|
||||||
import mage.constants.CardType;
|
import mage.constants.CardType;
|
||||||
import mage.constants.SubType;
|
import mage.constants.SubType;
|
||||||
import mage.constants.Zone;
|
|
||||||
import mage.target.common.TargetAnyTarget;
|
import mage.target.common.TargetAnyTarget;
|
||||||
|
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
@ -30,7 +29,7 @@ public final class FireBowman extends CardImpl {
|
||||||
|
|
||||||
// Sacrifice Fire Bowman: Fire Bowman deals 1 damage to any target. Activate this ability only during your turn, before attackers are declared.
|
// Sacrifice Fire Bowman: Fire Bowman deals 1 damage to any target. Activate this ability only during your turn, before attackers are declared.
|
||||||
Ability ability = new ActivateIfConditionActivatedAbility(
|
Ability ability = new ActivateIfConditionActivatedAbility(
|
||||||
Zone.BATTLEFIELD, new DamageTargetEffect(1, "it"),
|
new DamageTargetEffect(1, "it"),
|
||||||
new SacrificeSourceCost(), MyTurnBeforeAttackersDeclaredCondition.instance
|
new SacrificeSourceCost(), MyTurnBeforeAttackersDeclaredCondition.instance
|
||||||
);
|
);
|
||||||
ability.addTarget(new TargetAnyTarget());
|
ability.addTarget(new TargetAnyTarget());
|
||||||
|
|
|
||||||
|
|
@ -5,18 +5,15 @@ import mage.abilities.Ability;
|
||||||
import mage.abilities.common.ActivateIfConditionActivatedAbility;
|
import mage.abilities.common.ActivateIfConditionActivatedAbility;
|
||||||
import mage.abilities.condition.common.MyTurnCondition;
|
import mage.abilities.condition.common.MyTurnCondition;
|
||||||
import mage.abilities.costs.mana.ManaCostsImpl;
|
import mage.abilities.costs.mana.ManaCostsImpl;
|
||||||
import mage.abilities.effects.Effect;
|
|
||||||
import mage.abilities.effects.common.continuous.BoostSourceEffect;
|
import mage.abilities.effects.common.continuous.BoostSourceEffect;
|
||||||
import mage.abilities.effects.common.continuous.BoostTargetEffect;
|
import mage.abilities.effects.common.continuous.BoostTargetEffect;
|
||||||
import mage.abilities.effects.common.continuous.GainAbilitySourceEffect;
|
import mage.abilities.effects.common.continuous.GainAbilitySourceEffect;
|
||||||
import mage.abilities.hint.common.MyTurnHint;
|
|
||||||
import mage.abilities.keyword.FearAbility;
|
import mage.abilities.keyword.FearAbility;
|
||||||
import mage.cards.CardImpl;
|
import mage.cards.CardImpl;
|
||||||
import mage.cards.CardSetInfo;
|
import mage.cards.CardSetInfo;
|
||||||
import mage.constants.CardType;
|
import mage.constants.CardType;
|
||||||
import mage.constants.Duration;
|
import mage.constants.Duration;
|
||||||
import mage.constants.SubType;
|
import mage.constants.SubType;
|
||||||
import mage.constants.Zone;
|
|
||||||
import mage.target.common.TargetCreaturePermanent;
|
import mage.target.common.TargetCreaturePermanent;
|
||||||
|
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
@ -35,17 +32,15 @@ public final class Fleshformer extends CardImpl {
|
||||||
this.toughness = new MageInt(2);
|
this.toughness = new MageInt(2);
|
||||||
|
|
||||||
// {W}{U}{B}{R}{G}: Fleshformer gets +2/+2 and gains fear until end of turn. Target creature gets -2/-2 until end of turn. Activate this ability only during your turn.
|
// {W}{U}{B}{R}{G}: Fleshformer gets +2/+2 and gains fear until end of turn. Target creature gets -2/-2 until end of turn. Activate this ability only during your turn.
|
||||||
Effect effect = new BoostSourceEffect(2, 2, Duration.EndOfTurn);
|
Ability ability = new ActivateIfConditionActivatedAbility(
|
||||||
effect.setText("{this} gets +2/+2");
|
new BoostSourceEffect(2, 2, Duration.EndOfTurn)
|
||||||
Ability ability = new ActivateIfConditionActivatedAbility(Zone.BATTLEFIELD, effect, new ManaCostsImpl<>("{W}{U}{B}{R}{G}"), MyTurnCondition.instance);
|
.setText("{this} gets +2/+2"),
|
||||||
effect = new GainAbilitySourceEffect(FearAbility.getInstance(), Duration.EndOfTurn);
|
new ManaCostsImpl<>("{W}{U}{B}{R}{G}"), MyTurnCondition.instance
|
||||||
effect.setText("and gains fear until end of turn");
|
);
|
||||||
ability.addEffect(effect);
|
ability.addEffect(new GainAbilitySourceEffect(FearAbility.getInstance(), Duration.EndOfTurn).setText("and gains fear until end of turn"));
|
||||||
ability.addEffect(new BoostTargetEffect(-2, -2, Duration.EndOfTurn));
|
ability.addEffect(new BoostTargetEffect(-2, -2, Duration.EndOfTurn));
|
||||||
ability.addTarget(new TargetCreaturePermanent());
|
ability.addTarget(new TargetCreaturePermanent());
|
||||||
ability.addHint(MyTurnHint.instance);
|
|
||||||
this.addAbility(ability);
|
this.addAbility(ability);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private Fleshformer(final Fleshformer card) {
|
private Fleshformer(final Fleshformer card) {
|
||||||
|
|
|
||||||
|
|
@ -1,32 +1,29 @@
|
||||||
|
|
||||||
package mage.cards.f;
|
package mage.cards.f;
|
||||||
|
|
||||||
import java.util.UUID;
|
|
||||||
import mage.MageInt;
|
import mage.MageInt;
|
||||||
import mage.abilities.Ability;
|
import mage.abilities.Ability;
|
||||||
import mage.abilities.common.ActivateIfConditionActivatedAbility;
|
import mage.abilities.common.ActivateIfConditionActivatedAbility;
|
||||||
import mage.abilities.condition.common.SourceAttackingCondition;
|
import mage.abilities.condition.common.SourceAttackingCondition;
|
||||||
import mage.abilities.costs.mana.ManaCostsImpl;
|
import mage.abilities.costs.mana.ManaCostsImpl;
|
||||||
import mage.abilities.effects.Effect;
|
|
||||||
import mage.abilities.effects.common.DamageTargetEffect;
|
import mage.abilities.effects.common.DamageTargetEffect;
|
||||||
import mage.abilities.effects.common.combat.CantBlockTargetEffect;
|
import mage.abilities.effects.common.combat.CantBlockTargetEffect;
|
||||||
import mage.abilities.keyword.FlyingAbility;
|
import mage.abilities.keyword.FlyingAbility;
|
||||||
import mage.cards.CardImpl;
|
import mage.cards.CardImpl;
|
||||||
import mage.cards.CardSetInfo;
|
import mage.cards.CardSetInfo;
|
||||||
import mage.constants.CardType;
|
import mage.constants.CardType;
|
||||||
import mage.constants.SubType;
|
|
||||||
import mage.constants.Duration;
|
import mage.constants.Duration;
|
||||||
import mage.constants.Zone;
|
import mage.constants.SubType;
|
||||||
import mage.target.common.TargetCreaturePermanent;
|
import mage.target.common.TargetCreaturePermanent;
|
||||||
|
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
|
||||||
* @author LevelX2
|
* @author LevelX2
|
||||||
*/
|
*/
|
||||||
public final class ForgestokerDragon extends CardImpl {
|
public final class ForgestokerDragon extends CardImpl {
|
||||||
|
|
||||||
public ForgestokerDragon(UUID ownerId, CardSetInfo setInfo) {
|
public ForgestokerDragon(UUID ownerId, CardSetInfo setInfo) {
|
||||||
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{R}{R}");
|
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{R}{R}");
|
||||||
this.subtype.add(SubType.DRAGON);
|
this.subtype.add(SubType.DRAGON);
|
||||||
|
|
||||||
this.power = new MageInt(5);
|
this.power = new MageInt(5);
|
||||||
|
|
@ -34,14 +31,15 @@ public final class ForgestokerDragon extends CardImpl {
|
||||||
|
|
||||||
// Flying
|
// Flying
|
||||||
this.addAbility(FlyingAbility.getInstance());
|
this.addAbility(FlyingAbility.getInstance());
|
||||||
// {1}{R}: Forgestoker Dragon deals 1 damage to target creature. That creature can't block this combat. Activate this ability only if Forgestoker Dragon is attacking.
|
|
||||||
Ability ability = new ActivateIfConditionActivatedAbility(Zone.BATTLEFIELD, new DamageTargetEffect(1), new ManaCostsImpl<>("{1}{R}"), SourceAttackingCondition.instance);
|
|
||||||
ability.addTarget(new TargetCreaturePermanent());
|
|
||||||
Effect effect = new CantBlockTargetEffect(Duration.EndOfCombat);
|
|
||||||
effect.setText("That creature can't block this combat");
|
|
||||||
ability.addEffect(effect);
|
|
||||||
this.addAbility(ability);
|
|
||||||
|
|
||||||
|
// {1}{R}: Forgestoker Dragon deals 1 damage to target creature. That creature can't block this combat. Activate this ability only if Forgestoker Dragon is attacking.
|
||||||
|
Ability ability = new ActivateIfConditionActivatedAbility(
|
||||||
|
new DamageTargetEffect(1), new ManaCostsImpl<>("{1}{R}"), SourceAttackingCondition.instance
|
||||||
|
);
|
||||||
|
ability.addEffect(new CantBlockTargetEffect(Duration.EndOfCombat)
|
||||||
|
.setText("That creature can't block this combat"));
|
||||||
|
ability.addTarget(new TargetCreaturePermanent());
|
||||||
|
this.addAbility(ability);
|
||||||
}
|
}
|
||||||
|
|
||||||
private ForgestokerDragon(final ForgestokerDragon card) {
|
private ForgestokerDragon(final ForgestokerDragon card) {
|
||||||
|
|
|
||||||
|
|
@ -1,31 +1,31 @@
|
||||||
|
|
||||||
package mage.cards.g;
|
package mage.cards.g;
|
||||||
|
|
||||||
import java.util.UUID;
|
|
||||||
import mage.MageInt;
|
import mage.MageInt;
|
||||||
import mage.abilities.Ability;
|
import mage.abilities.Ability;
|
||||||
import mage.abilities.common.ActivateIfConditionActivatedAbility;
|
import mage.abilities.common.ActivateIfConditionActivatedAbility;
|
||||||
import mage.abilities.triggers.BeginningOfUpkeepTriggeredAbility;
|
|
||||||
import mage.abilities.condition.common.SourceAttackingCondition;
|
import mage.abilities.condition.common.SourceAttackingCondition;
|
||||||
import mage.abilities.costs.mana.ManaCostsImpl;
|
import mage.abilities.costs.mana.ManaCostsImpl;
|
||||||
import mage.abilities.effects.OneShotEffect;
|
import mage.abilities.dynamicvalue.common.CardsInTargetHandCount;
|
||||||
|
import mage.abilities.effects.common.GainLifeEffect;
|
||||||
import mage.abilities.effects.common.TapTargetEffect;
|
import mage.abilities.effects.common.TapTargetEffect;
|
||||||
|
import mage.abilities.triggers.BeginningOfUpkeepTriggeredAbility;
|
||||||
import mage.cards.CardImpl;
|
import mage.cards.CardImpl;
|
||||||
import mage.cards.CardSetInfo;
|
import mage.cards.CardSetInfo;
|
||||||
import mage.constants.*;
|
import mage.constants.CardType;
|
||||||
import mage.game.Game;
|
import mage.constants.SubType;
|
||||||
import mage.players.Player;
|
import mage.constants.SuperType;
|
||||||
import mage.target.common.TargetCreaturePermanent;
|
import mage.target.common.TargetCreaturePermanent;
|
||||||
import mage.target.common.TargetOpponent;
|
import mage.target.common.TargetOpponent;
|
||||||
|
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
|
||||||
* @author FenrisulfrX
|
* @author FenrisulfrX
|
||||||
*/
|
*/
|
||||||
public final class GerrardCapashen extends CardImpl {
|
public final class GerrardCapashen extends CardImpl {
|
||||||
|
|
||||||
public GerrardCapashen(UUID ownerId, CardSetInfo setInfo) {
|
public GerrardCapashen(UUID ownerId, CardSetInfo setInfo) {
|
||||||
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{W}{W}");
|
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{W}{W}");
|
||||||
this.supertype.add(SuperType.LEGENDARY);
|
this.supertype.add(SuperType.LEGENDARY);
|
||||||
this.subtype.add(SubType.HUMAN);
|
this.subtype.add(SubType.HUMAN);
|
||||||
this.subtype.add(SubType.SOLDIER);
|
this.subtype.add(SubType.SOLDIER);
|
||||||
|
|
@ -33,16 +33,17 @@ public final class GerrardCapashen extends CardImpl {
|
||||||
this.toughness = new MageInt(4);
|
this.toughness = new MageInt(4);
|
||||||
|
|
||||||
// At the beginning of your upkeep, you gain 1 life for each card in target opponent's hand.
|
// At the beginning of your upkeep, you gain 1 life for each card in target opponent's hand.
|
||||||
Ability ability1 = new BeginningOfUpkeepTriggeredAbility(new GerrardCapashenEffect()
|
Ability ability = new BeginningOfUpkeepTriggeredAbility(new GainLifeEffect(CardsInTargetHandCount.instance)
|
||||||
);
|
.setText("you gain 1 life for each card in target opponent's hand"));
|
||||||
ability1.addTarget(new TargetOpponent());
|
ability.addTarget(new TargetOpponent());
|
||||||
this.addAbility(ability1);
|
this.addAbility(ability);
|
||||||
|
|
||||||
// {3}{W}: Tap target creature. Activate this ability only if {this} is attacking.
|
// {3}{W}: Tap target creature. Activate this ability only if {this} is attacking.
|
||||||
Ability ability2 = new ActivateIfConditionActivatedAbility(Zone.BATTLEFIELD, new TapTargetEffect(),
|
ability = new ActivateIfConditionActivatedAbility(
|
||||||
new ManaCostsImpl<>("{3}{W}"), SourceAttackingCondition.instance);
|
new TapTargetEffect(), new ManaCostsImpl<>("{3}{W}"), SourceAttackingCondition.instance
|
||||||
ability2.addTarget(new TargetCreaturePermanent());
|
);
|
||||||
this.addAbility(ability2);
|
ability.addTarget(new TargetCreaturePermanent());
|
||||||
|
this.addAbility(ability);
|
||||||
}
|
}
|
||||||
|
|
||||||
private GerrardCapashen(final GerrardCapashen card) {
|
private GerrardCapashen(final GerrardCapashen card) {
|
||||||
|
|
@ -54,34 +55,3 @@ public final class GerrardCapashen extends CardImpl {
|
||||||
return new GerrardCapashen(this);
|
return new GerrardCapashen(this);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
class GerrardCapashenEffect extends OneShotEffect {
|
|
||||||
|
|
||||||
GerrardCapashenEffect() {
|
|
||||||
super(Outcome.GainLife);
|
|
||||||
staticText = "you gain 1 life for each card in target opponent's hand.";
|
|
||||||
}
|
|
||||||
|
|
||||||
private GerrardCapashenEffect(final GerrardCapashenEffect effect) {
|
|
||||||
super(effect);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public GerrardCapashenEffect copy() {
|
|
||||||
return new GerrardCapashenEffect(this);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean apply(Game game, Ability source) {
|
|
||||||
Player controller = game.getPlayer(source.getControllerId());
|
|
||||||
Player targetOpponent = game.getPlayer(this.getTargetPointer().getFirst(game, source));
|
|
||||||
if (controller != null && targetOpponent != null) {
|
|
||||||
int cardsInHand = targetOpponent.getHand().size();
|
|
||||||
if (cardsInHand > 0) {
|
|
||||||
controller.gainLife(cardsInHand, game, source);
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
|
||||||
|
|
@ -4,12 +4,10 @@ import mage.abilities.common.ActivateIfConditionActivatedAbility;
|
||||||
import mage.abilities.condition.common.NotMyTurnCondition;
|
import mage.abilities.condition.common.NotMyTurnCondition;
|
||||||
import mage.abilities.costs.mana.GenericManaCost;
|
import mage.abilities.costs.mana.GenericManaCost;
|
||||||
import mage.abilities.effects.common.ReturnToHandSourceEffect;
|
import mage.abilities.effects.common.ReturnToHandSourceEffect;
|
||||||
import mage.abilities.hint.common.NotMyTurnHint;
|
|
||||||
import mage.abilities.mana.ColorlessManaAbility;
|
import mage.abilities.mana.ColorlessManaAbility;
|
||||||
import mage.cards.CardImpl;
|
import mage.cards.CardImpl;
|
||||||
import mage.cards.CardSetInfo;
|
import mage.cards.CardSetInfo;
|
||||||
import mage.constants.CardType;
|
import mage.constants.CardType;
|
||||||
import mage.constants.Zone;
|
|
||||||
|
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
||||||
|
|
@ -25,9 +23,9 @@ public final class GhostTown extends CardImpl {
|
||||||
this.addAbility(new ColorlessManaAbility());
|
this.addAbility(new ColorlessManaAbility());
|
||||||
|
|
||||||
// {0}: Return Ghost Town to its owner's hand. Activate this ability only if it's not your turn.
|
// {0}: Return Ghost Town to its owner's hand. Activate this ability only if it's not your turn.
|
||||||
this.addAbility(new ActivateIfConditionActivatedAbility(Zone.BATTLEFIELD, new ReturnToHandSourceEffect(true),
|
this.addAbility(new ActivateIfConditionActivatedAbility(
|
||||||
new GenericManaCost(0), NotMyTurnCondition.instance)
|
new ReturnToHandSourceEffect(true), new GenericManaCost(0), NotMyTurnCondition.instance
|
||||||
.addHint(NotMyTurnHint.instance));
|
));
|
||||||
}
|
}
|
||||||
|
|
||||||
private GhostTown(final GhostTown card) {
|
private GhostTown(final GhostTown card) {
|
||||||
|
|
|
||||||
|
|
@ -13,7 +13,6 @@ import mage.cards.CardImpl;
|
||||||
import mage.cards.CardSetInfo;
|
import mage.cards.CardSetInfo;
|
||||||
import mage.constants.CardType;
|
import mage.constants.CardType;
|
||||||
import mage.constants.SubType;
|
import mage.constants.SubType;
|
||||||
import mage.constants.Zone;
|
|
||||||
import mage.watchers.common.DiscardedCardWatcher;
|
import mage.watchers.common.DiscardedCardWatcher;
|
||||||
|
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
@ -33,8 +32,8 @@ public final class GiltBladeProwler extends CardImpl {
|
||||||
|
|
||||||
// {1}, {T}, Pay 1 life: Draw a card. Activate only if you've discarded a card this turn.
|
// {1}, {T}, Pay 1 life: Draw a card. Activate only if you've discarded a card this turn.
|
||||||
Ability ability = new ActivateIfConditionActivatedAbility(
|
Ability ability = new ActivateIfConditionActivatedAbility(
|
||||||
Zone.BATTLEFIELD, new DrawCardSourceControllerEffect(1),
|
new DrawCardSourceControllerEffect(1), new GenericManaCost(1),
|
||||||
new GenericManaCost(1), ControllerDiscardedThisTurnCondition.instance
|
ControllerDiscardedThisTurnCondition.instance
|
||||||
);
|
);
|
||||||
ability.addCost(new TapSourceCost());
|
ability.addCost(new TapSourceCost());
|
||||||
ability.addCost(new PayLifeCost(1));
|
ability.addCost(new PayLifeCost(1));
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,6 @@
|
||||||
|
|
||||||
package mage.cards.g;
|
package mage.cards.g;
|
||||||
|
|
||||||
import java.util.UUID;
|
|
||||||
import mage.MageInt;
|
import mage.MageInt;
|
||||||
import mage.abilities.Ability;
|
|
||||||
import mage.abilities.common.ActivateIfConditionActivatedAbility;
|
import mage.abilities.common.ActivateIfConditionActivatedAbility;
|
||||||
import mage.abilities.condition.common.FormidableCondition;
|
import mage.abilities.condition.common.FormidableCondition;
|
||||||
import mage.abilities.costs.mana.ManaCostsImpl;
|
import mage.abilities.costs.mana.ManaCostsImpl;
|
||||||
|
|
@ -13,32 +10,30 @@ import mage.cards.CardImpl;
|
||||||
import mage.cards.CardSetInfo;
|
import mage.cards.CardSetInfo;
|
||||||
import mage.constants.AbilityWord;
|
import mage.constants.AbilityWord;
|
||||||
import mage.constants.CardType;
|
import mage.constants.CardType;
|
||||||
import mage.constants.SubType;
|
|
||||||
import mage.constants.Duration;
|
import mage.constants.Duration;
|
||||||
import mage.constants.Zone;
|
import mage.constants.SubType;
|
||||||
|
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
|
||||||
* @author LevelX2
|
* @author LevelX2
|
||||||
*/
|
*/
|
||||||
public final class GladeWatcher extends CardImpl {
|
public final class GladeWatcher extends CardImpl {
|
||||||
|
|
||||||
public GladeWatcher(UUID ownerId, CardSetInfo setInfo) {
|
public GladeWatcher(UUID ownerId, CardSetInfo setInfo) {
|
||||||
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}");
|
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{G}");
|
||||||
this.subtype.add(SubType.ELEMENTAL);
|
this.subtype.add(SubType.ELEMENTAL);
|
||||||
this.power = new MageInt(3);
|
this.power = new MageInt(3);
|
||||||
this.toughness = new MageInt(3);
|
this.toughness = new MageInt(3);
|
||||||
|
|
||||||
// Defender
|
// Defender
|
||||||
this.addAbility(DefenderAbility.getInstance());
|
this.addAbility(DefenderAbility.getInstance());
|
||||||
|
|
||||||
// <i>Formidable</i> — {G}: Glade Watcher can attack this turn as though it didn't have defender. Activate this ability only if creatures you control have total power 8 or greater.
|
// <i>Formidable</i> — {G}: Glade Watcher can attack this turn as though it didn't have defender. Activate this ability only if creatures you control have total power 8 or greater.
|
||||||
Ability ability = new ActivateIfConditionActivatedAbility(
|
this.addAbility(new ActivateIfConditionActivatedAbility(
|
||||||
Zone.BATTLEFIELD,
|
|
||||||
new CanAttackAsThoughItDidntHaveDefenderSourceEffect(Duration.EndOfTurn),
|
new CanAttackAsThoughItDidntHaveDefenderSourceEffect(Duration.EndOfTurn),
|
||||||
new ManaCostsImpl<>("{G}"),
|
new ManaCostsImpl<>("{G}"), FormidableCondition.instance
|
||||||
FormidableCondition.instance);
|
).setAbilityWord(AbilityWord.FORMIDABLE));
|
||||||
ability.setAbilityWord(AbilityWord.FORMIDABLE);
|
|
||||||
this.addAbility(ability);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private GladeWatcher(final GladeWatcher card) {
|
private GladeWatcher(final GladeWatcher card) {
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,5 @@
|
||||||
|
|
||||||
package mage.cards.g;
|
package mage.cards.g;
|
||||||
|
|
||||||
import java.util.UUID;
|
|
||||||
import mage.MageInt;
|
import mage.MageInt;
|
||||||
import mage.abilities.Ability;
|
import mage.abilities.Ability;
|
||||||
import mage.abilities.common.ActivateIfConditionActivatedAbility;
|
import mage.abilities.common.ActivateIfConditionActivatedAbility;
|
||||||
|
|
@ -12,24 +10,26 @@ import mage.cards.CardImpl;
|
||||||
import mage.cards.CardSetInfo;
|
import mage.cards.CardSetInfo;
|
||||||
import mage.constants.CardType;
|
import mage.constants.CardType;
|
||||||
import mage.constants.SubType;
|
import mage.constants.SubType;
|
||||||
import mage.constants.Zone;
|
|
||||||
import mage.target.common.TargetAnyTarget;
|
import mage.target.common.TargetAnyTarget;
|
||||||
|
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
|
||||||
* @author fireshoes
|
* @author fireshoes
|
||||||
*/
|
*/
|
||||||
public final class GoblinFirestarter extends CardImpl {
|
public final class GoblinFirestarter extends CardImpl {
|
||||||
|
|
||||||
public GoblinFirestarter(UUID ownerId, CardSetInfo setInfo) {
|
public GoblinFirestarter(UUID ownerId, CardSetInfo setInfo) {
|
||||||
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{R}");
|
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{R}");
|
||||||
this.subtype.add(SubType.GOBLIN);
|
this.subtype.add(SubType.GOBLIN);
|
||||||
this.power = new MageInt(1);
|
this.power = new MageInt(1);
|
||||||
this.toughness = new MageInt(1);
|
this.toughness = new MageInt(1);
|
||||||
|
|
||||||
// Sacrifice Goblin Firestarter: Goblin Firestarter deals 1 damage to any target. Activate this ability only during your turn, before attackers are declared.
|
// Sacrifice Goblin Firestarter: Goblin Firestarter deals 1 damage to any target. Activate this ability only during your turn, before attackers are declared.
|
||||||
Ability ability = new ActivateIfConditionActivatedAbility(Zone.BATTLEFIELD,
|
Ability ability = new ActivateIfConditionActivatedAbility(
|
||||||
new DamageTargetEffect(1,"it"), new SacrificeSourceCost(), MyTurnBeforeAttackersDeclaredCondition.instance);
|
new DamageTargetEffect(1, "it"),
|
||||||
|
new SacrificeSourceCost(), MyTurnBeforeAttackersDeclaredCondition.instance
|
||||||
|
);
|
||||||
ability.addTarget(new TargetAnyTarget());
|
ability.addTarget(new TargetAnyTarget());
|
||||||
this.addAbility(ability);
|
this.addAbility(ability);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -11,7 +11,6 @@ import mage.cards.CardSetInfo;
|
||||||
import mage.constants.CardType;
|
import mage.constants.CardType;
|
||||||
import mage.constants.Duration;
|
import mage.constants.Duration;
|
||||||
import mage.constants.SubType;
|
import mage.constants.SubType;
|
||||||
import mage.constants.Zone;
|
|
||||||
import mage.game.Game;
|
import mage.game.Game;
|
||||||
import mage.game.permanent.Permanent;
|
import mage.game.permanent.Permanent;
|
||||||
import mage.target.common.TargetCreaturePermanent;
|
import mage.target.common.TargetCreaturePermanent;
|
||||||
|
|
@ -30,8 +29,9 @@ public final class GreenhiltTrainee extends CardImpl {
|
||||||
|
|
||||||
this.power = new MageInt(2);
|
this.power = new MageInt(2);
|
||||||
this.toughness = new MageInt(3);
|
this.toughness = new MageInt(3);
|
||||||
|
|
||||||
Ability ability = new ActivateIfConditionActivatedAbility(
|
Ability ability = new ActivateIfConditionActivatedAbility(
|
||||||
Zone.BATTLEFIELD, new BoostTargetEffect(4, 4, Duration.EndOfTurn),
|
new BoostTargetEffect(4, 4, Duration.EndOfTurn),
|
||||||
new TapSourceCost(), GreenhiltTraineeCondition.instance
|
new TapSourceCost(), GreenhiltTraineeCondition.instance
|
||||||
);
|
);
|
||||||
ability.addTarget(new TargetCreaturePermanent());
|
ability.addTarget(new TargetCreaturePermanent());
|
||||||
|
|
|
||||||
|
|
@ -6,13 +6,11 @@ import mage.abilities.common.ActivateIfConditionActivatedAbility;
|
||||||
import mage.abilities.condition.common.MyTurnCondition;
|
import mage.abilities.condition.common.MyTurnCondition;
|
||||||
import mage.abilities.costs.common.TapSourceCost;
|
import mage.abilities.costs.common.TapSourceCost;
|
||||||
import mage.abilities.effects.common.discard.DiscardTargetEffect;
|
import mage.abilities.effects.common.discard.DiscardTargetEffect;
|
||||||
import mage.abilities.hint.common.MyTurnHint;
|
|
||||||
import mage.cards.CardImpl;
|
import mage.cards.CardImpl;
|
||||||
import mage.cards.CardSetInfo;
|
import mage.cards.CardSetInfo;
|
||||||
import mage.constants.CardType;
|
import mage.constants.CardType;
|
||||||
import mage.constants.SubType;
|
import mage.constants.SubType;
|
||||||
import mage.constants.SuperType;
|
import mage.constants.SuperType;
|
||||||
import mage.constants.Zone;
|
|
||||||
import mage.target.TargetPlayer;
|
import mage.target.TargetPlayer;
|
||||||
|
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
@ -31,9 +29,10 @@ public final class GwendlynDiCorci extends CardImpl {
|
||||||
this.toughness = new MageInt(5);
|
this.toughness = new MageInt(5);
|
||||||
|
|
||||||
// {T}: Target player discards a card at random. Activate this ability only during your turn.
|
// {T}: Target player discards a card at random. Activate this ability only during your turn.
|
||||||
Ability ability = new ActivateIfConditionActivatedAbility(Zone.BATTLEFIELD, new DiscardTargetEffect(1, true), new TapSourceCost(), MyTurnCondition.instance);
|
Ability ability = new ActivateIfConditionActivatedAbility(
|
||||||
|
new DiscardTargetEffect(1, true), new TapSourceCost(), MyTurnCondition.instance
|
||||||
|
);
|
||||||
ability.addTarget(new TargetPlayer());
|
ability.addTarget(new TargetPlayer());
|
||||||
ability.addHint(MyTurnHint.instance);
|
|
||||||
this.addAbility(ability);
|
this.addAbility(ability);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,10 +1,9 @@
|
||||||
|
|
||||||
package mage.cards.h;
|
package mage.cards.h;
|
||||||
|
|
||||||
import java.util.UUID;
|
|
||||||
import mage.MageInt;
|
import mage.MageInt;
|
||||||
import mage.abilities.Ability;
|
import mage.abilities.Ability;
|
||||||
import mage.abilities.common.ActivateIfConditionActivatedAbility;
|
import mage.abilities.common.ActivateIfConditionActivatedAbility;
|
||||||
|
import mage.abilities.condition.Condition;
|
||||||
import mage.abilities.condition.common.PermanentsOnTheBattlefieldCondition;
|
import mage.abilities.condition.common.PermanentsOnTheBattlefieldCondition;
|
||||||
import mage.abilities.costs.common.TapSourceCost;
|
import mage.abilities.costs.common.TapSourceCost;
|
||||||
import mage.abilities.costs.mana.GenericManaCost;
|
import mage.abilities.costs.mana.GenericManaCost;
|
||||||
|
|
@ -12,27 +11,30 @@ import mage.abilities.effects.common.ReturnToHandTargetEffect;
|
||||||
import mage.cards.CardImpl;
|
import mage.cards.CardImpl;
|
||||||
import mage.cards.CardSetInfo;
|
import mage.cards.CardSetInfo;
|
||||||
import mage.constants.CardType;
|
import mage.constants.CardType;
|
||||||
import mage.constants.SubType;
|
|
||||||
import mage.constants.ComparisonType;
|
import mage.constants.ComparisonType;
|
||||||
|
import mage.constants.SubType;
|
||||||
import mage.constants.SuperType;
|
import mage.constants.SuperType;
|
||||||
import mage.constants.Zone;
|
import mage.filter.FilterPermanent;
|
||||||
import mage.filter.common.FilterControlledPermanent;
|
import mage.filter.common.FilterControlledPermanent;
|
||||||
import mage.target.TargetPermanent;
|
import mage.target.TargetPermanent;
|
||||||
|
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
|
||||||
* @author fireshoes
|
* @author fireshoes
|
||||||
*/
|
*/
|
||||||
public final class HeidarRimewindMaster extends CardImpl {
|
public final class HeidarRimewindMaster extends CardImpl {
|
||||||
|
|
||||||
private static final FilterControlledPermanent filter = new FilterControlledPermanent("you control four or more snow permanents");
|
private static final FilterPermanent filter = new FilterControlledPermanent("you control four or more snow permanents");
|
||||||
|
|
||||||
static {
|
static {
|
||||||
filter.add(SuperType.SNOW.getPredicate());
|
filter.add(SuperType.SNOW.getPredicate());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static final Condition condition = new PermanentsOnTheBattlefieldCondition(filter, ComparisonType.MORE_THAN, 3);
|
||||||
|
|
||||||
public HeidarRimewindMaster(UUID ownerId, CardSetInfo setInfo) {
|
public HeidarRimewindMaster(UUID ownerId, CardSetInfo setInfo) {
|
||||||
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{U}");
|
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{U}");
|
||||||
this.supertype.add(SuperType.LEGENDARY);
|
this.supertype.add(SuperType.LEGENDARY);
|
||||||
this.subtype.add(SubType.HUMAN);
|
this.subtype.add(SubType.HUMAN);
|
||||||
this.subtype.add(SubType.WIZARD);
|
this.subtype.add(SubType.WIZARD);
|
||||||
|
|
@ -40,10 +42,9 @@ public final class HeidarRimewindMaster extends CardImpl {
|
||||||
this.toughness = new MageInt(3);
|
this.toughness = new MageInt(3);
|
||||||
|
|
||||||
// {2}, {tap}: Return target permanent to its owner's hand. Activate this ability only if you control four or more snow permanents.
|
// {2}, {tap}: Return target permanent to its owner's hand. Activate this ability only if you control four or more snow permanents.
|
||||||
Ability ability = new ActivateIfConditionActivatedAbility(Zone.BATTLEFIELD,
|
Ability ability = new ActivateIfConditionActivatedAbility(
|
||||||
new ReturnToHandTargetEffect(),
|
new ReturnToHandTargetEffect(), new GenericManaCost(2), condition
|
||||||
new GenericManaCost(2),
|
);
|
||||||
new PermanentsOnTheBattlefieldCondition(filter, ComparisonType.MORE_THAN, 3));
|
|
||||||
ability.addCost(new TapSourceCost());
|
ability.addCost(new TapSourceCost());
|
||||||
ability.addTarget(new TargetPermanent());
|
ability.addTarget(new TargetPermanent());
|
||||||
this.addAbility(ability);
|
this.addAbility(ability);
|
||||||
|
|
|
||||||
|
|
@ -8,12 +8,10 @@ import mage.abilities.costs.common.RemoveCountersSourceCost;
|
||||||
import mage.abilities.costs.mana.ManaCostsImpl;
|
import mage.abilities.costs.mana.ManaCostsImpl;
|
||||||
import mage.abilities.effects.common.CreateTokenEffect;
|
import mage.abilities.effects.common.CreateTokenEffect;
|
||||||
import mage.abilities.effects.common.counter.AddCountersSourceEffect;
|
import mage.abilities.effects.common.counter.AddCountersSourceEffect;
|
||||||
import mage.abilities.hint.common.MyTurnHint;
|
|
||||||
import mage.cards.CardImpl;
|
import mage.cards.CardImpl;
|
||||||
import mage.cards.CardSetInfo;
|
import mage.cards.CardSetInfo;
|
||||||
import mage.constants.CardType;
|
import mage.constants.CardType;
|
||||||
import mage.constants.SubType;
|
import mage.constants.SubType;
|
||||||
import mage.constants.Zone;
|
|
||||||
import mage.counters.CounterType;
|
import mage.counters.CounterType;
|
||||||
import mage.game.permanent.token.WhiteElementalToken;
|
import mage.game.permanent.token.WhiteElementalToken;
|
||||||
|
|
||||||
|
|
@ -29,12 +27,16 @@ public final class HoofprintsOfTheStag extends CardImpl {
|
||||||
this.subtype.add(SubType.ELEMENTAL);
|
this.subtype.add(SubType.ELEMENTAL);
|
||||||
|
|
||||||
// Whenever you draw a card, you may put a hoofprint counter on Hoofprints of the Stag.
|
// Whenever you draw a card, you may put a hoofprint counter on Hoofprints of the Stag.
|
||||||
this.addAbility(new DrawCardControllerTriggeredAbility(new AddCountersSourceEffect(CounterType.HOOFPRINT.createInstance(1)), true));
|
this.addAbility(new DrawCardControllerTriggeredAbility(
|
||||||
|
new AddCountersSourceEffect(CounterType.HOOFPRINT.createInstance(1)), true
|
||||||
|
));
|
||||||
|
|
||||||
// {2}{w}, Remove four hoofprint counters from Hoofprints of the Stag: Create a 4/4 white Elemental creature token with flying. Activate this ability only during your turn.
|
// {2}{w}, Remove four hoofprint counters from Hoofprints of the Stag: Create a 4/4 white Elemental creature token with flying. Activate this ability only during your turn.
|
||||||
Ability ability = new ActivateIfConditionActivatedAbility(Zone.BATTLEFIELD, new CreateTokenEffect(new WhiteElementalToken(), 1), new ManaCostsImpl<>("{2}{W}"), MyTurnCondition.instance);
|
Ability ability = new ActivateIfConditionActivatedAbility(
|
||||||
|
new CreateTokenEffect(new WhiteElementalToken(), 1),
|
||||||
|
new ManaCostsImpl<>("{2}{W}"), MyTurnCondition.instance
|
||||||
|
);
|
||||||
ability.addCost(new RemoveCountersSourceCost(CounterType.HOOFPRINT.createInstance(4)));
|
ability.addCost(new RemoveCountersSourceCost(CounterType.HOOFPRINT.createInstance(4)));
|
||||||
ability.addHint(MyTurnHint.instance);
|
|
||||||
this.addAbility(ability);
|
this.addAbility(ability);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,5 @@
|
||||||
|
|
||||||
package mage.cards.h;
|
package mage.cards.h;
|
||||||
|
|
||||||
import java.util.UUID;
|
|
||||||
import mage.MageInt;
|
import mage.MageInt;
|
||||||
import mage.abilities.Ability;
|
import mage.abilities.Ability;
|
||||||
import mage.abilities.common.ActivateIfConditionActivatedAbility;
|
import mage.abilities.common.ActivateIfConditionActivatedAbility;
|
||||||
|
|
@ -13,12 +11,12 @@ import mage.cards.CardSetInfo;
|
||||||
import mage.constants.CardType;
|
import mage.constants.CardType;
|
||||||
import mage.constants.SubType;
|
import mage.constants.SubType;
|
||||||
import mage.constants.SuperType;
|
import mage.constants.SuperType;
|
||||||
import mage.constants.Zone;
|
|
||||||
import mage.filter.StaticFilters;
|
import mage.filter.StaticFilters;
|
||||||
import mage.target.common.TargetCardInYourGraveyard;
|
import mage.target.common.TargetCardInYourGraveyard;
|
||||||
|
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
|
||||||
* @author LevelX2
|
* @author LevelX2
|
||||||
*/
|
*/
|
||||||
public final class HuaTuoHonoredPhysician extends CardImpl {
|
public final class HuaTuoHonoredPhysician extends CardImpl {
|
||||||
|
|
@ -32,7 +30,10 @@ public final class HuaTuoHonoredPhysician extends CardImpl {
|
||||||
this.toughness = new MageInt(2);
|
this.toughness = new MageInt(2);
|
||||||
|
|
||||||
// {tap}: Put target creature card from your graveyard on top of your library. Activate this ability only during your turn, before attackers are declared.
|
// {tap}: Put target creature card from your graveyard on top of your library. Activate this ability only during your turn, before attackers are declared.
|
||||||
Ability ability = new ActivateIfConditionActivatedAbility(Zone.BATTLEFIELD, new PutOnLibraryTargetEffect(true), new TapSourceCost(), MyTurnBeforeAttackersDeclaredCondition.instance);
|
Ability ability = new ActivateIfConditionActivatedAbility(
|
||||||
|
new PutOnLibraryTargetEffect(true), new TapSourceCost(),
|
||||||
|
MyTurnBeforeAttackersDeclaredCondition.instance
|
||||||
|
);
|
||||||
ability.addTarget(new TargetCardInYourGraveyard(StaticFilters.FILTER_CARD_CREATURE_YOUR_GRAVEYARD));
|
ability.addTarget(new TargetCardInYourGraveyard(StaticFilters.FILTER_CARD_CREATURE_YOUR_GRAVEYARD));
|
||||||
this.addAbility(ability);
|
this.addAbility(ability);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -7,12 +7,10 @@ import mage.abilities.condition.common.MyTurnCondition;
|
||||||
import mage.abilities.costs.common.TapSourceCost;
|
import mage.abilities.costs.common.TapSourceCost;
|
||||||
import mage.abilities.effects.common.DrawCardSourceControllerEffect;
|
import mage.abilities.effects.common.DrawCardSourceControllerEffect;
|
||||||
import mage.abilities.effects.common.TargetPlayerGainControlSourceEffect;
|
import mage.abilities.effects.common.TargetPlayerGainControlSourceEffect;
|
||||||
import mage.abilities.hint.common.MyTurnHint;
|
|
||||||
import mage.cards.CardImpl;
|
import mage.cards.CardImpl;
|
||||||
import mage.cards.CardSetInfo;
|
import mage.cards.CardSetInfo;
|
||||||
import mage.constants.CardType;
|
import mage.constants.CardType;
|
||||||
import mage.constants.SubType;
|
import mage.constants.SubType;
|
||||||
import mage.constants.Zone;
|
|
||||||
import mage.target.common.TargetOpponent;
|
import mage.target.common.TargetOpponent;
|
||||||
|
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
@ -30,13 +28,12 @@ public final class HumbleDefector extends CardImpl {
|
||||||
this.toughness = new MageInt(1);
|
this.toughness = new MageInt(1);
|
||||||
|
|
||||||
// {T}: Draw two cards. Target opponent gains control of Humble Defector. Activate this ability only during your turn.
|
// {T}: Draw two cards. Target opponent gains control of Humble Defector. Activate this ability only during your turn.
|
||||||
Ability ability = new ActivateIfConditionActivatedAbility(Zone.BATTLEFIELD,
|
Ability ability = new ActivateIfConditionActivatedAbility(
|
||||||
new DrawCardSourceControllerEffect(2), new TapSourceCost(), MyTurnCondition.instance);
|
new DrawCardSourceControllerEffect(2), new TapSourceCost(), MyTurnCondition.instance
|
||||||
|
);
|
||||||
ability.addEffect(new TargetPlayerGainControlSourceEffect());
|
ability.addEffect(new TargetPlayerGainControlSourceEffect());
|
||||||
ability.addTarget(new TargetOpponent());
|
ability.addTarget(new TargetOpponent());
|
||||||
ability.addHint(MyTurnHint.instance);
|
|
||||||
this.addAbility(ability);
|
this.addAbility(ability);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private HumbleDefector(final HumbleDefector card) {
|
private HumbleDefector(final HumbleDefector card) {
|
||||||
|
|
|
||||||
|
|
@ -12,7 +12,6 @@ import mage.abilities.effects.common.DrawCardSourceControllerEffect;
|
||||||
import mage.cards.CardImpl;
|
import mage.cards.CardImpl;
|
||||||
import mage.cards.CardSetInfo;
|
import mage.cards.CardSetInfo;
|
||||||
import mage.constants.CardType;
|
import mage.constants.CardType;
|
||||||
import mage.constants.Zone;
|
|
||||||
import mage.game.permanent.token.EldraziToken;
|
import mage.game.permanent.token.EldraziToken;
|
||||||
import mage.watchers.common.CreatedTokenWatcher;
|
import mage.watchers.common.CreatedTokenWatcher;
|
||||||
|
|
||||||
|
|
@ -28,7 +27,7 @@ public final class IdolOfOblivion extends CardImpl {
|
||||||
|
|
||||||
// {T}: Draw a card. Activate this ability only if you created a token this turn.
|
// {T}: Draw a card. Activate this ability only if you created a token this turn.
|
||||||
this.addAbility(new ActivateIfConditionActivatedAbility(
|
this.addAbility(new ActivateIfConditionActivatedAbility(
|
||||||
Zone.BATTLEFIELD, new DrawCardSourceControllerEffect(1),
|
new DrawCardSourceControllerEffect(1),
|
||||||
new TapSourceCost(), CreatedTokenThisTurnCondition.instance
|
new TapSourceCost(), CreatedTokenThisTurnCondition.instance
|
||||||
).addHint(CreatedTokenThisTurnCondition.getHint()), new CreatedTokenWatcher());
|
).addHint(CreatedTokenThisTurnCondition.getHint()), new CreatedTokenWatcher());
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,33 +1,35 @@
|
||||||
|
|
||||||
package mage.cards.i;
|
package mage.cards.i;
|
||||||
|
|
||||||
import java.util.UUID;
|
|
||||||
import mage.abilities.ActivatedAbility;
|
|
||||||
import mage.abilities.common.ActivateIfConditionActivatedAbility;
|
import mage.abilities.common.ActivateIfConditionActivatedAbility;
|
||||||
import mage.abilities.triggers.BeginningOfUpkeepTriggeredAbility;
|
|
||||||
import mage.abilities.common.SimpleStaticAbility;
|
import mage.abilities.common.SimpleStaticAbility;
|
||||||
|
import mage.abilities.condition.Condition;
|
||||||
import mage.abilities.condition.common.IsStepCondition;
|
import mage.abilities.condition.common.IsStepCondition;
|
||||||
import mage.abilities.costs.mana.GenericManaCost;
|
import mage.abilities.costs.mana.GenericManaCost;
|
||||||
|
import mage.abilities.dynamicvalue.DynamicValue;
|
||||||
import mage.abilities.dynamicvalue.common.CountersSourceCount;
|
import mage.abilities.dynamicvalue.common.CountersSourceCount;
|
||||||
import mage.abilities.dynamicvalue.common.StaticValue;
|
import mage.abilities.dynamicvalue.common.StaticValue;
|
||||||
import mage.abilities.effects.common.continuous.BoostAllEffect;
|
import mage.abilities.effects.common.continuous.BoostAllEffect;
|
||||||
import mage.abilities.effects.common.counter.AddCountersSourceEffect;
|
import mage.abilities.effects.common.counter.AddCountersSourceEffect;
|
||||||
import mage.abilities.effects.common.counter.RemoveCounterSourceEffect;
|
import mage.abilities.effects.common.counter.RemoveCounterSourceEffect;
|
||||||
|
import mage.abilities.triggers.BeginningOfUpkeepTriggeredAbility;
|
||||||
import mage.cards.CardImpl;
|
import mage.cards.CardImpl;
|
||||||
import mage.cards.CardSetInfo;
|
import mage.cards.CardSetInfo;
|
||||||
import mage.constants.CardType;
|
import mage.constants.CardType;
|
||||||
import mage.constants.Duration;
|
import mage.constants.Duration;
|
||||||
import mage.constants.PhaseStep;
|
import mage.constants.PhaseStep;
|
||||||
import mage.constants.TargetController;
|
import mage.constants.TargetController;
|
||||||
import mage.constants.Zone;
|
|
||||||
import mage.counters.CounterType;
|
import mage.counters.CounterType;
|
||||||
|
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
|
||||||
* @author TheElk801
|
* @author TheElk801
|
||||||
*/
|
*/
|
||||||
public final class InfiniteHourglass extends CardImpl {
|
public final class InfiniteHourglass extends CardImpl {
|
||||||
|
|
||||||
|
private static final DynamicValue xValue = new CountersSourceCount(CounterType.TIME);
|
||||||
|
private static final Condition condition = new IsStepCondition(PhaseStep.UPKEEP, false);
|
||||||
|
|
||||||
public InfiniteHourglass(UUID ownerId, CardSetInfo setInfo) {
|
public InfiniteHourglass(UUID ownerId, CardSetInfo setInfo) {
|
||||||
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{4}");
|
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{4}");
|
||||||
|
|
||||||
|
|
@ -35,23 +37,14 @@ public final class InfiniteHourglass extends CardImpl {
|
||||||
this.addAbility(new BeginningOfUpkeepTriggeredAbility(new AddCountersSourceEffect(CounterType.TIME.createInstance())));
|
this.addAbility(new BeginningOfUpkeepTriggeredAbility(new AddCountersSourceEffect(CounterType.TIME.createInstance())));
|
||||||
|
|
||||||
// All creatures get +1/+0 for each time counter on Infinite Hourglass.
|
// All creatures get +1/+0 for each time counter on Infinite Hourglass.
|
||||||
this.addAbility(new SimpleStaticAbility(
|
this.addAbility(new SimpleStaticAbility(new BoostAllEffect(
|
||||||
new BoostAllEffect(
|
xValue, StaticValue.get(0), Duration.WhileOnBattlefield
|
||||||
new CountersSourceCount(CounterType.TIME),
|
)));
|
||||||
StaticValue.get(0),
|
|
||||||
Duration.WhileOnBattlefield
|
|
||||||
)
|
|
||||||
));
|
|
||||||
|
|
||||||
// {3}: Remove a time counter from Infinite Hourglass. Any player may activate this ability but only during any upkeep step.
|
// {3}: Remove a time counter from Infinite Hourglass. Any player may activate this ability but only during any upkeep step.
|
||||||
ActivatedAbility ability = new ActivateIfConditionActivatedAbility(
|
this.addAbility(new ActivateIfConditionActivatedAbility(
|
||||||
Zone.BATTLEFIELD,
|
new RemoveCounterSourceEffect(CounterType.TIME.createInstance()), new GenericManaCost(3), condition
|
||||||
new RemoveCounterSourceEffect(CounterType.TIME.createInstance()),
|
).setMayActivate(TargetController.ANY));
|
||||||
new GenericManaCost(3),
|
|
||||||
new IsStepCondition(PhaseStep.UPKEEP, false)
|
|
||||||
);
|
|
||||||
ability.setMayActivate(TargetController.ANY);
|
|
||||||
this.addAbility(ability);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private InfiniteHourglass(final InfiniteHourglass card) {
|
private InfiniteHourglass(final InfiniteHourglass card) {
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,6 @@
|
||||||
package mage.cards.i;
|
package mage.cards.i;
|
||||||
|
|
||||||
import mage.abilities.Ability;
|
import mage.abilities.Ability;
|
||||||
import mage.abilities.TriggeredAbilityImpl;
|
|
||||||
import mage.abilities.common.ActivateIfConditionActivatedAbility;
|
import mage.abilities.common.ActivateIfConditionActivatedAbility;
|
||||||
import mage.abilities.condition.common.MetalcraftCondition;
|
import mage.abilities.condition.common.MetalcraftCondition;
|
||||||
import mage.abilities.costs.common.SacrificeSourceCost;
|
import mage.abilities.costs.common.SacrificeSourceCost;
|
||||||
|
|
@ -11,15 +10,12 @@ import mage.abilities.effects.common.GainLifeEffect;
|
||||||
import mage.abilities.effects.common.search.SearchLibraryPutInHandEffect;
|
import mage.abilities.effects.common.search.SearchLibraryPutInHandEffect;
|
||||||
import mage.abilities.hint.common.MetalcraftHint;
|
import mage.abilities.hint.common.MetalcraftHint;
|
||||||
import mage.abilities.mana.ColorlessManaAbility;
|
import mage.abilities.mana.ColorlessManaAbility;
|
||||||
|
import mage.abilities.triggers.BeginningOfUpkeepTriggeredAbility;
|
||||||
import mage.cards.CardImpl;
|
import mage.cards.CardImpl;
|
||||||
import mage.cards.CardSetInfo;
|
import mage.cards.CardSetInfo;
|
||||||
import mage.constants.CardType;
|
import mage.constants.CardType;
|
||||||
import mage.constants.SuperType;
|
import mage.constants.SuperType;
|
||||||
import mage.constants.Zone;
|
|
||||||
import mage.filter.StaticFilters;
|
import mage.filter.StaticFilters;
|
||||||
import mage.filter.common.FilterArtifactPermanent;
|
|
||||||
import mage.game.Game;
|
|
||||||
import mage.game.events.GameEvent;
|
|
||||||
import mage.target.common.TargetCardInLibrary;
|
import mage.target.common.TargetCardInLibrary;
|
||||||
|
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
@ -34,19 +30,20 @@ public final class InventorsFair extends CardImpl {
|
||||||
this.supertype.add(SuperType.LEGENDARY);
|
this.supertype.add(SuperType.LEGENDARY);
|
||||||
|
|
||||||
// At the beginning of your upkeep, if you control three or more artifacts, you gain 1 life.
|
// At the beginning of your upkeep, if you control three or more artifacts, you gain 1 life.
|
||||||
this.addAbility(new InventorsFairAbility());
|
this.addAbility(new BeginningOfUpkeepTriggeredAbility(new GainLifeEffect(1))
|
||||||
|
.withInterveningIf(MetalcraftCondition.instance));
|
||||||
|
|
||||||
// {t}: Add {C}.
|
// {t}: Add {C}.
|
||||||
this.addAbility(new ColorlessManaAbility());
|
this.addAbility(new ColorlessManaAbility());
|
||||||
|
|
||||||
// {4}, {T}, Sacrifice Inventors' Fair: Search your library for an artifact card, reveal it, put it into your hand, then shuffle your library.
|
// {4}, {T}, Sacrifice Inventors' Fair: Search your library for an artifact card, reveal it, put it into your hand, then shuffle your library.
|
||||||
// Activate this ability only if you control threeor more artifacts.
|
// Activate this ability only if you control threeor more artifacts.
|
||||||
Ability ability = new ActivateIfConditionActivatedAbility(Zone.BATTLEFIELD, new SearchLibraryPutInHandEffect(new TargetCardInLibrary(StaticFilters.FILTER_CARD_ARTIFACT), true),
|
Ability ability = new ActivateIfConditionActivatedAbility(new SearchLibraryPutInHandEffect(
|
||||||
new GenericManaCost(4), MetalcraftCondition.instance);
|
new TargetCardInLibrary(StaticFilters.FILTER_CARD_ARTIFACT), true
|
||||||
|
), new GenericManaCost(4), MetalcraftCondition.instance);
|
||||||
ability.addCost(new TapSourceCost());
|
ability.addCost(new TapSourceCost());
|
||||||
ability.addCost(new SacrificeSourceCost());
|
ability.addCost(new SacrificeSourceCost());
|
||||||
ability.addHint(MetalcraftHint.instance);
|
this.addAbility(ability.addHint(MetalcraftHint.instance));
|
||||||
this.addAbility(ability);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private InventorsFair(final InventorsFair card) {
|
private InventorsFair(final InventorsFair card) {
|
||||||
|
|
@ -58,41 +55,3 @@ public final class InventorsFair extends CardImpl {
|
||||||
return new InventorsFair(this);
|
return new InventorsFair(this);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
class InventorsFairAbility extends TriggeredAbilityImpl {
|
|
||||||
|
|
||||||
private FilterArtifactPermanent filter = new FilterArtifactPermanent();
|
|
||||||
|
|
||||||
public InventorsFairAbility() {
|
|
||||||
super(Zone.BATTLEFIELD, new GainLifeEffect(1));
|
|
||||||
}
|
|
||||||
|
|
||||||
private InventorsFairAbility(final InventorsFairAbility ability) {
|
|
||||||
super(ability);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public InventorsFairAbility copy() {
|
|
||||||
return new InventorsFairAbility(this);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean checkEventType(GameEvent event, Game game) {
|
|
||||||
return event.getType() == GameEvent.EventType.UPKEEP_STEP_PRE;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean checkTrigger(GameEvent event, Game game) {
|
|
||||||
return event.getPlayerId().equals(this.controllerId);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean checkInterveningIfClause(Game game) {
|
|
||||||
return game.getBattlefield().countAll(filter, this.controllerId, game) >= 3;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String getRule() {
|
|
||||||
return "At the beginning of your upkeep, if you control three or more artifacts, you gain 1 life.";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -15,7 +15,6 @@ import mage.cards.CardSetInfo;
|
||||||
import mage.constants.CardType;
|
import mage.constants.CardType;
|
||||||
import mage.constants.ComparisonType;
|
import mage.constants.ComparisonType;
|
||||||
import mage.constants.SubType;
|
import mage.constants.SubType;
|
||||||
import mage.constants.Zone;
|
|
||||||
import mage.filter.StaticFilters;
|
import mage.filter.StaticFilters;
|
||||||
import mage.filter.common.FilterControlledLandPermanent;
|
import mage.filter.common.FilterControlledLandPermanent;
|
||||||
import mage.target.TargetPermanent;
|
import mage.target.TargetPermanent;
|
||||||
|
|
@ -27,9 +26,9 @@ import java.util.UUID;
|
||||||
*/
|
*/
|
||||||
public final class KelpieGuide extends CardImpl {
|
public final class KelpieGuide extends CardImpl {
|
||||||
|
|
||||||
private static final FilterControlledLandPermanent filter = new FilterControlledLandPermanent("you control eight or more lands");
|
private static final Condition condition = new PermanentsOnTheBattlefieldCondition(
|
||||||
private static final Condition condition
|
new FilterControlledLandPermanent("you control eight or more lands"), ComparisonType.MORE_THAN, 7
|
||||||
= new PermanentsOnTheBattlefieldCondition(filter, ComparisonType.MORE_THAN, 7);
|
);
|
||||||
|
|
||||||
public KelpieGuide(UUID ownerId, CardSetInfo setInfo) {
|
public KelpieGuide(UUID ownerId, CardSetInfo setInfo) {
|
||||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{U}");
|
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{U}");
|
||||||
|
|
@ -44,9 +43,7 @@ public final class KelpieGuide extends CardImpl {
|
||||||
this.addAbility(ability);
|
this.addAbility(ability);
|
||||||
|
|
||||||
// {T}: Tap target permanent. Activate only if you control eight or more lands.
|
// {T}: Tap target permanent. Activate only if you control eight or more lands.
|
||||||
ability = new ActivateIfConditionActivatedAbility(
|
ability = new ActivateIfConditionActivatedAbility(new TapTargetEffect(), new TapSourceCost(), condition);
|
||||||
Zone.BATTLEFIELD, new TapTargetEffect(), new TapSourceCost(), condition
|
|
||||||
);
|
|
||||||
ability.addTarget(new TargetPermanent());
|
ability.addTarget(new TargetPermanent());
|
||||||
this.addAbility(ability.addHint(LandsYouControlHint.instance));
|
this.addAbility(ability.addHint(LandsYouControlHint.instance));
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,5 @@
|
||||||
|
|
||||||
package mage.cards.k;
|
package mage.cards.k;
|
||||||
|
|
||||||
import java.util.UUID;
|
|
||||||
import mage.MageInt;
|
import mage.MageInt;
|
||||||
import mage.abilities.Ability;
|
import mage.abilities.Ability;
|
||||||
import mage.abilities.common.ActivateIfConditionActivatedAbility;
|
import mage.abilities.common.ActivateIfConditionActivatedAbility;
|
||||||
|
|
@ -12,17 +10,17 @@ import mage.cards.CardImpl;
|
||||||
import mage.cards.CardSetInfo;
|
import mage.cards.CardSetInfo;
|
||||||
import mage.constants.CardType;
|
import mage.constants.CardType;
|
||||||
import mage.constants.SubType;
|
import mage.constants.SubType;
|
||||||
import mage.constants.Zone;
|
|
||||||
import mage.filter.common.FilterCreaturePermanent;
|
import mage.filter.common.FilterCreaturePermanent;
|
||||||
import mage.filter.predicate.permanent.TappedPredicate;
|
import mage.filter.predicate.permanent.TappedPredicate;
|
||||||
import mage.target.common.TargetCreaturePermanent;
|
import mage.target.TargetPermanent;
|
||||||
|
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
|
||||||
* @author fireshoes
|
* @author fireshoes
|
||||||
*/
|
*/
|
||||||
public final class KingsAssassin extends CardImpl {
|
public final class KingsAssassin extends CardImpl {
|
||||||
|
|
||||||
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("tapped creature");
|
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("tapped creature");
|
||||||
|
|
||||||
static {
|
static {
|
||||||
|
|
@ -30,16 +28,18 @@ public final class KingsAssassin extends CardImpl {
|
||||||
}
|
}
|
||||||
|
|
||||||
public KingsAssassin(UUID ownerId, CardSetInfo setInfo) {
|
public KingsAssassin(UUID ownerId, CardSetInfo setInfo) {
|
||||||
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{B}{B}");
|
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{B}{B}");
|
||||||
this.subtype.add(SubType.HUMAN);
|
this.subtype.add(SubType.HUMAN);
|
||||||
this.subtype.add(SubType.ASSASSIN);
|
this.subtype.add(SubType.ASSASSIN);
|
||||||
this.power = new MageInt(1);
|
this.power = new MageInt(1);
|
||||||
this.toughness = new MageInt(1);
|
this.toughness = new MageInt(1);
|
||||||
|
|
||||||
// {tap}: Destroy target tapped creature. Activate this ability only during your turn, before attackers are declared.
|
// {tap}: Destroy target tapped creature. Activate this ability only during your turn, before attackers are declared.
|
||||||
Ability ability = new ActivateIfConditionActivatedAbility(Zone.BATTLEFIELD,
|
Ability ability = new ActivateIfConditionActivatedAbility(
|
||||||
new DestroyTargetEffect(), new TapSourceCost(), MyTurnBeforeAttackersDeclaredCondition.instance);
|
new DestroyTargetEffect(), new TapSourceCost(),
|
||||||
ability.addTarget(new TargetCreaturePermanent(filter));
|
MyTurnBeforeAttackersDeclaredCondition.instance
|
||||||
|
);
|
||||||
|
ability.addTarget(new TargetPermanent(filter));
|
||||||
this.addAbility(ability);
|
this.addAbility(ability);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,11 +1,10 @@
|
||||||
|
|
||||||
package mage.cards.k;
|
package mage.cards.k;
|
||||||
|
|
||||||
import java.util.UUID;
|
|
||||||
import mage.abilities.Ability;
|
import mage.abilities.Ability;
|
||||||
import mage.abilities.common.ActivateIfConditionActivatedAbility;
|
import mage.abilities.common.ActivateIfConditionActivatedAbility;
|
||||||
import mage.abilities.common.EntersBattlefieldTriggeredAbility;
|
import mage.abilities.common.EntersBattlefieldTriggeredAbility;
|
||||||
import mage.abilities.common.delayed.AtTheBeginOfNextUpkeepDelayedTriggeredAbility;
|
import mage.abilities.common.delayed.AtTheBeginOfNextUpkeepDelayedTriggeredAbility;
|
||||||
|
import mage.abilities.condition.Condition;
|
||||||
import mage.abilities.condition.common.AttachedToMatchesFilterCondition;
|
import mage.abilities.condition.common.AttachedToMatchesFilterCondition;
|
||||||
import mage.abilities.costs.common.TapAttachedCost;
|
import mage.abilities.costs.common.TapAttachedCost;
|
||||||
import mage.abilities.effects.common.AttachEffect;
|
import mage.abilities.effects.common.AttachEffect;
|
||||||
|
|
@ -17,60 +16,63 @@ import mage.abilities.keyword.EnchantAbility;
|
||||||
import mage.cards.CardImpl;
|
import mage.cards.CardImpl;
|
||||||
import mage.cards.CardSetInfo;
|
import mage.cards.CardSetInfo;
|
||||||
import mage.constants.CardType;
|
import mage.constants.CardType;
|
||||||
import mage.constants.SubType;
|
|
||||||
import mage.constants.Outcome;
|
|
||||||
import mage.constants.Duration;
|
import mage.constants.Duration;
|
||||||
import mage.constants.Zone;
|
import mage.constants.Outcome;
|
||||||
|
import mage.constants.SubType;
|
||||||
import mage.counters.CounterType;
|
import mage.counters.CounterType;
|
||||||
|
import mage.filter.FilterPermanent;
|
||||||
import mage.filter.common.FilterControlledCreaturePermanent;
|
import mage.filter.common.FilterControlledCreaturePermanent;
|
||||||
import mage.filter.common.FilterCreaturePermanent;
|
import mage.filter.common.FilterCreaturePermanent;
|
||||||
import mage.filter.predicate.Predicates;
|
import mage.filter.predicate.Predicates;
|
||||||
import mage.filter.predicate.permanent.TappedPredicate;
|
import mage.filter.predicate.permanent.TappedPredicate;
|
||||||
import mage.target.TargetPermanent;
|
import mage.target.TargetPermanent;
|
||||||
import mage.target.common.TargetControlledCreaturePermanent;
|
|
||||||
import mage.target.common.TargetAnyTarget;
|
import mage.target.common.TargetAnyTarget;
|
||||||
|
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
|
||||||
* @author L_J
|
* @author L_J
|
||||||
*/
|
*/
|
||||||
public final class KrovikanPlague extends CardImpl {
|
public final class KrovikanPlague extends CardImpl {
|
||||||
|
|
||||||
private static final FilterControlledCreaturePermanent filterNonWall = new FilterControlledCreaturePermanent("non-Wall creature you control");
|
private static final FilterPermanent filterNonWall = new FilterControlledCreaturePermanent("non-Wall creature you control");
|
||||||
|
|
||||||
static {
|
static {
|
||||||
filterNonWall.add(Predicates.not(SubType.WALL.getPredicate()));
|
filterNonWall.add(Predicates.not(SubType.WALL.getPredicate()));
|
||||||
}
|
}
|
||||||
|
|
||||||
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("enchanted creature is untapped");
|
private static final FilterPermanent filter = new FilterCreaturePermanent("enchanted creature is untapped");
|
||||||
|
|
||||||
static {
|
static {
|
||||||
filter.add(TappedPredicate.UNTAPPED);
|
filter.add(TappedPredicate.UNTAPPED);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static final Condition condition = new AttachedToMatchesFilterCondition(filter);
|
||||||
|
|
||||||
public KrovikanPlague(UUID ownerId, CardSetInfo setInfo) {
|
public KrovikanPlague(UUID ownerId, CardSetInfo setInfo) {
|
||||||
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{B}");
|
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{B}");
|
||||||
this.subtype.add(SubType.AURA);
|
this.subtype.add(SubType.AURA);
|
||||||
|
|
||||||
// Enchant non-Wall creature you control
|
// Enchant non-Wall creature you control
|
||||||
TargetPermanent auraTarget = new TargetControlledCreaturePermanent(filterNonWall);
|
TargetPermanent auraTarget = new TargetPermanent(filterNonWall);
|
||||||
this.getSpellAbility().addTarget(auraTarget);
|
this.getSpellAbility().addTarget(auraTarget);
|
||||||
this.getSpellAbility().addEffect(new AttachEffect(Outcome.BoostCreature));
|
this.getSpellAbility().addEffect(new AttachEffect(Outcome.BoostCreature));
|
||||||
Ability ability = new EnchantAbility(auraTarget);
|
this.addAbility(new EnchantAbility(auraTarget));
|
||||||
this.addAbility(ability);
|
|
||||||
|
|
||||||
// When Krovikan Plague enters the battlefield, draw a card at the beginning of the next turn's upkeep.
|
// When Krovikan Plague enters the battlefield, draw a card at the beginning of the next turn's upkeep.
|
||||||
this.addAbility(new EntersBattlefieldTriggeredAbility(new CreateDelayedTriggeredAbilityEffect(
|
this.addAbility(new EntersBattlefieldTriggeredAbility(new CreateDelayedTriggeredAbilityEffect(
|
||||||
new AtTheBeginOfNextUpkeepDelayedTriggeredAbility(new DrawCardSourceControllerEffect(1), Duration.OneUse))
|
new AtTheBeginOfNextUpkeepDelayedTriggeredAbility(new DrawCardSourceControllerEffect(1), Duration.OneUse)
|
||||||
.setText("draw a card at the beginning of the next turn's upkeep"), false));
|
).setText("draw a card at the beginning of the next turn's upkeep"), false));
|
||||||
|
|
||||||
// Tap enchanted creature: Tap enchanted creature: Krovikan Plague deals 1 damage to any target. Put a -0/-1 counter on enchanted creature. Activate this ability only if enchanted creature is untapped.
|
// Tap enchanted creature: Tap enchanted creature: Krovikan Plague deals 1 damage to any target. Put a -0/-1 counter on enchanted creature. Activate this ability only if enchanted creature is untapped.
|
||||||
Ability ability2 = new ActivateIfConditionActivatedAbility(Zone.BATTLEFIELD,
|
Ability ability = new ActivateIfConditionActivatedAbility(
|
||||||
new DamageTargetEffect(1), new TapAttachedCost(), new AttachedToMatchesFilterCondition(filter));
|
new DamageTargetEffect(1), new TapAttachedCost(), condition
|
||||||
ability2.addEffect(new AddCountersAttachedEffect(CounterType.M0M1.createInstance(),"enchanted creature"));
|
);
|
||||||
ability2.addTarget(new TargetAnyTarget());
|
ability.addEffect(new AddCountersAttachedEffect(
|
||||||
this.addAbility(ability2);
|
CounterType.M0M1.createInstance(), "enchanted creature"
|
||||||
|
));
|
||||||
|
ability.addTarget(new TargetAnyTarget());
|
||||||
|
this.addAbility(ability);
|
||||||
}
|
}
|
||||||
|
|
||||||
private KrovikanPlague(final KrovikanPlague card) {
|
private KrovikanPlague(final KrovikanPlague card) {
|
||||||
|
|
|
||||||
|
|
@ -1,13 +1,10 @@
|
||||||
|
|
||||||
package mage.cards.l;
|
package mage.cards.l;
|
||||||
|
|
||||||
import java.util.UUID;
|
|
||||||
import mage.MageInt;
|
import mage.MageInt;
|
||||||
import mage.abilities.Ability;
|
import mage.abilities.Ability;
|
||||||
import mage.abilities.common.ActivateIfConditionActivatedAbility;
|
import mage.abilities.common.ActivateIfConditionActivatedAbility;
|
||||||
import mage.abilities.condition.common.MyTurnBeforeAttackersDeclaredCondition;
|
import mage.abilities.condition.common.MyTurnBeforeAttackersDeclaredCondition;
|
||||||
import mage.abilities.costs.common.TapSourceCost;
|
import mage.abilities.costs.common.TapSourceCost;
|
||||||
import mage.abilities.effects.Effect;
|
|
||||||
import mage.abilities.effects.common.ReturnToHandSourceEffect;
|
import mage.abilities.effects.common.ReturnToHandSourceEffect;
|
||||||
import mage.abilities.effects.common.ReturnToHandTargetEffect;
|
import mage.abilities.effects.common.ReturnToHandTargetEffect;
|
||||||
import mage.cards.CardImpl;
|
import mage.cards.CardImpl;
|
||||||
|
|
@ -15,24 +12,18 @@ import mage.cards.CardSetInfo;
|
||||||
import mage.constants.CardType;
|
import mage.constants.CardType;
|
||||||
import mage.constants.SubType;
|
import mage.constants.SubType;
|
||||||
import mage.constants.SuperType;
|
import mage.constants.SuperType;
|
||||||
import mage.constants.Zone;
|
import mage.filter.StaticFilters;
|
||||||
import mage.filter.common.FilterCreaturePermanent;
|
import mage.target.TargetPermanent;
|
||||||
import mage.filter.predicate.mageobject.AnotherPredicate;
|
|
||||||
import mage.target.common.TargetCreaturePermanent;
|
import java.util.UUID;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
|
||||||
* @author fireshoes
|
* @author fireshoes
|
||||||
*/
|
*/
|
||||||
public final class LadySun extends CardImpl {
|
public final class LadySun extends CardImpl {
|
||||||
|
|
||||||
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("another target creature");
|
|
||||||
static {
|
|
||||||
filter.add(AnotherPredicate.instance);
|
|
||||||
}
|
|
||||||
|
|
||||||
public LadySun(UUID ownerId, CardSetInfo setInfo) {
|
public LadySun(UUID ownerId, CardSetInfo setInfo) {
|
||||||
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}{U}");
|
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{U}{U}");
|
||||||
this.supertype.add(SuperType.LEGENDARY);
|
this.supertype.add(SuperType.LEGENDARY);
|
||||||
this.subtype.add(SubType.HUMAN);
|
this.subtype.add(SubType.HUMAN);
|
||||||
this.subtype.add(SubType.ADVISOR);
|
this.subtype.add(SubType.ADVISOR);
|
||||||
|
|
@ -40,14 +31,12 @@ public final class LadySun extends CardImpl {
|
||||||
this.toughness = new MageInt(1);
|
this.toughness = new MageInt(1);
|
||||||
|
|
||||||
// {tap}: Return Lady Sun and another target creature to their owners' hands. Activate this ability only during your turn, before attackers are declared.
|
// {tap}: Return Lady Sun and another target creature to their owners' hands. Activate this ability only during your turn, before attackers are declared.
|
||||||
Effect effect = new ReturnToHandSourceEffect(true);
|
Ability ability = new ActivateIfConditionActivatedAbility(
|
||||||
effect.setText("Return Lady Sun");
|
new ReturnToHandSourceEffect(true).setText("return {this}"),
|
||||||
Ability ability = new ActivateIfConditionActivatedAbility(Zone.BATTLEFIELD,
|
new TapSourceCost(), MyTurnBeforeAttackersDeclaredCondition.instance
|
||||||
effect, new TapSourceCost(), MyTurnBeforeAttackersDeclaredCondition.instance);
|
);
|
||||||
effect = new ReturnToHandTargetEffect();
|
ability.addEffect(new ReturnToHandTargetEffect().setText("and another target creature to their owners' hands"));
|
||||||
effect.setText("and another target creature to their owners' hands");
|
ability.addTarget(new TargetPermanent(StaticFilters.FILTER_ANOTHER_TARGET_CREATURE));
|
||||||
ability.addTarget(new TargetCreaturePermanent(filter));
|
|
||||||
ability.addEffect(effect);
|
|
||||||
this.addAbility(ability);
|
this.addAbility(ability);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,60 +1,54 @@
|
||||||
package mage.cards.l;
|
package mage.cards.l;
|
||||||
|
|
||||||
import java.util.UUID;
|
|
||||||
|
|
||||||
import mage.Mana;
|
|
||||||
import mage.ObjectColor;
|
import mage.ObjectColor;
|
||||||
import mage.abilities.Ability;
|
import mage.abilities.Ability;
|
||||||
import mage.abilities.common.ActivateIfConditionActivatedAbility;
|
import mage.abilities.common.ActivateIfConditionActivatedAbility;
|
||||||
import mage.abilities.common.EntersBattlefieldTappedAbility;
|
import mage.abilities.common.EntersBattlefieldTappedAbility;
|
||||||
|
import mage.abilities.condition.Condition;
|
||||||
import mage.abilities.condition.common.PermanentsOnTheBattlefieldCondition;
|
import mage.abilities.condition.common.PermanentsOnTheBattlefieldCondition;
|
||||||
import mage.abilities.costs.common.TapSourceCost;
|
import mage.abilities.costs.common.TapSourceCost;
|
||||||
import mage.abilities.costs.mana.ManaCostsImpl;
|
import mage.abilities.costs.mana.ManaCostsImpl;
|
||||||
import mage.abilities.effects.OneShotEffect;
|
import mage.abilities.effects.common.LoseLifeOpponentsEffect;
|
||||||
import mage.abilities.mana.SimpleManaAbility;
|
import mage.abilities.mana.BlackManaAbility;
|
||||||
import mage.cards.CardImpl;
|
import mage.cards.CardImpl;
|
||||||
import mage.cards.CardSetInfo;
|
import mage.cards.CardSetInfo;
|
||||||
import mage.constants.CardType;
|
import mage.constants.CardType;
|
||||||
import mage.constants.SubType;
|
|
||||||
import mage.constants.ComparisonType;
|
import mage.constants.ComparisonType;
|
||||||
import mage.constants.Outcome;
|
import mage.constants.SubType;
|
||||||
import mage.constants.Zone;
|
import mage.filter.FilterPermanent;
|
||||||
import mage.filter.common.FilterControlledPermanent;
|
import mage.filter.common.FilterControlledPermanent;
|
||||||
import mage.filter.predicate.mageobject.ColorPredicate;
|
import mage.filter.predicate.mageobject.ColorPredicate;
|
||||||
import mage.game.Game;
|
|
||||||
import mage.players.Player;
|
import java.util.UUID;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author jeffwadsworth
|
* @author jeffwadsworth
|
||||||
*/
|
*/
|
||||||
public final class LeechriddenSwamp extends CardImpl {
|
public final class LeechriddenSwamp extends CardImpl {
|
||||||
|
|
||||||
private static final FilterControlledPermanent filter =
|
private static final FilterPermanent filter =
|
||||||
new FilterControlledPermanent("you control two or more black permanents");
|
new FilterControlledPermanent("you control two or more black permanents");
|
||||||
|
|
||||||
static {
|
static {
|
||||||
filter.add(new ColorPredicate(ObjectColor.BLACK));
|
filter.add(new ColorPredicate(ObjectColor.BLACK));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static final Condition condition = new PermanentsOnTheBattlefieldCondition(filter, ComparisonType.MORE_THAN, 1);
|
||||||
|
|
||||||
public LeechriddenSwamp(UUID ownerId, CardSetInfo setInfo) {
|
public LeechriddenSwamp(UUID ownerId, CardSetInfo setInfo) {
|
||||||
super(ownerId, setInfo, new CardType[]{CardType.LAND}, "");
|
super(ownerId, setInfo, new CardType[]{CardType.LAND}, "");
|
||||||
this.subtype.add(SubType.SWAMP);
|
this.subtype.add(SubType.SWAMP);
|
||||||
|
|
||||||
// ({tap}: Add {B}.)
|
// ({tap}: Add {B}.)
|
||||||
this.addAbility(new SimpleManaAbility(Zone.BATTLEFIELD, Mana.BlackMana(1), new TapSourceCost()));
|
this.addAbility(new BlackManaAbility());
|
||||||
|
|
||||||
// Leechridden Swamp enters the battlefield tapped.
|
// Leechridden Swamp enters the battlefield tapped.
|
||||||
this.addAbility(new EntersBattlefieldTappedAbility());
|
this.addAbility(new EntersBattlefieldTappedAbility());
|
||||||
|
|
||||||
// {B}, {tap}: Each opponent loses 1 life. Activate this ability only if you control two or more black permanents.
|
// {B}, {tap}: Each opponent loses 1 life. Activate this ability only if you control two or more black permanents.
|
||||||
Ability ability = new ActivateIfConditionActivatedAbility(
|
Ability ability = new ActivateIfConditionActivatedAbility(
|
||||||
Zone.BATTLEFIELD,
|
new LoseLifeOpponentsEffect(1), new ManaCostsImpl<>("{B}"), condition
|
||||||
new LeechriddenSwampLoseLifeEffect(),
|
);
|
||||||
new ManaCostsImpl<>("{B}"),
|
|
||||||
new PermanentsOnTheBattlefieldCondition(
|
|
||||||
filter,
|
|
||||||
ComparisonType.MORE_THAN,
|
|
||||||
1));
|
|
||||||
ability.addCost(new TapSourceCost());
|
ability.addCost(new TapSourceCost());
|
||||||
this.addAbility(ability);
|
this.addAbility(ability);
|
||||||
}
|
}
|
||||||
|
|
@ -68,35 +62,3 @@ public final class LeechriddenSwamp extends CardImpl {
|
||||||
return new LeechriddenSwamp(this);
|
return new LeechriddenSwamp(this);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
class LeechriddenSwampLoseLifeEffect extends OneShotEffect {
|
|
||||||
|
|
||||||
LeechriddenSwampLoseLifeEffect() {
|
|
||||||
super(Outcome.Benefit);
|
|
||||||
staticText = "each opponent loses 1 life";
|
|
||||||
}
|
|
||||||
|
|
||||||
private LeechriddenSwampLoseLifeEffect(final LeechriddenSwampLoseLifeEffect effect) {
|
|
||||||
super(effect);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean apply(Game game, Ability source) {
|
|
||||||
Player controller = game.getPlayer(source.getControllerId());
|
|
||||||
if (controller != null) {
|
|
||||||
for (UUID opponentId : game.getOpponents(controller.getId())) {
|
|
||||||
Player opponent = game.getPlayer(opponentId);
|
|
||||||
if (opponent != null) {
|
|
||||||
opponent.loseLife(1, game, source, false);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public LeechriddenSwampLoseLifeEffect copy() {
|
|
||||||
return new LeechriddenSwampLoseLifeEffect(this);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,5 @@
|
||||||
|
|
||||||
package mage.cards.l;
|
package mage.cards.l;
|
||||||
|
|
||||||
import java.util.UUID;
|
|
||||||
import mage.MageInt;
|
import mage.MageInt;
|
||||||
import mage.abilities.Ability;
|
import mage.abilities.Ability;
|
||||||
import mage.abilities.common.ActivateIfConditionActivatedAbility;
|
import mage.abilities.common.ActivateIfConditionActivatedAbility;
|
||||||
|
|
@ -13,24 +11,25 @@ import mage.cards.CardSetInfo;
|
||||||
import mage.constants.CardType;
|
import mage.constants.CardType;
|
||||||
import mage.constants.SubType;
|
import mage.constants.SubType;
|
||||||
import mage.constants.SuperType;
|
import mage.constants.SuperType;
|
||||||
import mage.constants.Zone;
|
import mage.filter.FilterCard;
|
||||||
import mage.filter.common.FilterCreatureCard;
|
import mage.filter.common.FilterCreatureCard;
|
||||||
import mage.target.common.TargetCardInYourGraveyard;
|
import mage.target.common.TargetCardInYourGraveyard;
|
||||||
|
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
|
||||||
* @author LevelX2
|
* @author LevelX2
|
||||||
*/
|
*/
|
||||||
public final class LoyalRetainers extends CardImpl {
|
public final class LoyalRetainers extends CardImpl {
|
||||||
|
|
||||||
private static final FilterCreatureCard filter = new FilterCreatureCard("legendary creature card from your graveyard");
|
private static final FilterCard filter = new FilterCreatureCard("legendary creature card from your graveyard");
|
||||||
|
|
||||||
static {
|
static {
|
||||||
filter.add(SuperType.LEGENDARY.getPredicate());
|
filter.add(SuperType.LEGENDARY.getPredicate());
|
||||||
}
|
}
|
||||||
|
|
||||||
public LoyalRetainers(UUID ownerId, CardSetInfo setInfo) {
|
public LoyalRetainers(UUID ownerId, CardSetInfo setInfo) {
|
||||||
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{W}");
|
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{W}");
|
||||||
this.subtype.add(SubType.HUMAN);
|
this.subtype.add(SubType.HUMAN);
|
||||||
this.subtype.add(SubType.ADVISOR);
|
this.subtype.add(SubType.ADVISOR);
|
||||||
|
|
||||||
|
|
@ -38,10 +37,12 @@ public final class LoyalRetainers extends CardImpl {
|
||||||
this.toughness = new MageInt(1);
|
this.toughness = new MageInt(1);
|
||||||
|
|
||||||
// Sacrifice Loyal Retainers: Return target legendary creature card from your graveyard to the battlefield. Activate this ability only during your turn, before attackers are declared.
|
// Sacrifice Loyal Retainers: Return target legendary creature card from your graveyard to the battlefield. Activate this ability only during your turn, before attackers are declared.
|
||||||
Ability ability = new ActivateIfConditionActivatedAbility(Zone.BATTLEFIELD, new ReturnFromGraveyardToBattlefieldTargetEffect(), new SacrificeSourceCost(), MyTurnBeforeAttackersDeclaredCondition.instance);
|
Ability ability = new ActivateIfConditionActivatedAbility(
|
||||||
|
new ReturnFromGraveyardToBattlefieldTargetEffect(),
|
||||||
|
new SacrificeSourceCost(), MyTurnBeforeAttackersDeclaredCondition.instance
|
||||||
|
);
|
||||||
ability.addTarget(new TargetCardInYourGraveyard(filter));
|
ability.addTarget(new TargetCardInYourGraveyard(filter));
|
||||||
this.addAbility(ability);
|
this.addAbility(ability);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private LoyalRetainers(final LoyalRetainers card) {
|
private LoyalRetainers(final LoyalRetainers card) {
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,6 @@
|
||||||
|
|
||||||
package mage.cards.l;
|
package mage.cards.l;
|
||||||
|
|
||||||
import java.util.UUID;
|
|
||||||
import mage.MageInt;
|
import mage.MageInt;
|
||||||
import mage.abilities.Ability;
|
|
||||||
import mage.abilities.common.ActivateIfConditionActivatedAbility;
|
import mage.abilities.common.ActivateIfConditionActivatedAbility;
|
||||||
import mage.abilities.condition.common.MyTurnBeforeAttackersDeclaredCondition;
|
import mage.abilities.condition.common.MyTurnBeforeAttackersDeclaredCondition;
|
||||||
import mage.abilities.costs.common.TapSourceCost;
|
import mage.abilities.costs.common.TapSourceCost;
|
||||||
|
|
@ -13,16 +10,16 @@ import mage.cards.CardSetInfo;
|
||||||
import mage.constants.CardType;
|
import mage.constants.CardType;
|
||||||
import mage.constants.SubType;
|
import mage.constants.SubType;
|
||||||
import mage.constants.SuperType;
|
import mage.constants.SuperType;
|
||||||
import mage.constants.Zone;
|
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
|
||||||
* @author fireshoes
|
* @author fireshoes
|
||||||
*/
|
*/
|
||||||
public final class LuSuWuAdvisor extends CardImpl {
|
public final class LuSuWuAdvisor extends CardImpl {
|
||||||
|
|
||||||
public LuSuWuAdvisor(UUID ownerId, CardSetInfo setInfo) {
|
public LuSuWuAdvisor(UUID ownerId, CardSetInfo setInfo) {
|
||||||
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{U}{U}");
|
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{U}{U}");
|
||||||
this.supertype.add(SuperType.LEGENDARY);
|
this.supertype.add(SuperType.LEGENDARY);
|
||||||
this.subtype.add(SubType.HUMAN);
|
this.subtype.add(SubType.HUMAN);
|
||||||
this.subtype.add(SubType.ADVISOR);
|
this.subtype.add(SubType.ADVISOR);
|
||||||
|
|
@ -30,9 +27,10 @@ public final class LuSuWuAdvisor extends CardImpl {
|
||||||
this.toughness = new MageInt(2);
|
this.toughness = new MageInt(2);
|
||||||
|
|
||||||
// {tap}: Draw a card. Activate this ability only during your turn, before attackers are declared.
|
// {tap}: Draw a card. Activate this ability only during your turn, before attackers are declared.
|
||||||
Ability ability = new ActivateIfConditionActivatedAbility(Zone.BATTLEFIELD,
|
this.addAbility(new ActivateIfConditionActivatedAbility(
|
||||||
new DrawCardSourceControllerEffect(1), new TapSourceCost(), MyTurnBeforeAttackersDeclaredCondition.instance);
|
new DrawCardSourceControllerEffect(1), new TapSourceCost(),
|
||||||
this.addAbility(ability);
|
MyTurnBeforeAttackersDeclaredCondition.instance
|
||||||
|
));
|
||||||
}
|
}
|
||||||
|
|
||||||
private LuSuWuAdvisor(final LuSuWuAdvisor card) {
|
private LuSuWuAdvisor(final LuSuWuAdvisor card) {
|
||||||
|
|
|
||||||
|
|
@ -12,7 +12,6 @@ import mage.cards.CardImpl;
|
||||||
import mage.cards.CardSetInfo;
|
import mage.cards.CardSetInfo;
|
||||||
import mage.constants.CardType;
|
import mage.constants.CardType;
|
||||||
import mage.constants.TargetController;
|
import mage.constants.TargetController;
|
||||||
import mage.constants.Zone;
|
|
||||||
import mage.counters.CounterType;
|
import mage.counters.CounterType;
|
||||||
import mage.game.Game;
|
import mage.game.Game;
|
||||||
import mage.game.permanent.token.AngelToken;
|
import mage.game.permanent.token.AngelToken;
|
||||||
|
|
@ -39,8 +38,7 @@ public final class LuminarchAscension extends CardImpl {
|
||||||
|
|
||||||
// {1}{W}: Create a 4/4 white Angel creature token with flying. Activate this ability only if Luminarch Ascension has four or more quest counters on it.
|
// {1}{W}: Create a 4/4 white Angel creature token with flying. Activate this ability only if Luminarch Ascension has four or more quest counters on it.
|
||||||
this.addAbility(new ActivateIfConditionActivatedAbility(
|
this.addAbility(new ActivateIfConditionActivatedAbility(
|
||||||
Zone.BATTLEFIELD, new CreateTokenEffect(new AngelToken()),
|
new CreateTokenEffect(new AngelToken()), new ManaCostsImpl<>("{1}{W}"), condition
|
||||||
new ManaCostsImpl<>("{1}{W}"), condition
|
|
||||||
));
|
));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,5 @@
|
||||||
|
|
||||||
package mage.cards.l;
|
package mage.cards.l;
|
||||||
|
|
||||||
import java.util.UUID;
|
|
||||||
import mage.MageInt;
|
import mage.MageInt;
|
||||||
import mage.abilities.Ability;
|
import mage.abilities.Ability;
|
||||||
import mage.abilities.common.ActivateIfConditionActivatedAbility;
|
import mage.abilities.common.ActivateIfConditionActivatedAbility;
|
||||||
|
|
@ -12,19 +10,19 @@ import mage.cards.CardImpl;
|
||||||
import mage.cards.CardSetInfo;
|
import mage.cards.CardSetInfo;
|
||||||
import mage.constants.AbilityWord;
|
import mage.constants.AbilityWord;
|
||||||
import mage.constants.CardType;
|
import mage.constants.CardType;
|
||||||
import mage.constants.SubType;
|
|
||||||
import mage.constants.Duration;
|
import mage.constants.Duration;
|
||||||
import mage.constants.Zone;
|
import mage.constants.SubType;
|
||||||
import mage.target.common.TargetCreaturePermanent;
|
import mage.target.common.TargetCreaturePermanent;
|
||||||
|
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
|
||||||
* @author LevelX2
|
* @author LevelX2
|
||||||
*/
|
*/
|
||||||
public final class LurkingArynx extends CardImpl {
|
public final class LurkingArynx extends CardImpl {
|
||||||
|
|
||||||
public LurkingArynx(UUID ownerId, CardSetInfo setInfo) {
|
public LurkingArynx(UUID ownerId, CardSetInfo setInfo) {
|
||||||
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{G}");
|
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{G}");
|
||||||
this.subtype.add(SubType.CAT);
|
this.subtype.add(SubType.CAT);
|
||||||
this.subtype.add(SubType.BEAST);
|
this.subtype.add(SubType.BEAST);
|
||||||
this.power = new MageInt(3);
|
this.power = new MageInt(3);
|
||||||
|
|
@ -32,13 +30,11 @@ public final class LurkingArynx extends CardImpl {
|
||||||
|
|
||||||
// <i>Formidable</i> — {2}{G}: Target creature blocks Lurking Arynx this turn if able. Activate this ability only if creatures you control have total power 8 or greater.
|
// <i>Formidable</i> — {2}{G}: Target creature blocks Lurking Arynx this turn if able. Activate this ability only if creatures you control have total power 8 or greater.
|
||||||
Ability ability = new ActivateIfConditionActivatedAbility(
|
Ability ability = new ActivateIfConditionActivatedAbility(
|
||||||
Zone.BATTLEFIELD,
|
|
||||||
new MustBeBlockedByTargetSourceEffect(Duration.EndOfTurn),
|
new MustBeBlockedByTargetSourceEffect(Duration.EndOfTurn),
|
||||||
new ManaCostsImpl<>("{2}{G}"),
|
new ManaCostsImpl<>("{2}{G}"), FormidableCondition.instance
|
||||||
FormidableCondition.instance);
|
);
|
||||||
ability.setAbilityWord(AbilityWord.FORMIDABLE);
|
|
||||||
ability.addTarget(new TargetCreaturePermanent());
|
ability.addTarget(new TargetCreaturePermanent());
|
||||||
this.addAbility(ability);
|
this.addAbility(ability.setAbilityWord(AbilityWord.FORMIDABLE));
|
||||||
}
|
}
|
||||||
|
|
||||||
private LurkingArynx(final LurkingArynx card) {
|
private LurkingArynx(final LurkingArynx card) {
|
||||||
|
|
|
||||||
|
|
@ -12,7 +12,6 @@ import mage.cards.CardImpl;
|
||||||
import mage.cards.CardSetInfo;
|
import mage.cards.CardSetInfo;
|
||||||
import mage.constants.CardType;
|
import mage.constants.CardType;
|
||||||
import mage.constants.WatcherScope;
|
import mage.constants.WatcherScope;
|
||||||
import mage.constants.Zone;
|
|
||||||
import mage.game.Game;
|
import mage.game.Game;
|
||||||
import mage.game.events.EntersTheBattlefieldEvent;
|
import mage.game.events.EntersTheBattlefieldEvent;
|
||||||
import mage.game.events.GameEvent;
|
import mage.game.events.GameEvent;
|
||||||
|
|
@ -27,11 +26,6 @@ import java.util.*;
|
||||||
*/
|
*/
|
||||||
public final class MastersManufactory extends CardImpl {
|
public final class MastersManufactory extends CardImpl {
|
||||||
|
|
||||||
private static final Hint hint = new ConditionHint(
|
|
||||||
MastersManufactoryCondition.instance,
|
|
||||||
"{this} or another artifact entered under your control this turn"
|
|
||||||
);
|
|
||||||
|
|
||||||
public MastersManufactory(UUID ownerId, CardSetInfo setInfo) {
|
public MastersManufactory(UUID ownerId, CardSetInfo setInfo) {
|
||||||
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "");
|
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "");
|
||||||
this.nightCard = true;
|
this.nightCard = true;
|
||||||
|
|
@ -40,11 +34,9 @@ public final class MastersManufactory extends CardImpl {
|
||||||
|
|
||||||
// {T}: Create a 4/4 white and blue Golem artifact creature token. Activate only if Master's Manufactory or another artifact entered the battlefield under your control this turn.
|
// {T}: Create a 4/4 white and blue Golem artifact creature token. Activate only if Master's Manufactory or another artifact entered the battlefield under your control this turn.
|
||||||
this.addAbility(new ActivateIfConditionActivatedAbility(
|
this.addAbility(new ActivateIfConditionActivatedAbility(
|
||||||
Zone.BATTLEFIELD,
|
|
||||||
new CreateTokenEffect(new GolemWhiteBlueToken()),
|
new CreateTokenEffect(new GolemWhiteBlueToken()),
|
||||||
new TapSourceCost(),
|
new TapSourceCost(), MastersManufactoryCondition.instance
|
||||||
MastersManufactoryCondition.instance
|
).addHint(MastersManufactoryCondition.getHint()), new MastersManufactoryWatcher());
|
||||||
).addHint(hint), new MastersManufactoryWatcher());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private MastersManufactory(final MastersManufactory card) {
|
private MastersManufactory(final MastersManufactory card) {
|
||||||
|
|
@ -59,19 +51,23 @@ public final class MastersManufactory extends CardImpl {
|
||||||
|
|
||||||
enum MastersManufactoryCondition implements Condition {
|
enum MastersManufactoryCondition implements Condition {
|
||||||
instance;
|
instance;
|
||||||
|
private static final Hint hint = new ConditionHint(instance);
|
||||||
|
|
||||||
|
public static Hint getHint() {
|
||||||
|
return hint;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean apply(Game game, Ability source) {
|
public boolean apply(Game game, Ability source) {
|
||||||
Permanent permanent = game.getPermanent(source.getSourceId());
|
Permanent permanent = game.getPermanent(source.getSourceId());
|
||||||
MastersManufactoryWatcher watcher = game.getState().getWatcher(MastersManufactoryWatcher.class);
|
MastersManufactoryWatcher watcher = game.getState().getWatcher(MastersManufactoryWatcher.class);
|
||||||
return watcher != null
|
return watcher != null && permanent != null
|
||||||
&& permanent != null
|
|
||||||
&& watcher.check(source.getControllerId(), new MageObjectReference(permanent, game));
|
&& watcher.check(source.getControllerId(), new MageObjectReference(permanent, game));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String toString() {
|
public String toString() {
|
||||||
return "if {this} or another artifact entered the battlefield under your control this turn";
|
return "{this} or another artifact entered the battlefield under your control this turn";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,25 +1,19 @@
|
||||||
package mage.cards.m;
|
package mage.cards.m;
|
||||||
|
|
||||||
import java.util.UUID;
|
|
||||||
|
|
||||||
import mage.MageInt;
|
import mage.MageInt;
|
||||||
import mage.abilities.TriggeredAbilityImpl;
|
|
||||||
import mage.abilities.common.ActivateIfConditionActivatedAbility;
|
import mage.abilities.common.ActivateIfConditionActivatedAbility;
|
||||||
|
import mage.abilities.common.DealsCombatDamageToAPlayerTriggeredAbility;
|
||||||
import mage.abilities.condition.common.CardsInOpponentGraveyardCondition;
|
import mage.abilities.condition.common.CardsInOpponentGraveyardCondition;
|
||||||
import mage.abilities.costs.common.SacrificeSourceCost;
|
import mage.abilities.costs.common.SacrificeSourceCost;
|
||||||
import mage.abilities.effects.Effect;
|
|
||||||
import mage.abilities.effects.common.DrawCardSourceControllerEffect;
|
import mage.abilities.effects.common.DrawCardSourceControllerEffect;
|
||||||
import mage.abilities.effects.common.MillCardsTargetEffect;
|
import mage.abilities.effects.common.MillCardsTargetEffect;
|
||||||
import mage.constants.SubType;
|
|
||||||
import mage.abilities.keyword.FlyingAbility;
|
import mage.abilities.keyword.FlyingAbility;
|
||||||
import mage.cards.CardImpl;
|
import mage.cards.CardImpl;
|
||||||
import mage.cards.CardSetInfo;
|
import mage.cards.CardSetInfo;
|
||||||
import mage.constants.CardType;
|
import mage.constants.CardType;
|
||||||
import mage.constants.Zone;
|
import mage.constants.SubType;
|
||||||
import mage.game.Game;
|
|
||||||
import mage.game.events.DamagedPlayerEvent;
|
import java.util.UUID;
|
||||||
import mage.game.events.GameEvent;
|
|
||||||
import mage.target.targetpointer.FixedTarget;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author TheElk801
|
* @author TheElk801
|
||||||
|
|
@ -38,11 +32,13 @@ public final class MerfolkWindrobber extends CardImpl {
|
||||||
this.addAbility(FlyingAbility.getInstance());
|
this.addAbility(FlyingAbility.getInstance());
|
||||||
|
|
||||||
// Whenever Merfolk Windrobber deals combat damage to a player, that player mills a card.
|
// Whenever Merfolk Windrobber deals combat damage to a player, that player mills a card.
|
||||||
this.addAbility(new MerfolkWindrobberTriggeredAbility());
|
this.addAbility(new DealsCombatDamageToAPlayerTriggeredAbility(
|
||||||
|
new MillCardsTargetEffect(1), false, true
|
||||||
|
));
|
||||||
|
|
||||||
// Sacrifice Merfolk Windrobber: Draw a card. Activate this ability only if an opponent has eight or more cards in their graveyard.
|
// Sacrifice Merfolk Windrobber: Draw a card. Activate this ability only if an opponent has eight or more cards in their graveyard.
|
||||||
this.addAbility(new ActivateIfConditionActivatedAbility(
|
this.addAbility(new ActivateIfConditionActivatedAbility(
|
||||||
Zone.BATTLEFIELD, new DrawCardSourceControllerEffect(1),
|
new DrawCardSourceControllerEffect(1),
|
||||||
new SacrificeSourceCost(), CardsInOpponentGraveyardCondition.EIGHT
|
new SacrificeSourceCost(), CardsInOpponentGraveyardCondition.EIGHT
|
||||||
).addHint(CardsInOpponentGraveyardCondition.EIGHT.getHint()));
|
).addHint(CardsInOpponentGraveyardCondition.EIGHT.getHint()));
|
||||||
}
|
}
|
||||||
|
|
@ -56,41 +52,3 @@ public final class MerfolkWindrobber extends CardImpl {
|
||||||
return new MerfolkWindrobber(this);
|
return new MerfolkWindrobber(this);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
class MerfolkWindrobberTriggeredAbility extends TriggeredAbilityImpl {
|
|
||||||
|
|
||||||
public MerfolkWindrobberTriggeredAbility() {
|
|
||||||
super(Zone.BATTLEFIELD, new MillCardsTargetEffect(1));
|
|
||||||
}
|
|
||||||
|
|
||||||
private MerfolkWindrobberTriggeredAbility(final MerfolkWindrobberTriggeredAbility ability) {
|
|
||||||
super(ability);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public MerfolkWindrobberTriggeredAbility copy() {
|
|
||||||
return new MerfolkWindrobberTriggeredAbility(this);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean checkEventType(GameEvent event, Game game) {
|
|
||||||
return event.getType() == GameEvent.EventType.DAMAGED_PLAYER;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean checkTrigger(GameEvent event, Game game) {
|
|
||||||
DamagedPlayerEvent damageEvent = (DamagedPlayerEvent) event;
|
|
||||||
if (damageEvent.isCombatDamage() && event.getSourceId().equals(this.getSourceId())) {
|
|
||||||
for (Effect effect : this.getEffects()) {
|
|
||||||
effect.setTargetPointer(new FixedTarget(event.getPlayerId()));
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String getRule() {
|
|
||||||
return "Whenever {this} deals combat damage to a player, that player mills a card.";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
|
||||||
|
|
@ -28,8 +28,7 @@ public final class MeticulousExcavation extends CardImpl {
|
||||||
|
|
||||||
// {2}{W}: Return target permanent you control to its owner's hand. If it has unearth, instead exile it, then return that card to its owner's hand. Activate only during your turn.
|
// {2}{W}: Return target permanent you control to its owner's hand. If it has unearth, instead exile it, then return that card to its owner's hand. Activate only during your turn.
|
||||||
Ability ability = new ActivateIfConditionActivatedAbility(
|
Ability ability = new ActivateIfConditionActivatedAbility(
|
||||||
Zone.BATTLEFIELD, new MeticulousExcavationEffect(),
|
new MeticulousExcavationEffect(), new ManaCostsImpl<>("{2}{W}"), MyTurnCondition.instance
|
||||||
new ManaCostsImpl<>("{2}{W}"), MyTurnCondition.instance
|
|
||||||
);
|
);
|
||||||
ability.addTarget(new TargetControlledPermanent());
|
ability.addTarget(new TargetControlledPermanent());
|
||||||
this.addAbility(ability);
|
this.addAbility(ability);
|
||||||
|
|
|
||||||
|
|
@ -16,7 +16,6 @@ import mage.cards.CardSetInfo;
|
||||||
import mage.constants.CardType;
|
import mage.constants.CardType;
|
||||||
import mage.constants.SuperType;
|
import mage.constants.SuperType;
|
||||||
import mage.constants.WatcherScope;
|
import mage.constants.WatcherScope;
|
||||||
import mage.constants.Zone;
|
|
||||||
import mage.filter.FilterPermanent;
|
import mage.filter.FilterPermanent;
|
||||||
import mage.filter.common.FilterControlledCreaturePermanent;
|
import mage.filter.common.FilterControlledCreaturePermanent;
|
||||||
import mage.game.Game;
|
import mage.game.Game;
|
||||||
|
|
@ -54,7 +53,7 @@ public final class MinasTirith extends CardImpl {
|
||||||
|
|
||||||
// {1}{W}, {T}: Draw a card. Activate only if you attacked with two or more creatures this turn.
|
// {1}{W}, {T}: Draw a card. Activate only if you attacked with two or more creatures this turn.
|
||||||
Ability ability = new ActivateIfConditionActivatedAbility(
|
Ability ability = new ActivateIfConditionActivatedAbility(
|
||||||
Zone.BATTLEFIELD, new DrawCardSourceControllerEffect(1),
|
new DrawCardSourceControllerEffect(1),
|
||||||
new ManaCostsImpl<>("{1}{W}"), MinasTirithCondition.instance
|
new ManaCostsImpl<>("{1}{W}"), MinasTirithCondition.instance
|
||||||
);
|
);
|
||||||
ability.addCost(new TapSourceCost());
|
ability.addCost(new TapSourceCost());
|
||||||
|
|
|
||||||
|
|
@ -1,10 +1,10 @@
|
||||||
package mage.cards.m;
|
package mage.cards.m;
|
||||||
|
|
||||||
import java.util.UUID;
|
|
||||||
import mage.ObjectColor;
|
import mage.ObjectColor;
|
||||||
import mage.abilities.Ability;
|
import mage.abilities.Ability;
|
||||||
import mage.abilities.common.ActivateIfConditionActivatedAbility;
|
import mage.abilities.common.ActivateIfConditionActivatedAbility;
|
||||||
import mage.abilities.common.EntersBattlefieldTappedAbility;
|
import mage.abilities.common.EntersBattlefieldTappedAbility;
|
||||||
|
import mage.abilities.condition.Condition;
|
||||||
import mage.abilities.condition.common.PermanentsOnTheBattlefieldCondition;
|
import mage.abilities.condition.common.PermanentsOnTheBattlefieldCondition;
|
||||||
import mage.abilities.costs.common.TapSourceCost;
|
import mage.abilities.costs.common.TapSourceCost;
|
||||||
import mage.abilities.costs.mana.ManaCostsImpl;
|
import mage.abilities.costs.mana.ManaCostsImpl;
|
||||||
|
|
@ -20,6 +20,8 @@ import mage.game.Game;
|
||||||
import mage.players.Player;
|
import mage.players.Player;
|
||||||
import mage.target.common.TargetCardInYourGraveyard;
|
import mage.target.common.TargetCardInYourGraveyard;
|
||||||
|
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author LevelX2
|
* @author LevelX2
|
||||||
*/
|
*/
|
||||||
|
|
@ -31,6 +33,8 @@ public final class MistveilPlains extends CardImpl {
|
||||||
filter.add(new ColorPredicate(ObjectColor.WHITE));
|
filter.add(new ColorPredicate(ObjectColor.WHITE));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static final Condition condition = new PermanentsOnTheBattlefieldCondition(filter, ComparisonType.MORE_THAN, 1);
|
||||||
|
|
||||||
public MistveilPlains(UUID ownerId, CardSetInfo setInfo) {
|
public MistveilPlains(UUID ownerId, CardSetInfo setInfo) {
|
||||||
super(ownerId, setInfo, new CardType[]{CardType.LAND}, "");
|
super(ownerId, setInfo, new CardType[]{CardType.LAND}, "");
|
||||||
this.subtype.add(SubType.PLAINS);
|
this.subtype.add(SubType.PLAINS);
|
||||||
|
|
@ -43,15 +47,11 @@ public final class MistveilPlains extends CardImpl {
|
||||||
|
|
||||||
// {W}, {tap}: Put target card from your graveyard on the bottom of your library. Activate this ability only if you control two or more white permanents.
|
// {W}, {tap}: Put target card from your graveyard on the bottom of your library. Activate this ability only if you control two or more white permanents.
|
||||||
Ability ability = new ActivateIfConditionActivatedAbility(
|
Ability ability = new ActivateIfConditionActivatedAbility(
|
||||||
Zone.BATTLEFIELD,
|
new MistveilPlainsGraveyardToLibraryEffect(), new ManaCostsImpl<>("{W}"), condition
|
||||||
new MistveilPlainsGraveyardToLibraryEffect(),
|
|
||||||
new ManaCostsImpl<>("{W}"),
|
|
||||||
new PermanentsOnTheBattlefieldCondition(filter, ComparisonType.MORE_THAN, 1)
|
|
||||||
);
|
);
|
||||||
ability.addTarget(new TargetCardInYourGraveyard());
|
ability.addTarget(new TargetCardInYourGraveyard());
|
||||||
ability.addCost(new TapSourceCost());
|
ability.addCost(new TapSourceCost());
|
||||||
this.addAbility(ability);
|
this.addAbility(ability);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private MistveilPlains(final MistveilPlains card) {
|
private MistveilPlains(final MistveilPlains card) {
|
||||||
|
|
|
||||||
|
|
@ -56,7 +56,6 @@ public final class MonumentToPerfection extends CardImpl {
|
||||||
|
|
||||||
// {3}: Monument to Perfection becomes a 9/9 Phyrexian Construct artifact creature, loses all abilities, and gains indestructible and toxic 9. Activate only if there are nine or more lands with different names among the basic, Sphere, and Locus lands you control.
|
// {3}: Monument to Perfection becomes a 9/9 Phyrexian Construct artifact creature, loses all abilities, and gains indestructible and toxic 9. Activate only if there are nine or more lands with different names among the basic, Sphere, and Locus lands you control.
|
||||||
this.addAbility(new ActivateIfConditionActivatedAbility(
|
this.addAbility(new ActivateIfConditionActivatedAbility(
|
||||||
Zone.BATTLEFIELD,
|
|
||||||
new BecomesCreatureSourceEffect(new CreatureToken(
|
new BecomesCreatureSourceEffect(new CreatureToken(
|
||||||
9, 9, "9/9 Phyrexian Construct artifact creature, " +
|
9, 9, "9/9 Phyrexian Construct artifact creature, " +
|
||||||
"loses all abilities, and gains indestructible and toxic 9", SubType.PHYREXIAN, SubType.CONSTRUCT
|
"loses all abilities, and gains indestructible and toxic 9", SubType.PHYREXIAN, SubType.CONSTRUCT
|
||||||
|
|
|
||||||
|
|
@ -9,9 +9,11 @@ import mage.abilities.costs.common.TapSourceCost;
|
||||||
import mage.abilities.costs.mana.ManaCostsImpl;
|
import mage.abilities.costs.mana.ManaCostsImpl;
|
||||||
import mage.abilities.effects.OneShotEffect;
|
import mage.abilities.effects.OneShotEffect;
|
||||||
import mage.abilities.effects.common.ChooseACardNameEffect;
|
import mage.abilities.effects.common.ChooseACardNameEffect;
|
||||||
import mage.abilities.hint.common.MyTurnHint;
|
|
||||||
import mage.cards.*;
|
import mage.cards.*;
|
||||||
import mage.constants.*;
|
import mage.constants.CardType;
|
||||||
|
import mage.constants.Outcome;
|
||||||
|
import mage.constants.SubType;
|
||||||
|
import mage.constants.SuperType;
|
||||||
import mage.game.Game;
|
import mage.game.Game;
|
||||||
import mage.players.Player;
|
import mage.players.Player;
|
||||||
import mage.target.common.TargetOpponent;
|
import mage.target.common.TargetOpponent;
|
||||||
|
|
@ -33,11 +35,13 @@ public final class Nebuchadnezzar extends CardImpl {
|
||||||
this.toughness = new MageInt(3);
|
this.toughness = new MageInt(3);
|
||||||
|
|
||||||
// {X}, {T}: Choose a card name. Target opponent reveals X cards at random from their hand. Then that player discards all cards with that name revealed this way. Activate this ability only during your turn.
|
// {X}, {T}: Choose a card name. Target opponent reveals X cards at random from their hand. Then that player discards all cards with that name revealed this way. Activate this ability only during your turn.
|
||||||
Ability ability = new ActivateIfConditionActivatedAbility(Zone.BATTLEFIELD, new ChooseACardNameEffect(ChooseACardNameEffect.TypeOfName.ALL), new ManaCostsImpl<>("{X}"), MyTurnCondition.instance);
|
Ability ability = new ActivateIfConditionActivatedAbility(
|
||||||
|
new ChooseACardNameEffect(ChooseACardNameEffect.TypeOfName.ALL),
|
||||||
|
new ManaCostsImpl<>("{X}"), MyTurnCondition.instance
|
||||||
|
);
|
||||||
ability.addCost(new TapSourceCost());
|
ability.addCost(new TapSourceCost());
|
||||||
ability.addEffect(new NebuchadnezzarEffect());
|
ability.addEffect(new NebuchadnezzarEffect());
|
||||||
ability.addTarget(new TargetOpponent());
|
ability.addTarget(new TargetOpponent());
|
||||||
ability.addHint(MyTurnHint.instance);
|
|
||||||
this.addAbility(ability);
|
this.addAbility(ability);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,5 @@
|
||||||
|
|
||||||
package mage.cards.n;
|
package mage.cards.n;
|
||||||
|
|
||||||
import java.util.UUID;
|
|
||||||
import mage.MageInt;
|
import mage.MageInt;
|
||||||
import mage.ObjectColor;
|
import mage.ObjectColor;
|
||||||
import mage.abilities.common.ActivateIfConditionActivatedAbility;
|
import mage.abilities.common.ActivateIfConditionActivatedAbility;
|
||||||
|
|
@ -12,17 +10,18 @@ import mage.cards.CardImpl;
|
||||||
import mage.cards.CardSetInfo;
|
import mage.cards.CardSetInfo;
|
||||||
import mage.constants.CardType;
|
import mage.constants.CardType;
|
||||||
import mage.constants.SubType;
|
import mage.constants.SubType;
|
||||||
import mage.constants.Zone;
|
import mage.filter.FilterCard;
|
||||||
import mage.filter.common.FilterCreatureCard;
|
import mage.filter.common.FilterCreatureCard;
|
||||||
import mage.filter.predicate.mageobject.ColorPredicate;
|
import mage.filter.predicate.mageobject.ColorPredicate;
|
||||||
|
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
|
||||||
* @author fireshoes
|
* @author fireshoes
|
||||||
*/
|
*/
|
||||||
public final class NorwoodPriestess extends CardImpl {
|
public final class NorwoodPriestess extends CardImpl {
|
||||||
|
|
||||||
private static final FilterCreatureCard filter = new FilterCreatureCard("a green creature card");
|
private static final FilterCard filter = new FilterCreatureCard("a green creature card");
|
||||||
|
|
||||||
static {
|
static {
|
||||||
filter.add(new ColorPredicate(ObjectColor.GREEN));
|
filter.add(new ColorPredicate(ObjectColor.GREEN));
|
||||||
|
|
@ -37,10 +36,8 @@ public final class NorwoodPriestess extends CardImpl {
|
||||||
|
|
||||||
// {tap}: You may put a green creature card from your hand onto the battlefield. Activate this ability only during your turn, before attackers are declared.
|
// {tap}: You may put a green creature card from your hand onto the battlefield. Activate this ability only during your turn, before attackers are declared.
|
||||||
this.addAbility(new ActivateIfConditionActivatedAbility(
|
this.addAbility(new ActivateIfConditionActivatedAbility(
|
||||||
Zone.BATTLEFIELD,
|
|
||||||
new PutCardFromHandOntoBattlefieldEffect(filter),
|
new PutCardFromHandOntoBattlefieldEffect(filter),
|
||||||
new TapSourceCost(),
|
new TapSourceCost(), MyTurnBeforeAttackersDeclaredCondition.instance
|
||||||
MyTurnBeforeAttackersDeclaredCondition.instance
|
|
||||||
));
|
));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -13,7 +13,6 @@ import mage.abilities.effects.OneShotEffect;
|
||||||
import mage.abilities.effects.RequirementEffect;
|
import mage.abilities.effects.RequirementEffect;
|
||||||
import mage.abilities.effects.RestrictionEffect;
|
import mage.abilities.effects.RestrictionEffect;
|
||||||
import mage.abilities.effects.common.DestroyTargetEffect;
|
import mage.abilities.effects.common.DestroyTargetEffect;
|
||||||
import mage.abilities.hint.common.MyTurnHint;
|
|
||||||
import mage.cards.CardImpl;
|
import mage.cards.CardImpl;
|
||||||
import mage.cards.CardSetInfo;
|
import mage.cards.CardSetInfo;
|
||||||
import mage.constants.*;
|
import mage.constants.*;
|
||||||
|
|
@ -46,9 +45,10 @@ public final class OracleEnVec extends CardImpl {
|
||||||
// {T}: Target opponent chooses any number of creatures they control. During that player’s next turn, the chosen
|
// {T}: Target opponent chooses any number of creatures they control. During that player’s next turn, the chosen
|
||||||
// creatures attack if able, and other creatures can’t attack. At the beginning of that turn’s end step,
|
// creatures attack if able, and other creatures can’t attack. At the beginning of that turn’s end step,
|
||||||
// destroy each of the chosen creatures that didn’t attack this turn. Activate this ability only during your turn.
|
// destroy each of the chosen creatures that didn’t attack this turn. Activate this ability only during your turn.
|
||||||
Ability ability = new ActivateIfConditionActivatedAbility(Zone.BATTLEFIELD, new OracleEnVecEffect(), new TapSourceCost(), MyTurnCondition.instance);
|
Ability ability = new ActivateIfConditionActivatedAbility(
|
||||||
|
new OracleEnVecEffect(), new TapSourceCost(), MyTurnCondition.instance
|
||||||
|
);
|
||||||
ability.addTarget(new TargetOpponent());
|
ability.addTarget(new TargetOpponent());
|
||||||
ability.addHint(MyTurnHint.instance);
|
|
||||||
this.addAbility(ability);
|
this.addAbility(ability);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,5 @@
|
||||||
|
|
||||||
package mage.cards.p;
|
package mage.cards.p;
|
||||||
|
|
||||||
import java.util.UUID;
|
|
||||||
import mage.MageInt;
|
import mage.MageInt;
|
||||||
import mage.abilities.Ability;
|
import mage.abilities.Ability;
|
||||||
import mage.abilities.common.ActivateIfConditionActivatedAbility;
|
import mage.abilities.common.ActivateIfConditionActivatedAbility;
|
||||||
|
|
@ -12,19 +10,18 @@ import mage.cards.CardImpl;
|
||||||
import mage.cards.CardSetInfo;
|
import mage.cards.CardSetInfo;
|
||||||
import mage.constants.CardType;
|
import mage.constants.CardType;
|
||||||
import mage.constants.SubType;
|
import mage.constants.SubType;
|
||||||
import mage.constants.Duration;
|
|
||||||
import mage.constants.SuperType;
|
import mage.constants.SuperType;
|
||||||
import mage.constants.Zone;
|
|
||||||
import mage.target.common.TargetCreaturePermanent;
|
import mage.target.common.TargetCreaturePermanent;
|
||||||
|
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
|
||||||
* @author fireshoes
|
* @author fireshoes
|
||||||
*/
|
*/
|
||||||
public final class PangTongYoungPhoenix extends CardImpl {
|
public final class PangTongYoungPhoenix extends CardImpl {
|
||||||
|
|
||||||
public PangTongYoungPhoenix(UUID ownerId, CardSetInfo setInfo) {
|
public PangTongYoungPhoenix(UUID ownerId, CardSetInfo setInfo) {
|
||||||
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}{W}");
|
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{W}{W}");
|
||||||
this.supertype.add(SuperType.LEGENDARY);
|
this.supertype.add(SuperType.LEGENDARY);
|
||||||
this.subtype.add(SubType.HUMAN);
|
this.subtype.add(SubType.HUMAN);
|
||||||
this.subtype.add(SubType.ADVISOR);
|
this.subtype.add(SubType.ADVISOR);
|
||||||
|
|
@ -32,8 +29,10 @@ public final class PangTongYoungPhoenix extends CardImpl {
|
||||||
this.toughness = new MageInt(2);
|
this.toughness = new MageInt(2);
|
||||||
|
|
||||||
// {tap}: Target creature gets +0/+2 until end of turn. Activate this ability only during your turn, before attackers are declared.
|
// {tap}: Target creature gets +0/+2 until end of turn. Activate this ability only during your turn, before attackers are declared.
|
||||||
Ability ability = new ActivateIfConditionActivatedAbility(Zone.BATTLEFIELD,
|
Ability ability = new ActivateIfConditionActivatedAbility(
|
||||||
new BoostTargetEffect(0, 2, Duration.EndOfTurn), new TapSourceCost(), MyTurnBeforeAttackersDeclaredCondition.instance);
|
new BoostTargetEffect(0, 2), new TapSourceCost(),
|
||||||
|
MyTurnBeforeAttackersDeclaredCondition.instance
|
||||||
|
);
|
||||||
ability.addTarget(new TargetCreaturePermanent());
|
ability.addTarget(new TargetCreaturePermanent());
|
||||||
this.addAbility(ability);
|
this.addAbility(ability);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,6 @@ import mage.abilities.condition.common.MyTurnCondition;
|
||||||
import mage.abilities.costs.common.TapSourceCost;
|
import mage.abilities.costs.common.TapSourceCost;
|
||||||
import mage.abilities.costs.mana.GenericManaCost;
|
import mage.abilities.costs.mana.GenericManaCost;
|
||||||
import mage.abilities.effects.OneShotEffect;
|
import mage.abilities.effects.OneShotEffect;
|
||||||
import mage.abilities.hint.common.MyTurnHint;
|
|
||||||
import mage.cards.CardImpl;
|
import mage.cards.CardImpl;
|
||||||
import mage.cards.CardSetInfo;
|
import mage.cards.CardSetInfo;
|
||||||
import mage.cards.Cards;
|
import mage.cards.Cards;
|
||||||
|
|
@ -32,12 +31,10 @@ public final class PortalOfSanctuary extends CardImpl {
|
||||||
|
|
||||||
// {1}, {T}: Return target creature you control and each Aura attached to it to their owners' hands. Activate this ability only during your turn.
|
// {1}, {T}: Return target creature you control and each Aura attached to it to their owners' hands. Activate this ability only during your turn.
|
||||||
Ability ability = new ActivateIfConditionActivatedAbility(
|
Ability ability = new ActivateIfConditionActivatedAbility(
|
||||||
Zone.BATTLEFIELD, new PortalOfSanctuaryEffect(),
|
new PortalOfSanctuaryEffect(), new GenericManaCost(1), MyTurnCondition.instance
|
||||||
new GenericManaCost(1), MyTurnCondition.instance
|
|
||||||
);
|
);
|
||||||
ability.addCost(new TapSourceCost());
|
ability.addCost(new TapSourceCost());
|
||||||
ability.addTarget(new TargetControlledCreaturePermanent());
|
ability.addTarget(new TargetControlledCreaturePermanent());
|
||||||
ability.addHint(MyTurnHint.instance);
|
|
||||||
this.addAbility(ability);
|
this.addAbility(ability);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -83,4 +80,4 @@ class PortalOfSanctuaryEffect extends OneShotEffect {
|
||||||
.forEach(perm -> cards.add(perm));
|
.forEach(perm -> cards.add(perm));
|
||||||
return player.moveCards(cards, Zone.HAND, source, game);
|
return player.moveCards(cards, Zone.HAND, source, game);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -8,12 +8,10 @@ import mage.abilities.costs.common.TapSourceCost;
|
||||||
import mage.abilities.costs.mana.ManaCostsImpl;
|
import mage.abilities.costs.mana.ManaCostsImpl;
|
||||||
import mage.abilities.effects.OneShotEffect;
|
import mage.abilities.effects.OneShotEffect;
|
||||||
import mage.abilities.effects.common.RevealHandTargetEffect;
|
import mage.abilities.effects.common.RevealHandTargetEffect;
|
||||||
import mage.abilities.hint.common.MyTurnHint;
|
|
||||||
import mage.cards.*;
|
import mage.cards.*;
|
||||||
import mage.constants.CardType;
|
import mage.constants.CardType;
|
||||||
import mage.constants.Outcome;
|
import mage.constants.Outcome;
|
||||||
import mage.constants.SubType;
|
import mage.constants.SubType;
|
||||||
import mage.constants.Zone;
|
|
||||||
import mage.filter.StaticFilters;
|
import mage.filter.StaticFilters;
|
||||||
import mage.game.Game;
|
import mage.game.Game;
|
||||||
import mage.players.Player;
|
import mage.players.Player;
|
||||||
|
|
@ -35,11 +33,12 @@ public final class RagMan extends CardImpl {
|
||||||
this.toughness = new MageInt(1);
|
this.toughness = new MageInt(1);
|
||||||
|
|
||||||
// {B}{B}{B}, {T}: Target opponent reveals their hand and discards a creature card at random. Activate this ability only during your turn.
|
// {B}{B}{B}, {T}: Target opponent reveals their hand and discards a creature card at random. Activate this ability only during your turn.
|
||||||
Ability ability = new ActivateIfConditionActivatedAbility(Zone.BATTLEFIELD, new RevealHandTargetEffect(), new ManaCostsImpl<>("{B}{B}{B}"), MyTurnCondition.instance);
|
Ability ability = new ActivateIfConditionActivatedAbility(
|
||||||
|
new RevealHandTargetEffect(), new ManaCostsImpl<>("{B}{B}{B}"), MyTurnCondition.instance
|
||||||
|
);
|
||||||
ability.addCost(new TapSourceCost());
|
ability.addCost(new TapSourceCost());
|
||||||
ability.addEffect(new RagManDiscardEffect());
|
ability.addEffect(new RagManDiscardEffect());
|
||||||
ability.addTarget(new TargetOpponent());
|
ability.addTarget(new TargetOpponent());
|
||||||
ability.addHint(MyTurnHint.instance);
|
|
||||||
this.addAbility(ability);
|
this.addAbility(ability);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -15,7 +15,6 @@ import mage.cards.CardSetInfo;
|
||||||
import mage.constants.AbilityWord;
|
import mage.constants.AbilityWord;
|
||||||
import mage.constants.CardType;
|
import mage.constants.CardType;
|
||||||
import mage.constants.SubType;
|
import mage.constants.SubType;
|
||||||
import mage.constants.Zone;
|
|
||||||
|
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
||||||
|
|
@ -41,8 +40,7 @@ public final class RavingVisionary extends CardImpl {
|
||||||
|
|
||||||
// Delirium — {2}{U}, {T}: Draw a card. Activate only if there are four or more card types among cards in your graveyard.
|
// Delirium — {2}{U}, {T}: Draw a card. Activate only if there are four or more card types among cards in your graveyard.
|
||||||
ability = new ActivateIfConditionActivatedAbility(
|
ability = new ActivateIfConditionActivatedAbility(
|
||||||
Zone.BATTLEFIELD, new DrawCardSourceControllerEffect(1),
|
new DrawCardSourceControllerEffect(1), new ManaCostsImpl<>("{2}{U}"), DeliriumCondition.instance
|
||||||
new ManaCostsImpl<>("{2}{U}"), DeliriumCondition.instance
|
|
||||||
);
|
);
|
||||||
ability.addCost(new TapSourceCost());
|
ability.addCost(new TapSourceCost());
|
||||||
this.addAbility(ability.addHint(CardTypesInGraveyardCount.YOU.getHint()).setAbilityWord(AbilityWord.DELIRIUM));
|
this.addAbility(ability.addHint(CardTypesInGraveyardCount.YOU.getHint()).setAbilityWord(AbilityWord.DELIRIUM));
|
||||||
|
|
|
||||||
|
|
@ -1,10 +1,9 @@
|
||||||
|
|
||||||
package mage.cards.r;
|
package mage.cards.r;
|
||||||
|
|
||||||
import java.util.UUID;
|
|
||||||
import mage.MageInt;
|
import mage.MageInt;
|
||||||
import mage.abilities.Ability;
|
import mage.abilities.Ability;
|
||||||
import mage.abilities.common.ActivateIfConditionActivatedAbility;
|
import mage.abilities.common.ActivateIfConditionActivatedAbility;
|
||||||
|
import mage.abilities.condition.Condition;
|
||||||
import mage.abilities.condition.common.PermanentsOnTheBattlefieldCondition;
|
import mage.abilities.condition.common.PermanentsOnTheBattlefieldCondition;
|
||||||
import mage.abilities.costs.common.TapSourceCost;
|
import mage.abilities.costs.common.TapSourceCost;
|
||||||
import mage.abilities.costs.mana.GenericManaCost;
|
import mage.abilities.costs.mana.GenericManaCost;
|
||||||
|
|
@ -12,37 +11,39 @@ import mage.abilities.effects.common.CounterTargetEffect;
|
||||||
import mage.cards.CardImpl;
|
import mage.cards.CardImpl;
|
||||||
import mage.cards.CardSetInfo;
|
import mage.cards.CardSetInfo;
|
||||||
import mage.constants.CardType;
|
import mage.constants.CardType;
|
||||||
import mage.constants.SubType;
|
|
||||||
import mage.constants.ComparisonType;
|
import mage.constants.ComparisonType;
|
||||||
|
import mage.constants.SubType;
|
||||||
import mage.constants.SuperType;
|
import mage.constants.SuperType;
|
||||||
import mage.constants.Zone;
|
import mage.filter.FilterPermanent;
|
||||||
import mage.filter.common.FilterControlledPermanent;
|
import mage.filter.common.FilterControlledPermanent;
|
||||||
import mage.target.common.TargetActivatedAbility;
|
import mage.target.common.TargetActivatedAbility;
|
||||||
|
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
|
||||||
* @author fireshoes
|
* @author fireshoes
|
||||||
*/
|
*/
|
||||||
public final class RimewindCryomancer extends CardImpl {
|
public final class RimewindCryomancer extends CardImpl {
|
||||||
|
|
||||||
private static final FilterControlledPermanent filter = new FilterControlledPermanent("you control four or more snow permanents");
|
private static final FilterPermanent filter = new FilterControlledPermanent("you control four or more snow permanents");
|
||||||
|
|
||||||
static {
|
static {
|
||||||
filter.add(SuperType.SNOW.getPredicate());
|
filter.add(SuperType.SNOW.getPredicate());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static final Condition condition = new PermanentsOnTheBattlefieldCondition(filter, ComparisonType.MORE_THAN, 3);
|
||||||
|
|
||||||
public RimewindCryomancer(UUID ownerId, CardSetInfo setInfo) {
|
public RimewindCryomancer(UUID ownerId, CardSetInfo setInfo) {
|
||||||
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{U}");
|
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{U}");
|
||||||
this.subtype.add(SubType.HUMAN);
|
this.subtype.add(SubType.HUMAN);
|
||||||
this.subtype.add(SubType.WIZARD);
|
this.subtype.add(SubType.WIZARD);
|
||||||
this.power = new MageInt(2);
|
this.power = new MageInt(2);
|
||||||
this.toughness = new MageInt(3);
|
this.toughness = new MageInt(3);
|
||||||
|
|
||||||
// {1}, {tap}: Counter target activated ability. Activate this ability only if you control four or more snow permanents.
|
// {1}, {tap}: Counter target activated ability. Activate this ability only if you control four or more snow permanents.
|
||||||
Ability ability = new ActivateIfConditionActivatedAbility(Zone.BATTLEFIELD,
|
Ability ability = new ActivateIfConditionActivatedAbility(
|
||||||
new CounterTargetEffect(),
|
new CounterTargetEffect(), new GenericManaCost(1), condition
|
||||||
new GenericManaCost(1),
|
);
|
||||||
new PermanentsOnTheBattlefieldCondition(filter, ComparisonType.MORE_THAN, 3));
|
|
||||||
ability.addCost(new TapSourceCost());
|
ability.addCost(new TapSourceCost());
|
||||||
ability.addTarget(new TargetActivatedAbility());
|
ability.addTarget(new TargetActivatedAbility());
|
||||||
this.addAbility(ability);
|
this.addAbility(ability);
|
||||||
|
|
|
||||||
|
|
@ -1,10 +1,9 @@
|
||||||
|
|
||||||
package mage.cards.r;
|
package mage.cards.r;
|
||||||
|
|
||||||
import java.util.UUID;
|
|
||||||
import mage.MageInt;
|
import mage.MageInt;
|
||||||
import mage.abilities.Ability;
|
import mage.abilities.Ability;
|
||||||
import mage.abilities.common.ActivateIfConditionActivatedAbility;
|
import mage.abilities.common.ActivateIfConditionActivatedAbility;
|
||||||
|
import mage.abilities.condition.Condition;
|
||||||
import mage.abilities.condition.common.PermanentsOnTheBattlefieldCondition;
|
import mage.abilities.condition.common.PermanentsOnTheBattlefieldCondition;
|
||||||
import mage.abilities.costs.common.TapSourceCost;
|
import mage.abilities.costs.common.TapSourceCost;
|
||||||
import mage.abilities.costs.mana.GenericManaCost;
|
import mage.abilities.costs.mana.GenericManaCost;
|
||||||
|
|
@ -12,15 +11,15 @@ import mage.abilities.effects.common.MayTapOrUntapTargetEffect;
|
||||||
import mage.cards.CardImpl;
|
import mage.cards.CardImpl;
|
||||||
import mage.cards.CardSetInfo;
|
import mage.cards.CardSetInfo;
|
||||||
import mage.constants.CardType;
|
import mage.constants.CardType;
|
||||||
import mage.constants.SubType;
|
|
||||||
import mage.constants.ComparisonType;
|
import mage.constants.ComparisonType;
|
||||||
|
import mage.constants.SubType;
|
||||||
import mage.constants.SuperType;
|
import mage.constants.SuperType;
|
||||||
import mage.constants.Zone;
|
|
||||||
import mage.filter.common.FilterControlledPermanent;
|
import mage.filter.common.FilterControlledPermanent;
|
||||||
import mage.target.TargetPermanent;
|
import mage.target.TargetPermanent;
|
||||||
|
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
|
||||||
* @author fireshoes
|
* @author fireshoes
|
||||||
*/
|
*/
|
||||||
public final class RimewindTaskmage extends CardImpl {
|
public final class RimewindTaskmage extends CardImpl {
|
||||||
|
|
@ -31,18 +30,19 @@ public final class RimewindTaskmage extends CardImpl {
|
||||||
filter.add(SuperType.SNOW.getPredicate());
|
filter.add(SuperType.SNOW.getPredicate());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static final Condition condition = new PermanentsOnTheBattlefieldCondition(filter, ComparisonType.MORE_THAN, 3);
|
||||||
|
|
||||||
public RimewindTaskmage(UUID ownerId, CardSetInfo setInfo) {
|
public RimewindTaskmage(UUID ownerId, CardSetInfo setInfo) {
|
||||||
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}");
|
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{U}");
|
||||||
this.subtype.add(SubType.HUMAN);
|
this.subtype.add(SubType.HUMAN);
|
||||||
this.subtype.add(SubType.WIZARD);
|
this.subtype.add(SubType.WIZARD);
|
||||||
this.power = new MageInt(1);
|
this.power = new MageInt(1);
|
||||||
this.toughness = new MageInt(2);
|
this.toughness = new MageInt(2);
|
||||||
|
|
||||||
// {1}, {tap}: You may tap or untap target permanent. Activate this ability only if you control four or more snow permanents.
|
// {1}, {tap}: You may tap or untap target permanent. Activate this ability only if you control four or more snow permanents.
|
||||||
Ability ability = new ActivateIfConditionActivatedAbility(Zone.BATTLEFIELD,
|
Ability ability = new ActivateIfConditionActivatedAbility(
|
||||||
new MayTapOrUntapTargetEffect(),
|
new MayTapOrUntapTargetEffect(), new GenericManaCost(1), condition
|
||||||
new GenericManaCost(1),
|
);
|
||||||
new PermanentsOnTheBattlefieldCondition(filter, ComparisonType.MORE_THAN, 3));
|
|
||||||
ability.addCost(new TapSourceCost());
|
ability.addCost(new TapSourceCost());
|
||||||
ability.addTarget(new TargetPermanent());
|
ability.addTarget(new TargetPermanent());
|
||||||
this.addAbility(ability);
|
this.addAbility(ability);
|
||||||
|
|
|
||||||
|
|
@ -12,7 +12,6 @@ import mage.cards.CardImpl;
|
||||||
import mage.cards.CardSetInfo;
|
import mage.cards.CardSetInfo;
|
||||||
import mage.constants.CardType;
|
import mage.constants.CardType;
|
||||||
import mage.constants.SuperType;
|
import mage.constants.SuperType;
|
||||||
import mage.constants.Zone;
|
|
||||||
import mage.filter.FilterPermanent;
|
import mage.filter.FilterPermanent;
|
||||||
import mage.filter.common.FilterControlledCreaturePermanent;
|
import mage.filter.common.FilterControlledCreaturePermanent;
|
||||||
|
|
||||||
|
|
@ -44,9 +43,7 @@ public final class Rivendell extends CardImpl {
|
||||||
|
|
||||||
// {1}{U}, {T}: Scry 2. Activate only if you control a legendary creature.
|
// {1}{U}, {T}: Scry 2. Activate only if you control a legendary creature.
|
||||||
Ability ability = new ActivateIfConditionActivatedAbility(
|
Ability ability = new ActivateIfConditionActivatedAbility(
|
||||||
Zone.BATTLEFIELD,
|
new ScryEffect(2, false), new ManaCostsImpl<>("{1}{U}"), condition
|
||||||
new ScryEffect(2, false),
|
|
||||||
new ManaCostsImpl<>("{1}{U}"), condition
|
|
||||||
);
|
);
|
||||||
ability.addCost(new TapSourceCost());
|
ability.addCost(new TapSourceCost());
|
||||||
this.addAbility(ability);
|
this.addAbility(ability);
|
||||||
|
|
|
||||||
|
|
@ -6,13 +6,11 @@ import mage.abilities.condition.common.MyTurnCondition;
|
||||||
import mage.abilities.costs.common.TapSourceCost;
|
import mage.abilities.costs.common.TapSourceCost;
|
||||||
import mage.abilities.costs.mana.GenericManaCost;
|
import mage.abilities.costs.mana.GenericManaCost;
|
||||||
import mage.abilities.effects.common.ReturnToHandTargetEffect;
|
import mage.abilities.effects.common.ReturnToHandTargetEffect;
|
||||||
import mage.abilities.hint.common.MyTurnHint;
|
|
||||||
import mage.abilities.mana.ColorlessManaAbility;
|
import mage.abilities.mana.ColorlessManaAbility;
|
||||||
import mage.cards.CardImpl;
|
import mage.cards.CardImpl;
|
||||||
import mage.cards.CardSetInfo;
|
import mage.cards.CardSetInfo;
|
||||||
import mage.constants.CardType;
|
import mage.constants.CardType;
|
||||||
import mage.constants.TargetController;
|
import mage.constants.TargetController;
|
||||||
import mage.constants.Zone;
|
|
||||||
import mage.filter.FilterPermanent;
|
import mage.filter.FilterPermanent;
|
||||||
import mage.filter.predicate.mageobject.CommanderPredicate;
|
import mage.filter.predicate.mageobject.CommanderPredicate;
|
||||||
import mage.target.TargetPermanent;
|
import mage.target.TargetPermanent;
|
||||||
|
|
@ -39,13 +37,12 @@ public final class SanctumOfEternity extends CardImpl {
|
||||||
|
|
||||||
// {2}, {T}: Return target commander you own from the battlefield to your hand. Activate this ability only during your turn.
|
// {2}, {T}: Return target commander you own from the battlefield to your hand. Activate this ability only during your turn.
|
||||||
Ability ability = new ActivateIfConditionActivatedAbility(
|
Ability ability = new ActivateIfConditionActivatedAbility(
|
||||||
Zone.BATTLEFIELD, new ReturnToHandTargetEffect()
|
new ReturnToHandTargetEffect()
|
||||||
.setText("return target commander you own from the battlefield to your hand"),
|
.setText("return target commander you own from the battlefield to your hand"),
|
||||||
new GenericManaCost(2), MyTurnCondition.instance
|
new GenericManaCost(2), MyTurnCondition.instance
|
||||||
);
|
);
|
||||||
ability.addCost(new TapSourceCost());
|
ability.addCost(new TapSourceCost());
|
||||||
ability.addTarget(new TargetPermanent(filter));
|
ability.addTarget(new TargetPermanent(filter));
|
||||||
ability.addHint(MyTurnHint.instance);
|
|
||||||
this.addAbility(ability);
|
this.addAbility(ability);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -40,7 +40,6 @@ public final class SarevoksTome extends CardImpl {
|
||||||
|
|
||||||
// {T}: Add {C}. If you have the initiative, add {C}{C} instead.
|
// {T}: Add {C}. If you have the initiative, add {C}{C} instead.
|
||||||
this.addAbility(new SimpleManaAbility(
|
this.addAbility(new SimpleManaAbility(
|
||||||
Zone.BATTLEFIELD,
|
|
||||||
new ConditionalManaEffect(
|
new ConditionalManaEffect(
|
||||||
new BasicManaEffect(Mana.ColorlessMana(2)),
|
new BasicManaEffect(Mana.ColorlessMana(2)),
|
||||||
new BasicManaEffect(Mana.ColorlessMana(1)),
|
new BasicManaEffect(Mana.ColorlessMana(1)),
|
||||||
|
|
@ -51,8 +50,7 @@ public final class SarevoksTome extends CardImpl {
|
||||||
|
|
||||||
// {3}, {T}: Exile cards from the top of your library until you exile a nonland card. You may cast that card without paying its mana cost. Activate only if you've completed a dungeon.
|
// {3}, {T}: Exile cards from the top of your library until you exile a nonland card. You may cast that card without paying its mana cost. Activate only if you've completed a dungeon.
|
||||||
Ability ability = new ActivateIfConditionActivatedAbility(
|
Ability ability = new ActivateIfConditionActivatedAbility(
|
||||||
Zone.BATTLEFIELD, new SarevoksTomeEffect(),
|
new SarevoksTomeEffect(), new GenericManaCost(3), CompletedDungeonCondition.instance
|
||||||
new GenericManaCost(3), CompletedDungeonCondition.instance
|
|
||||||
);
|
);
|
||||||
ability.addCost(new TapSourceCost());
|
ability.addCost(new TapSourceCost());
|
||||||
this.addAbility(ability.addHint(CompletedDungeonCondition.getHint()), new CompletedDungeonWatcher());
|
this.addAbility(ability.addHint(CompletedDungeonCondition.getHint()), new CompletedDungeonWatcher());
|
||||||
|
|
|
||||||
|
|
@ -6,11 +6,9 @@ import mage.abilities.condition.common.MyTurnCondition;
|
||||||
import mage.abilities.costs.common.TapSourceCost;
|
import mage.abilities.costs.common.TapSourceCost;
|
||||||
import mage.abilities.costs.mana.ManaCostsImpl;
|
import mage.abilities.costs.mana.ManaCostsImpl;
|
||||||
import mage.abilities.effects.common.discard.DiscardTargetEffect;
|
import mage.abilities.effects.common.discard.DiscardTargetEffect;
|
||||||
import mage.abilities.hint.common.MyTurnHint;
|
|
||||||
import mage.cards.CardImpl;
|
import mage.cards.CardImpl;
|
||||||
import mage.cards.CardSetInfo;
|
import mage.cards.CardSetInfo;
|
||||||
import mage.constants.CardType;
|
import mage.constants.CardType;
|
||||||
import mage.constants.Zone;
|
|
||||||
import mage.target.TargetPlayer;
|
import mage.target.TargetPlayer;
|
||||||
|
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
@ -23,12 +21,12 @@ public final class ScepterOfFugue extends CardImpl {
|
||||||
public ScepterOfFugue(UUID ownerId, CardSetInfo setInfo) {
|
public ScepterOfFugue(UUID ownerId, CardSetInfo setInfo) {
|
||||||
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{B}{B}");
|
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{B}{B}");
|
||||||
|
|
||||||
|
|
||||||
// {1}{B}, {T}: Target player discards a card. Activate this ability only during your turn.
|
// {1}{B}, {T}: Target player discards a card. Activate this ability only during your turn.
|
||||||
Ability ability = new ActivateIfConditionActivatedAbility(Zone.BATTLEFIELD, new DiscardTargetEffect(1), new ManaCostsImpl<>("{1}{B}"), MyTurnCondition.instance);
|
Ability ability = new ActivateIfConditionActivatedAbility(
|
||||||
|
new DiscardTargetEffect(1), new ManaCostsImpl<>("{1}{B}"), MyTurnCondition.instance
|
||||||
|
);
|
||||||
ability.addCost(new TapSourceCost());
|
ability.addCost(new TapSourceCost());
|
||||||
ability.addTarget(new TargetPlayer());
|
ability.addTarget(new TargetPlayer());
|
||||||
ability.addHint(MyTurnHint.instance);
|
|
||||||
this.addAbility(ability);
|
this.addAbility(ability);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,5 @@
|
||||||
|
|
||||||
package mage.cards.s;
|
package mage.cards.s;
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.UUID;
|
|
||||||
import mage.MageInt;
|
import mage.MageInt;
|
||||||
import mage.abilities.Ability;
|
import mage.abilities.Ability;
|
||||||
import mage.abilities.common.ActivateIfConditionActivatedAbility;
|
import mage.abilities.common.ActivateIfConditionActivatedAbility;
|
||||||
|
|
@ -13,13 +10,12 @@ import mage.cards.CardImpl;
|
||||||
import mage.cards.CardSetInfo;
|
import mage.cards.CardSetInfo;
|
||||||
import mage.constants.CardType;
|
import mage.constants.CardType;
|
||||||
import mage.constants.SubType;
|
import mage.constants.SubType;
|
||||||
import mage.constants.Zone;
|
|
||||||
import mage.game.Game;
|
import mage.game.Game;
|
||||||
import mage.game.stack.Spell;
|
|
||||||
import mage.watchers.common.SpellsCastWatcher;
|
import mage.watchers.common.SpellsCastWatcher;
|
||||||
|
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
|
||||||
* @author anonymous
|
* @author anonymous
|
||||||
*/
|
*/
|
||||||
public final class SeekerOfInsight extends CardImpl {
|
public final class SeekerOfInsight extends CardImpl {
|
||||||
|
|
@ -33,12 +29,9 @@ public final class SeekerOfInsight extends CardImpl {
|
||||||
this.toughness = new MageInt(3);
|
this.toughness = new MageInt(3);
|
||||||
|
|
||||||
// {T}: Draw a card, then discard a card. Activate this ability only if you've cast a noncreature spell this turn.
|
// {T}: Draw a card, then discard a card. Activate this ability only if you've cast a noncreature spell this turn.
|
||||||
this.addAbility(
|
this.addAbility(new ActivateIfConditionActivatedAbility(
|
||||||
new ActivateIfConditionActivatedAbility(
|
new DrawDiscardControllerEffect(), new TapSourceCost(), SeekerOfInsightCondition.instance
|
||||||
Zone.BATTLEFIELD,
|
));
|
||||||
new DrawDiscardControllerEffect(),
|
|
||||||
new TapSourceCost(),
|
|
||||||
new CastNonCreatureSpellCondition()));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private SeekerOfInsight(final SeekerOfInsight card) {
|
private SeekerOfInsight(final SeekerOfInsight card) {
|
||||||
|
|
@ -51,22 +44,17 @@ public final class SeekerOfInsight extends CardImpl {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
class CastNonCreatureSpellCondition implements Condition {
|
enum SeekerOfInsightCondition implements Condition {
|
||||||
|
instance;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean apply(Game game, Ability source) {
|
public boolean apply(Game game, Ability source) {
|
||||||
SpellsCastWatcher watcher = game.getState().getWatcher(SpellsCastWatcher.class);
|
return game
|
||||||
if (watcher != null) {
|
.getState()
|
||||||
List<Spell> spellsCast = watcher.getSpellsCastThisTurn(source.getControllerId());
|
.getWatcher(SpellsCastWatcher.class)
|
||||||
if (spellsCast != null) {
|
.getSpellsCastThisTurn(source.getControllerId())
|
||||||
for (Spell spell : spellsCast) {
|
.stream()
|
||||||
if (!spell.isCreature(game)) {
|
.anyMatch(spell -> !spell.isCreature(game));
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
||||||
|
|
@ -1,14 +1,9 @@
|
||||||
|
|
||||||
package mage.cards.s;
|
package mage.cards.s;
|
||||||
|
|
||||||
import java.util.UUID;
|
|
||||||
import mage.ConditionalMana;
|
import mage.ConditionalMana;
|
||||||
import mage.MageInt;
|
import mage.MageInt;
|
||||||
import mage.MageObject;
|
|
||||||
import mage.Mana;
|
|
||||||
import mage.abilities.Ability;
|
import mage.abilities.Ability;
|
||||||
import mage.abilities.common.ActivateIfConditionActivatedAbility;
|
import mage.abilities.common.ActivateIfConditionActivatedAbility;
|
||||||
import mage.abilities.condition.Condition;
|
|
||||||
import mage.abilities.condition.common.FormidableCondition;
|
import mage.abilities.condition.common.FormidableCondition;
|
||||||
import mage.abilities.costs.common.TapSourceCost;
|
import mage.abilities.costs.common.TapSourceCost;
|
||||||
import mage.abilities.costs.mana.ManaCostsImpl;
|
import mage.abilities.costs.mana.ManaCostsImpl;
|
||||||
|
|
@ -20,40 +15,36 @@ import mage.cards.CardImpl;
|
||||||
import mage.cards.CardSetInfo;
|
import mage.cards.CardSetInfo;
|
||||||
import mage.constants.AbilityWord;
|
import mage.constants.AbilityWord;
|
||||||
import mage.constants.CardType;
|
import mage.constants.CardType;
|
||||||
import mage.constants.SubType;
|
|
||||||
import mage.constants.Outcome;
|
import mage.constants.Outcome;
|
||||||
import mage.constants.Zone;
|
import mage.constants.SubType;
|
||||||
import mage.filter.FilterPermanent;
|
import mage.filter.FilterPermanent;
|
||||||
import mage.filter.common.FilterCreaturePermanent;
|
import mage.filter.common.FilterCreaturePermanent;
|
||||||
import mage.game.Game;
|
import mage.game.Game;
|
||||||
import mage.game.stack.Spell;
|
|
||||||
import mage.players.Player;
|
import mage.players.Player;
|
||||||
|
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
|
||||||
* @author LevelX2
|
* @author LevelX2
|
||||||
*/
|
*/
|
||||||
public final class ShamanOfForgottenWays extends CardImpl {
|
public final class ShamanOfForgottenWays extends CardImpl {
|
||||||
|
|
||||||
public ShamanOfForgottenWays(UUID ownerId, CardSetInfo setInfo) {
|
public ShamanOfForgottenWays(UUID ownerId, CardSetInfo setInfo) {
|
||||||
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}");
|
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{G}");
|
||||||
this.subtype.add(SubType.HUMAN);
|
this.subtype.add(SubType.HUMAN);
|
||||||
this.subtype.add(SubType.SHAMAN);
|
this.subtype.add(SubType.SHAMAN);
|
||||||
this.power = new MageInt( 2);
|
this.power = new MageInt(2);
|
||||||
this.toughness = new MageInt(3);
|
this.toughness = new MageInt(3);
|
||||||
|
|
||||||
// {T}:Add two mana in any combination of colors. Spend this mana only to cast creature spells.
|
// {T}:Add two mana in any combination of colors. Spend this mana only to cast creature spells.
|
||||||
this.addAbility(new ConditionalAnyColorManaAbility(2, new ShamanOfForgottenWaysManaBuilder()));
|
this.addAbility(new ConditionalAnyColorManaAbility(2, new ShamanOfForgottenWaysManaBuilder()));
|
||||||
|
|
||||||
// <i>Formidable</i> — {9}{G}{G},{T}:Each player's life total becomes the number of creatures they control. Activate the ability only if creatures you control have total power 8 or greater.
|
// <i>Formidable</i> — {9}{G}{G},{T}:Each player's life total becomes the number of creatures they control. Activate the ability only if creatures you control have total power 8 or greater.
|
||||||
Ability ability = new ActivateIfConditionActivatedAbility(
|
Ability ability = new ActivateIfConditionActivatedAbility(
|
||||||
Zone.BATTLEFIELD,
|
new ShamanOfForgottenWaysEffect(), new ManaCostsImpl<>("{9}{G}{G}"), FormidableCondition.instance
|
||||||
new ShamanOfForgottenWaysEffect(),
|
);
|
||||||
new ManaCostsImpl<>("{9}{G}{G}"),
|
|
||||||
FormidableCondition.instance);
|
|
||||||
ability.addCost(new TapSourceCost());
|
ability.addCost(new TapSourceCost());
|
||||||
ability.setAbilityWord(AbilityWord.FORMIDABLE);
|
this.addAbility(ability.setAbilityWord(AbilityWord.FORMIDABLE));
|
||||||
this.addAbility(ability);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private ShamanOfForgottenWays(final ShamanOfForgottenWays card) {
|
private ShamanOfForgottenWays(final ShamanOfForgottenWays card) {
|
||||||
|
|
@ -80,29 +71,29 @@ class ShamanOfForgottenWaysManaBuilder extends ConditionalManaBuilder {
|
||||||
}
|
}
|
||||||
|
|
||||||
class ShamanOfForgottenWaysEffect extends OneShotEffect {
|
class ShamanOfForgottenWaysEffect extends OneShotEffect {
|
||||||
|
|
||||||
public ShamanOfForgottenWaysEffect() {
|
public ShamanOfForgottenWaysEffect() {
|
||||||
super(Outcome.Benefit);
|
super(Outcome.Benefit);
|
||||||
this.staticText = "each player's life total becomes the number of creatures they control";
|
this.staticText = "each player's life total becomes the number of creatures they control";
|
||||||
}
|
}
|
||||||
|
|
||||||
private ShamanOfForgottenWaysEffect(final ShamanOfForgottenWaysEffect effect) {
|
private ShamanOfForgottenWaysEffect(final ShamanOfForgottenWaysEffect effect) {
|
||||||
super(effect);
|
super(effect);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ShamanOfForgottenWaysEffect copy() {
|
public ShamanOfForgottenWaysEffect copy() {
|
||||||
return new ShamanOfForgottenWaysEffect(this);
|
return new ShamanOfForgottenWaysEffect(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean apply(Game game, Ability source) {
|
public boolean apply(Game game, Ability source) {
|
||||||
Player controller = game.getPlayer(source.getControllerId());
|
Player controller = game.getPlayer(source.getControllerId());
|
||||||
if (controller != null) {
|
if (controller != null) {
|
||||||
FilterPermanent filter = new FilterCreaturePermanent();
|
FilterPermanent filter = new FilterCreaturePermanent();
|
||||||
for(UUID playerId : game.getState().getPlayersInRange(controller.getId(), game)) {
|
for (UUID playerId : game.getState().getPlayersInRange(controller.getId(), game)) {
|
||||||
Player player = game.getPlayer(playerId);
|
Player player = game.getPlayer(playerId);
|
||||||
if (player != null){
|
if (player != null) {
|
||||||
int numberCreatures = game.getBattlefield().getAllActivePermanents(filter, playerId, game).size();
|
int numberCreatures = game.getBattlefield().getAllActivePermanents(filter, playerId, game).size();
|
||||||
player.setLife(numberCreatures, game, source);
|
player.setLife(numberCreatures, game, source);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,6 @@
|
||||||
|
|
||||||
package mage.cards.s;
|
package mage.cards.s;
|
||||||
|
|
||||||
import java.util.UUID;
|
|
||||||
import mage.MageInt;
|
import mage.MageInt;
|
||||||
import mage.abilities.Ability;
|
|
||||||
import mage.abilities.common.ActivateIfConditionActivatedAbility;
|
import mage.abilities.common.ActivateIfConditionActivatedAbility;
|
||||||
import mage.abilities.condition.common.MyTurnBeforeAttackersDeclaredCondition;
|
import mage.abilities.condition.common.MyTurnBeforeAttackersDeclaredCondition;
|
||||||
import mage.abilities.costs.common.TapSourceCost;
|
import mage.abilities.costs.common.TapSourceCost;
|
||||||
|
|
@ -12,24 +9,24 @@ import mage.cards.CardImpl;
|
||||||
import mage.cards.CardSetInfo;
|
import mage.cards.CardSetInfo;
|
||||||
import mage.constants.CardType;
|
import mage.constants.CardType;
|
||||||
import mage.constants.SubType;
|
import mage.constants.SubType;
|
||||||
import mage.constants.Zone;
|
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
|
||||||
* @author fireshoes
|
* @author fireshoes
|
||||||
*/
|
*/
|
||||||
public final class ShuFarmer extends CardImpl {
|
public final class ShuFarmer extends CardImpl {
|
||||||
|
|
||||||
public ShuFarmer(UUID ownerId, CardSetInfo setInfo) {
|
public ShuFarmer(UUID ownerId, CardSetInfo setInfo) {
|
||||||
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}");
|
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{W}");
|
||||||
this.subtype.add(SubType.HUMAN);
|
this.subtype.add(SubType.HUMAN);
|
||||||
this.power = new MageInt(1);
|
this.power = new MageInt(1);
|
||||||
this.toughness = new MageInt(1);
|
this.toughness = new MageInt(1);
|
||||||
|
|
||||||
// {tap}: You gain 1 life. Activate this ability only during your turn, before attackers are declared.
|
// {tap}: You gain 1 life. Activate this ability only during your turn, before attackers are declared.
|
||||||
Ability ability = new ActivateIfConditionActivatedAbility(Zone.BATTLEFIELD,
|
this.addAbility(new ActivateIfConditionActivatedAbility(
|
||||||
new GainLifeEffect(1), new TapSourceCost(), MyTurnBeforeAttackersDeclaredCondition.instance);
|
new GainLifeEffect(1), new TapSourceCost(), MyTurnBeforeAttackersDeclaredCondition.instance
|
||||||
this.addAbility(ability);
|
));
|
||||||
}
|
}
|
||||||
|
|
||||||
private ShuFarmer(final ShuFarmer card) {
|
private ShuFarmer(final ShuFarmer card) {
|
||||||
|
|
|
||||||
|
|
@ -1,11 +1,9 @@
|
||||||
|
|
||||||
package mage.cards.s;
|
package mage.cards.s;
|
||||||
|
|
||||||
import java.util.UUID;
|
|
||||||
import mage.MageInt;
|
import mage.MageInt;
|
||||||
import mage.abilities.Ability;
|
|
||||||
import mage.abilities.common.ActivateIfConditionActivatedAbility;
|
import mage.abilities.common.ActivateIfConditionActivatedAbility;
|
||||||
import mage.abilities.common.CantBlockAbility;
|
import mage.abilities.common.CantBlockAbility;
|
||||||
|
import mage.abilities.condition.Condition;
|
||||||
import mage.abilities.condition.common.PermanentsOnTheBattlefieldCondition;
|
import mage.abilities.condition.common.PermanentsOnTheBattlefieldCondition;
|
||||||
import mage.abilities.costs.mana.ManaCostsImpl;
|
import mage.abilities.costs.mana.ManaCostsImpl;
|
||||||
import mage.abilities.effects.common.RegenerateSourceEffect;
|
import mage.abilities.effects.common.RegenerateSourceEffect;
|
||||||
|
|
@ -14,26 +12,29 @@ import mage.cards.CardImpl;
|
||||||
import mage.cards.CardSetInfo;
|
import mage.cards.CardSetInfo;
|
||||||
import mage.constants.CardType;
|
import mage.constants.CardType;
|
||||||
import mage.constants.SubType;
|
import mage.constants.SubType;
|
||||||
import mage.constants.Zone;
|
import mage.filter.FilterPermanent;
|
||||||
import mage.filter.common.FilterControlledCreaturePermanent;
|
import mage.filter.common.FilterControlledCreaturePermanent;
|
||||||
import mage.filter.predicate.mageobject.ColorlessPredicate;
|
|
||||||
import mage.filter.predicate.mageobject.AnotherPredicate;
|
import mage.filter.predicate.mageobject.AnotherPredicate;
|
||||||
|
import mage.filter.predicate.mageobject.ColorlessPredicate;
|
||||||
|
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
|
||||||
* @author fireshoes
|
* @author fireshoes
|
||||||
*/
|
*/
|
||||||
public final class Skitterskin extends CardImpl {
|
public final class Skitterskin extends CardImpl {
|
||||||
|
|
||||||
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("you control another colorless creature");
|
private static final FilterPermanent filter = new FilterControlledCreaturePermanent("you control another colorless creature");
|
||||||
|
|
||||||
static {
|
static {
|
||||||
filter.add(AnotherPredicate.instance);
|
filter.add(AnotherPredicate.instance);
|
||||||
filter.add(ColorlessPredicate.instance);
|
filter.add(ColorlessPredicate.instance);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static final Condition condition = new PermanentsOnTheBattlefieldCondition(filter);
|
||||||
|
|
||||||
public Skitterskin(UUID ownerId, CardSetInfo setInfo) {
|
public Skitterskin(UUID ownerId, CardSetInfo setInfo) {
|
||||||
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{B}");
|
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{B}");
|
||||||
this.subtype.add(SubType.ELDRAZI);
|
this.subtype.add(SubType.ELDRAZI);
|
||||||
this.subtype.add(SubType.DRONE);
|
this.subtype.add(SubType.DRONE);
|
||||||
this.power = new MageInt(4);
|
this.power = new MageInt(4);
|
||||||
|
|
@ -46,11 +47,9 @@ public final class Skitterskin extends CardImpl {
|
||||||
this.addAbility(new CantBlockAbility());
|
this.addAbility(new CantBlockAbility());
|
||||||
|
|
||||||
// {1}{B}: Regenerate Skitterskin. Activate this ability only if you control another colorless creature.
|
// {1}{B}: Regenerate Skitterskin. Activate this ability only if you control another colorless creature.
|
||||||
Ability ability = new ActivateIfConditionActivatedAbility(Zone.BATTLEFIELD,
|
this.addAbility(new ActivateIfConditionActivatedAbility(
|
||||||
new RegenerateSourceEffect(),
|
new RegenerateSourceEffect(), new ManaCostsImpl<>("{1}{B}"), condition
|
||||||
new ManaCostsImpl<>("{1}{B}"),
|
));
|
||||||
new PermanentsOnTheBattlefieldCondition(filter));
|
|
||||||
this.addAbility(ability);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private Skitterskin(final Skitterskin card) {
|
private Skitterskin(final Skitterskin card) {
|
||||||
|
|
|
||||||
|
|
@ -14,7 +14,6 @@ import mage.cards.CardSetInfo;
|
||||||
import mage.constants.CardType;
|
import mage.constants.CardType;
|
||||||
import mage.constants.Duration;
|
import mage.constants.Duration;
|
||||||
import mage.constants.SubType;
|
import mage.constants.SubType;
|
||||||
import mage.constants.Zone;
|
|
||||||
import mage.filter.StaticFilters;
|
import mage.filter.StaticFilters;
|
||||||
|
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
@ -33,8 +32,9 @@ public final class SteadfastUnicorn extends CardImpl {
|
||||||
|
|
||||||
// {3}{W}: Creatures you control get +1/+1 and gain vigilance until end of turn. Activate only during your turn.
|
// {3}{W}: Creatures you control get +1/+1 and gain vigilance until end of turn. Activate only during your turn.
|
||||||
Ability ability = new ActivateIfConditionActivatedAbility(
|
Ability ability = new ActivateIfConditionActivatedAbility(
|
||||||
Zone.BATTLEFIELD, new BoostControlledEffect(1, 1, Duration.EndOfTurn)
|
new BoostControlledEffect(1, 1, Duration.EndOfTurn)
|
||||||
.setText("creatures you control get +1/+1"), new ManaCostsImpl<>("{3}{W}"), MyTurnCondition.instance
|
.setText("creatures you control get +1/+1"),
|
||||||
|
new ManaCostsImpl<>("{3}{W}"), MyTurnCondition.instance
|
||||||
);
|
);
|
||||||
ability.addEffect(new GainAbilityControlledEffect(
|
ability.addEffect(new GainAbilityControlledEffect(
|
||||||
VigilanceAbility.getInstance(), Duration.EndOfTurn,
|
VigilanceAbility.getInstance(), Duration.EndOfTurn,
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,5 @@
|
||||||
|
|
||||||
package mage.cards.s;
|
package mage.cards.s;
|
||||||
|
|
||||||
import java.util.UUID;
|
|
||||||
import mage.MageInt;
|
import mage.MageInt;
|
||||||
import mage.abilities.Ability;
|
import mage.abilities.Ability;
|
||||||
import mage.abilities.common.ActivateIfConditionActivatedAbility;
|
import mage.abilities.common.ActivateIfConditionActivatedAbility;
|
||||||
|
|
@ -12,17 +10,17 @@ import mage.cards.CardImpl;
|
||||||
import mage.cards.CardSetInfo;
|
import mage.cards.CardSetInfo;
|
||||||
import mage.constants.CardType;
|
import mage.constants.CardType;
|
||||||
import mage.constants.SubType;
|
import mage.constants.SubType;
|
||||||
import mage.constants.Zone;
|
|
||||||
import mage.filter.common.FilterCreaturePermanent;
|
import mage.filter.common.FilterCreaturePermanent;
|
||||||
import mage.filter.predicate.permanent.TappedPredicate;
|
import mage.filter.predicate.permanent.TappedPredicate;
|
||||||
import mage.target.common.TargetCreaturePermanent;
|
import mage.target.common.TargetCreaturePermanent;
|
||||||
|
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
|
||||||
* @author fireshoes
|
* @author fireshoes
|
||||||
*/
|
*/
|
||||||
public final class SteamCatapult extends CardImpl {
|
public final class SteamCatapult extends CardImpl {
|
||||||
|
|
||||||
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("tapped creature");
|
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("tapped creature");
|
||||||
|
|
||||||
static {
|
static {
|
||||||
|
|
@ -30,15 +28,16 @@ public final class SteamCatapult extends CardImpl {
|
||||||
}
|
}
|
||||||
|
|
||||||
public SteamCatapult(UUID ownerId, CardSetInfo setInfo) {
|
public SteamCatapult(UUID ownerId, CardSetInfo setInfo) {
|
||||||
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{W}{W}");
|
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{W}{W}");
|
||||||
this.subtype.add(SubType.HUMAN);
|
this.subtype.add(SubType.HUMAN);
|
||||||
this.subtype.add(SubType.SOLDIER);
|
this.subtype.add(SubType.SOLDIER);
|
||||||
this.power = new MageInt(2);
|
this.power = new MageInt(2);
|
||||||
this.toughness = new MageInt(3);
|
this.toughness = new MageInt(3);
|
||||||
|
|
||||||
// {tap}: Destroy target tapped creature. Activate this ability only during your turn, before attackers are declared.
|
// {tap}: Destroy target tapped creature. Activate this ability only during your turn, before attackers are declared.
|
||||||
Ability ability = new ActivateIfConditionActivatedAbility(Zone.BATTLEFIELD,
|
Ability ability = new ActivateIfConditionActivatedAbility(
|
||||||
new DestroyTargetEffect(), new TapSourceCost(), MyTurnBeforeAttackersDeclaredCondition.instance);
|
new DestroyTargetEffect(), new TapSourceCost(), MyTurnBeforeAttackersDeclaredCondition.instance
|
||||||
|
);
|
||||||
ability.addTarget(new TargetCreaturePermanent(filter));
|
ability.addTarget(new TargetCreaturePermanent(filter));
|
||||||
this.addAbility(ability);
|
this.addAbility(ability);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -47,8 +47,7 @@ public final class StellaLeeWildCard extends CardImpl {
|
||||||
|
|
||||||
// {T}: Copy target instant or sorcery spell you control. You may choose new targets for the copy. Activate only if you've cast three or more spells this turn.
|
// {T}: Copy target instant or sorcery spell you control. You may choose new targets for the copy. Activate only if you've cast three or more spells this turn.
|
||||||
Ability ability = new ActivateIfConditionActivatedAbility(
|
Ability ability = new ActivateIfConditionActivatedAbility(
|
||||||
Zone.BATTLEFIELD, new CopyTargetStackObjectEffect(),
|
new CopyTargetStackObjectEffect(), new TapSourceCost(), StellaLeeWildCardCondition.instance
|
||||||
new TapSourceCost(), StellaLeeWildCardCondition.instance
|
|
||||||
);
|
);
|
||||||
ability.addTarget(new TargetSpell(filter));
|
ability.addTarget(new TargetSpell(filter));
|
||||||
this.addAbility(ability.addHint(StormAbility.getHint()));
|
this.addAbility(ability.addHint(StormAbility.getHint()));
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,5 @@
|
||||||
|
|
||||||
package mage.cards.s;
|
package mage.cards.s;
|
||||||
|
|
||||||
import java.util.UUID;
|
|
||||||
import mage.MageInt;
|
import mage.MageInt;
|
||||||
import mage.abilities.Ability;
|
import mage.abilities.Ability;
|
||||||
import mage.abilities.common.ActivateIfConditionActivatedAbility;
|
import mage.abilities.common.ActivateIfConditionActivatedAbility;
|
||||||
|
|
@ -11,27 +9,29 @@ import mage.abilities.effects.common.continuous.BoostTargetEffect;
|
||||||
import mage.cards.CardImpl;
|
import mage.cards.CardImpl;
|
||||||
import mage.cards.CardSetInfo;
|
import mage.cards.CardSetInfo;
|
||||||
import mage.constants.CardType;
|
import mage.constants.CardType;
|
||||||
import mage.constants.SubType;
|
|
||||||
import mage.constants.Duration;
|
import mage.constants.Duration;
|
||||||
import mage.constants.Zone;
|
import mage.constants.SubType;
|
||||||
import mage.target.common.TargetCreaturePermanent;
|
import mage.target.common.TargetCreaturePermanent;
|
||||||
|
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
|
||||||
* @author fireshoes
|
* @author fireshoes
|
||||||
*/
|
*/
|
||||||
public final class SternMarshal extends CardImpl {
|
public final class SternMarshal extends CardImpl {
|
||||||
|
|
||||||
public SternMarshal(UUID ownerId, CardSetInfo setInfo) {
|
public SternMarshal(UUID ownerId, CardSetInfo setInfo) {
|
||||||
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{W}");
|
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{W}");
|
||||||
this.subtype.add(SubType.HUMAN);
|
this.subtype.add(SubType.HUMAN);
|
||||||
this.subtype.add(SubType.SOLDIER);
|
this.subtype.add(SubType.SOLDIER);
|
||||||
this.power = new MageInt(2);
|
this.power = new MageInt(2);
|
||||||
this.toughness = new MageInt(2);
|
this.toughness = new MageInt(2);
|
||||||
|
|
||||||
// {tap}: Target creature gets +2/+2 until end of turn. Activate this ability only during your turn, before attackers are declared.
|
// {tap}: Target creature gets +2/+2 until end of turn. Activate this ability only during your turn, before attackers are declared.
|
||||||
Ability ability = new ActivateIfConditionActivatedAbility(Zone.BATTLEFIELD,
|
Ability ability = new ActivateIfConditionActivatedAbility(
|
||||||
new BoostTargetEffect(2, 2, Duration.EndOfTurn), new TapSourceCost(), MyTurnBeforeAttackersDeclaredCondition.instance);
|
new BoostTargetEffect(2, 2, Duration.EndOfTurn),
|
||||||
|
new TapSourceCost(), MyTurnBeforeAttackersDeclaredCondition.instance
|
||||||
|
);
|
||||||
ability.addTarget(new TargetCreaturePermanent());
|
ability.addTarget(new TargetCreaturePermanent());
|
||||||
this.addAbility(ability);
|
this.addAbility(ability);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,5 @@
|
||||||
|
|
||||||
package mage.cards.s;
|
package mage.cards.s;
|
||||||
|
|
||||||
import java.util.UUID;
|
|
||||||
import mage.MageInt;
|
import mage.MageInt;
|
||||||
import mage.ObjectColor;
|
import mage.ObjectColor;
|
||||||
import mage.abilities.Ability;
|
import mage.abilities.Ability;
|
||||||
|
|
@ -13,20 +11,21 @@ import mage.cards.CardImpl;
|
||||||
import mage.cards.CardSetInfo;
|
import mage.cards.CardSetInfo;
|
||||||
import mage.constants.CardType;
|
import mage.constants.CardType;
|
||||||
import mage.constants.SubType;
|
import mage.constants.SubType;
|
||||||
import mage.constants.Zone;
|
import mage.filter.FilterPermanent;
|
||||||
import mage.filter.common.FilterCreaturePermanent;
|
import mage.filter.common.FilterCreaturePermanent;
|
||||||
import mage.filter.predicate.Predicates;
|
import mage.filter.predicate.Predicates;
|
||||||
import mage.filter.predicate.mageobject.ColorPredicate;
|
import mage.filter.predicate.mageobject.ColorPredicate;
|
||||||
import mage.filter.predicate.permanent.TappedPredicate;
|
import mage.filter.predicate.permanent.TappedPredicate;
|
||||||
import mage.target.common.TargetCreaturePermanent;
|
import mage.target.TargetPermanent;
|
||||||
|
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
|
||||||
* @author fireshoes
|
* @author fireshoes
|
||||||
*/
|
*/
|
||||||
public final class StoneCatapult extends CardImpl {
|
public final class StoneCatapult extends CardImpl {
|
||||||
|
|
||||||
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("tapped nonblack creature");
|
private static final FilterPermanent filter = new FilterCreaturePermanent("tapped nonblack creature");
|
||||||
|
|
||||||
static {
|
static {
|
||||||
filter.add(TappedPredicate.TAPPED);
|
filter.add(TappedPredicate.TAPPED);
|
||||||
|
|
@ -34,16 +33,17 @@ public final class StoneCatapult extends CardImpl {
|
||||||
}
|
}
|
||||||
|
|
||||||
public StoneCatapult(UUID ownerId, CardSetInfo setInfo) {
|
public StoneCatapult(UUID ownerId, CardSetInfo setInfo) {
|
||||||
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{B}");
|
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{B}");
|
||||||
this.subtype.add(SubType.HUMAN);
|
this.subtype.add(SubType.HUMAN);
|
||||||
this.subtype.add(SubType.SOLDIER);
|
this.subtype.add(SubType.SOLDIER);
|
||||||
this.power = new MageInt(1);
|
this.power = new MageInt(1);
|
||||||
this.toughness = new MageInt(2);
|
this.toughness = new MageInt(2);
|
||||||
|
|
||||||
// {tap}: Destroy target tapped nonblack creature. Activate this ability only during your turn, before attackers are declared.
|
// {tap}: Destroy target tapped nonblack creature. Activate this ability only during your turn, before attackers are declared.
|
||||||
Ability ability = new ActivateIfConditionActivatedAbility(Zone.BATTLEFIELD,
|
Ability ability = new ActivateIfConditionActivatedAbility(
|
||||||
new DestroyTargetEffect(), new TapSourceCost(), MyTurnBeforeAttackersDeclaredCondition.instance);
|
new DestroyTargetEffect(), new TapSourceCost(), MyTurnBeforeAttackersDeclaredCondition.instance
|
||||||
ability.addTarget(new TargetCreaturePermanent(filter));
|
);
|
||||||
|
ability.addTarget(new TargetPermanent(filter));
|
||||||
this.addAbility(ability);
|
this.addAbility(ability);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -6,11 +6,9 @@ import mage.abilities.condition.common.MyTurnCondition;
|
||||||
import mage.abilities.costs.common.TapSourceCost;
|
import mage.abilities.costs.common.TapSourceCost;
|
||||||
import mage.abilities.costs.mana.GenericManaCost;
|
import mage.abilities.costs.mana.GenericManaCost;
|
||||||
import mage.abilities.effects.common.EndTurnEffect;
|
import mage.abilities.effects.common.EndTurnEffect;
|
||||||
import mage.abilities.hint.common.MyTurnHint;
|
|
||||||
import mage.cards.CardImpl;
|
import mage.cards.CardImpl;
|
||||||
import mage.cards.CardSetInfo;
|
import mage.cards.CardSetInfo;
|
||||||
import mage.constants.CardType;
|
import mage.constants.CardType;
|
||||||
import mage.constants.Zone;
|
|
||||||
|
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
||||||
|
|
@ -23,9 +21,10 @@ public final class SundialOfTheInfinite extends CardImpl {
|
||||||
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{2}");
|
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{2}");
|
||||||
|
|
||||||
// {1}, {T}: End the turn. Activate this ability only during your turn.
|
// {1}, {T}: End the turn. Activate this ability only during your turn.
|
||||||
Ability ability = new ActivateIfConditionActivatedAbility(Zone.BATTLEFIELD, new EndTurnEffect(), new GenericManaCost(1), MyTurnCondition.instance);
|
Ability ability = new ActivateIfConditionActivatedAbility(
|
||||||
|
new EndTurnEffect(), new GenericManaCost(1), MyTurnCondition.instance
|
||||||
|
);
|
||||||
ability.addCost(new TapSourceCost());
|
ability.addCost(new TapSourceCost());
|
||||||
ability.addHint(MyTurnHint.instance);
|
|
||||||
this.addAbility(ability);
|
this.addAbility(ability);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -37,4 +36,4 @@ public final class SundialOfTheInfinite extends CardImpl {
|
||||||
public SundialOfTheInfinite copy() {
|
public SundialOfTheInfinite copy() {
|
||||||
return new SundialOfTheInfinite(this);
|
return new SundialOfTheInfinite(this);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -17,10 +17,12 @@ import mage.abilities.keyword.CantBeBlockedSourceAbility;
|
||||||
import mage.abilities.keyword.DefenderAbility;
|
import mage.abilities.keyword.DefenderAbility;
|
||||||
import mage.cards.CardImpl;
|
import mage.cards.CardImpl;
|
||||||
import mage.cards.CardSetInfo;
|
import mage.cards.CardSetInfo;
|
||||||
import mage.constants.*;
|
import mage.constants.CardType;
|
||||||
|
import mage.constants.Duration;
|
||||||
|
import mage.constants.SubType;
|
||||||
|
import mage.constants.Zone;
|
||||||
import mage.game.Game;
|
import mage.game.Game;
|
||||||
|
|
||||||
import java.util.Objects;
|
|
||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
||||||
|
|
@ -50,7 +52,7 @@ public final class SurgeEngine extends CardImpl {
|
||||||
|
|
||||||
// {2}{U}: Surge Engine becomes blue and has base power and toughness 5/4. Activate only if Surge Engine doesn't have defender.
|
// {2}{U}: Surge Engine becomes blue and has base power and toughness 5/4. Activate only if Surge Engine doesn't have defender.
|
||||||
ability = new ActivateIfConditionActivatedAbility(
|
ability = new ActivateIfConditionActivatedAbility(
|
||||||
Zone.BATTLEFIELD, new BecomesColorSourceEffect(ObjectColor.BLUE, Duration.Custom),
|
new BecomesColorSourceEffect(ObjectColor.BLUE, Duration.Custom),
|
||||||
new ManaCostsImpl<>("{2}{U}"), SurgeEngineCondition.instance
|
new ManaCostsImpl<>("{2}{U}"), SurgeEngineCondition.instance
|
||||||
);
|
);
|
||||||
ability.addEffect(new SetBasePowerToughnessSourceEffect(
|
ability.addEffect(new SetBasePowerToughnessSourceEffect(
|
||||||
|
|
@ -85,7 +87,7 @@ enum SurgeEngineCondition implements Condition {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String toString() {
|
public String toString() {
|
||||||
return "if {this} doesn't have defender";
|
return "{this} doesn't have defender";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,5 @@
|
||||||
package mage.cards.t;
|
package mage.cards.t;
|
||||||
|
|
||||||
import java.util.UUID;
|
|
||||||
|
|
||||||
import mage.Mana;
|
import mage.Mana;
|
||||||
import mage.abilities.Ability;
|
import mage.abilities.Ability;
|
||||||
import mage.abilities.common.ActivateIfConditionActivatedAbility;
|
import mage.abilities.common.ActivateIfConditionActivatedAbility;
|
||||||
|
|
@ -21,6 +19,8 @@ import mage.constants.ManaType;
|
||||||
import mage.constants.Zone;
|
import mage.constants.Zone;
|
||||||
import mage.counters.CounterType;
|
import mage.counters.CounterType;
|
||||||
|
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author TheElk801
|
* @author TheElk801
|
||||||
*/
|
*/
|
||||||
|
|
@ -44,8 +44,7 @@ public final class TabletOfCompleation extends CardImpl {
|
||||||
|
|
||||||
// {1}, {T}: Draw a card. Activate only if Tablet of Compleation has five or more oil counters on it.
|
// {1}, {T}: Draw a card. Activate only if Tablet of Compleation has five or more oil counters on it.
|
||||||
Ability ability = new ActivateIfConditionActivatedAbility(
|
Ability ability = new ActivateIfConditionActivatedAbility(
|
||||||
Zone.BATTLEFIELD, new DrawCardSourceControllerEffect(1),
|
new DrawCardSourceControllerEffect(1), new GenericManaCost(1), condition2
|
||||||
new GenericManaCost(1), condition2
|
|
||||||
);
|
);
|
||||||
ability.addCost(new TapSourceCost());
|
ability.addCost(new TapSourceCost());
|
||||||
this.addAbility(ability);
|
this.addAbility(ability);
|
||||||
|
|
|
||||||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue