mirror of
https://github.com/magefree/mage.git
synced 2025-12-20 02:30:08 -08:00
cleanup and add tests on '{this} enters the battlefield tapped unless [Condition]'
Almost a refactor. The only change is that all those cards were missing the notTarget argument in TapSourceEffect. closes #12411
This commit is contained in:
parent
5b74858573
commit
40a1fc6c23
77 changed files with 1119 additions and 897 deletions
|
|
@ -1,23 +1,18 @@
|
|||
package mage.cards.a;
|
||||
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.common.EntersBattlefieldAbility;
|
||||
import mage.abilities.common.EntersBattlefieldTappedUnlessAbility;
|
||||
import mage.abilities.common.SimpleActivatedAbility;
|
||||
import mage.abilities.condition.Condition;
|
||||
import mage.abilities.condition.common.PermanentsOnTheBattlefieldCondition;
|
||||
import mage.abilities.condition.common.YouControlPermanentCondition;
|
||||
import mage.abilities.costs.common.TapSourceCost;
|
||||
import mage.abilities.costs.mana.ManaCostsImpl;
|
||||
import mage.abilities.decorator.ConditionalOneShotEffect;
|
||||
import mage.abilities.effects.common.TapSourceEffect;
|
||||
import mage.abilities.effects.common.continuous.NextSpellCastHasAbilityEffect;
|
||||
import mage.abilities.keyword.ImproviseAbility;
|
||||
import mage.abilities.mana.BlueManaAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.ComparisonType;
|
||||
import mage.constants.SubType;
|
||||
import mage.filter.FilterPermanent;
|
||||
import mage.filter.common.FilterControlledPermanent;
|
||||
|
||||
import java.util.UUID;
|
||||
|
|
@ -27,17 +22,14 @@ import java.util.UUID;
|
|||
*/
|
||||
public final class ArchwayOfInnovation extends CardImpl {
|
||||
|
||||
private static final FilterPermanent filter = new FilterControlledPermanent(SubType.ISLAND);
|
||||
private static final Condition condition
|
||||
= new PermanentsOnTheBattlefieldCondition(filter, ComparisonType.EQUAL_TO, 0);
|
||||
private static final FilterControlledPermanent filter = new FilterControlledPermanent(SubType.ISLAND);
|
||||
private static final YouControlPermanentCondition condition = new YouControlPermanentCondition(filter);
|
||||
|
||||
public ArchwayOfInnovation(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.LAND}, "");
|
||||
|
||||
// Archway of Innovation enters the battlefield tapped unless you control an Island.
|
||||
this.addAbility(new EntersBattlefieldAbility(new ConditionalOneShotEffect(
|
||||
new TapSourceEffect(), condition
|
||||
), "tapped unless you control an Island"));
|
||||
this.addAbility(new EntersBattlefieldTappedUnlessAbility(condition).addHint(condition.getHint()));
|
||||
|
||||
// {T}: Add {U}.
|
||||
this.addAbility(new BlueManaAbility());
|
||||
|
|
|
|||
|
|
@ -1,17 +1,14 @@
|
|||
package mage.cards.a;
|
||||
|
||||
import mage.Mana;
|
||||
import mage.abilities.common.EntersBattlefieldAbility;
|
||||
import mage.abilities.common.EntersBattlefieldTappedUnlessAbility;
|
||||
import mage.abilities.common.delayed.ManaSpentDelayedTriggeredAbility;
|
||||
import mage.abilities.condition.Condition;
|
||||
import mage.abilities.condition.common.PermanentsOnTheBattlefieldCondition;
|
||||
import mage.abilities.condition.common.YouControlPermanentCondition;
|
||||
import mage.abilities.costs.common.ExertSourceCost;
|
||||
import mage.abilities.costs.common.TapSourceCost;
|
||||
import mage.abilities.costs.mana.ManaCostsImpl;
|
||||
import mage.abilities.decorator.ConditionalOneShotEffect;
|
||||
import mage.abilities.effects.common.AddContinuousEffectToGame;
|
||||
import mage.abilities.effects.common.CreateDelayedTriggeredAbilityEffect;
|
||||
import mage.abilities.effects.common.TapSourceEffect;
|
||||
import mage.abilities.effects.common.continuous.GainAbilityTargetEffect;
|
||||
import mage.abilities.effects.mana.BasicManaEffect;
|
||||
import mage.abilities.keyword.HasteAbility;
|
||||
|
|
@ -20,7 +17,6 @@ import mage.abilities.mana.SimpleManaAbility;
|
|||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.ComparisonType;
|
||||
import mage.constants.Duration;
|
||||
import mage.constants.SubType;
|
||||
import mage.filter.FilterPermanent;
|
||||
|
|
@ -39,16 +35,13 @@ import java.util.UUID;
|
|||
public final class ArenaOfGlory extends CardImpl {
|
||||
|
||||
private static final FilterPermanent filter = new FilterControlledPermanent(SubType.MOUNTAIN);
|
||||
private static final Condition condition
|
||||
= new PermanentsOnTheBattlefieldCondition(filter, ComparisonType.EQUAL_TO, 0);
|
||||
private static final YouControlPermanentCondition condition = new YouControlPermanentCondition(filter);
|
||||
|
||||
public ArenaOfGlory(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.LAND}, "");
|
||||
|
||||
// Arena of Glory enters the battlefield tapped unless you control a Mountain.
|
||||
this.addAbility(new EntersBattlefieldAbility(new ConditionalOneShotEffect(
|
||||
new TapSourceEffect(), condition
|
||||
), "tapped unless you control a Mountain"));
|
||||
this.addAbility(new EntersBattlefieldTappedUnlessAbility(condition).addHint(condition.getHint()));
|
||||
|
||||
// {T}: Add {R}.
|
||||
this.addAbility(new RedManaAbility());
|
||||
|
|
|
|||
|
|
@ -3,24 +3,18 @@ package mage.cards.a;
|
|||
import mage.ObjectColor;
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.common.ActivateAsSorceryActivatedAbility;
|
||||
import mage.abilities.common.EntersBattlefieldAbility;
|
||||
import mage.abilities.common.EntersBattlefieldTappedUnlessAbility;
|
||||
import mage.abilities.common.SimpleStaticAbility;
|
||||
import mage.abilities.condition.Condition;
|
||||
import mage.abilities.condition.common.PermanentsOnTheBattlefieldCondition;
|
||||
import mage.abilities.condition.common.YouControlPermanentCondition;
|
||||
import mage.abilities.costs.common.TapSourceCost;
|
||||
import mage.abilities.costs.mana.ManaCostsImpl;
|
||||
import mage.abilities.decorator.ConditionalOneShotEffect;
|
||||
import mage.abilities.effects.common.CreateTokenEffect;
|
||||
import mage.abilities.effects.common.InfoEffect;
|
||||
import mage.abilities.effects.common.MillCardsControllerEffect;
|
||||
import mage.abilities.effects.common.TapSourceEffect;
|
||||
import mage.abilities.hint.ConditionHint;
|
||||
import mage.abilities.hint.Hint;
|
||||
import mage.abilities.mana.GreenManaAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.ComparisonType;
|
||||
import mage.constants.SuperType;
|
||||
import mage.constants.Zone;
|
||||
import mage.filter.FilterPermanent;
|
||||
|
|
@ -35,16 +29,14 @@ import java.util.UUID;
|
|||
*/
|
||||
public final class ArgothSanctumOfNature extends CardImpl {
|
||||
|
||||
private static final FilterPermanent filter = new FilterControlledCreaturePermanent();
|
||||
private static final FilterPermanent filter = new FilterControlledCreaturePermanent("a legendary green creature");
|
||||
|
||||
static {
|
||||
filter.add(SuperType.LEGENDARY.getPredicate());
|
||||
filter.add(new ColorPredicate(ObjectColor.GREEN));
|
||||
}
|
||||
|
||||
private static final Condition condition
|
||||
= new PermanentsOnTheBattlefieldCondition(filter, ComparisonType.EQUAL_TO, 0);
|
||||
private static final Hint hint = new ConditionHint(condition, "You control a legendary green creature");
|
||||
private static final YouControlPermanentCondition condition = new YouControlPermanentCondition(filter);
|
||||
|
||||
public ArgothSanctumOfNature(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.LAND}, "");
|
||||
|
|
@ -53,10 +45,7 @@ public final class ArgothSanctumOfNature extends CardImpl {
|
|||
this.meldsToClazz = mage.cards.h.HanweirTheWrithingTownship.class;
|
||||
|
||||
// Argoth, Sanctum of Nature enters the battlefield tapped unless you control a legendary green creature.
|
||||
this.addAbility(new EntersBattlefieldAbility(
|
||||
new ConditionalOneShotEffect(new TapSourceEffect(), condition, ""),
|
||||
"tapped unless you control a legendary green creature"
|
||||
).addHint(hint));
|
||||
this.addAbility(new EntersBattlefieldTappedUnlessAbility(condition).addHint(condition.getHint()));
|
||||
|
||||
// {T}: Add {G}.
|
||||
this.addAbility(new GreenManaAbility());
|
||||
|
|
|
|||
|
|
@ -2,23 +2,20 @@ package mage.cards.b;
|
|||
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.common.ActivateIfConditionActivatedAbility;
|
||||
import mage.abilities.common.EntersBattlefieldAbility;
|
||||
import mage.abilities.condition.Condition;
|
||||
import mage.abilities.condition.InvertCondition;
|
||||
import mage.abilities.common.EntersBattlefieldTappedUnlessAbility;
|
||||
import mage.abilities.condition.common.MorbidCondition;
|
||||
import mage.abilities.condition.common.PermanentsOnTheBattlefieldCondition;
|
||||
import mage.abilities.condition.common.YouControlPermanentCondition;
|
||||
import mage.abilities.costs.common.TapSourceCost;
|
||||
import mage.abilities.costs.mana.ManaCostsImpl;
|
||||
import mage.abilities.decorator.ConditionalOneShotEffect;
|
||||
import mage.abilities.dynamicvalue.common.ManacostVariableValue;
|
||||
import mage.abilities.effects.common.TapSourceEffect;
|
||||
import mage.abilities.effects.keyword.AmassEffect;
|
||||
import mage.abilities.hint.ConditionHint;
|
||||
import mage.abilities.hint.Hint;
|
||||
import mage.abilities.mana.BlackManaAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.*;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.SubType;
|
||||
import mage.constants.SuperType;
|
||||
import mage.constants.Zone;
|
||||
import mage.filter.FilterPermanent;
|
||||
import mage.filter.common.FilterControlledCreaturePermanent;
|
||||
|
||||
|
|
@ -29,15 +26,13 @@ import java.util.UUID;
|
|||
*/
|
||||
public final class BaradDur extends CardImpl {
|
||||
|
||||
private static final FilterPermanent filter = new FilterControlledCreaturePermanent();
|
||||
private static final FilterPermanent filter = new FilterControlledCreaturePermanent("a legendary creature");
|
||||
|
||||
static {
|
||||
filter.add(SuperType.LEGENDARY.getPredicate());
|
||||
}
|
||||
|
||||
private static final Condition condition
|
||||
= new PermanentsOnTheBattlefieldCondition(filter, ComparisonType.EQUAL_TO, 0);
|
||||
private static final Hint hint = new ConditionHint( new InvertCondition(condition), "You control a legendary creature");
|
||||
private static final YouControlPermanentCondition condition = new YouControlPermanentCondition(filter);
|
||||
|
||||
public BaradDur(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.LAND}, "");
|
||||
|
|
@ -45,10 +40,7 @@ public final class BaradDur extends CardImpl {
|
|||
this.supertype.add(SuperType.LEGENDARY);
|
||||
|
||||
// Barad-dur enters the battlefield tapped unless you control a legendary creature.
|
||||
this.addAbility(new EntersBattlefieldAbility(
|
||||
new ConditionalOneShotEffect(new TapSourceEffect(), condition, ""),
|
||||
"tapped unless you control a legendary creature"
|
||||
).addHint(hint));
|
||||
this.addAbility(new EntersBattlefieldTappedUnlessAbility(condition).addHint(condition.getHint()));
|
||||
|
||||
// {T}: Add {B}.
|
||||
this.addAbility(new BlackManaAbility());
|
||||
|
|
|
|||
|
|
@ -1,13 +1,8 @@
|
|||
|
||||
package mage.cards.b;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.abilities.common.EntersBattlefieldAbility;
|
||||
import mage.abilities.condition.Condition;
|
||||
import mage.abilities.condition.InvertCondition;
|
||||
import mage.abilities.condition.common.PermanentsOnTheBattlefieldCondition;
|
||||
import mage.abilities.decorator.ConditionalOneShotEffect;
|
||||
import mage.abilities.effects.common.TapSourceEffect;
|
||||
import mage.abilities.common.EntersBattlefieldTappedUnlessAbility;
|
||||
import mage.abilities.condition.common.YouControlPermanentCondition;
|
||||
import mage.abilities.mana.BlackManaAbility;
|
||||
import mage.abilities.mana.RedManaAbility;
|
||||
import mage.cards.CardImpl;
|
||||
|
|
@ -15,22 +10,34 @@ import mage.cards.CardSetInfo;
|
|||
import mage.constants.CardType;
|
||||
import mage.constants.ComparisonType;
|
||||
import mage.filter.common.FilterLandPermanent;
|
||||
import mage.filter.predicate.mageobject.AnotherPredicate;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author maurer.it_at_gmail.com
|
||||
*/
|
||||
public final class BlackcleaveCliffs extends CardImpl {
|
||||
|
||||
private static final FilterLandPermanent filter = new FilterLandPermanent();
|
||||
private static final FilterLandPermanent filter = new FilterLandPermanent("other lands");
|
||||
|
||||
static {
|
||||
filter.add(AnotherPredicate.instance);
|
||||
}
|
||||
|
||||
private static final YouControlPermanentCondition condition =
|
||||
new YouControlPermanentCondition(filter, ComparisonType.OR_LESS, 2);
|
||||
|
||||
public BlackcleaveCliffs(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.LAND}, null);
|
||||
|
||||
Condition controls = new InvertCondition(new PermanentsOnTheBattlefieldCondition(filter, ComparisonType.FEWER_THAN, 3));
|
||||
String abilityText = " tapped unless you control two or fewer other lands";
|
||||
this.addAbility(new EntersBattlefieldAbility(new ConditionalOneShotEffect(new TapSourceEffect(), controls, abilityText), abilityText));
|
||||
// Blackcleave Cliffs enters the battlefield tapped unless you control two or fewer other lands.
|
||||
this.addAbility(new EntersBattlefieldTappedUnlessAbility(condition).addHint(condition.getHint()));
|
||||
|
||||
// {T}: Add {B}.
|
||||
this.addAbility(new BlackManaAbility());
|
||||
|
||||
// {T}: Add {R}.
|
||||
this.addAbility(new RedManaAbility());
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,13 +1,8 @@
|
|||
|
||||
package mage.cards.b;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.abilities.common.EntersBattlefieldAbility;
|
||||
import mage.abilities.condition.Condition;
|
||||
import mage.abilities.condition.InvertCondition;
|
||||
import mage.abilities.condition.common.PermanentsOnTheBattlefieldCondition;
|
||||
import mage.abilities.decorator.ConditionalOneShotEffect;
|
||||
import mage.abilities.effects.common.TapSourceEffect;
|
||||
import mage.abilities.common.EntersBattlefieldTappedUnlessAbility;
|
||||
import mage.abilities.condition.common.YouControlPermanentCondition;
|
||||
import mage.abilities.mana.BlackManaAbility;
|
||||
import mage.abilities.mana.GreenManaAbility;
|
||||
import mage.cards.CardImpl;
|
||||
|
|
@ -15,23 +10,33 @@ import mage.cards.CardSetInfo;
|
|||
import mage.constants.CardType;
|
||||
import mage.constants.ComparisonType;
|
||||
import mage.filter.common.FilterLandPermanent;
|
||||
import mage.filter.predicate.mageobject.AnotherPredicate;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author fireshoes
|
||||
*/
|
||||
public final class BloomingMarsh extends CardImpl {
|
||||
|
||||
private static final FilterLandPermanent filter = new FilterLandPermanent("other lands");
|
||||
|
||||
static {
|
||||
filter.add(AnotherPredicate.instance);
|
||||
}
|
||||
|
||||
private static final YouControlPermanentCondition condition =
|
||||
new YouControlPermanentCondition(filter, ComparisonType.OR_LESS, 2);
|
||||
|
||||
public BloomingMarsh(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.LAND}, "");
|
||||
|
||||
// Blooming Marsh enters the battlefield tapped unless you control two or fewer other lands.
|
||||
Condition controls = new InvertCondition(new PermanentsOnTheBattlefieldCondition(new FilterLandPermanent(), ComparisonType.FEWER_THAN, 3));
|
||||
String abilityText = " tapped unless you control two or fewer other lands";
|
||||
this.addAbility(new EntersBattlefieldAbility(new ConditionalOneShotEffect(new TapSourceEffect(), controls, abilityText), abilityText));
|
||||
this.addAbility(new EntersBattlefieldTappedUnlessAbility(condition).addHint(condition.getHint()));
|
||||
|
||||
// {T}: Add {B} or {G}.
|
||||
// {T}: Add {B}.
|
||||
this.addAbility(new BlackManaAbility());
|
||||
// {T}: Add {G}.
|
||||
this.addAbility(new GreenManaAbility());
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,13 +1,8 @@
|
|||
|
||||
package mage.cards.b;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.abilities.common.EntersBattlefieldAbility;
|
||||
import mage.abilities.condition.Condition;
|
||||
import mage.abilities.condition.InvertCondition;
|
||||
import mage.abilities.condition.common.PermanentsOnTheBattlefieldCondition;
|
||||
import mage.abilities.decorator.ConditionalOneShotEffect;
|
||||
import mage.abilities.effects.common.TapSourceEffect;
|
||||
import mage.abilities.common.EntersBattlefieldTappedUnlessAbility;
|
||||
import mage.abilities.condition.common.YouControlPermanentCondition;
|
||||
import mage.abilities.mana.BlueManaAbility;
|
||||
import mage.abilities.mana.GreenManaAbility;
|
||||
import mage.cards.CardImpl;
|
||||
|
|
@ -15,23 +10,34 @@ import mage.cards.CardSetInfo;
|
|||
import mage.constants.CardType;
|
||||
import mage.constants.ComparisonType;
|
||||
import mage.filter.common.FilterLandPermanent;
|
||||
import mage.filter.predicate.mageobject.AnotherPredicate;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author fireshoes
|
||||
*/
|
||||
public final class BotanicalSanctum extends CardImpl {
|
||||
|
||||
private static final FilterLandPermanent filter = new FilterLandPermanent("other lands");
|
||||
|
||||
static {
|
||||
filter.add(AnotherPredicate.instance);
|
||||
}
|
||||
|
||||
private static final YouControlPermanentCondition condition =
|
||||
new YouControlPermanentCondition(filter, ComparisonType.OR_LESS, 2);
|
||||
|
||||
public BotanicalSanctum(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.LAND}, "");
|
||||
|
||||
// Botanical Sanctum enters the battlefield tapped unless you control two or fewer other lands.
|
||||
Condition controls = new InvertCondition(new PermanentsOnTheBattlefieldCondition(new FilterLandPermanent(), ComparisonType.FEWER_THAN, 3));
|
||||
String abilityText = " tapped unless you control two or fewer other lands";
|
||||
this.addAbility(new EntersBattlefieldAbility(new ConditionalOneShotEffect(new TapSourceEffect(), controls, abilityText), abilityText));
|
||||
this.addAbility(new EntersBattlefieldTappedUnlessAbility(condition).addHint(condition.getHint()));
|
||||
|
||||
// {T}: Add {G} or {U}.
|
||||
// {T}: Add {G}.
|
||||
this.addAbility(new GreenManaAbility());
|
||||
|
||||
// {T}: Add {U}.
|
||||
this.addAbility(new BlueManaAbility());
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,19 +1,17 @@
|
|||
|
||||
package mage.cards.b;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.abilities.common.EntersBattlefieldAbility;
|
||||
import mage.abilities.condition.common.OneOpponentCondition;
|
||||
import mage.abilities.decorator.ConditionalOneShotEffect;
|
||||
import mage.abilities.effects.common.TapSourceEffect;
|
||||
import mage.abilities.common.EntersBattlefieldTappedUnlessAbility;
|
||||
import mage.abilities.condition.common.TwoOrMoreOpponentsCondition;
|
||||
import mage.abilities.mana.GreenManaAbility;
|
||||
import mage.abilities.mana.WhiteManaAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author TheElk801
|
||||
*/
|
||||
public final class BountifulPromenade extends CardImpl {
|
||||
|
|
@ -22,16 +20,12 @@ public final class BountifulPromenade extends CardImpl {
|
|||
super(ownerId, setInfo, new CardType[]{CardType.LAND}, "");
|
||||
|
||||
// Bountiful Promenade enters the battlefield tapped unless you have two or more opponents.
|
||||
this.addAbility(new EntersBattlefieldAbility(
|
||||
new ConditionalOneShotEffect(
|
||||
new TapSourceEffect(),
|
||||
OneOpponentCondition.instance,
|
||||
"tapped unless you have two or more opponents"
|
||||
), "tapped unless you have two or more opponents"
|
||||
));
|
||||
this.addAbility(new EntersBattlefieldTappedUnlessAbility(TwoOrMoreOpponentsCondition.instance));
|
||||
|
||||
// {T}: Add {G} or {W}.
|
||||
// {T}: Add {G}.
|
||||
this.addAbility(new GreenManaAbility());
|
||||
|
||||
// {T}: Add {W}.
|
||||
this.addAbility(new WhiteManaAbility());
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,44 +1,46 @@
|
|||
|
||||
package mage.cards.c;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.abilities.common.EntersBattlefieldAbility;
|
||||
import mage.abilities.condition.Condition;
|
||||
import mage.abilities.condition.InvertCondition;
|
||||
import mage.abilities.condition.common.PermanentsOnTheBattlefieldCondition;
|
||||
import mage.abilities.decorator.ConditionalOneShotEffect;
|
||||
import mage.abilities.effects.common.TapSourceEffect;
|
||||
import mage.abilities.common.EntersBattlefieldTappedUnlessAbility;
|
||||
import mage.abilities.condition.common.YouControlPermanentCondition;
|
||||
import mage.abilities.mana.GreenManaAbility;
|
||||
import mage.abilities.mana.WhiteManaAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.SubType;
|
||||
import mage.constants.ComparisonType;
|
||||
import mage.constants.SubType;
|
||||
import mage.constants.SuperType;
|
||||
import mage.filter.common.FilterLandPermanent;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
* @author fireshoes
|
||||
*/
|
||||
public final class CanopyVista extends CardImpl {
|
||||
|
||||
private static final FilterLandPermanent filter = new FilterLandPermanent();
|
||||
private static final FilterLandPermanent filter = new FilterLandPermanent("basic lands");
|
||||
|
||||
static {
|
||||
filter.add(SuperType.BASIC.getPredicate());
|
||||
}
|
||||
|
||||
private static final YouControlPermanentCondition condition =
|
||||
new YouControlPermanentCondition(filter, ComparisonType.OR_GREATER, 2);
|
||||
|
||||
public CanopyVista(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.LAND}, "");
|
||||
this.subtype.add(SubType.FOREST);
|
||||
this.subtype.add(SubType.PLAINS);
|
||||
|
||||
// Canopy Vista enters the battlefield tapped unless you control two or more basic lands.
|
||||
Condition controls = new InvertCondition(new PermanentsOnTheBattlefieldCondition(filter, ComparisonType.MORE_THAN, 1));
|
||||
String abilityText = "tapped unless you control two or more basic lands";
|
||||
this.addAbility(new EntersBattlefieldAbility(new ConditionalOneShotEffect(new TapSourceEffect(), controls, abilityText), abilityText));
|
||||
this.addAbility(new EntersBattlefieldTappedUnlessAbility(condition).addHint(condition.getHint()));
|
||||
|
||||
// {T}: Add {G}.
|
||||
this.addAbility(new GreenManaAbility());
|
||||
|
||||
// {T}: Add {W}.
|
||||
this.addAbility(new WhiteManaAbility());
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,20 +1,16 @@
|
|||
package mage.cards.c;
|
||||
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.common.EntersBattlefieldAbility;
|
||||
import mage.abilities.common.EntersBattlefieldTappedUnlessAbility;
|
||||
import mage.abilities.common.SimpleActivatedAbility;
|
||||
import mage.abilities.condition.Condition;
|
||||
import mage.abilities.condition.common.PermanentsOnTheBattlefieldCondition;
|
||||
import mage.abilities.condition.common.YouControlPermanentCondition;
|
||||
import mage.abilities.costs.common.TapSourceCost;
|
||||
import mage.abilities.costs.mana.ManaCostsImpl;
|
||||
import mage.abilities.decorator.ConditionalOneShotEffect;
|
||||
import mage.abilities.effects.common.CreateTokenEffect;
|
||||
import mage.abilities.effects.common.TapSourceEffect;
|
||||
import mage.abilities.mana.WhiteManaAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.ComparisonType;
|
||||
import mage.constants.SubType;
|
||||
import mage.filter.FilterPermanent;
|
||||
import mage.filter.common.FilterControlledPermanent;
|
||||
|
|
@ -28,17 +24,14 @@ import java.util.UUID;
|
|||
public final class CastleArdenvale extends CardImpl {
|
||||
|
||||
private static final FilterPermanent filter = new FilterControlledPermanent(SubType.PLAINS);
|
||||
private static final Condition condition
|
||||
= new PermanentsOnTheBattlefieldCondition(filter, ComparisonType.EQUAL_TO, 0);
|
||||
private static final YouControlPermanentCondition condition = new YouControlPermanentCondition(filter);
|
||||
|
||||
public CastleArdenvale(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.LAND}, "");
|
||||
|
||||
// Castle Ardenvale enters the battlefield tapped unless you control a Plains.
|
||||
this.addAbility(new EntersBattlefieldAbility(new ConditionalOneShotEffect(
|
||||
new TapSourceEffect(), condition
|
||||
), "tapped unless you control a Plains"));
|
||||
|
||||
this.addAbility(new EntersBattlefieldTappedUnlessAbility(condition).addHint(condition.getHint()));
|
||||
|
||||
// {T}: Add {W}.
|
||||
this.addAbility(new WhiteManaAbility());
|
||||
|
||||
|
|
|
|||
|
|
@ -1,20 +1,16 @@
|
|||
package mage.cards.c;
|
||||
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.common.EntersBattlefieldAbility;
|
||||
import mage.abilities.common.EntersBattlefieldTappedUnlessAbility;
|
||||
import mage.abilities.common.SimpleActivatedAbility;
|
||||
import mage.abilities.condition.Condition;
|
||||
import mage.abilities.condition.common.PermanentsOnTheBattlefieldCondition;
|
||||
import mage.abilities.condition.common.YouControlPermanentCondition;
|
||||
import mage.abilities.costs.common.TapSourceCost;
|
||||
import mage.abilities.costs.mana.ManaCostsImpl;
|
||||
import mage.abilities.decorator.ConditionalOneShotEffect;
|
||||
import mage.abilities.effects.common.TapSourceEffect;
|
||||
import mage.abilities.effects.common.continuous.BoostControlledEffect;
|
||||
import mage.abilities.mana.RedManaAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.ComparisonType;
|
||||
import mage.constants.Duration;
|
||||
import mage.constants.SubType;
|
||||
import mage.filter.FilterPermanent;
|
||||
|
|
@ -28,16 +24,13 @@ import java.util.UUID;
|
|||
public final class CastleEmbereth extends CardImpl {
|
||||
|
||||
private static final FilterPermanent filter = new FilterControlledPermanent(SubType.MOUNTAIN);
|
||||
private static final Condition condition
|
||||
= new PermanentsOnTheBattlefieldCondition(filter, ComparisonType.EQUAL_TO, 0);
|
||||
private static final YouControlPermanentCondition condition = new YouControlPermanentCondition(filter);
|
||||
|
||||
public CastleEmbereth(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.LAND}, "");
|
||||
|
||||
// Castle Embereth enters the battlefield tapped unless you control a Mountain.
|
||||
this.addAbility(new EntersBattlefieldAbility(new ConditionalOneShotEffect(
|
||||
new TapSourceEffect(), condition
|
||||
), "tapped unless you control a Mountain"));
|
||||
this.addAbility(new EntersBattlefieldTappedUnlessAbility(condition).addHint(condition.getHint()));
|
||||
|
||||
// {T}: Add {R}.
|
||||
this.addAbility(new RedManaAbility());
|
||||
|
|
|
|||
|
|
@ -4,20 +4,17 @@ import mage.ConditionalMana;
|
|||
import mage.MageObject;
|
||||
import mage.Mana;
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.common.EntersBattlefieldAbility;
|
||||
import mage.abilities.common.EntersBattlefieldTappedUnlessAbility;
|
||||
import mage.abilities.condition.Condition;
|
||||
import mage.abilities.condition.common.PermanentsOnTheBattlefieldCondition;
|
||||
import mage.abilities.condition.common.YouControlPermanentCondition;
|
||||
import mage.abilities.costs.common.TapSourceCost;
|
||||
import mage.abilities.costs.mana.ManaCostsImpl;
|
||||
import mage.abilities.decorator.ConditionalOneShotEffect;
|
||||
import mage.abilities.effects.common.TapSourceEffect;
|
||||
import mage.abilities.mana.ConditionalColoredManaAbility;
|
||||
import mage.abilities.mana.GreenManaAbility;
|
||||
import mage.abilities.mana.builder.ConditionalManaBuilder;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.ComparisonType;
|
||||
import mage.constants.SubType;
|
||||
import mage.filter.FilterPermanent;
|
||||
import mage.filter.common.FilterControlledPermanent;
|
||||
|
|
@ -31,16 +28,13 @@ import java.util.UUID;
|
|||
public final class CastleGarenbrig extends CardImpl {
|
||||
|
||||
private static final FilterPermanent filter = new FilterControlledPermanent(SubType.FOREST);
|
||||
private static final Condition condition
|
||||
= new PermanentsOnTheBattlefieldCondition(filter, ComparisonType.EQUAL_TO, 0);
|
||||
private static final YouControlPermanentCondition condition = new YouControlPermanentCondition(filter);
|
||||
|
||||
public CastleGarenbrig(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.LAND}, "");
|
||||
|
||||
// Castle Garenbrig enters the battlefield tapped unless you control a Forest.
|
||||
this.addAbility(new EntersBattlefieldAbility(new ConditionalOneShotEffect(
|
||||
new TapSourceEffect(), condition
|
||||
), "tapped unless you control a Forest"));
|
||||
this.addAbility(new EntersBattlefieldTappedUnlessAbility(condition).addHint(condition.getHint()));
|
||||
|
||||
// {T}: Add {G}.
|
||||
this.addAbility(new GreenManaAbility());
|
||||
|
|
|
|||
|
|
@ -1,22 +1,18 @@
|
|||
package mage.cards.c;
|
||||
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.common.EntersBattlefieldAbility;
|
||||
import mage.abilities.common.EntersBattlefieldTappedUnlessAbility;
|
||||
import mage.abilities.common.SimpleActivatedAbility;
|
||||
import mage.abilities.condition.Condition;
|
||||
import mage.abilities.condition.common.PermanentsOnTheBattlefieldCondition;
|
||||
import mage.abilities.condition.common.YouControlPermanentCondition;
|
||||
import mage.abilities.costs.common.TapSourceCost;
|
||||
import mage.abilities.costs.mana.ManaCostsImpl;
|
||||
import mage.abilities.decorator.ConditionalOneShotEffect;
|
||||
import mage.abilities.dynamicvalue.common.CardsInControllerHandCount;
|
||||
import mage.abilities.effects.common.DrawCardSourceControllerEffect;
|
||||
import mage.abilities.effects.common.LoseLifeSourceControllerEffect;
|
||||
import mage.abilities.effects.common.TapSourceEffect;
|
||||
import mage.abilities.mana.BlackManaAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.ComparisonType;
|
||||
import mage.constants.SubType;
|
||||
import mage.filter.FilterPermanent;
|
||||
import mage.filter.common.FilterControlledPermanent;
|
||||
|
|
@ -29,16 +25,13 @@ import java.util.UUID;
|
|||
public final class CastleLocthwain extends CardImpl {
|
||||
|
||||
private static final FilterPermanent filter = new FilterControlledPermanent(SubType.SWAMP);
|
||||
private static final Condition condition
|
||||
= new PermanentsOnTheBattlefieldCondition(filter, ComparisonType.EQUAL_TO, 0);
|
||||
private static final YouControlPermanentCondition condition = new YouControlPermanentCondition(filter);
|
||||
|
||||
public CastleLocthwain(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.LAND}, "");
|
||||
|
||||
// Castle Locthwain enters the battlefield tapped unless you control a Swamp.
|
||||
this.addAbility(new EntersBattlefieldAbility(new ConditionalOneShotEffect(
|
||||
new TapSourceEffect(), condition
|
||||
), "tapped unless you control a Swamp"));
|
||||
this.addAbility(new EntersBattlefieldTappedUnlessAbility(condition).addHint(condition.getHint()));
|
||||
|
||||
// {T}: Add {B}.
|
||||
this.addAbility(new BlackManaAbility());
|
||||
|
|
|
|||
|
|
@ -1,20 +1,16 @@
|
|||
package mage.cards.c;
|
||||
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.common.EntersBattlefieldAbility;
|
||||
import mage.abilities.common.EntersBattlefieldTappedUnlessAbility;
|
||||
import mage.abilities.common.SimpleActivatedAbility;
|
||||
import mage.abilities.condition.Condition;
|
||||
import mage.abilities.condition.common.PermanentsOnTheBattlefieldCondition;
|
||||
import mage.abilities.condition.common.YouControlPermanentCondition;
|
||||
import mage.abilities.costs.common.TapSourceCost;
|
||||
import mage.abilities.costs.mana.ManaCostsImpl;
|
||||
import mage.abilities.decorator.ConditionalOneShotEffect;
|
||||
import mage.abilities.effects.common.TapSourceEffect;
|
||||
import mage.abilities.effects.keyword.ScryEffect;
|
||||
import mage.abilities.mana.BlueManaAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.ComparisonType;
|
||||
import mage.constants.SubType;
|
||||
import mage.filter.FilterPermanent;
|
||||
import mage.filter.common.FilterControlledPermanent;
|
||||
|
|
@ -27,16 +23,13 @@ import java.util.UUID;
|
|||
public final class CastleVantress extends CardImpl {
|
||||
|
||||
private static final FilterPermanent filter = new FilterControlledPermanent(SubType.ISLAND);
|
||||
private static final Condition condition
|
||||
= new PermanentsOnTheBattlefieldCondition(filter, ComparisonType.EQUAL_TO, 0);
|
||||
private static final YouControlPermanentCondition condition = new YouControlPermanentCondition(filter);
|
||||
|
||||
public CastleVantress(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.LAND}, "");
|
||||
|
||||
// Castle Vantress enters the battlefield tapped unless you control an Island.
|
||||
this.addAbility(new EntersBattlefieldAbility(new ConditionalOneShotEffect(
|
||||
new TapSourceEffect(), condition
|
||||
), "tapped unless you control an Island"));
|
||||
this.addAbility(new EntersBattlefieldTappedUnlessAbility(condition).addHint(condition.getHint()));
|
||||
|
||||
// {T}: Add {U}.
|
||||
this.addAbility(new BlueManaAbility());
|
||||
|
|
|
|||
|
|
@ -1,45 +1,46 @@
|
|||
|
||||
package mage.cards.c;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.abilities.common.EntersBattlefieldAbility;
|
||||
import mage.abilities.condition.Condition;
|
||||
import mage.abilities.condition.InvertCondition;
|
||||
import mage.abilities.condition.common.PermanentsOnTheBattlefieldCondition;
|
||||
import mage.abilities.decorator.ConditionalOneShotEffect;
|
||||
import mage.abilities.effects.common.TapSourceEffect;
|
||||
import mage.abilities.common.EntersBattlefieldTappedUnlessAbility;
|
||||
import mage.abilities.condition.common.YouControlPermanentCondition;
|
||||
import mage.abilities.mana.GreenManaAbility;
|
||||
import mage.abilities.mana.RedManaAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.SubType;
|
||||
import mage.constants.ComparisonType;
|
||||
import mage.constants.SubType;
|
||||
import mage.constants.SuperType;
|
||||
import mage.filter.common.FilterLandPermanent;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author fireshoes
|
||||
*/
|
||||
public final class CinderGlade extends CardImpl {
|
||||
|
||||
private static final FilterLandPermanent filter = new FilterLandPermanent();
|
||||
|
||||
|
||||
private static final FilterLandPermanent filter = new FilterLandPermanent("basic lands");
|
||||
|
||||
static {
|
||||
filter.add(SuperType.BASIC.getPredicate());
|
||||
}
|
||||
|
||||
private static final YouControlPermanentCondition condition =
|
||||
new YouControlPermanentCondition(filter, ComparisonType.OR_GREATER, 2);
|
||||
|
||||
public CinderGlade(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
|
||||
super(ownerId, setInfo, new CardType[]{CardType.LAND}, "");
|
||||
this.subtype.add(SubType.MOUNTAIN);
|
||||
this.subtype.add(SubType.FOREST);
|
||||
|
||||
// Cinder Glade enters the battlefield tapped unless you control two or more basic lands.
|
||||
Condition controls = new InvertCondition(new PermanentsOnTheBattlefieldCondition(filter, ComparisonType.MORE_THAN, 1));
|
||||
String abilityText = "tapped unless you control two or more basic lands";
|
||||
this.addAbility(new EntersBattlefieldAbility(new ConditionalOneShotEffect(new TapSourceEffect(), controls, abilityText), abilityText));
|
||||
this.addAbility(new EntersBattlefieldTappedUnlessAbility(condition).addHint(condition.getHint()));
|
||||
|
||||
// {T}: Add {R}.
|
||||
this.addAbility(new RedManaAbility());
|
||||
|
||||
// {T}: Add {G}.
|
||||
this.addAbility(new GreenManaAbility());
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -2,12 +2,8 @@
|
|||
|
||||
package mage.cards.c;
|
||||
|
||||
import mage.abilities.common.EntersBattlefieldAbility;
|
||||
import mage.abilities.condition.Condition;
|
||||
import mage.abilities.condition.InvertCondition;
|
||||
import mage.abilities.condition.common.PermanentsOnTheBattlefieldCondition;
|
||||
import mage.abilities.decorator.ConditionalOneShotEffect;
|
||||
import mage.abilities.effects.common.TapSourceEffect;
|
||||
import mage.abilities.common.EntersBattlefieldTappedUnlessAbility;
|
||||
import mage.abilities.condition.common.YouControlPermanentCondition;
|
||||
import mage.abilities.mana.RedManaAbility;
|
||||
import mage.abilities.mana.WhiteManaAbility;
|
||||
import mage.cards.CardImpl;
|
||||
|
|
@ -24,19 +20,24 @@ import java.util.UUID;
|
|||
*/
|
||||
public final class ClifftopRetreat extends CardImpl {
|
||||
|
||||
private static final FilterLandPermanent filter = new FilterLandPermanent();
|
||||
private static final FilterLandPermanent filter = new FilterLandPermanent("a Mountain or a Plains");
|
||||
|
||||
static {
|
||||
filter.add(Predicates.or(SubType.MOUNTAIN.getPredicate(), SubType.PLAINS.getPredicate()));
|
||||
}
|
||||
|
||||
public ClifftopRetreat(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId,setInfo,new CardType[]{CardType.LAND},null);
|
||||
private static final YouControlPermanentCondition condition = new YouControlPermanentCondition(filter);
|
||||
|
||||
Condition controls = new InvertCondition(new PermanentsOnTheBattlefieldCondition(filter));
|
||||
String abilityText = " tapped unless you control a Mountain or a Plains";
|
||||
this.addAbility(new EntersBattlefieldAbility(new ConditionalOneShotEffect(new TapSourceEffect(), controls, abilityText), abilityText));
|
||||
public ClifftopRetreat(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.LAND}, null);
|
||||
|
||||
// Clifftop Retreat enters the battlefield tapped unless you control a Mountain or a Plains.
|
||||
this.addAbility(new EntersBattlefieldTappedUnlessAbility(condition).addHint(condition.getHint()));
|
||||
|
||||
// {T}: Add {R}.
|
||||
this.addAbility(new RedManaAbility());
|
||||
|
||||
// {T}: Add {W}.
|
||||
this.addAbility(new WhiteManaAbility());
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,37 +1,43 @@
|
|||
|
||||
package mage.cards.c;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.abilities.common.EntersBattlefieldAbility;
|
||||
import mage.abilities.condition.Condition;
|
||||
import mage.abilities.condition.InvertCondition;
|
||||
import mage.abilities.condition.common.PermanentsOnTheBattlefieldCondition;
|
||||
import mage.abilities.decorator.ConditionalOneShotEffect;
|
||||
import mage.abilities.effects.common.TapSourceEffect;
|
||||
import mage.abilities.common.EntersBattlefieldTappedUnlessAbility;
|
||||
import mage.abilities.condition.common.YouControlPermanentCondition;
|
||||
import mage.abilities.mana.BlackManaAbility;
|
||||
import mage.abilities.mana.WhiteManaAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.ComparisonType;
|
||||
import mage.filter.StaticFilters;
|
||||
import mage.filter.common.FilterLandPermanent;
|
||||
import mage.filter.predicate.mageobject.AnotherPredicate;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author fireshoes
|
||||
*/
|
||||
public final class ConcealedCourtyard extends CardImpl {
|
||||
|
||||
private static final FilterLandPermanent filter = new FilterLandPermanent("other lands");
|
||||
|
||||
static {
|
||||
filter.add(AnotherPredicate.instance);
|
||||
}
|
||||
|
||||
private static final YouControlPermanentCondition condition =
|
||||
new YouControlPermanentCondition(filter, ComparisonType.OR_LESS, 2);
|
||||
|
||||
public ConcealedCourtyard(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.LAND}, "");
|
||||
|
||||
// Concealed Courtyard enters the battlefield tapped unless you control two or fewer other lands.
|
||||
Condition controls = new InvertCondition(new PermanentsOnTheBattlefieldCondition(StaticFilters.FILTER_LANDS, ComparisonType.FEWER_THAN, 3));
|
||||
String abilityText = " tapped unless you control two or fewer other lands";
|
||||
this.addAbility(new EntersBattlefieldAbility(new ConditionalOneShotEffect(new TapSourceEffect(), controls, abilityText), abilityText));
|
||||
this.addAbility(new EntersBattlefieldTappedUnlessAbility(condition).addHint(condition.getHint()));
|
||||
|
||||
// {T}: Add {W}.
|
||||
|
||||
// {T}: Add {W} or {B}.this.addAbility(new BlackManaAbility());
|
||||
this.addAbility(new WhiteManaAbility());
|
||||
// {T}: Add {B}.
|
||||
this.addAbility(new BlackManaAbility());
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,35 +1,43 @@
|
|||
|
||||
package mage.cards.c;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.abilities.common.EntersBattlefieldAbility;
|
||||
import mage.abilities.condition.Condition;
|
||||
import mage.abilities.condition.InvertCondition;
|
||||
import mage.abilities.condition.common.PermanentsOnTheBattlefieldCondition;
|
||||
import mage.abilities.decorator.ConditionalOneShotEffect;
|
||||
import mage.abilities.effects.common.TapSourceEffect;
|
||||
import mage.abilities.common.EntersBattlefieldTappedUnlessAbility;
|
||||
import mage.abilities.condition.common.YouControlPermanentCondition;
|
||||
import mage.abilities.mana.GreenManaAbility;
|
||||
import mage.abilities.mana.RedManaAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.ComparisonType;
|
||||
import mage.filter.StaticFilters;
|
||||
import mage.filter.common.FilterLandPermanent;
|
||||
import mage.filter.predicate.mageobject.AnotherPredicate;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author maurer.it_at_gmail.com
|
||||
*/
|
||||
public final class CopperlineGorge extends CardImpl {
|
||||
|
||||
private static final FilterLandPermanent filter = new FilterLandPermanent("other lands");
|
||||
|
||||
static {
|
||||
filter.add(AnotherPredicate.instance);
|
||||
}
|
||||
|
||||
private static final YouControlPermanentCondition condition =
|
||||
new YouControlPermanentCondition(filter, ComparisonType.OR_LESS, 2);
|
||||
|
||||
public CopperlineGorge(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.LAND}, null);
|
||||
|
||||
// Copperline Gorge enters the battlefield tapped unless you control two or fewer other lands.
|
||||
Condition controls = new InvertCondition(new PermanentsOnTheBattlefieldCondition(StaticFilters.FILTER_LANDS, ComparisonType.FEWER_THAN, 3));
|
||||
String abilityText = " tapped unless you control two or fewer other lands";
|
||||
this.addAbility(new EntersBattlefieldAbility(new ConditionalOneShotEffect(new TapSourceEffect(), controls, abilityText), abilityText));
|
||||
this.addAbility(new EntersBattlefieldTappedUnlessAbility(condition).addHint(condition.getHint()));
|
||||
|
||||
// {T}: Add {R}.
|
||||
this.addAbility(new RedManaAbility());
|
||||
|
||||
// {T}: Add {G}.
|
||||
this.addAbility(new GreenManaAbility());
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,13 +1,8 @@
|
|||
|
||||
package mage.cards.d;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.abilities.common.EntersBattlefieldAbility;
|
||||
import mage.abilities.condition.Condition;
|
||||
import mage.abilities.condition.InvertCondition;
|
||||
import mage.abilities.condition.common.PermanentsOnTheBattlefieldCondition;
|
||||
import mage.abilities.decorator.ConditionalOneShotEffect;
|
||||
import mage.abilities.effects.common.TapSourceEffect;
|
||||
import mage.abilities.common.EntersBattlefieldTappedUnlessAbility;
|
||||
import mage.abilities.condition.common.YouControlPermanentCondition;
|
||||
import mage.abilities.mana.BlackManaAbility;
|
||||
import mage.abilities.mana.BlueManaAbility;
|
||||
import mage.cards.CardImpl;
|
||||
|
|
@ -17,27 +12,32 @@ import mage.constants.ComparisonType;
|
|||
import mage.filter.common.FilterLandPermanent;
|
||||
import mage.filter.predicate.mageobject.AnotherPredicate;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author maurer.it_at_gmail.com
|
||||
*/
|
||||
public final class DarkslickShores extends CardImpl {
|
||||
|
||||
private static final FilterLandPermanent filter = new FilterLandPermanent();
|
||||
private static final FilterLandPermanent filter = new FilterLandPermanent("other lands");
|
||||
|
||||
static {
|
||||
filter.add(AnotherPredicate.instance);
|
||||
}
|
||||
|
||||
private static final YouControlPermanentCondition condition =
|
||||
new YouControlPermanentCondition(filter, ComparisonType.OR_LESS, 2);
|
||||
|
||||
public DarkslickShores(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.LAND}, null);
|
||||
|
||||
// Darkslick Shores enters the battlefield tapped unless you control two or fewer other lands.
|
||||
Condition controls = new InvertCondition(new PermanentsOnTheBattlefieldCondition(filter, ComparisonType.FEWER_THAN, 3));
|
||||
String abilityText = " tapped unless you control two or fewer other lands";
|
||||
this.addAbility(new EntersBattlefieldAbility(new ConditionalOneShotEffect(new TapSourceEffect(), controls, abilityText), abilityText));
|
||||
this.addAbility(new EntersBattlefieldTappedUnlessAbility(condition).addHint(condition.getHint()));
|
||||
|
||||
// {T}: Add {U}.
|
||||
this.addAbility(new BlueManaAbility());
|
||||
|
||||
// {T}: Add {B}.
|
||||
this.addAbility(new BlackManaAbility());
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,17 +1,15 @@
|
|||
package mage.cards.d;
|
||||
|
||||
import mage.abilities.common.EntersBattlefieldAbility;
|
||||
import mage.abilities.condition.Condition;
|
||||
import mage.abilities.condition.common.PermanentsOnTheBattlefieldCondition;
|
||||
import mage.abilities.decorator.ConditionalOneShotEffect;
|
||||
import mage.abilities.effects.common.TapSourceEffect;
|
||||
import mage.abilities.common.EntersBattlefieldTappedUnlessAbility;
|
||||
import mage.abilities.condition.common.YouControlPermanentCondition;
|
||||
import mage.abilities.mana.BlackManaAbility;
|
||||
import mage.abilities.mana.GreenManaAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.ComparisonType;
|
||||
import mage.filter.StaticFilters;
|
||||
import mage.filter.common.FilterLandPermanent;
|
||||
import mage.filter.predicate.mageobject.AnotherPredicate;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
|
|
@ -20,21 +18,25 @@ import java.util.UUID;
|
|||
*/
|
||||
public final class DeathcapGlade extends CardImpl {
|
||||
|
||||
private static final Condition condition = new PermanentsOnTheBattlefieldCondition(
|
||||
StaticFilters.FILTER_LANDS, ComparisonType.FEWER_THAN, 2
|
||||
);
|
||||
private static final FilterLandPermanent filter = new FilterLandPermanent("other lands");
|
||||
|
||||
static {
|
||||
filter.add(AnotherPredicate.instance);
|
||||
}
|
||||
|
||||
private static final YouControlPermanentCondition condition =
|
||||
new YouControlPermanentCondition(filter, ComparisonType.OR_GREATER, 2);
|
||||
|
||||
public DeathcapGlade(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.LAND}, "");
|
||||
|
||||
// Deathcap Glade enters the battlefield tapped unless you control two or more other lands.
|
||||
this.addAbility(new EntersBattlefieldAbility(
|
||||
new ConditionalOneShotEffect(new TapSourceEffect(), condition),
|
||||
"tapped unless you control two or more other lands"
|
||||
));
|
||||
this.addAbility(new EntersBattlefieldTappedUnlessAbility(condition).addHint(condition.getHint()));
|
||||
|
||||
// {T}: Add {B} or {G}.
|
||||
// {T}: Add {B}.
|
||||
this.addAbility(new BlackManaAbility());
|
||||
|
||||
// {T}: Add {G}.
|
||||
this.addAbility(new GreenManaAbility());
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,17 +1,15 @@
|
|||
package mage.cards.d;
|
||||
|
||||
import mage.abilities.common.EntersBattlefieldAbility;
|
||||
import mage.abilities.condition.Condition;
|
||||
import mage.abilities.condition.common.PermanentsOnTheBattlefieldCondition;
|
||||
import mage.abilities.decorator.ConditionalOneShotEffect;
|
||||
import mage.abilities.effects.common.TapSourceEffect;
|
||||
import mage.abilities.common.EntersBattlefieldTappedUnlessAbility;
|
||||
import mage.abilities.condition.common.YouControlPermanentCondition;
|
||||
import mage.abilities.mana.BlueManaAbility;
|
||||
import mage.abilities.mana.WhiteManaAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.ComparisonType;
|
||||
import mage.filter.StaticFilters;
|
||||
import mage.filter.common.FilterLandPermanent;
|
||||
import mage.filter.predicate.mageobject.AnotherPredicate;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
|
|
@ -20,21 +18,25 @@ import java.util.UUID;
|
|||
*/
|
||||
public final class DesertedBeach extends CardImpl {
|
||||
|
||||
private static final Condition condition = new PermanentsOnTheBattlefieldCondition(
|
||||
StaticFilters.FILTER_LANDS, ComparisonType.FEWER_THAN, 2
|
||||
);
|
||||
private static final FilterLandPermanent filter = new FilterLandPermanent("other lands");
|
||||
|
||||
static {
|
||||
filter.add(AnotherPredicate.instance);
|
||||
}
|
||||
|
||||
private static final YouControlPermanentCondition condition =
|
||||
new YouControlPermanentCondition(filter, ComparisonType.OR_GREATER, 2);
|
||||
|
||||
public DesertedBeach(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.LAND}, "");
|
||||
|
||||
// Deserted Beach enters the battlefield tapped unless you control two or more other lands.
|
||||
this.addAbility(new EntersBattlefieldAbility(
|
||||
new ConditionalOneShotEffect(new TapSourceEffect(), condition),
|
||||
"tapped unless you control two or more other lands"
|
||||
));
|
||||
this.addAbility(new EntersBattlefieldTappedUnlessAbility(condition).addHint(condition.getHint()));
|
||||
|
||||
// {T}: Add {W} or {U}.
|
||||
// {T}: Add {W}.
|
||||
this.addAbility(new WhiteManaAbility());
|
||||
|
||||
// {T}: Add {U}.
|
||||
this.addAbility(new BlueManaAbility());
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,12 +1,8 @@
|
|||
|
||||
package mage.cards.d;
|
||||
|
||||
import mage.abilities.common.EntersBattlefieldAbility;
|
||||
import mage.abilities.condition.Condition;
|
||||
import mage.abilities.condition.InvertCondition;
|
||||
import mage.abilities.condition.common.PermanentsOnTheBattlefieldCondition;
|
||||
import mage.abilities.decorator.ConditionalOneShotEffect;
|
||||
import mage.abilities.effects.common.TapSourceEffect;
|
||||
import mage.abilities.common.EntersBattlefieldTappedUnlessAbility;
|
||||
import mage.abilities.condition.common.YouControlPermanentCondition;
|
||||
import mage.abilities.mana.BlackManaAbility;
|
||||
import mage.abilities.mana.RedManaAbility;
|
||||
import mage.cards.CardImpl;
|
||||
|
|
@ -19,24 +15,28 @@ import mage.filter.predicate.Predicates;
|
|||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author BetaSteward_at_googlemail.com
|
||||
*/
|
||||
public final class DragonskullSummit extends CardImpl {
|
||||
|
||||
private static final FilterLandPermanent filter = new FilterLandPermanent();
|
||||
private static final FilterLandPermanent filter = new FilterLandPermanent("a Swamp or a Mountain");
|
||||
|
||||
static {
|
||||
filter.add(Predicates.or(SubType.SWAMP.getPredicate(), SubType.MOUNTAIN.getPredicate()));
|
||||
}
|
||||
|
||||
private static final YouControlPermanentCondition condition = new YouControlPermanentCondition(filter);
|
||||
|
||||
public DragonskullSummit(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.LAND}, null);
|
||||
|
||||
Condition controls = new InvertCondition(new PermanentsOnTheBattlefieldCondition(filter));
|
||||
String abilityText = " tapped unless you control a Swamp or a Mountain";
|
||||
this.addAbility(new EntersBattlefieldAbility(new ConditionalOneShotEffect(new TapSourceEffect(), controls, abilityText), abilityText));
|
||||
// Dragonskull Summit enters the battlefield tapped unless you control a Swamp or a Mountain.
|
||||
this.addAbility(new EntersBattlefieldTappedUnlessAbility(condition).addHint(condition.getHint()));
|
||||
|
||||
// {T}: Add {B}.
|
||||
this.addAbility(new BlackManaAbility());
|
||||
|
||||
// {T}: Add {R}.
|
||||
this.addAbility(new RedManaAbility());
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,17 +1,15 @@
|
|||
package mage.cards.d;
|
||||
|
||||
import mage.abilities.common.EntersBattlefieldAbility;
|
||||
import mage.abilities.condition.Condition;
|
||||
import mage.abilities.condition.common.PermanentsOnTheBattlefieldCondition;
|
||||
import mage.abilities.decorator.ConditionalOneShotEffect;
|
||||
import mage.abilities.effects.common.TapSourceEffect;
|
||||
import mage.abilities.common.EntersBattlefieldTappedUnlessAbility;
|
||||
import mage.abilities.condition.common.YouControlPermanentCondition;
|
||||
import mage.abilities.mana.BlueManaAbility;
|
||||
import mage.abilities.mana.GreenManaAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.ComparisonType;
|
||||
import mage.filter.StaticFilters;
|
||||
import mage.filter.common.FilterLandPermanent;
|
||||
import mage.filter.predicate.mageobject.AnotherPredicate;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
|
|
@ -20,21 +18,25 @@ import java.util.UUID;
|
|||
*/
|
||||
public final class DreamrootCascade extends CardImpl {
|
||||
|
||||
private static final Condition condition = new PermanentsOnTheBattlefieldCondition(
|
||||
StaticFilters.FILTER_LANDS, ComparisonType.FEWER_THAN, 2
|
||||
);
|
||||
private static final FilterLandPermanent filter = new FilterLandPermanent("other lands");
|
||||
|
||||
static {
|
||||
filter.add(AnotherPredicate.instance);
|
||||
}
|
||||
|
||||
private static final YouControlPermanentCondition condition =
|
||||
new YouControlPermanentCondition(filter, ComparisonType.OR_GREATER, 2);
|
||||
|
||||
public DreamrootCascade(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.LAND}, "");
|
||||
|
||||
// Dreamroot Cascade enters the battlefield tapped unless you control two or more other lands.
|
||||
this.addAbility(new EntersBattlefieldAbility(
|
||||
new ConditionalOneShotEffect(new TapSourceEffect(), condition),
|
||||
"tapped unless you control two or more other lands"
|
||||
));
|
||||
this.addAbility(new EntersBattlefieldTappedUnlessAbility(condition).addHint(condition.getHint()));
|
||||
|
||||
// {T}: Add {G} or {U}.
|
||||
// {T}: Add {G}.
|
||||
this.addAbility(new GreenManaAbility());
|
||||
|
||||
// {T}: Add {U}.
|
||||
this.addAbility(new BlueManaAbility());
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,15 +1,12 @@
|
|||
package mage.cards.d;
|
||||
|
||||
import mage.abilities.common.EntersBattlefieldAbility;
|
||||
import mage.abilities.condition.Condition;
|
||||
import mage.abilities.condition.common.PermanentsOnTheBattlefieldCondition;
|
||||
import mage.abilities.effects.common.TapSourceEffect;
|
||||
import mage.abilities.common.EntersBattlefieldTappedUnlessAbility;
|
||||
import mage.abilities.condition.common.YouControlPermanentCondition;
|
||||
import mage.abilities.mana.BlackManaAbility;
|
||||
import mage.abilities.mana.BlueManaAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.ComparisonType;
|
||||
import mage.constants.SubType;
|
||||
import mage.filter.FilterPermanent;
|
||||
import mage.filter.predicate.Predicates;
|
||||
|
|
@ -21,27 +18,25 @@ import java.util.UUID;
|
|||
*/
|
||||
public final class DrownedCatacomb extends CardImpl {
|
||||
|
||||
private static final FilterPermanent filter = new FilterPermanent();
|
||||
private static final FilterPermanent filter = new FilterPermanent("an Island or a Swamp");
|
||||
|
||||
static {
|
||||
filter.add(Predicates.or(
|
||||
SubType.SWAMP.getPredicate(),
|
||||
SubType.ISLAND.getPredicate()
|
||||
));
|
||||
filter.add(Predicates.or(SubType.ISLAND.getPredicate(), SubType.SWAMP.getPredicate()));
|
||||
}
|
||||
|
||||
private static final Condition condition
|
||||
= new PermanentsOnTheBattlefieldCondition(filter, ComparisonType.EQUAL_TO, 0);
|
||||
private static final YouControlPermanentCondition condition = new YouControlPermanentCondition(filter);
|
||||
|
||||
public DrownedCatacomb(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.LAND}, null);
|
||||
|
||||
this.addAbility(new EntersBattlefieldAbility(
|
||||
new TapSourceEffect(), condition, null,
|
||||
"tapped unless you control an Island or a Swamp"
|
||||
));
|
||||
this.addAbility(new BlackManaAbility());
|
||||
// Drowned Catacomb enters the battlefield tapped unless you control an Island or a Swamp.
|
||||
this.addAbility(new EntersBattlefieldTappedUnlessAbility(condition).addHint(condition.getHint()));
|
||||
|
||||
// {T}: Add {U}.
|
||||
this.addAbility(new BlueManaAbility());
|
||||
|
||||
// {T}: Add {B}.
|
||||
this.addAbility(new BlackManaAbility());
|
||||
}
|
||||
|
||||
private DrownedCatacomb(final DrownedCatacomb card) {
|
||||
|
|
|
|||
|
|
@ -1,12 +1,9 @@
|
|||
package mage.cards.d;
|
||||
|
||||
import mage.abilities.common.EntersBattlefieldAbility;
|
||||
import mage.abilities.common.EntersBattlefieldTappedUnlessAbility;
|
||||
import mage.abilities.common.EntersBattlefieldUntappedTriggeredAbility;
|
||||
import mage.abilities.condition.Condition;
|
||||
import mage.abilities.condition.common.PermanentsOnTheBattlefieldCondition;
|
||||
import mage.abilities.decorator.ConditionalOneShotEffect;
|
||||
import mage.abilities.condition.common.YouControlPermanentCondition;
|
||||
import mage.abilities.effects.common.CreateTokenEffect;
|
||||
import mage.abilities.effects.common.TapSourceEffect;
|
||||
import mage.abilities.mana.RedManaAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
|
|
@ -26,14 +23,14 @@ import java.util.UUID;
|
|||
public final class DwarvenMine extends CardImpl {
|
||||
|
||||
private static final FilterPermanent filter
|
||||
= new FilterControlledPermanent(SubType.MOUNTAIN);
|
||||
= new FilterControlledPermanent(SubType.MOUNTAIN, "other Mountains");
|
||||
|
||||
static {
|
||||
filter.add(AnotherPredicate.instance);
|
||||
}
|
||||
|
||||
private static final Condition condition
|
||||
= new PermanentsOnTheBattlefieldCondition(filter, ComparisonType.FEWER_THAN, 3);
|
||||
private static final YouControlPermanentCondition condition
|
||||
= new YouControlPermanentCondition(filter, ComparisonType.OR_GREATER, 3);
|
||||
|
||||
public DwarvenMine(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.LAND}, "");
|
||||
|
|
@ -44,10 +41,7 @@ public final class DwarvenMine extends CardImpl {
|
|||
this.addAbility(new RedManaAbility());
|
||||
|
||||
// Dwarven Mine enters the battlefield tapped unless you control three or more other Mountains.
|
||||
this.addAbility(new EntersBattlefieldAbility(
|
||||
new ConditionalOneShotEffect(new TapSourceEffect(), condition),
|
||||
"tapped unless you control three or more other Mountains"
|
||||
));
|
||||
this.addAbility(new EntersBattlefieldTappedUnlessAbility(condition).addHint(condition.getHint()));
|
||||
|
||||
// When Dwarven Mine enters the battlefield untapped, create a 1/1 red Dwarf creature token.
|
||||
this.addAbility(new EntersBattlefieldUntappedTriggeredAbility(new CreateTokenEffect(new DwarfToken()), false));
|
||||
|
|
|
|||
|
|
@ -1,7 +1,5 @@
|
|||
package mage.cards.f;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.common.AsEntersBattlefieldAbility;
|
||||
import mage.abilities.common.SimpleActivatedAbility;
|
||||
|
|
@ -26,8 +24,9 @@ import mage.game.permanent.Permanent;
|
|||
import mage.players.Player;
|
||||
import mage.target.common.TargetCardInHand;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author weirddan455
|
||||
*/
|
||||
public final class FortifiedBeachhead extends CardImpl {
|
||||
|
|
@ -99,6 +98,7 @@ class FortifiedBeachheadEffect extends OneShotEffect {
|
|||
return true;
|
||||
}
|
||||
}
|
||||
// Intentional use of Permanent::setTapped, to not cause any trigger
|
||||
land.setTapped(true);
|
||||
return true;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,12 +1,9 @@
|
|||
package mage.cards.g;
|
||||
|
||||
import mage.abilities.common.EntersBattlefieldAbility;
|
||||
import mage.abilities.common.EntersBattlefieldTappedUnlessAbility;
|
||||
import mage.abilities.common.EntersBattlefieldUntappedTriggeredAbility;
|
||||
import mage.abilities.condition.Condition;
|
||||
import mage.abilities.condition.common.PermanentsOnTheBattlefieldCondition;
|
||||
import mage.abilities.decorator.ConditionalOneShotEffect;
|
||||
import mage.abilities.condition.common.YouControlPermanentCondition;
|
||||
import mage.abilities.effects.common.CreateTokenEffect;
|
||||
import mage.abilities.effects.common.TapSourceEffect;
|
||||
import mage.abilities.mana.GreenManaAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
|
|
@ -26,14 +23,14 @@ import java.util.UUID;
|
|||
public final class GingerbreadCabin extends CardImpl {
|
||||
|
||||
private static final FilterPermanent filter
|
||||
= new FilterControlledPermanent(SubType.FOREST);
|
||||
= new FilterControlledPermanent(SubType.FOREST, "other Forests");
|
||||
|
||||
static {
|
||||
filter.add(AnotherPredicate.instance);
|
||||
}
|
||||
|
||||
private static final Condition condition
|
||||
= new PermanentsOnTheBattlefieldCondition(filter, ComparisonType.FEWER_THAN, 3);
|
||||
private static final YouControlPermanentCondition condition
|
||||
= new YouControlPermanentCondition(filter, ComparisonType.OR_GREATER, 3);
|
||||
|
||||
public GingerbreadCabin(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.LAND}, "");
|
||||
|
|
@ -44,10 +41,7 @@ public final class GingerbreadCabin extends CardImpl {
|
|||
this.addAbility(new GreenManaAbility());
|
||||
|
||||
// Gingerbread Cabin enters the battlefield tapped unless you control three or more other Forests.
|
||||
this.addAbility(new EntersBattlefieldAbility(
|
||||
new ConditionalOneShotEffect(new TapSourceEffect(), condition),
|
||||
"tapped unless you control three or more other Forests"
|
||||
));
|
||||
this.addAbility(new EntersBattlefieldTappedUnlessAbility(condition).addHint(condition.getHint()));
|
||||
|
||||
// When Gingerbread Cabin enters the battlefield untapped, create a Food token.
|
||||
this.addAbility(new EntersBattlefieldUntappedTriggeredAbility(new CreateTokenEffect(new FoodToken()), false));
|
||||
|
|
|
|||
|
|
@ -1,12 +1,8 @@
|
|||
|
||||
package mage.cards.g;
|
||||
|
||||
import mage.abilities.common.EntersBattlefieldAbility;
|
||||
import mage.abilities.condition.Condition;
|
||||
import mage.abilities.condition.InvertCondition;
|
||||
import mage.abilities.condition.common.PermanentsOnTheBattlefieldCondition;
|
||||
import mage.abilities.decorator.ConditionalOneShotEffect;
|
||||
import mage.abilities.effects.common.TapSourceEffect;
|
||||
import mage.abilities.common.EntersBattlefieldTappedUnlessAbility;
|
||||
import mage.abilities.condition.common.YouControlPermanentCondition;
|
||||
import mage.abilities.mana.BlueManaAbility;
|
||||
import mage.abilities.mana.WhiteManaAbility;
|
||||
import mage.cards.CardImpl;
|
||||
|
|
@ -19,24 +15,28 @@ import mage.filter.predicate.Predicates;
|
|||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author BetaSteward_at_googlemail.com
|
||||
*/
|
||||
public final class GlacialFortress extends CardImpl {
|
||||
|
||||
private static final FilterLandPermanent filter = new FilterLandPermanent();
|
||||
private static final FilterLandPermanent filter = new FilterLandPermanent("a Plains or an Island");
|
||||
|
||||
static {
|
||||
filter.add(Predicates.or(SubType.PLAINS.getPredicate(), SubType.ISLAND.getPredicate()));
|
||||
}
|
||||
|
||||
private static final YouControlPermanentCondition condition = new YouControlPermanentCondition(filter);
|
||||
|
||||
public GlacialFortress(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.LAND}, null);
|
||||
|
||||
Condition controls = new InvertCondition(new PermanentsOnTheBattlefieldCondition(filter));
|
||||
String abilityText = " tapped unless you control a Plains or an Island";
|
||||
this.addAbility(new EntersBattlefieldAbility(new ConditionalOneShotEffect(new TapSourceEffect(), controls, abilityText), abilityText));
|
||||
// Glacial Fortress enters the battlefield tapped unless you control a Plains or an Island.
|
||||
this.addAbility(new EntersBattlefieldTappedUnlessAbility(condition).addHint(condition.getHint()));
|
||||
|
||||
// {T}: Add {U}.
|
||||
this.addAbility(new BlueManaAbility());
|
||||
|
||||
// {T}: Add {W}.
|
||||
this.addAbility(new WhiteManaAbility());
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,17 +1,15 @@
|
|||
package mage.cards.h;
|
||||
|
||||
import mage.abilities.common.EntersBattlefieldAbility;
|
||||
import mage.abilities.condition.Condition;
|
||||
import mage.abilities.condition.common.PermanentsOnTheBattlefieldCondition;
|
||||
import mage.abilities.decorator.ConditionalOneShotEffect;
|
||||
import mage.abilities.effects.common.TapSourceEffect;
|
||||
import mage.abilities.common.EntersBattlefieldTappedUnlessAbility;
|
||||
import mage.abilities.condition.common.YouControlPermanentCondition;
|
||||
import mage.abilities.mana.BlackManaAbility;
|
||||
import mage.abilities.mana.RedManaAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.ComparisonType;
|
||||
import mage.filter.StaticFilters;
|
||||
import mage.filter.common.FilterLandPermanent;
|
||||
import mage.filter.predicate.mageobject.AnotherPredicate;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
|
|
@ -20,21 +18,25 @@ import java.util.UUID;
|
|||
*/
|
||||
public final class HauntedRidge extends CardImpl {
|
||||
|
||||
private static final Condition condition = new PermanentsOnTheBattlefieldCondition(
|
||||
StaticFilters.FILTER_LANDS, ComparisonType.FEWER_THAN, 2
|
||||
);
|
||||
private static final FilterLandPermanent filter = new FilterLandPermanent("other lands");
|
||||
|
||||
static {
|
||||
filter.add(AnotherPredicate.instance);
|
||||
}
|
||||
|
||||
private static final YouControlPermanentCondition condition =
|
||||
new YouControlPermanentCondition(filter, ComparisonType.OR_GREATER, 2);
|
||||
|
||||
public HauntedRidge(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.LAND}, "");
|
||||
|
||||
// Haunted Ridge enters the battlefield tapped unless you control two or more other lands.
|
||||
this.addAbility(new EntersBattlefieldAbility(
|
||||
new ConditionalOneShotEffect(new TapSourceEffect(), condition),
|
||||
"tapped unless you control two or more other lands"
|
||||
));
|
||||
this.addAbility(new EntersBattlefieldTappedUnlessAbility(condition).addHint(condition.getHint()));
|
||||
|
||||
// {T}: Add {B} or {R}.
|
||||
// {T}: Add {B}.
|
||||
this.addAbility(new BlackManaAbility());
|
||||
|
||||
// {T}: Add {R}.
|
||||
this.addAbility(new RedManaAbility());
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,12 +1,8 @@
|
|||
|
||||
package mage.cards.h;
|
||||
|
||||
import mage.abilities.common.EntersBattlefieldAbility;
|
||||
import mage.abilities.condition.Condition;
|
||||
import mage.abilities.condition.InvertCondition;
|
||||
import mage.abilities.condition.common.PermanentsOnTheBattlefieldCondition;
|
||||
import mage.abilities.decorator.ConditionalOneShotEffect;
|
||||
import mage.abilities.effects.common.TapSourceEffect;
|
||||
import mage.abilities.common.EntersBattlefieldTappedUnlessAbility;
|
||||
import mage.abilities.condition.common.YouControlPermanentCondition;
|
||||
import mage.abilities.mana.BlueManaAbility;
|
||||
import mage.abilities.mana.GreenManaAbility;
|
||||
import mage.cards.CardImpl;
|
||||
|
|
@ -23,19 +19,24 @@ import java.util.UUID;
|
|||
*/
|
||||
public final class HinterlandHarbor extends CardImpl {
|
||||
|
||||
private static final FilterLandPermanent filter = new FilterLandPermanent();
|
||||
private static final FilterLandPermanent filter = new FilterLandPermanent("a Forest or an Island");
|
||||
|
||||
static {
|
||||
filter.add(Predicates.or(SubType.FOREST.getPredicate(), SubType.ISLAND.getPredicate()));
|
||||
}
|
||||
|
||||
private static final YouControlPermanentCondition condition = new YouControlPermanentCondition(filter);
|
||||
|
||||
public HinterlandHarbor(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.LAND}, null);
|
||||
|
||||
Condition controls = new InvertCondition(new PermanentsOnTheBattlefieldCondition(filter));
|
||||
String abilityText = " tapped unless you control a Forest or an Island";
|
||||
this.addAbility(new EntersBattlefieldAbility(new ConditionalOneShotEffect(new TapSourceEffect(), controls, abilityText), abilityText));
|
||||
// Hinterland Harbor enters the battlefield tapped unless you control a Forest or an Island.
|
||||
this.addAbility(new EntersBattlefieldTappedUnlessAbility(condition).addHint(condition.getHint()));
|
||||
|
||||
// {T}: Add {G}.
|
||||
this.addAbility(new GreenManaAbility());
|
||||
|
||||
// {T}: Add {U}.
|
||||
this.addAbility(new BlueManaAbility());
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,12 +1,10 @@
|
|||
package mage.cards.h;
|
||||
|
||||
import mage.MageInt;
|
||||
import mage.abilities.common.EntersBattlefieldAbility;
|
||||
import mage.abilities.condition.common.NotMyTurnCondition;
|
||||
import mage.abilities.common.EntersBattlefieldTappedUnlessAbility;
|
||||
import mage.abilities.condition.common.MyTurnCondition;
|
||||
import mage.abilities.costs.mana.ManaCostsImpl;
|
||||
import mage.abilities.decorator.ConditionalOneShotEffect;
|
||||
import mage.abilities.effects.common.PutOnTopOrBottomLibraryTargetEffect;
|
||||
import mage.abilities.effects.common.TapSourceEffect;
|
||||
import mage.abilities.keyword.FlashAbility;
|
||||
import mage.abilities.keyword.WardAbility;
|
||||
import mage.cards.AdventureCard;
|
||||
|
|
@ -45,10 +43,7 @@ public final class HornedLochWhale extends AdventureCard {
|
|||
this.addAbility(new WardAbility(new ManaCostsImpl<>("{2}"), false));
|
||||
|
||||
// Horned Loch-Whale enters the battlefield tapped unless it's your turn.
|
||||
this.addAbility(new EntersBattlefieldAbility(new ConditionalOneShotEffect(
|
||||
new TapSourceEffect(true), NotMyTurnCondition.instance,
|
||||
"tapped unless it's your turn"
|
||||
)));
|
||||
this.addAbility(new EntersBattlefieldTappedUnlessAbility(MyTurnCondition.instance, "it's your turn"));
|
||||
|
||||
// Lagoon Breach
|
||||
// The owner of target attacking creature you don't control puts it on the top or bottom of their library.
|
||||
|
|
|
|||
|
|
@ -1,12 +1,9 @@
|
|||
package mage.cards.i;
|
||||
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.common.EntersBattlefieldAbility;
|
||||
import mage.abilities.common.EntersBattlefieldTappedUnlessAbility;
|
||||
import mage.abilities.common.EntersBattlefieldUntappedTriggeredAbility;
|
||||
import mage.abilities.condition.Condition;
|
||||
import mage.abilities.condition.common.PermanentsOnTheBattlefieldCondition;
|
||||
import mage.abilities.decorator.ConditionalOneShotEffect;
|
||||
import mage.abilities.effects.common.TapSourceEffect;
|
||||
import mage.abilities.condition.common.YouControlPermanentCondition;
|
||||
import mage.abilities.effects.common.counter.AddCountersTargetEffect;
|
||||
import mage.abilities.mana.WhiteManaAbility;
|
||||
import mage.cards.CardImpl;
|
||||
|
|
@ -28,13 +25,14 @@ import java.util.UUID;
|
|||
public final class IdyllicGrange extends CardImpl {
|
||||
|
||||
private static final FilterPermanent filter
|
||||
= new FilterControlledPermanent(SubType.PLAINS);
|
||||
= new FilterControlledPermanent(SubType.PLAINS, "other Plains");
|
||||
|
||||
static {
|
||||
filter.add(AnotherPredicate.instance);
|
||||
}
|
||||
private static final Condition condition
|
||||
= new PermanentsOnTheBattlefieldCondition(filter, ComparisonType.FEWER_THAN, 3);
|
||||
|
||||
private static final YouControlPermanentCondition condition
|
||||
= new YouControlPermanentCondition(filter, ComparisonType.OR_GREATER, 3);
|
||||
|
||||
public IdyllicGrange(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.LAND}, "");
|
||||
|
|
@ -45,10 +43,7 @@ public final class IdyllicGrange extends CardImpl {
|
|||
this.addAbility(new WhiteManaAbility());
|
||||
|
||||
// Idyllic Grange enters the battlefield tapped unless you control three or more other Plains.
|
||||
this.addAbility(new EntersBattlefieldAbility(
|
||||
new ConditionalOneShotEffect(new TapSourceEffect(), condition),
|
||||
"tapped unless you control three or more other Plains"
|
||||
));
|
||||
this.addAbility(new EntersBattlefieldTappedUnlessAbility(condition).addHint(condition.getHint()));
|
||||
|
||||
// When Idyllic Grange enters the battlefield untapped, put a +1/+1 counter on target creature you control.
|
||||
Ability ability = new EntersBattlefieldUntappedTriggeredAbility(
|
||||
|
|
|
|||
|
|
@ -1,36 +1,43 @@
|
|||
|
||||
package mage.cards.i;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.abilities.common.EntersBattlefieldAbility;
|
||||
import mage.abilities.condition.Condition;
|
||||
import mage.abilities.condition.InvertCondition;
|
||||
import mage.abilities.condition.common.PermanentsOnTheBattlefieldCondition;
|
||||
import mage.abilities.decorator.ConditionalOneShotEffect;
|
||||
import mage.abilities.effects.common.TapSourceEffect;
|
||||
import mage.abilities.common.EntersBattlefieldTappedUnlessAbility;
|
||||
import mage.abilities.condition.common.YouControlPermanentCondition;
|
||||
import mage.abilities.mana.RedManaAbility;
|
||||
import mage.abilities.mana.WhiteManaAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.ComparisonType;
|
||||
import mage.filter.StaticFilters;
|
||||
import mage.filter.common.FilterLandPermanent;
|
||||
import mage.filter.predicate.mageobject.AnotherPredicate;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
* @author fireshoes
|
||||
*/
|
||||
public final class InspiringVantage extends CardImpl {
|
||||
|
||||
private static final FilterLandPermanent filter = new FilterLandPermanent("other lands");
|
||||
|
||||
static {
|
||||
filter.add(AnotherPredicate.instance);
|
||||
}
|
||||
|
||||
private static final YouControlPermanentCondition condition =
|
||||
new YouControlPermanentCondition(filter, ComparisonType.OR_LESS, 2);
|
||||
|
||||
public InspiringVantage(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.LAND}, "");
|
||||
|
||||
// Inspiring Vantage enters the battlefield tapped unless you control two or fewer other lands.
|
||||
Condition controls = new InvertCondition(new PermanentsOnTheBattlefieldCondition(StaticFilters.FILTER_LANDS, ComparisonType.FEWER_THAN, 3));
|
||||
String abilityText = " tapped unless you control two or fewer other lands";
|
||||
this.addAbility(new EntersBattlefieldAbility(new ConditionalOneShotEffect(new TapSourceEffect(), controls, abilityText), abilityText));
|
||||
this.addAbility(new EntersBattlefieldTappedUnlessAbility(condition).addHint(condition.getHint()));
|
||||
|
||||
// {T}: Add {R} or {W}.
|
||||
// {T}: Add {R}.
|
||||
this.addAbility(new RedManaAbility());
|
||||
|
||||
// {T}: Add {W}.
|
||||
this.addAbility(new WhiteManaAbility());
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -2,12 +2,8 @@
|
|||
|
||||
package mage.cards.i;
|
||||
|
||||
import mage.abilities.common.EntersBattlefieldAbility;
|
||||
import mage.abilities.condition.Condition;
|
||||
import mage.abilities.condition.InvertCondition;
|
||||
import mage.abilities.condition.common.PermanentsOnTheBattlefieldCondition;
|
||||
import mage.abilities.decorator.ConditionalOneShotEffect;
|
||||
import mage.abilities.effects.common.TapSourceEffect;
|
||||
import mage.abilities.common.EntersBattlefieldTappedUnlessAbility;
|
||||
import mage.abilities.condition.common.YouControlPermanentCondition;
|
||||
import mage.abilities.mana.BlackManaAbility;
|
||||
import mage.abilities.mana.WhiteManaAbility;
|
||||
import mage.cards.CardImpl;
|
||||
|
|
@ -24,19 +20,24 @@ import java.util.UUID;
|
|||
*/
|
||||
public final class IsolatedChapel extends CardImpl {
|
||||
|
||||
private static final FilterLandPermanent filter = new FilterLandPermanent();
|
||||
private static final FilterLandPermanent filter = new FilterLandPermanent("a Plains or a Swamp");
|
||||
|
||||
static {
|
||||
filter.add(Predicates.or(SubType.PLAINS.getPredicate(), SubType.SWAMP.getPredicate()));
|
||||
}
|
||||
|
||||
public IsolatedChapel(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId,setInfo,new CardType[]{CardType.LAND},null);
|
||||
private static final YouControlPermanentCondition condition = new YouControlPermanentCondition(filter);
|
||||
|
||||
Condition controls = new InvertCondition(new PermanentsOnTheBattlefieldCondition(filter));
|
||||
String abilityText = " tapped unless you control a Plains or a Swamp";
|
||||
this.addAbility(new EntersBattlefieldAbility(new ConditionalOneShotEffect(new TapSourceEffect(), controls, abilityText), abilityText));
|
||||
public IsolatedChapel(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.LAND}, null);
|
||||
|
||||
// Isolated Chapel enters the battlefield tapped unless you control a Plains or a Swamp.
|
||||
this.addAbility(new EntersBattlefieldTappedUnlessAbility(condition).addHint(condition.getHint()));
|
||||
|
||||
// {T}: Add {W}.
|
||||
this.addAbility(new WhiteManaAbility());
|
||||
|
||||
// {T}: Add {B}.
|
||||
this.addAbility(new BlackManaAbility());
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,19 +1,17 @@
|
|||
|
||||
package mage.cards.l;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.abilities.common.EntersBattlefieldAbility;
|
||||
import mage.abilities.condition.common.OneOpponentCondition;
|
||||
import mage.abilities.decorator.ConditionalOneShotEffect;
|
||||
import mage.abilities.effects.common.TapSourceEffect;
|
||||
import mage.abilities.common.EntersBattlefieldTappedUnlessAbility;
|
||||
import mage.abilities.condition.common.TwoOrMoreOpponentsCondition;
|
||||
import mage.abilities.mana.BlackManaAbility;
|
||||
import mage.abilities.mana.RedManaAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author TheElk801
|
||||
*/
|
||||
public final class LuxurySuite extends CardImpl {
|
||||
|
|
@ -22,16 +20,12 @@ public final class LuxurySuite extends CardImpl {
|
|||
super(ownerId, setInfo, new CardType[]{CardType.LAND}, "");
|
||||
|
||||
// Luxury Suite enters the battlefield tapped unless you have two or more opponents.
|
||||
this.addAbility(new EntersBattlefieldAbility(
|
||||
new ConditionalOneShotEffect(
|
||||
new TapSourceEffect(),
|
||||
OneOpponentCondition.instance,
|
||||
"tapped unless you have two or more opponents"
|
||||
), "tapped unless you have two or more opponents"
|
||||
));
|
||||
this.addAbility(new EntersBattlefieldTappedUnlessAbility(TwoOrMoreOpponentsCondition.instance));
|
||||
|
||||
// {T}: Add {B} or {R}.
|
||||
// {T}: Add {B}.
|
||||
this.addAbility(new BlackManaAbility());
|
||||
|
||||
// {T}: Add {R}.
|
||||
this.addAbility(new RedManaAbility());
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -2,21 +2,21 @@ package mage.cards.m;
|
|||
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.common.ActivateIfConditionActivatedAbility;
|
||||
import mage.abilities.common.EntersBattlefieldAbility;
|
||||
import mage.abilities.common.EntersBattlefieldTappedUnlessAbility;
|
||||
import mage.abilities.condition.Condition;
|
||||
import mage.abilities.condition.InvertCondition;
|
||||
import mage.abilities.condition.common.PermanentsOnTheBattlefieldCondition;
|
||||
import mage.abilities.condition.common.YouControlPermanentCondition;
|
||||
import mage.abilities.costs.common.TapSourceCost;
|
||||
import mage.abilities.costs.mana.ManaCostsImpl;
|
||||
import mage.abilities.decorator.ConditionalOneShotEffect;
|
||||
import mage.abilities.effects.common.DrawCardSourceControllerEffect;
|
||||
import mage.abilities.effects.common.TapSourceEffect;
|
||||
import mage.abilities.hint.ConditionHint;
|
||||
import mage.abilities.hint.Hint;
|
||||
import mage.abilities.mana.WhiteManaAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.*;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.SuperType;
|
||||
import mage.constants.WatcherScope;
|
||||
import mage.constants.Zone;
|
||||
import mage.filter.FilterPermanent;
|
||||
import mage.filter.common.FilterControlledCreaturePermanent;
|
||||
import mage.game.Game;
|
||||
|
|
@ -33,15 +33,13 @@ import java.util.UUID;
|
|||
*/
|
||||
public final class MinasTirith extends CardImpl {
|
||||
|
||||
private static final FilterPermanent filter = new FilterControlledCreaturePermanent();
|
||||
private static final FilterPermanent filter = new FilterControlledCreaturePermanent("a legendary creature");
|
||||
|
||||
static {
|
||||
filter.add(SuperType.LEGENDARY.getPredicate());
|
||||
}
|
||||
|
||||
private static final Condition condition
|
||||
= new PermanentsOnTheBattlefieldCondition(filter, ComparisonType.EQUAL_TO, 0);
|
||||
private static final Hint hint = new ConditionHint( new InvertCondition(condition), "You control a legendary creature");
|
||||
private static final YouControlPermanentCondition condition = new YouControlPermanentCondition(filter);
|
||||
|
||||
public MinasTirith(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.LAND}, "");
|
||||
|
|
@ -49,10 +47,7 @@ public final class MinasTirith extends CardImpl {
|
|||
this.supertype.add(SuperType.LEGENDARY);
|
||||
|
||||
// Minas Tirith enters the battlefield tapped unless you control a legendary creature.
|
||||
this.addAbility(new EntersBattlefieldAbility(
|
||||
new ConditionalOneShotEffect(new TapSourceEffect(), condition, ""),
|
||||
"tapped unless you control a legendary creature"
|
||||
).addHint(hint));
|
||||
this.addAbility(new EntersBattlefieldTappedUnlessAbility(condition).addHint(condition.getHint()));
|
||||
|
||||
// {T}: Add {W}.
|
||||
this.addAbility(new WhiteManaAbility());
|
||||
|
|
|
|||
|
|
@ -1,24 +1,17 @@
|
|||
package mage.cards.m;
|
||||
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.common.EntersBattlefieldAbility;
|
||||
import mage.abilities.common.EntersBattlefieldTappedUnlessAbility;
|
||||
import mage.abilities.common.SimpleActivatedAbility;
|
||||
import mage.abilities.condition.Condition;
|
||||
import mage.abilities.condition.InvertCondition;
|
||||
import mage.abilities.condition.common.PermanentsOnTheBattlefieldCondition;
|
||||
import mage.abilities.condition.common.YouControlPermanentCondition;
|
||||
import mage.abilities.costs.common.ExileFromGraveCost;
|
||||
import mage.abilities.costs.common.TapSourceCost;
|
||||
import mage.abilities.costs.mana.ManaCostsImpl;
|
||||
import mage.abilities.decorator.ConditionalOneShotEffect;
|
||||
import mage.abilities.effects.common.CreateTokenEffect;
|
||||
import mage.abilities.effects.common.TapSourceEffect;
|
||||
import mage.abilities.hint.ConditionHint;
|
||||
import mage.abilities.hint.Hint;
|
||||
import mage.abilities.mana.RedManaAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.ComparisonType;
|
||||
import mage.constants.SuperType;
|
||||
import mage.filter.FilterPermanent;
|
||||
import mage.filter.common.FilterControlledCreaturePermanent;
|
||||
|
|
@ -32,15 +25,13 @@ import java.util.UUID;
|
|||
*/
|
||||
public final class MinesOfMoria extends CardImpl {
|
||||
|
||||
private static final FilterPermanent filter = new FilterControlledCreaturePermanent();
|
||||
private static final FilterPermanent filter = new FilterControlledCreaturePermanent("a legendary creature");
|
||||
|
||||
static {
|
||||
filter.add(SuperType.LEGENDARY.getPredicate());
|
||||
}
|
||||
|
||||
private static final Condition condition
|
||||
= new PermanentsOnTheBattlefieldCondition(filter, ComparisonType.EQUAL_TO, 0);
|
||||
private static final Hint hint = new ConditionHint( new InvertCondition(condition), "You control a legendary creature");
|
||||
private static final YouControlPermanentCondition condition = new YouControlPermanentCondition(filter);
|
||||
|
||||
public MinesOfMoria(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.LAND}, "");
|
||||
|
|
@ -48,10 +39,7 @@ public final class MinesOfMoria extends CardImpl {
|
|||
this.supertype.add(SuperType.LEGENDARY);
|
||||
|
||||
// Mines of Moria enters the battlefield tapped unless you control a legendary creature.
|
||||
this.addAbility(new EntersBattlefieldAbility(
|
||||
new ConditionalOneShotEffect(new TapSourceEffect(), condition, ""),
|
||||
"tapped unless you control a legendary creature"
|
||||
).addHint(hint));
|
||||
this.addAbility(new EntersBattlefieldTappedUnlessAbility(condition).addHint(condition.getHint()));
|
||||
|
||||
// {T}: Add {R}.
|
||||
this.addAbility(new RedManaAbility());
|
||||
|
|
|
|||
|
|
@ -1,24 +1,19 @@
|
|||
package mage.cards.m;
|
||||
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.common.EntersBattlefieldAbility;
|
||||
import mage.abilities.common.EntersBattlefieldTappedUnlessAbility;
|
||||
import mage.abilities.common.SimpleActivatedAbility;
|
||||
import mage.abilities.condition.Condition;
|
||||
import mage.abilities.condition.common.PermanentsOnTheBattlefieldCondition;
|
||||
import mage.abilities.condition.common.YouControlPermanentCondition;
|
||||
import mage.abilities.costs.common.TapSourceCost;
|
||||
import mage.abilities.costs.mana.ManaCostsImpl;
|
||||
import mage.abilities.decorator.ConditionalOneShotEffect;
|
||||
import mage.abilities.effects.common.LookLibraryAndPickControllerEffect;
|
||||
import mage.abilities.effects.common.TapSourceEffect;
|
||||
import mage.abilities.mana.WhiteManaAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.ComparisonType;
|
||||
import mage.constants.PutCards;
|
||||
import mage.constants.SubType;
|
||||
import mage.filter.FilterCard;
|
||||
import mage.filter.FilterPermanent;
|
||||
import mage.filter.common.FilterControlledPermanent;
|
||||
import mage.filter.predicate.mageobject.HistoricPredicate;
|
||||
|
||||
|
|
@ -29,9 +24,8 @@ import java.util.UUID;
|
|||
*/
|
||||
public final class MonumentalHenge extends CardImpl {
|
||||
|
||||
private static final FilterPermanent filter = new FilterControlledPermanent(SubType.PLAINS);
|
||||
private static final Condition condition
|
||||
= new PermanentsOnTheBattlefieldCondition(filter, ComparisonType.EQUAL_TO, 0);
|
||||
private static final FilterControlledPermanent filter = new FilterControlledPermanent(SubType.PLAINS);
|
||||
private static final YouControlPermanentCondition condition = new YouControlPermanentCondition(filter);
|
||||
|
||||
private static final FilterCard filterCard = new FilterCard("a historic card");
|
||||
|
||||
|
|
@ -43,9 +37,7 @@ public final class MonumentalHenge extends CardImpl {
|
|||
super(ownerId, setInfo, new CardType[]{CardType.LAND}, "");
|
||||
|
||||
// Monumental Henge enters the battlefield tapped unless you control a Plains.
|
||||
this.addAbility(new EntersBattlefieldAbility(new ConditionalOneShotEffect(
|
||||
new TapSourceEffect(), condition
|
||||
), "tapped unless you control a Plains"));
|
||||
this.addAbility(new EntersBattlefieldTappedUnlessAbility(condition).addHint(condition.getHint()));
|
||||
|
||||
// {T}: Add {W}.
|
||||
this.addAbility(new WhiteManaAbility());
|
||||
|
|
|
|||
|
|
@ -1,19 +1,17 @@
|
|||
|
||||
package mage.cards.m;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.abilities.common.EntersBattlefieldAbility;
|
||||
import mage.abilities.condition.common.OneOpponentCondition;
|
||||
import mage.abilities.decorator.ConditionalOneShotEffect;
|
||||
import mage.abilities.effects.common.TapSourceEffect;
|
||||
import mage.abilities.common.EntersBattlefieldTappedUnlessAbility;
|
||||
import mage.abilities.condition.common.TwoOrMoreOpponentsCondition;
|
||||
import mage.abilities.mana.BlackManaAbility;
|
||||
import mage.abilities.mana.BlueManaAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author TheElk801
|
||||
*/
|
||||
public final class MorphicPool extends CardImpl {
|
||||
|
|
@ -22,16 +20,12 @@ public final class MorphicPool extends CardImpl {
|
|||
super(ownerId, setInfo, new CardType[]{CardType.LAND}, "");
|
||||
|
||||
// Morphic Pool enters the battlefield tapped unless you have two or more opponents.
|
||||
this.addAbility(new EntersBattlefieldAbility(
|
||||
new ConditionalOneShotEffect(
|
||||
new TapSourceEffect(),
|
||||
OneOpponentCondition.instance,
|
||||
"tapped unless you have two or more opponents"
|
||||
), "tapped unless you have two or more opponents"
|
||||
));
|
||||
this.addAbility(new EntersBattlefieldTappedUnlessAbility(TwoOrMoreOpponentsCondition.instance));
|
||||
|
||||
// {T}: Add {U} or {B}.
|
||||
// {T}: Add {U}.
|
||||
this.addAbility(new BlueManaAbility());
|
||||
|
||||
// {T}: Add {B}.
|
||||
this.addAbility(new BlackManaAbility());
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,13 +1,10 @@
|
|||
package mage.cards.m;
|
||||
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.common.EntersBattlefieldAbility;
|
||||
import mage.abilities.common.EntersBattlefieldTappedUnlessAbility;
|
||||
import mage.abilities.common.EntersBattlefieldUntappedTriggeredAbility;
|
||||
import mage.abilities.condition.Condition;
|
||||
import mage.abilities.condition.common.PermanentsOnTheBattlefieldCondition;
|
||||
import mage.abilities.decorator.ConditionalOneShotEffect;
|
||||
import mage.abilities.condition.common.YouControlPermanentCondition;
|
||||
import mage.abilities.effects.common.PutOnLibraryTargetEffect;
|
||||
import mage.abilities.effects.common.TapSourceEffect;
|
||||
import mage.abilities.mana.BlueManaAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
|
|
@ -29,7 +26,7 @@ import java.util.UUID;
|
|||
public final class MysticSanctuary extends CardImpl {
|
||||
|
||||
private static final FilterPermanent filter
|
||||
= new FilterControlledPermanent(SubType.ISLAND);
|
||||
= new FilterControlledPermanent(SubType.ISLAND, "other Islands");
|
||||
private static final FilterCard filter2
|
||||
= new FilterInstantOrSorceryCard("instant or sorcery card from your graveyard");
|
||||
|
||||
|
|
@ -37,8 +34,8 @@ public final class MysticSanctuary extends CardImpl {
|
|||
filter.add(AnotherPredicate.instance);
|
||||
}
|
||||
|
||||
private static final Condition condition
|
||||
= new PermanentsOnTheBattlefieldCondition(filter, ComparisonType.FEWER_THAN, 3);
|
||||
private static final YouControlPermanentCondition condition
|
||||
= new YouControlPermanentCondition(filter, ComparisonType.OR_GREATER, 3);
|
||||
|
||||
public MysticSanctuary(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.LAND}, "");
|
||||
|
|
@ -49,10 +46,7 @@ public final class MysticSanctuary extends CardImpl {
|
|||
this.addAbility(new BlueManaAbility());
|
||||
|
||||
// Mystic Sanctuary enters the battlefield tapped unless you control three or more other Islands.
|
||||
this.addAbility(new EntersBattlefieldAbility(
|
||||
new ConditionalOneShotEffect(new TapSourceEffect(), condition),
|
||||
"tapped unless you control three or more other Islands"
|
||||
));
|
||||
this.addAbility(new EntersBattlefieldTappedUnlessAbility(condition).addHint(condition.getHint()));
|
||||
|
||||
// When Mystic Sanctuary enters the battlefield untapped, you may put target instant or sorcery card from your graveyard on top of your library.
|
||||
Ability ability = new EntersBattlefieldUntappedTriggeredAbility(
|
||||
|
|
|
|||
|
|
@ -1,17 +1,15 @@
|
|||
package mage.cards.o;
|
||||
|
||||
import mage.abilities.common.EntersBattlefieldAbility;
|
||||
import mage.abilities.condition.Condition;
|
||||
import mage.abilities.condition.common.PermanentsOnTheBattlefieldCondition;
|
||||
import mage.abilities.decorator.ConditionalOneShotEffect;
|
||||
import mage.abilities.effects.common.TapSourceEffect;
|
||||
import mage.abilities.common.EntersBattlefieldTappedUnlessAbility;
|
||||
import mage.abilities.condition.common.YouControlPermanentCondition;
|
||||
import mage.abilities.mana.GreenManaAbility;
|
||||
import mage.abilities.mana.WhiteManaAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.ComparisonType;
|
||||
import mage.filter.StaticFilters;
|
||||
import mage.filter.common.FilterLandPermanent;
|
||||
import mage.filter.predicate.mageobject.AnotherPredicate;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
|
|
@ -20,21 +18,25 @@ import java.util.UUID;
|
|||
*/
|
||||
public final class OvergrownFarmland extends CardImpl {
|
||||
|
||||
private static final Condition condition = new PermanentsOnTheBattlefieldCondition(
|
||||
StaticFilters.FILTER_LANDS, ComparisonType.FEWER_THAN, 2
|
||||
);
|
||||
private static final FilterLandPermanent filter = new FilterLandPermanent("other lands");
|
||||
|
||||
static {
|
||||
filter.add(AnotherPredicate.instance);
|
||||
}
|
||||
|
||||
private static final YouControlPermanentCondition condition =
|
||||
new YouControlPermanentCondition(filter, ComparisonType.OR_GREATER, 2);
|
||||
|
||||
public OvergrownFarmland(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.LAND}, "");
|
||||
|
||||
// Overgrown Farmland enters the battlefield tapped unless you control two or more other lands.
|
||||
this.addAbility(new EntersBattlefieldAbility(
|
||||
new ConditionalOneShotEffect(new TapSourceEffect(), condition),
|
||||
"tapped unless you control two or more other lands"
|
||||
));
|
||||
this.addAbility(new EntersBattlefieldTappedUnlessAbility(condition).addHint(condition.getHint()));
|
||||
|
||||
// {T}: Add {G} or {W}.
|
||||
// {T}: Add {G}.
|
||||
this.addAbility(new GreenManaAbility());
|
||||
|
||||
// {T}: Add {W}.
|
||||
this.addAbility(new WhiteManaAbility());
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,45 +1,46 @@
|
|||
|
||||
package mage.cards.p;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.abilities.common.EntersBattlefieldAbility;
|
||||
import mage.abilities.condition.Condition;
|
||||
import mage.abilities.condition.InvertCondition;
|
||||
import mage.abilities.condition.common.PermanentsOnTheBattlefieldCondition;
|
||||
import mage.abilities.decorator.ConditionalOneShotEffect;
|
||||
import mage.abilities.effects.common.TapSourceEffect;
|
||||
import mage.abilities.common.EntersBattlefieldTappedUnlessAbility;
|
||||
import mage.abilities.condition.common.YouControlPermanentCondition;
|
||||
import mage.abilities.mana.BlueManaAbility;
|
||||
import mage.abilities.mana.WhiteManaAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.SubType;
|
||||
import mage.constants.ComparisonType;
|
||||
import mage.constants.SubType;
|
||||
import mage.constants.SuperType;
|
||||
import mage.filter.common.FilterLandPermanent;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author fireshoes
|
||||
*/
|
||||
public final class PrairieStream extends CardImpl {
|
||||
|
||||
private static final FilterLandPermanent filter = new FilterLandPermanent();
|
||||
|
||||
|
||||
private static final FilterLandPermanent filter = new FilterLandPermanent("basic lands");
|
||||
|
||||
static {
|
||||
filter.add(SuperType.BASIC.getPredicate());
|
||||
}
|
||||
|
||||
private static final YouControlPermanentCondition condition =
|
||||
new YouControlPermanentCondition(filter, ComparisonType.OR_GREATER, 2);
|
||||
|
||||
public PrairieStream(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.ISLAND);
|
||||
|
||||
// Prairie Stream enters the battlefield tapped unless you control two or more basic lands.
|
||||
Condition controls = new InvertCondition(new PermanentsOnTheBattlefieldCondition(filter, ComparisonType.MORE_THAN, 1));
|
||||
String abilityText = "tapped unless you control two or more basic lands";
|
||||
this.addAbility(new EntersBattlefieldAbility(new ConditionalOneShotEffect(new TapSourceEffect(), controls, abilityText), abilityText));
|
||||
this.addAbility(new EntersBattlefieldTappedUnlessAbility(condition).addHint(condition.getHint()));
|
||||
|
||||
// {T}: Add {W}.
|
||||
this.addAbility(new WhiteManaAbility());
|
||||
|
||||
// {T}: Add {U}.
|
||||
this.addAbility(new BlueManaAbility());
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,35 +1,43 @@
|
|||
|
||||
package mage.cards.r;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.abilities.common.EntersBattlefieldAbility;
|
||||
import mage.abilities.condition.Condition;
|
||||
import mage.abilities.condition.InvertCondition;
|
||||
import mage.abilities.condition.common.PermanentsOnTheBattlefieldCondition;
|
||||
import mage.abilities.decorator.ConditionalOneShotEffect;
|
||||
import mage.abilities.effects.common.TapSourceEffect;
|
||||
import mage.abilities.common.EntersBattlefieldTappedUnlessAbility;
|
||||
import mage.abilities.condition.common.YouControlPermanentCondition;
|
||||
import mage.abilities.mana.GreenManaAbility;
|
||||
import mage.abilities.mana.WhiteManaAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.ComparisonType;
|
||||
import mage.filter.StaticFilters;
|
||||
import mage.filter.common.FilterLandPermanent;
|
||||
import mage.filter.predicate.mageobject.AnotherPredicate;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author maurer.it_at_gmail.com
|
||||
*/
|
||||
public final class RazorvergeThicket extends CardImpl {
|
||||
|
||||
private static final FilterLandPermanent filter = new FilterLandPermanent("other lands");
|
||||
|
||||
static {
|
||||
filter.add(AnotherPredicate.instance);
|
||||
}
|
||||
|
||||
private static final YouControlPermanentCondition condition =
|
||||
new YouControlPermanentCondition(filter, ComparisonType.OR_LESS, 2);
|
||||
|
||||
public RazorvergeThicket(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.LAND}, null);
|
||||
|
||||
Condition controls = new InvertCondition(new PermanentsOnTheBattlefieldCondition(StaticFilters.FILTER_LANDS, ComparisonType.FEWER_THAN, 3));
|
||||
String abilityText = " tapped unless you control two or fewer other lands";
|
||||
this.addAbility(new EntersBattlefieldAbility(new ConditionalOneShotEffect(new TapSourceEffect(), controls, abilityText), abilityText));
|
||||
// Razorverge Thicket enters the battlefield tapped unless you control two or fewer other lands.
|
||||
this.addAbility(new EntersBattlefieldTappedUnlessAbility(condition).addHint(condition.getHint()));
|
||||
|
||||
// {T}: Add {G}.
|
||||
this.addAbility(new GreenManaAbility());
|
||||
|
||||
// {T}: Add {W}.
|
||||
this.addAbility(new WhiteManaAbility());
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,9 +1,7 @@
|
|||
package mage.cards.r;
|
||||
|
||||
import mage.abilities.common.EntersBattlefieldAbility;
|
||||
import mage.abilities.condition.common.OneOpponentCondition;
|
||||
import mage.abilities.decorator.ConditionalOneShotEffect;
|
||||
import mage.abilities.effects.common.TapSourceEffect;
|
||||
import mage.abilities.common.EntersBattlefieldTappedUnlessAbility;
|
||||
import mage.abilities.condition.common.TwoOrMoreOpponentsCondition;
|
||||
import mage.abilities.mana.BlueManaAbility;
|
||||
import mage.abilities.mana.GreenManaAbility;
|
||||
import mage.cards.CardImpl;
|
||||
|
|
@ -21,16 +19,12 @@ public final class RejuvenatingSprings extends CardImpl {
|
|||
super(ownerId, setInfo, new CardType[]{CardType.LAND}, "");
|
||||
|
||||
// Rejuvenating Springs enters the battlefield tapped unless you have two or more opponents.
|
||||
this.addAbility(new EntersBattlefieldAbility(
|
||||
new ConditionalOneShotEffect(
|
||||
new TapSourceEffect(),
|
||||
OneOpponentCondition.instance,
|
||||
"tapped unless you have two or more opponents"
|
||||
), "tapped unless you have two or more opponents"
|
||||
));
|
||||
this.addAbility(new EntersBattlefieldTappedUnlessAbility(TwoOrMoreOpponentsCondition.instance));
|
||||
|
||||
// {T}: Add {G} or {U}.
|
||||
// {T}: Add {G}.
|
||||
this.addAbility(new GreenManaAbility());
|
||||
|
||||
// {T}: Add {U}.
|
||||
this.addAbility(new BlueManaAbility());
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -2,22 +2,15 @@ package mage.cards.r;
|
|||
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.common.ActivateIfConditionActivatedAbility;
|
||||
import mage.abilities.common.EntersBattlefieldAbility;
|
||||
import mage.abilities.condition.Condition;
|
||||
import mage.abilities.condition.InvertCondition;
|
||||
import mage.abilities.condition.common.PermanentsOnTheBattlefieldCondition;
|
||||
import mage.abilities.common.EntersBattlefieldTappedUnlessAbility;
|
||||
import mage.abilities.condition.common.YouControlPermanentCondition;
|
||||
import mage.abilities.costs.common.TapSourceCost;
|
||||
import mage.abilities.costs.mana.ManaCostsImpl;
|
||||
import mage.abilities.decorator.ConditionalOneShotEffect;
|
||||
import mage.abilities.effects.common.TapSourceEffect;
|
||||
import mage.abilities.effects.keyword.ScryEffect;
|
||||
import mage.abilities.hint.ConditionHint;
|
||||
import mage.abilities.hint.Hint;
|
||||
import mage.abilities.mana.BlueManaAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.ComparisonType;
|
||||
import mage.constants.SuperType;
|
||||
import mage.constants.Zone;
|
||||
import mage.filter.FilterPermanent;
|
||||
|
|
@ -30,18 +23,13 @@ import java.util.UUID;
|
|||
*/
|
||||
public final class Rivendell extends CardImpl {
|
||||
|
||||
private static final FilterPermanent filter
|
||||
= new FilterControlledCreaturePermanent("you control a legendary creature");
|
||||
private static final FilterPermanent filter = new FilterControlledCreaturePermanent("a legendary creature");
|
||||
|
||||
static {
|
||||
filter.add(SuperType.LEGENDARY.getPredicate());
|
||||
}
|
||||
|
||||
private static final Condition condition
|
||||
= new PermanentsOnTheBattlefieldCondition(filter, ComparisonType.EQUAL_TO, 0);
|
||||
private static final Condition condition2
|
||||
= new PermanentsOnTheBattlefieldCondition(filter);
|
||||
private static final Hint hint = new ConditionHint( new InvertCondition(condition), "You control a legendary creature");
|
||||
private static final YouControlPermanentCondition condition = new YouControlPermanentCondition(filter);
|
||||
|
||||
public Rivendell(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.LAND}, "");
|
||||
|
|
@ -49,10 +37,7 @@ public final class Rivendell extends CardImpl {
|
|||
this.supertype.add(SuperType.LEGENDARY);
|
||||
|
||||
// Rivendell enters the battlefield tapped unless you control a legendary creature.
|
||||
this.addAbility(new EntersBattlefieldAbility(
|
||||
new ConditionalOneShotEffect(new TapSourceEffect(), condition, ""),
|
||||
"tapped unless you control a legendary creature"
|
||||
).addHint(hint));
|
||||
this.addAbility(new EntersBattlefieldTappedUnlessAbility(condition).addHint(condition.getHint()));
|
||||
|
||||
// {T}: Add {U}.
|
||||
this.addAbility(new BlueManaAbility());
|
||||
|
|
@ -61,7 +46,7 @@ public final class Rivendell extends CardImpl {
|
|||
Ability ability = new ActivateIfConditionActivatedAbility(
|
||||
Zone.BATTLEFIELD,
|
||||
new ScryEffect(2, false),
|
||||
new ManaCostsImpl<>("{1}{U}"), condition2
|
||||
new ManaCostsImpl<>("{1}{U}"), condition
|
||||
);
|
||||
ability.addCost(new TapSourceCost());
|
||||
this.addAbility(ability);
|
||||
|
|
|
|||
|
|
@ -1,17 +1,15 @@
|
|||
package mage.cards.r;
|
||||
|
||||
import mage.abilities.common.EntersBattlefieldAbility;
|
||||
import mage.abilities.condition.Condition;
|
||||
import mage.abilities.condition.common.PermanentsOnTheBattlefieldCondition;
|
||||
import mage.abilities.decorator.ConditionalOneShotEffect;
|
||||
import mage.abilities.effects.common.TapSourceEffect;
|
||||
import mage.abilities.common.EntersBattlefieldTappedUnlessAbility;
|
||||
import mage.abilities.condition.common.YouControlPermanentCondition;
|
||||
import mage.abilities.mana.GreenManaAbility;
|
||||
import mage.abilities.mana.RedManaAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.ComparisonType;
|
||||
import mage.filter.StaticFilters;
|
||||
import mage.filter.common.FilterLandPermanent;
|
||||
import mage.filter.predicate.mageobject.AnotherPredicate;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
|
|
@ -20,21 +18,25 @@ import java.util.UUID;
|
|||
*/
|
||||
public final class RockfallVale extends CardImpl {
|
||||
|
||||
private static final Condition condition = new PermanentsOnTheBattlefieldCondition(
|
||||
StaticFilters.FILTER_LANDS, ComparisonType.FEWER_THAN, 2
|
||||
);
|
||||
private static final FilterLandPermanent filter = new FilterLandPermanent("other lands");
|
||||
|
||||
static {
|
||||
filter.add(AnotherPredicate.instance);
|
||||
}
|
||||
|
||||
private static final YouControlPermanentCondition condition =
|
||||
new YouControlPermanentCondition(filter, ComparisonType.OR_GREATER, 2);
|
||||
|
||||
public RockfallVale(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.LAND}, "");
|
||||
|
||||
// Rockfall Vale enters the battlefield tapped unless you control two or more other lands.
|
||||
this.addAbility(new EntersBattlefieldAbility(
|
||||
new ConditionalOneShotEffect(new TapSourceEffect(), condition),
|
||||
"tapped unless you control two or more other lands"
|
||||
));
|
||||
this.addAbility(new EntersBattlefieldTappedUnlessAbility(condition).addHint(condition.getHint()));
|
||||
|
||||
// {T}: Add {R} or {G}.
|
||||
// {T}: Add {R}.
|
||||
this.addAbility(new RedManaAbility());
|
||||
|
||||
// {T}: Add {G}.
|
||||
this.addAbility(new GreenManaAbility());
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,12 +1,8 @@
|
|||
|
||||
package mage.cards.r;
|
||||
|
||||
import mage.abilities.common.EntersBattlefieldAbility;
|
||||
import mage.abilities.condition.Condition;
|
||||
import mage.abilities.condition.InvertCondition;
|
||||
import mage.abilities.condition.common.PermanentsOnTheBattlefieldCondition;
|
||||
import mage.abilities.decorator.ConditionalOneShotEffect;
|
||||
import mage.abilities.effects.common.TapSourceEffect;
|
||||
import mage.abilities.common.EntersBattlefieldTappedUnlessAbility;
|
||||
import mage.abilities.condition.common.YouControlPermanentCondition;
|
||||
import mage.abilities.mana.GreenManaAbility;
|
||||
import mage.abilities.mana.RedManaAbility;
|
||||
import mage.cards.CardImpl;
|
||||
|
|
@ -19,24 +15,28 @@ import mage.filter.predicate.Predicates;
|
|||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author BetaSteward_at_googlemail.com
|
||||
*/
|
||||
public final class RootboundCrag extends CardImpl {
|
||||
|
||||
private static final FilterLandPermanent filter = new FilterLandPermanent();
|
||||
private static final FilterLandPermanent filter = new FilterLandPermanent("a Mountain or a Forest");
|
||||
|
||||
static {
|
||||
filter.add(Predicates.or(SubType.MOUNTAIN.getPredicate(), SubType.FOREST.getPredicate()));
|
||||
}
|
||||
|
||||
private static final YouControlPermanentCondition condition = new YouControlPermanentCondition(filter);
|
||||
|
||||
public RootboundCrag(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.LAND}, null);
|
||||
|
||||
Condition controls = new InvertCondition(new PermanentsOnTheBattlefieldCondition(filter));
|
||||
String abilityText = " tapped unless you control a Mountain or a Forest";
|
||||
this.addAbility(new EntersBattlefieldAbility(new ConditionalOneShotEffect(new TapSourceEffect(), controls, abilityText), abilityText));
|
||||
// Rootbound Crag enters the battlefield tapped unless you control a Mountain or a Forest.
|
||||
this.addAbility(new EntersBattlefieldTappedUnlessAbility(condition).addHint(condition.getHint()));
|
||||
|
||||
// {T}: Add {R}.
|
||||
this.addAbility(new RedManaAbility());
|
||||
|
||||
// {T}: Add {G}.
|
||||
this.addAbility(new GreenManaAbility());
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,19 +1,17 @@
|
|||
|
||||
package mage.cards.s;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.abilities.common.EntersBattlefieldAbility;
|
||||
import mage.abilities.condition.common.OneOpponentCondition;
|
||||
import mage.abilities.decorator.ConditionalOneShotEffect;
|
||||
import mage.abilities.effects.common.TapSourceEffect;
|
||||
import mage.abilities.common.EntersBattlefieldTappedUnlessAbility;
|
||||
import mage.abilities.condition.common.TwoOrMoreOpponentsCondition;
|
||||
import mage.abilities.mana.BlueManaAbility;
|
||||
import mage.abilities.mana.WhiteManaAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author TheElk801
|
||||
*/
|
||||
public final class SeaOfClouds extends CardImpl {
|
||||
|
|
@ -22,16 +20,12 @@ public final class SeaOfClouds extends CardImpl {
|
|||
super(ownerId, setInfo, new CardType[]{CardType.LAND}, "");
|
||||
|
||||
// Sea of Clouds enters the battlefield tapped unless you have two or more opponents.
|
||||
this.addAbility(new EntersBattlefieldAbility(
|
||||
new ConditionalOneShotEffect(
|
||||
new TapSourceEffect(),
|
||||
OneOpponentCondition.instance,
|
||||
"tapped unless you have two or more opponents"
|
||||
), "tapped unless you have two or more opponents"
|
||||
));
|
||||
this.addAbility(new EntersBattlefieldTappedUnlessAbility(TwoOrMoreOpponentsCondition.instance));
|
||||
|
||||
// {T}: Add {U} or {W}.
|
||||
// {T}: Add {U}.
|
||||
this.addAbility(new BlueManaAbility());
|
||||
|
||||
// {T}: Add {W}.
|
||||
this.addAbility(new WhiteManaAbility());
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,37 +1,43 @@
|
|||
|
||||
package mage.cards.s;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.abilities.common.EntersBattlefieldAbility;
|
||||
import mage.abilities.condition.Condition;
|
||||
import mage.abilities.condition.InvertCondition;
|
||||
import mage.abilities.condition.common.PermanentsOnTheBattlefieldCondition;
|
||||
import mage.abilities.decorator.ConditionalOneShotEffect;
|
||||
import mage.abilities.effects.common.TapSourceEffect;
|
||||
import mage.abilities.common.EntersBattlefieldTappedUnlessAbility;
|
||||
import mage.abilities.condition.common.YouControlPermanentCondition;
|
||||
import mage.abilities.mana.BlueManaAbility;
|
||||
import mage.abilities.mana.WhiteManaAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.ComparisonType;
|
||||
import mage.filter.StaticFilters;
|
||||
import mage.filter.common.FilterLandPermanent;
|
||||
import mage.filter.predicate.mageobject.AnotherPredicate;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author maurer.it_at_gmail.com
|
||||
*/
|
||||
public final class SeachromeCoast extends CardImpl {
|
||||
|
||||
private static final FilterLandPermanent filter = new FilterLandPermanent("other lands");
|
||||
|
||||
static {
|
||||
filter.add(AnotherPredicate.instance);
|
||||
}
|
||||
|
||||
private static final YouControlPermanentCondition condition =
|
||||
new YouControlPermanentCondition(filter, ComparisonType.OR_LESS, 2);
|
||||
|
||||
public SeachromeCoast(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.LAND}, null);
|
||||
|
||||
// Seachrome Coast enters the battlefield tapped unless you control two or fewer other lands.
|
||||
Condition controls = new InvertCondition(new PermanentsOnTheBattlefieldCondition(StaticFilters.FILTER_LANDS, ComparisonType.FEWER_THAN, 3));
|
||||
String abilityText = " tapped unless you control two or fewer other lands";
|
||||
this.addAbility(new EntersBattlefieldAbility(new ConditionalOneShotEffect(new TapSourceEffect(), controls, abilityText), abilityText));
|
||||
this.addAbility(new EntersBattlefieldTappedUnlessAbility(condition).addHint(condition.getHint()));
|
||||
|
||||
// {T}: Add {W} or {U}.
|
||||
// {T}: Add {W}.
|
||||
this.addAbility(new WhiteManaAbility());
|
||||
|
||||
// {T}: Add {U}.
|
||||
this.addAbility(new BlueManaAbility());
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,17 +1,15 @@
|
|||
package mage.cards.s;
|
||||
|
||||
import mage.abilities.common.EntersBattlefieldAbility;
|
||||
import mage.abilities.condition.Condition;
|
||||
import mage.abilities.condition.common.PermanentsOnTheBattlefieldCondition;
|
||||
import mage.abilities.decorator.ConditionalOneShotEffect;
|
||||
import mage.abilities.effects.common.TapSourceEffect;
|
||||
import mage.abilities.common.EntersBattlefieldTappedUnlessAbility;
|
||||
import mage.abilities.condition.common.YouControlPermanentCondition;
|
||||
import mage.abilities.mana.BlackManaAbility;
|
||||
import mage.abilities.mana.WhiteManaAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.ComparisonType;
|
||||
import mage.filter.StaticFilters;
|
||||
import mage.filter.common.FilterLandPermanent;
|
||||
import mage.filter.predicate.mageobject.AnotherPredicate;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
|
|
@ -20,21 +18,25 @@ import java.util.UUID;
|
|||
*/
|
||||
public final class ShatteredSanctum extends CardImpl {
|
||||
|
||||
private static final Condition condition = new PermanentsOnTheBattlefieldCondition(
|
||||
StaticFilters.FILTER_LANDS, ComparisonType.FEWER_THAN, 2
|
||||
);
|
||||
private static final FilterLandPermanent filter = new FilterLandPermanent("other lands");
|
||||
|
||||
static {
|
||||
filter.add(AnotherPredicate.instance);
|
||||
}
|
||||
|
||||
private static final YouControlPermanentCondition condition =
|
||||
new YouControlPermanentCondition(filter, ComparisonType.OR_GREATER, 2);
|
||||
|
||||
public ShatteredSanctum(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.LAND}, "");
|
||||
|
||||
// Shattered Sanctum enters the battlefield tapped unless you control two or more other lands.
|
||||
this.addAbility(new EntersBattlefieldAbility(
|
||||
new ConditionalOneShotEffect(new TapSourceEffect(), condition),
|
||||
"tapped unless you control two or more other lands"
|
||||
));
|
||||
this.addAbility(new EntersBattlefieldTappedUnlessAbility(condition).addHint(condition.getHint()));
|
||||
|
||||
// {T}: Add {W} or {B}.
|
||||
// {T}: Add {W}.
|
||||
this.addAbility(new WhiteManaAbility());
|
||||
|
||||
// {T}: Add {B}.
|
||||
this.addAbility(new BlackManaAbility());
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,15 +1,12 @@
|
|||
package mage.cards.s;
|
||||
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.common.EntersBattlefieldAbility;
|
||||
import mage.abilities.condition.Condition;
|
||||
import mage.abilities.common.EntersBattlefieldTappedUnlessAbility;
|
||||
import mage.abilities.condition.common.DeliriumCondition;
|
||||
import mage.abilities.condition.common.PermanentsOnTheBattlefieldCondition;
|
||||
import mage.abilities.condition.common.YouControlPermanentCondition;
|
||||
import mage.abilities.costs.mana.ManaCostsImpl;
|
||||
import mage.abilities.decorator.ConditionalActivatedAbility;
|
||||
import mage.abilities.decorator.ConditionalOneShotEffect;
|
||||
import mage.abilities.effects.OneShotEffect;
|
||||
import mage.abilities.effects.common.TapSourceEffect;
|
||||
import mage.abilities.hint.common.CardTypesInGraveyardHint;
|
||||
import mage.abilities.mana.GreenManaAbility;
|
||||
import mage.cards.Card;
|
||||
|
|
@ -34,8 +31,7 @@ import java.util.UUID;
|
|||
public final class ShiftingWoodland extends CardImpl {
|
||||
|
||||
private static final FilterPermanent filter = new FilterControlledPermanent(SubType.FOREST);
|
||||
private static final Condition condition
|
||||
= new PermanentsOnTheBattlefieldCondition(filter, ComparisonType.EQUAL_TO, 0);
|
||||
private static final YouControlPermanentCondition condition = new YouControlPermanentCondition(filter);
|
||||
|
||||
private static final FilterCard filterCard = new FilterPermanentCard("permanent card in your graveyard");
|
||||
|
||||
|
|
@ -43,9 +39,7 @@ public final class ShiftingWoodland extends CardImpl {
|
|||
super(ownerId, setInfo, new CardType[]{CardType.LAND}, "");
|
||||
|
||||
// Shifting Woodland enters the battlefield tapped unless you control a Forest.
|
||||
this.addAbility(new EntersBattlefieldAbility(new ConditionalOneShotEffect(
|
||||
new TapSourceEffect(), condition
|
||||
), "tapped unless you control a Forest"));
|
||||
this.addAbility(new EntersBattlefieldTappedUnlessAbility(condition).addHint(condition.getHint()));
|
||||
|
||||
// {T}: Add {G}.
|
||||
this.addAbility(new GreenManaAbility());
|
||||
|
|
|
|||
|
|
@ -1,17 +1,15 @@
|
|||
package mage.cards.s;
|
||||
|
||||
import mage.abilities.common.EntersBattlefieldAbility;
|
||||
import mage.abilities.condition.Condition;
|
||||
import mage.abilities.condition.common.PermanentsOnTheBattlefieldCondition;
|
||||
import mage.abilities.decorator.ConditionalOneShotEffect;
|
||||
import mage.abilities.effects.common.TapSourceEffect;
|
||||
import mage.abilities.common.EntersBattlefieldTappedUnlessAbility;
|
||||
import mage.abilities.condition.common.YouControlPermanentCondition;
|
||||
import mage.abilities.mana.BlackManaAbility;
|
||||
import mage.abilities.mana.BlueManaAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.ComparisonType;
|
||||
import mage.filter.StaticFilters;
|
||||
import mage.filter.common.FilterLandPermanent;
|
||||
import mage.filter.predicate.mageobject.AnotherPredicate;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
|
|
@ -20,21 +18,25 @@ import java.util.UUID;
|
|||
*/
|
||||
public final class ShipwreckMarsh extends CardImpl {
|
||||
|
||||
private static final Condition condition = new PermanentsOnTheBattlefieldCondition(
|
||||
StaticFilters.FILTER_LANDS, ComparisonType.FEWER_THAN, 2
|
||||
);
|
||||
private static final FilterLandPermanent filter = new FilterLandPermanent("other lands");
|
||||
|
||||
static {
|
||||
filter.add(AnotherPredicate.instance);
|
||||
}
|
||||
|
||||
private static final YouControlPermanentCondition condition =
|
||||
new YouControlPermanentCondition(filter, ComparisonType.OR_GREATER, 2);
|
||||
|
||||
public ShipwreckMarsh(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.LAND}, "");
|
||||
|
||||
// Shipwreck Marsh enters the battlefield tapped unless you control two or more other lands.
|
||||
this.addAbility(new EntersBattlefieldAbility(
|
||||
new ConditionalOneShotEffect(new TapSourceEffect(), condition),
|
||||
"tapped unless you control two or more other lands"
|
||||
));
|
||||
this.addAbility(new EntersBattlefieldTappedUnlessAbility(condition).addHint(condition.getHint()));
|
||||
|
||||
// {T}: Add {U} or {B}.
|
||||
// {T}: Add {U}.
|
||||
this.addAbility(new BlueManaAbility());
|
||||
|
||||
// {T}: Add {B}.
|
||||
this.addAbility(new BlackManaAbility());
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,45 +1,46 @@
|
|||
|
||||
package mage.cards.s;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.abilities.common.EntersBattlefieldAbility;
|
||||
import mage.abilities.condition.Condition;
|
||||
import mage.abilities.condition.InvertCondition;
|
||||
import mage.abilities.condition.common.PermanentsOnTheBattlefieldCondition;
|
||||
import mage.abilities.decorator.ConditionalOneShotEffect;
|
||||
import mage.abilities.effects.common.TapSourceEffect;
|
||||
import mage.abilities.common.EntersBattlefieldTappedUnlessAbility;
|
||||
import mage.abilities.condition.common.YouControlPermanentCondition;
|
||||
import mage.abilities.mana.BlackManaAbility;
|
||||
import mage.abilities.mana.RedManaAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.SubType;
|
||||
import mage.constants.ComparisonType;
|
||||
import mage.constants.SubType;
|
||||
import mage.constants.SuperType;
|
||||
import mage.filter.common.FilterLandPermanent;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author fireshoes
|
||||
*/
|
||||
public final class SmolderingMarsh extends CardImpl {
|
||||
|
||||
private static final FilterLandPermanent filter = new FilterLandPermanent();
|
||||
|
||||
|
||||
private static final FilterLandPermanent filter = new FilterLandPermanent("basic lands");
|
||||
|
||||
static {
|
||||
filter.add(SuperType.BASIC.getPredicate());
|
||||
}
|
||||
|
||||
private static final YouControlPermanentCondition condition =
|
||||
new YouControlPermanentCondition(filter, ComparisonType.OR_GREATER, 2);
|
||||
|
||||
public SmolderingMarsh(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.MOUNTAIN);
|
||||
|
||||
// Smoldering Marsh enters the battlefield tapped unless you control two or more basic lands.
|
||||
Condition controls = new InvertCondition(new PermanentsOnTheBattlefieldCondition(filter, ComparisonType.MORE_THAN, 1));
|
||||
String abilityText = "tapped unless you control two or more basic lands";
|
||||
this.addAbility(new EntersBattlefieldAbility(new ConditionalOneShotEffect(new TapSourceEffect(), controls, abilityText), abilityText));
|
||||
this.addAbility(new EntersBattlefieldTappedUnlessAbility(condition).addHint(condition.getHint()));
|
||||
|
||||
// {T}: Add {B}.
|
||||
this.addAbility(new BlackManaAbility());
|
||||
|
||||
// {T}: Add {R}.
|
||||
this.addAbility(new RedManaAbility());
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,9 +1,7 @@
|
|||
package mage.cards.s;
|
||||
|
||||
import mage.abilities.common.EntersBattlefieldAbility;
|
||||
import mage.abilities.condition.common.OneOpponentCondition;
|
||||
import mage.abilities.decorator.ConditionalOneShotEffect;
|
||||
import mage.abilities.effects.common.TapSourceEffect;
|
||||
import mage.abilities.common.EntersBattlefieldTappedUnlessAbility;
|
||||
import mage.abilities.condition.common.TwoOrMoreOpponentsCondition;
|
||||
import mage.abilities.mana.RedManaAbility;
|
||||
import mage.abilities.mana.WhiteManaAbility;
|
||||
import mage.cards.CardImpl;
|
||||
|
|
@ -21,16 +19,12 @@ public final class SpectatorSeating extends CardImpl {
|
|||
super(ownerId, setInfo, new CardType[]{CardType.LAND}, "");
|
||||
|
||||
// Spectator Seating enters the battlefield tapped unless you have two or more opponents.
|
||||
this.addAbility(new EntersBattlefieldAbility(
|
||||
new ConditionalOneShotEffect(
|
||||
new TapSourceEffect(),
|
||||
OneOpponentCondition.instance,
|
||||
"tapped unless you have two or more opponents"
|
||||
), "tapped unless you have two or more opponents"
|
||||
));
|
||||
this.addAbility(new EntersBattlefieldTappedUnlessAbility(TwoOrMoreOpponentsCondition.instance));
|
||||
|
||||
// {T}: Add {R} or {W}.
|
||||
// {T}: Add {R}.
|
||||
this.addAbility(new RedManaAbility());
|
||||
|
||||
// {T}: Add {W}.
|
||||
this.addAbility(new WhiteManaAbility());
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,19 +1,17 @@
|
|||
|
||||
package mage.cards.s;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.abilities.common.EntersBattlefieldAbility;
|
||||
import mage.abilities.condition.common.OneOpponentCondition;
|
||||
import mage.abilities.decorator.ConditionalOneShotEffect;
|
||||
import mage.abilities.effects.common.TapSourceEffect;
|
||||
import mage.abilities.common.EntersBattlefieldTappedUnlessAbility;
|
||||
import mage.abilities.condition.common.TwoOrMoreOpponentsCondition;
|
||||
import mage.abilities.mana.GreenManaAbility;
|
||||
import mage.abilities.mana.RedManaAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author TheElk801
|
||||
*/
|
||||
public final class SpireGarden extends CardImpl {
|
||||
|
|
@ -22,16 +20,12 @@ public final class SpireGarden extends CardImpl {
|
|||
super(ownerId, setInfo, new CardType[]{CardType.LAND}, "");
|
||||
|
||||
// Spire Garden enters the battlefield tapped unless you have two or more opponents.
|
||||
this.addAbility(new EntersBattlefieldAbility(
|
||||
new ConditionalOneShotEffect(
|
||||
new TapSourceEffect(),
|
||||
OneOpponentCondition.instance,
|
||||
"tapped unless you have two or more opponents"
|
||||
), "tapped unless you have two or more opponents"
|
||||
));
|
||||
this.addAbility(new EntersBattlefieldTappedUnlessAbility(TwoOrMoreOpponentsCondition.instance));
|
||||
|
||||
// {T}: Add {R} or {G}.
|
||||
// {T}: Add {R}.
|
||||
this.addAbility(new RedManaAbility());
|
||||
|
||||
// {T}: Add {G}.
|
||||
this.addAbility(new GreenManaAbility());
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,37 +1,43 @@
|
|||
|
||||
package mage.cards.s;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.abilities.common.EntersBattlefieldAbility;
|
||||
import mage.abilities.condition.Condition;
|
||||
import mage.abilities.condition.InvertCondition;
|
||||
import mage.abilities.condition.common.PermanentsOnTheBattlefieldCondition;
|
||||
import mage.abilities.decorator.ConditionalOneShotEffect;
|
||||
import mage.abilities.effects.common.TapSourceEffect;
|
||||
import mage.abilities.common.EntersBattlefieldTappedUnlessAbility;
|
||||
import mage.abilities.condition.common.YouControlPermanentCondition;
|
||||
import mage.abilities.mana.BlueManaAbility;
|
||||
import mage.abilities.mana.RedManaAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.ComparisonType;
|
||||
import mage.filter.StaticFilters;
|
||||
import mage.filter.common.FilterLandPermanent;
|
||||
import mage.filter.predicate.mageobject.AnotherPredicate;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author fireshoes
|
||||
*/
|
||||
public final class SpirebluffCanal extends CardImpl {
|
||||
|
||||
private static final FilterLandPermanent filter = new FilterLandPermanent("other lands");
|
||||
|
||||
static {
|
||||
filter.add(AnotherPredicate.instance);
|
||||
}
|
||||
|
||||
private static final YouControlPermanentCondition condition =
|
||||
new YouControlPermanentCondition(filter, ComparisonType.OR_LESS, 2);
|
||||
|
||||
public SpirebluffCanal(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.LAND}, "");
|
||||
|
||||
// Spirebluff Canal enters the battlefield tapped unless you control two or fewer other lands.
|
||||
Condition controls = new InvertCondition(new PermanentsOnTheBattlefieldCondition(StaticFilters.FILTER_LANDS, ComparisonType.FEWER_THAN, 3));
|
||||
String abilityText = " tapped unless you control two or fewer other lands";
|
||||
this.addAbility(new EntersBattlefieldAbility(new ConditionalOneShotEffect(new TapSourceEffect(), controls, abilityText), abilityText));
|
||||
this.addAbility(new EntersBattlefieldTappedUnlessAbility(condition).addHint(condition.getHint()));
|
||||
|
||||
// {T}: Add {U} or {R}.
|
||||
// {T}: Add {U}.
|
||||
this.addAbility(new BlueManaAbility());
|
||||
|
||||
// {T}: Add {R}.
|
||||
this.addAbility(new RedManaAbility());
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,23 +1,18 @@
|
|||
package mage.cards.s;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.common.EntersBattlefieldAbility;
|
||||
import mage.abilities.common.EntersBattlefieldTappedUnlessAbility;
|
||||
import mage.abilities.common.SimpleActivatedAbility;
|
||||
import mage.abilities.condition.Condition;
|
||||
import mage.abilities.condition.common.PermanentsOnTheBattlefieldCondition;
|
||||
import mage.abilities.condition.common.YouControlPermanentCondition;
|
||||
import mage.abilities.costs.common.TapSourceCost;
|
||||
import mage.abilities.costs.mana.ManaCostsImpl;
|
||||
import mage.abilities.decorator.ConditionalOneShotEffect;
|
||||
import mage.abilities.dynamicvalue.common.CreaturesDiedThisTurnCount;
|
||||
import mage.abilities.effects.OneShotEffect;
|
||||
import mage.abilities.effects.common.TapSourceEffect;
|
||||
import mage.abilities.effects.keyword.ConniveSourceEffect;
|
||||
import mage.abilities.mana.BlackManaAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.ComparisonType;
|
||||
import mage.constants.Outcome;
|
||||
import mage.constants.SubType;
|
||||
import mage.filter.FilterPermanent;
|
||||
|
|
@ -26,22 +21,21 @@ import mage.game.Game;
|
|||
import mage.game.permanent.Permanent;
|
||||
import mage.target.common.TargetControlledCreaturePermanent;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author grimreap124
|
||||
*/
|
||||
public final class SpymastersVault extends CardImpl {
|
||||
|
||||
private static final FilterPermanent filter = new FilterControlledPermanent(SubType.SWAMP);
|
||||
private static final Condition condition = new PermanentsOnTheBattlefieldCondition(filter, ComparisonType.EQUAL_TO,
|
||||
0);
|
||||
private static final YouControlPermanentCondition condition = new YouControlPermanentCondition(filter);
|
||||
|
||||
public SpymastersVault(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[] { CardType.LAND }, "");
|
||||
super(ownerId, setInfo, new CardType[]{CardType.LAND}, "");
|
||||
|
||||
// Spymaster's Vault enters the battlefield tapped unless you control a Swamp.
|
||||
this.addAbility(new EntersBattlefieldAbility(new ConditionalOneShotEffect(
|
||||
new TapSourceEffect(), condition), "tapped unless you control a Swamp"));
|
||||
this.addAbility(new EntersBattlefieldTappedUnlessAbility(condition).addHint(condition.getHint()));
|
||||
|
||||
// {T}: Add {B}.
|
||||
this.addAbility(new BlackManaAbility());
|
||||
|
|
|
|||
|
|
@ -1,17 +1,15 @@
|
|||
package mage.cards.s;
|
||||
|
||||
import mage.abilities.common.EntersBattlefieldAbility;
|
||||
import mage.abilities.condition.Condition;
|
||||
import mage.abilities.condition.common.PermanentsOnTheBattlefieldCondition;
|
||||
import mage.abilities.decorator.ConditionalOneShotEffect;
|
||||
import mage.abilities.effects.common.TapSourceEffect;
|
||||
import mage.abilities.common.EntersBattlefieldTappedUnlessAbility;
|
||||
import mage.abilities.condition.common.YouControlPermanentCondition;
|
||||
import mage.abilities.mana.BlueManaAbility;
|
||||
import mage.abilities.mana.RedManaAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.ComparisonType;
|
||||
import mage.filter.StaticFilters;
|
||||
import mage.filter.common.FilterLandPermanent;
|
||||
import mage.filter.predicate.mageobject.AnotherPredicate;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
|
|
@ -20,21 +18,25 @@ import java.util.UUID;
|
|||
*/
|
||||
public final class StormcarvedCoast extends CardImpl {
|
||||
|
||||
private static final Condition condition = new PermanentsOnTheBattlefieldCondition(
|
||||
StaticFilters.FILTER_LANDS, ComparisonType.FEWER_THAN, 2
|
||||
);
|
||||
private static final FilterLandPermanent filter = new FilterLandPermanent("other lands");
|
||||
|
||||
static {
|
||||
filter.add(AnotherPredicate.instance);
|
||||
}
|
||||
|
||||
private static final YouControlPermanentCondition condition =
|
||||
new YouControlPermanentCondition(filter, ComparisonType.OR_GREATER, 2);
|
||||
|
||||
public StormcarvedCoast(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.LAND}, "");
|
||||
|
||||
// Stormcarved Coast enters the battlefield tapped unless you control two or more other lands.
|
||||
this.addAbility(new EntersBattlefieldAbility(
|
||||
new ConditionalOneShotEffect(new TapSourceEffect(), condition),
|
||||
"tapped unless you control two or more other lands"
|
||||
));
|
||||
this.addAbility(new EntersBattlefieldTappedUnlessAbility(condition).addHint(condition.getHint()));
|
||||
|
||||
// {T}: Add {U} or {R}.
|
||||
// {T}: Add {U}.
|
||||
this.addAbility(new BlueManaAbility());
|
||||
|
||||
// {T}: Add {R}.
|
||||
this.addAbility(new RedManaAbility());
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -2,12 +2,8 @@
|
|||
|
||||
package mage.cards.s;
|
||||
|
||||
import mage.abilities.common.EntersBattlefieldAbility;
|
||||
import mage.abilities.condition.Condition;
|
||||
import mage.abilities.condition.InvertCondition;
|
||||
import mage.abilities.condition.common.PermanentsOnTheBattlefieldCondition;
|
||||
import mage.abilities.decorator.ConditionalOneShotEffect;
|
||||
import mage.abilities.effects.common.TapSourceEffect;
|
||||
import mage.abilities.common.EntersBattlefieldTappedUnlessAbility;
|
||||
import mage.abilities.condition.common.YouControlPermanentCondition;
|
||||
import mage.abilities.mana.BlueManaAbility;
|
||||
import mage.abilities.mana.RedManaAbility;
|
||||
import mage.cards.CardImpl;
|
||||
|
|
@ -24,19 +20,24 @@ import java.util.UUID;
|
|||
*/
|
||||
public final class SulfurFalls extends CardImpl {
|
||||
|
||||
private static final FilterLandPermanent filter = new FilterLandPermanent();
|
||||
private static final FilterLandPermanent filter = new FilterLandPermanent("an Island or a Mountain");
|
||||
|
||||
static {
|
||||
filter.add(Predicates.or(SubType.ISLAND.getPredicate(), SubType.MOUNTAIN.getPredicate()));
|
||||
}
|
||||
|
||||
public SulfurFalls(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId,setInfo,new CardType[]{CardType.LAND},null);
|
||||
private static final YouControlPermanentCondition condition = new YouControlPermanentCondition(filter);
|
||||
|
||||
Condition controls = new InvertCondition(new PermanentsOnTheBattlefieldCondition(filter));
|
||||
String abilityText = " tapped unless you control an Island or a Mountain";
|
||||
this.addAbility(new EntersBattlefieldAbility(new ConditionalOneShotEffect(new TapSourceEffect(), controls, abilityText), abilityText));
|
||||
public SulfurFalls(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.LAND}, null);
|
||||
|
||||
// Sulfur Falls enters the battlefield tapped unless you control an Island or a Mountain.
|
||||
this.addAbility(new EntersBattlefieldTappedUnlessAbility(condition).addHint(condition.getHint()));
|
||||
|
||||
// {T}: Add {U}.
|
||||
this.addAbility(new BlueManaAbility());
|
||||
|
||||
// {T}: Add {R}.
|
||||
this.addAbility(new RedManaAbility());
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,17 +1,15 @@
|
|||
package mage.cards.s;
|
||||
|
||||
import mage.abilities.common.EntersBattlefieldAbility;
|
||||
import mage.abilities.condition.Condition;
|
||||
import mage.abilities.condition.common.PermanentsOnTheBattlefieldCondition;
|
||||
import mage.abilities.decorator.ConditionalOneShotEffect;
|
||||
import mage.abilities.effects.common.TapSourceEffect;
|
||||
import mage.abilities.common.EntersBattlefieldTappedUnlessAbility;
|
||||
import mage.abilities.condition.common.YouControlPermanentCondition;
|
||||
import mage.abilities.mana.RedManaAbility;
|
||||
import mage.abilities.mana.WhiteManaAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.ComparisonType;
|
||||
import mage.filter.StaticFilters;
|
||||
import mage.filter.common.FilterLandPermanent;
|
||||
import mage.filter.predicate.mageobject.AnotherPredicate;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
|
|
@ -20,21 +18,25 @@ import java.util.UUID;
|
|||
*/
|
||||
public final class SundownPass extends CardImpl {
|
||||
|
||||
private static final Condition condition = new PermanentsOnTheBattlefieldCondition(
|
||||
StaticFilters.FILTER_LANDS, ComparisonType.FEWER_THAN, 2
|
||||
);
|
||||
private static final FilterLandPermanent filter = new FilterLandPermanent("other lands");
|
||||
|
||||
static {
|
||||
filter.add(AnotherPredicate.instance);
|
||||
}
|
||||
|
||||
private static final YouControlPermanentCondition condition =
|
||||
new YouControlPermanentCondition(filter, ComparisonType.OR_GREATER, 2);
|
||||
|
||||
public SundownPass(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.LAND}, "");
|
||||
|
||||
// Sundown Pass enters the battlefield tapped unless you control two or more other lands.
|
||||
this.addAbility(new EntersBattlefieldAbility(
|
||||
new ConditionalOneShotEffect(new TapSourceEffect(), condition),
|
||||
"tapped unless you control two or more other lands"
|
||||
));
|
||||
this.addAbility(new EntersBattlefieldTappedUnlessAbility(condition).addHint(condition.getHint()));
|
||||
|
||||
// {T}: Add {R} or {W}.
|
||||
// {T}: Add {R}.
|
||||
this.addAbility(new RedManaAbility());
|
||||
|
||||
// {T}: Add {W}.
|
||||
this.addAbility(new WhiteManaAbility());
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,45 +1,46 @@
|
|||
|
||||
package mage.cards.s;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.abilities.common.EntersBattlefieldAbility;
|
||||
import mage.abilities.condition.Condition;
|
||||
import mage.abilities.condition.InvertCondition;
|
||||
import mage.abilities.condition.common.PermanentsOnTheBattlefieldCondition;
|
||||
import mage.abilities.decorator.ConditionalOneShotEffect;
|
||||
import mage.abilities.effects.common.TapSourceEffect;
|
||||
import mage.abilities.common.EntersBattlefieldTappedUnlessAbility;
|
||||
import mage.abilities.condition.common.YouControlPermanentCondition;
|
||||
import mage.abilities.mana.BlackManaAbility;
|
||||
import mage.abilities.mana.BlueManaAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.SubType;
|
||||
import mage.constants.ComparisonType;
|
||||
import mage.constants.SubType;
|
||||
import mage.constants.SuperType;
|
||||
import mage.filter.common.FilterLandPermanent;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author fireshoes
|
||||
*/
|
||||
public final class SunkenHollow extends CardImpl {
|
||||
|
||||
private static final FilterLandPermanent filter = new FilterLandPermanent();
|
||||
private static final FilterLandPermanent filter = new FilterLandPermanent("basic lands");
|
||||
|
||||
static {
|
||||
filter.add(SuperType.BASIC.getPredicate());
|
||||
}
|
||||
|
||||
private static final YouControlPermanentCondition condition =
|
||||
new YouControlPermanentCondition(filter, ComparisonType.OR_GREATER, 2);
|
||||
|
||||
public SunkenHollow(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
|
||||
super(ownerId, setInfo, new CardType[]{CardType.LAND}, "");
|
||||
this.subtype.add(SubType.ISLAND);
|
||||
this.subtype.add(SubType.SWAMP);
|
||||
|
||||
// Sunken Hollow enters the battlefield tapped unless you control two or more basic lands.
|
||||
Condition controls = new InvertCondition(new PermanentsOnTheBattlefieldCondition(filter, ComparisonType.MORE_THAN, 1));
|
||||
String abilityText = "tapped unless you control two or more basic lands";
|
||||
this.addAbility(new EntersBattlefieldAbility(new ConditionalOneShotEffect(new TapSourceEffect(), controls, abilityText), abilityText));
|
||||
this.addAbility(new EntersBattlefieldTappedUnlessAbility(condition).addHint(condition.getHint()));
|
||||
|
||||
// {T}: Add {U}.
|
||||
this.addAbility(new BlueManaAbility());
|
||||
|
||||
// {T}: Add {B}.
|
||||
this.addAbility(new BlackManaAbility());
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,12 +1,8 @@
|
|||
|
||||
package mage.cards.s;
|
||||
|
||||
import mage.abilities.common.EntersBattlefieldAbility;
|
||||
import mage.abilities.condition.Condition;
|
||||
import mage.abilities.condition.InvertCondition;
|
||||
import mage.abilities.condition.common.PermanentsOnTheBattlefieldCondition;
|
||||
import mage.abilities.decorator.ConditionalOneShotEffect;
|
||||
import mage.abilities.effects.common.TapSourceEffect;
|
||||
import mage.abilities.common.EntersBattlefieldTappedUnlessAbility;
|
||||
import mage.abilities.condition.common.YouControlPermanentCondition;
|
||||
import mage.abilities.mana.GreenManaAbility;
|
||||
import mage.abilities.mana.WhiteManaAbility;
|
||||
import mage.cards.CardImpl;
|
||||
|
|
@ -19,24 +15,28 @@ import mage.filter.predicate.Predicates;
|
|||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author BetaSteward_at_googlemail.com
|
||||
*/
|
||||
public final class SunpetalGrove extends CardImpl {
|
||||
|
||||
private static final FilterLandPermanent filter = new FilterLandPermanent();
|
||||
private static final FilterLandPermanent filter = new FilterLandPermanent("a Forest or a Plains");
|
||||
|
||||
static {
|
||||
filter.add(Predicates.or(SubType.FOREST.getPredicate(), SubType.PLAINS.getPredicate()));
|
||||
}
|
||||
|
||||
private static final YouControlPermanentCondition condition = new YouControlPermanentCondition(filter);
|
||||
|
||||
public SunpetalGrove(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.LAND}, null);
|
||||
|
||||
Condition controls = new InvertCondition(new PermanentsOnTheBattlefieldCondition(filter));
|
||||
String abilityText = " tapped unless you control a Forest or a Plains";
|
||||
this.addAbility(new EntersBattlefieldAbility(new ConditionalOneShotEffect(new TapSourceEffect(), controls, abilityText), abilityText));
|
||||
// Sunpetal Grove enters the battlefield tapped unless you control a Forest or a Plains.
|
||||
this.addAbility(new EntersBattlefieldTappedUnlessAbility(condition).addHint(condition.getHint()));
|
||||
|
||||
// {T}: Add {G}.
|
||||
this.addAbility(new GreenManaAbility());
|
||||
|
||||
// {T}: Add {W}.
|
||||
this.addAbility(new WhiteManaAbility());
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,7 +1,5 @@
|
|||
package mage.cards.t;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.common.AsEntersBattlefieldAbility;
|
||||
import mage.abilities.costs.common.TapSourceCost;
|
||||
|
|
@ -23,8 +21,9 @@ import mage.game.permanent.Permanent;
|
|||
import mage.players.Player;
|
||||
import mage.target.common.TargetCardInHand;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author weirddan455
|
||||
*/
|
||||
public final class TempleOfTheDragonQueen extends CardImpl {
|
||||
|
|
@ -110,6 +109,7 @@ class TempleOfTheDragonQueenEffect extends OneShotEffect {
|
|||
}
|
||||
}
|
||||
if (entersTapped) {
|
||||
// Intentional use of Permanent::setTapped, to not cause any trigger
|
||||
land.setTapped(true);
|
||||
return true;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,24 +1,17 @@
|
|||
package mage.cards.t;
|
||||
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.common.EntersBattlefieldAbility;
|
||||
import mage.abilities.common.EntersBattlefieldTappedUnlessAbility;
|
||||
import mage.abilities.common.SimpleActivatedAbility;
|
||||
import mage.abilities.condition.Condition;
|
||||
import mage.abilities.condition.InvertCondition;
|
||||
import mage.abilities.condition.common.PermanentsOnTheBattlefieldCondition;
|
||||
import mage.abilities.condition.common.YouControlPermanentCondition;
|
||||
import mage.abilities.costs.common.TapSourceCost;
|
||||
import mage.abilities.costs.common.TapTargetCost;
|
||||
import mage.abilities.costs.mana.ManaCostsImpl;
|
||||
import mage.abilities.decorator.ConditionalOneShotEffect;
|
||||
import mage.abilities.effects.common.CreateTokenEffect;
|
||||
import mage.abilities.effects.common.TapSourceEffect;
|
||||
import mage.abilities.hint.ConditionHint;
|
||||
import mage.abilities.hint.Hint;
|
||||
import mage.abilities.mana.GreenManaAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.ComparisonType;
|
||||
import mage.constants.SuperType;
|
||||
import mage.filter.FilterPermanent;
|
||||
import mage.filter.StaticFilters;
|
||||
|
|
@ -33,15 +26,13 @@ import java.util.UUID;
|
|||
*/
|
||||
public final class TheShire extends CardImpl {
|
||||
|
||||
private static final FilterPermanent filter = new FilterControlledCreaturePermanent();
|
||||
private static final FilterPermanent filter = new FilterControlledCreaturePermanent("a legendary creature");
|
||||
|
||||
static {
|
||||
filter.add(SuperType.LEGENDARY.getPredicate());
|
||||
}
|
||||
|
||||
private static final Condition condition
|
||||
= new PermanentsOnTheBattlefieldCondition(filter, ComparisonType.EQUAL_TO, 0);
|
||||
private static final Hint hint = new ConditionHint( new InvertCondition(condition), "You control a legendary creature");
|
||||
private static final YouControlPermanentCondition condition = new YouControlPermanentCondition(filter);
|
||||
|
||||
public TheShire(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.LAND}, "");
|
||||
|
|
@ -49,10 +40,7 @@ public final class TheShire extends CardImpl {
|
|||
this.supertype.add(SuperType.LEGENDARY);
|
||||
|
||||
// The Shire enters the battlefield tapped unless you control a legendary creature.
|
||||
this.addAbility(new EntersBattlefieldAbility(
|
||||
new ConditionalOneShotEffect(new TapSourceEffect(), condition, ""),
|
||||
"tapped unless you control a legendary creature"
|
||||
).addHint(hint));
|
||||
this.addAbility(new EntersBattlefieldTappedUnlessAbility(condition).addHint(condition.getHint()));
|
||||
|
||||
// {T}: Add {G}.
|
||||
this.addAbility(new GreenManaAbility());
|
||||
|
|
|
|||
|
|
@ -2,16 +2,12 @@ package mage.cards.t;
|
|||
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.common.AsEntersBattlefieldAbility;
|
||||
import mage.abilities.common.EntersBattlefieldAbility;
|
||||
import mage.abilities.common.EntersBattlefieldTappedUnlessAbility;
|
||||
import mage.abilities.common.SimpleStaticAbility;
|
||||
import mage.abilities.condition.Condition;
|
||||
import mage.abilities.condition.InvertCondition;
|
||||
import mage.abilities.condition.common.PermanentsOnTheBattlefieldCondition;
|
||||
import mage.abilities.condition.common.YouControlPermanentCondition;
|
||||
import mage.abilities.costs.common.PayLifeCost;
|
||||
import mage.abilities.decorator.ConditionalOneShotEffect;
|
||||
import mage.abilities.effects.ContinuousEffectImpl;
|
||||
import mage.abilities.effects.common.ChooseBasicLandTypeEffect;
|
||||
import mage.abilities.effects.common.TapSourceEffect;
|
||||
import mage.abilities.effects.common.continuous.AddChosenSubtypeEffect;
|
||||
import mage.abilities.effects.common.cost.CostModificationEffectImpl;
|
||||
import mage.abilities.effects.common.enterAttribute.EnterAttributeAddChosenSubtypeEffect;
|
||||
|
|
@ -20,6 +16,7 @@ import mage.cards.CardImpl;
|
|||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.*;
|
||||
import mage.filter.common.FilterLandPermanent;
|
||||
import mage.filter.predicate.mageobject.AnotherPredicate;
|
||||
import mage.game.Game;
|
||||
import mage.game.permanent.Permanent;
|
||||
|
||||
|
|
@ -32,15 +29,22 @@ import java.util.UUID;
|
|||
*/
|
||||
public class ThranPortal extends CardImpl {
|
||||
|
||||
private static final FilterLandPermanent filter = new FilterLandPermanent("other lands");
|
||||
|
||||
static {
|
||||
filter.add(AnotherPredicate.instance);
|
||||
}
|
||||
|
||||
private static final YouControlPermanentCondition condition =
|
||||
new YouControlPermanentCondition(filter, ComparisonType.OR_LESS, 2);
|
||||
|
||||
public ThranPortal(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.LAND}, "");
|
||||
|
||||
addSubType(SubType.GATE);
|
||||
|
||||
// Thran Portal enters the battlefield tapped unless you control two or fewer other lands.
|
||||
Condition controls = new InvertCondition(new PermanentsOnTheBattlefieldCondition(new FilterLandPermanent(), ComparisonType.FEWER_THAN, 3));
|
||||
String abilityText = " tapped unless you control two or fewer other lands";
|
||||
this.addAbility(new EntersBattlefieldAbility(new ConditionalOneShotEffect(new TapSourceEffect(), controls, abilityText), abilityText));
|
||||
this.addAbility(new EntersBattlefieldTappedUnlessAbility(condition).addHint(condition.getHint()));
|
||||
|
||||
// As Thran Portal enters the battlefield, choose a basic land type.
|
||||
// Thran Portal is the chosen type in addition to its other types.
|
||||
|
|
|
|||
|
|
@ -1,9 +1,7 @@
|
|||
package mage.cards.t;
|
||||
|
||||
import mage.abilities.common.EntersBattlefieldAbility;
|
||||
import mage.abilities.condition.common.OneOpponentCondition;
|
||||
import mage.abilities.decorator.ConditionalOneShotEffect;
|
||||
import mage.abilities.effects.common.TapSourceEffect;
|
||||
import mage.abilities.common.EntersBattlefieldTappedUnlessAbility;
|
||||
import mage.abilities.condition.common.TwoOrMoreOpponentsCondition;
|
||||
import mage.abilities.mana.BlueManaAbility;
|
||||
import mage.abilities.mana.RedManaAbility;
|
||||
import mage.cards.CardImpl;
|
||||
|
|
@ -21,16 +19,12 @@ public final class TrainingCenter extends CardImpl {
|
|||
super(ownerId, setInfo, new CardType[]{CardType.LAND}, "");
|
||||
|
||||
// Training Center enters the battlefield tapped unless you have two or more opponents.
|
||||
this.addAbility(new EntersBattlefieldAbility(
|
||||
new ConditionalOneShotEffect(
|
||||
new TapSourceEffect(),
|
||||
OneOpponentCondition.instance,
|
||||
"tapped unless you have two or more opponents"
|
||||
), "tapped unless you have two or more opponents"
|
||||
));
|
||||
this.addAbility(new EntersBattlefieldTappedUnlessAbility(TwoOrMoreOpponentsCondition.instance));
|
||||
|
||||
// {T}: Add {U} or {R}.
|
||||
// {T}: Add {U}.
|
||||
this.addAbility(new BlueManaAbility());
|
||||
|
||||
// {T}: Add {R}.
|
||||
this.addAbility(new RedManaAbility());
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,9 +1,7 @@
|
|||
package mage.cards.u;
|
||||
|
||||
import mage.abilities.common.EntersBattlefieldAbility;
|
||||
import mage.abilities.condition.common.OneOpponentCondition;
|
||||
import mage.abilities.decorator.ConditionalOneShotEffect;
|
||||
import mage.abilities.effects.common.TapSourceEffect;
|
||||
import mage.abilities.common.EntersBattlefieldTappedUnlessAbility;
|
||||
import mage.abilities.condition.common.TwoOrMoreOpponentsCondition;
|
||||
import mage.abilities.mana.BlackManaAbility;
|
||||
import mage.abilities.mana.GreenManaAbility;
|
||||
import mage.cards.CardImpl;
|
||||
|
|
@ -21,16 +19,12 @@ public final class UndergrowthStadium extends CardImpl {
|
|||
super(ownerId, setInfo, new CardType[]{CardType.LAND}, "");
|
||||
|
||||
// Undergrowth Stadium enters the battlefield tapped unless you have two or more opponents.
|
||||
this.addAbility(new EntersBattlefieldAbility(
|
||||
new ConditionalOneShotEffect(
|
||||
new TapSourceEffect(),
|
||||
OneOpponentCondition.instance,
|
||||
"tapped unless you have two or more opponents"
|
||||
), "tapped unless you have two or more opponents"
|
||||
));
|
||||
this.addAbility(new EntersBattlefieldTappedUnlessAbility(TwoOrMoreOpponentsCondition.instance));
|
||||
|
||||
// {T}: Add {B} or {G}.
|
||||
// {T}: Add {B}.
|
||||
this.addAbility(new BlackManaAbility());
|
||||
|
||||
// {T}: Add {G}.
|
||||
this.addAbility(new GreenManaAbility());
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,9 +1,7 @@
|
|||
package mage.cards.v;
|
||||
|
||||
import mage.abilities.common.EntersBattlefieldAbility;
|
||||
import mage.abilities.condition.common.OneOpponentCondition;
|
||||
import mage.abilities.decorator.ConditionalOneShotEffect;
|
||||
import mage.abilities.effects.common.TapSourceEffect;
|
||||
import mage.abilities.common.EntersBattlefieldTappedUnlessAbility;
|
||||
import mage.abilities.condition.common.TwoOrMoreOpponentsCondition;
|
||||
import mage.abilities.mana.BlackManaAbility;
|
||||
import mage.abilities.mana.WhiteManaAbility;
|
||||
import mage.cards.CardImpl;
|
||||
|
|
@ -21,16 +19,12 @@ public final class VaultOfChampions extends CardImpl {
|
|||
super(ownerId, setInfo, new CardType[]{CardType.LAND}, "");
|
||||
|
||||
// Vault of Champions enters the battlefield tapped unless you have two or more opponents.
|
||||
this.addAbility(new EntersBattlefieldAbility(
|
||||
new ConditionalOneShotEffect(
|
||||
new TapSourceEffect(),
|
||||
OneOpponentCondition.instance,
|
||||
"tapped unless you have two or more opponents"
|
||||
), "tapped unless you have two or more opponents"
|
||||
));
|
||||
this.addAbility(new EntersBattlefieldTappedUnlessAbility(TwoOrMoreOpponentsCondition.instance));
|
||||
|
||||
// {T}: Add {W} or {B}.
|
||||
// {T}: Add {W}.
|
||||
this.addAbility(new WhiteManaAbility());
|
||||
|
||||
// {T}: Add {B}.
|
||||
this.addAbility(new BlackManaAbility());
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,13 +1,10 @@
|
|||
package mage.cards.w;
|
||||
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.common.EntersBattlefieldAbility;
|
||||
import mage.abilities.common.EntersBattlefieldTappedUnlessAbility;
|
||||
import mage.abilities.common.EntersBattlefieldUntappedTriggeredAbility;
|
||||
import mage.abilities.condition.Condition;
|
||||
import mage.abilities.condition.common.PermanentsOnTheBattlefieldCondition;
|
||||
import mage.abilities.decorator.ConditionalOneShotEffect;
|
||||
import mage.abilities.condition.common.YouControlPermanentCondition;
|
||||
import mage.abilities.effects.common.PutOnLibraryTargetEffect;
|
||||
import mage.abilities.effects.common.TapSourceEffect;
|
||||
import mage.abilities.mana.BlackManaAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
|
|
@ -28,14 +25,14 @@ import java.util.UUID;
|
|||
public final class WitchsCottage extends CardImpl {
|
||||
|
||||
private static final FilterPermanent filter
|
||||
= new FilterControlledPermanent(SubType.SWAMP);
|
||||
= new FilterControlledPermanent(SubType.SWAMP, "other Swamps");
|
||||
|
||||
static {
|
||||
filter.add(AnotherPredicate.instance);
|
||||
}
|
||||
|
||||
private static final Condition condition
|
||||
= new PermanentsOnTheBattlefieldCondition(filter, ComparisonType.FEWER_THAN, 3);
|
||||
private static final YouControlPermanentCondition condition
|
||||
= new YouControlPermanentCondition(filter, ComparisonType.OR_GREATER, 3);
|
||||
|
||||
public WitchsCottage(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.LAND}, "");
|
||||
|
|
@ -46,10 +43,7 @@ public final class WitchsCottage extends CardImpl {
|
|||
this.addAbility(new BlackManaAbility());
|
||||
|
||||
// Witch's Cottage enters the battlefield tapped unless you control three or more other Swamps.
|
||||
this.addAbility(new EntersBattlefieldAbility(
|
||||
new ConditionalOneShotEffect(new TapSourceEffect(), condition),
|
||||
"tapped unless you control three or more other Swamps"
|
||||
));
|
||||
this.addAbility(new EntersBattlefieldTappedUnlessAbility(condition).addHint(condition.getHint()));
|
||||
|
||||
// When Witch's Cottage enters the battlefield untapped, you may put target creature card from your graveyard on top of your library.
|
||||
Ability ability = new EntersBattlefieldUntappedTriggeredAbility(
|
||||
|
|
|
|||
|
|
@ -1,12 +1,8 @@
|
|||
|
||||
package mage.cards.w;
|
||||
|
||||
import mage.abilities.common.EntersBattlefieldAbility;
|
||||
import mage.abilities.condition.Condition;
|
||||
import mage.abilities.condition.InvertCondition;
|
||||
import mage.abilities.condition.common.PermanentsOnTheBattlefieldCondition;
|
||||
import mage.abilities.decorator.ConditionalOneShotEffect;
|
||||
import mage.abilities.effects.common.TapSourceEffect;
|
||||
import mage.abilities.common.EntersBattlefieldTappedUnlessAbility;
|
||||
import mage.abilities.condition.common.YouControlPermanentCondition;
|
||||
import mage.abilities.mana.BlackManaAbility;
|
||||
import mage.abilities.mana.GreenManaAbility;
|
||||
import mage.cards.CardImpl;
|
||||
|
|
@ -23,19 +19,24 @@ import java.util.UUID;
|
|||
*/
|
||||
public final class WoodlandCemetery extends CardImpl {
|
||||
|
||||
private static final FilterLandPermanent filter = new FilterLandPermanent();
|
||||
private static final FilterLandPermanent filter = new FilterLandPermanent("a Swamp or a Forest");
|
||||
|
||||
static {
|
||||
filter.add(Predicates.or(SubType.FOREST.getPredicate(), SubType.SWAMP.getPredicate()));
|
||||
filter.add(Predicates.or(SubType.SWAMP.getPredicate(), SubType.FOREST.getPredicate()));
|
||||
}
|
||||
|
||||
private static final YouControlPermanentCondition condition = new YouControlPermanentCondition(filter);
|
||||
|
||||
public WoodlandCemetery(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.LAND}, null);
|
||||
|
||||
Condition controls = new InvertCondition(new PermanentsOnTheBattlefieldCondition(filter));
|
||||
String abilityText = " tapped unless you control a Swamp or a Forest";
|
||||
this.addAbility(new EntersBattlefieldAbility(new ConditionalOneShotEffect(new TapSourceEffect(), controls, abilityText), abilityText));
|
||||
// Woodland Cemetery enters the battlefield tapped unless you control a Swamp or a Forest.
|
||||
this.addAbility(new EntersBattlefieldTappedUnlessAbility(condition).addHint(condition.getHint()));
|
||||
|
||||
// {T}: Add {B}.
|
||||
this.addAbility(new BlackManaAbility());
|
||||
|
||||
// {T}: Add {G}.
|
||||
this.addAbility(new GreenManaAbility());
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -0,0 +1,258 @@
|
|||
package org.mage.test.cards.replacement.entersBattlefield;
|
||||
|
||||
import mage.constants.PhaseStep;
|
||||
import mage.constants.Zone;
|
||||
import org.junit.Test;
|
||||
import org.mage.test.serverside.base.CardTestPlayerBase;
|
||||
|
||||
/**
|
||||
* @author Susucr
|
||||
*/
|
||||
public class EntersTheBattlefieldTappedUnlessTest extends CardTestPlayerBase {
|
||||
|
||||
/**
|
||||
* Deathcap Glade enters the battlefield tapped unless you control two or more other lands.
|
||||
*/
|
||||
private static final String glade = "Deathcap Glade";
|
||||
|
||||
@Test
|
||||
public void test_SlowLand_NotMet() {
|
||||
setStrictChooseMode(true);
|
||||
|
||||
addCard(Zone.HAND, playerA, glade);
|
||||
addCard(Zone.BATTLEFIELD, playerA, "Forest", 1);
|
||||
|
||||
playLand(1, PhaseStep.PRECOMBAT_MAIN, playerA, glade);
|
||||
|
||||
setStopAt(1, PhaseStep.BEGIN_COMBAT);
|
||||
execute();
|
||||
|
||||
assertTapped(glade, true);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void test_SlowLand_Met() {
|
||||
setStrictChooseMode(true);
|
||||
|
||||
addCard(Zone.HAND, playerA, glade);
|
||||
addCard(Zone.BATTLEFIELD, playerA, "Forest", 2);
|
||||
|
||||
playLand(1, PhaseStep.PRECOMBAT_MAIN, playerA, glade);
|
||||
|
||||
setStopAt(1, PhaseStep.BEGIN_COMBAT);
|
||||
execute();
|
||||
|
||||
assertTapped(glade, false);
|
||||
}
|
||||
|
||||
/**
|
||||
* Blackcleave Cliffs enters the battlefield tapped unless you control two or fewer other lands.
|
||||
*/
|
||||
private static final String cliffs = "Blackcleave Cliffs";
|
||||
|
||||
@Test
|
||||
public void test_FastLand_NotMet() {
|
||||
setStrictChooseMode(true);
|
||||
|
||||
addCard(Zone.HAND, playerA, cliffs);
|
||||
addCard(Zone.BATTLEFIELD, playerA, "Forest", 3);
|
||||
|
||||
playLand(1, PhaseStep.PRECOMBAT_MAIN, playerA, cliffs);
|
||||
|
||||
setStopAt(1, PhaseStep.BEGIN_COMBAT);
|
||||
execute();
|
||||
|
||||
assertTapped(cliffs, true);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void test_FastLand_Met() {
|
||||
setStrictChooseMode(true);
|
||||
|
||||
addCard(Zone.HAND, playerA, cliffs);
|
||||
addCard(Zone.BATTLEFIELD, playerA, "Forest", 2);
|
||||
|
||||
playLand(1, PhaseStep.PRECOMBAT_MAIN, playerA, cliffs);
|
||||
|
||||
setStopAt(1, PhaseStep.BEGIN_COMBAT);
|
||||
execute();
|
||||
|
||||
assertTapped(cliffs, false);
|
||||
}
|
||||
|
||||
/**
|
||||
* Castle Ardenvale enters the battlefield tapped unless you control a Plains.
|
||||
*/
|
||||
private static final String castle = "Castle Ardenvale";
|
||||
|
||||
@Test
|
||||
public void test_Castle_NotMet() {
|
||||
setStrictChooseMode(true);
|
||||
|
||||
addCard(Zone.HAND, playerA, castle);
|
||||
addCard(Zone.BATTLEFIELD, playerA, "Forest", 1);
|
||||
|
||||
playLand(1, PhaseStep.PRECOMBAT_MAIN, playerA, castle);
|
||||
|
||||
setStopAt(1, PhaseStep.BEGIN_COMBAT);
|
||||
execute();
|
||||
|
||||
assertTapped(castle, true);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void test_Castle_Met() {
|
||||
setStrictChooseMode(true);
|
||||
|
||||
addCard(Zone.HAND, playerA, castle);
|
||||
addCard(Zone.BATTLEFIELD, playerA, "Plains", 1);
|
||||
|
||||
playLand(1, PhaseStep.PRECOMBAT_MAIN, playerA, castle);
|
||||
|
||||
setStopAt(1, PhaseStep.BEGIN_COMBAT);
|
||||
execute();
|
||||
|
||||
assertTapped(castle, false);
|
||||
}
|
||||
|
||||
/**
|
||||
* Canopy Vista enters the battlefield tapped unless you control two or more basic lands.
|
||||
*/
|
||||
private static final String vista = "Canopy Vista";
|
||||
|
||||
@Test
|
||||
public void test_Tango_NotMet() {
|
||||
setStrictChooseMode(true);
|
||||
|
||||
addCard(Zone.HAND, playerA, vista);
|
||||
addCard(Zone.BATTLEFIELD, playerA, "Forest", 1);
|
||||
addCard(Zone.BATTLEFIELD, playerA, "Tropical Island", 1);
|
||||
|
||||
playLand(1, PhaseStep.PRECOMBAT_MAIN, playerA, vista);
|
||||
|
||||
setStopAt(1, PhaseStep.BEGIN_COMBAT);
|
||||
execute();
|
||||
|
||||
assertTapped(vista, true);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void test_Tango_Met() {
|
||||
setStrictChooseMode(true);
|
||||
|
||||
addCard(Zone.HAND, playerA, vista);
|
||||
addCard(Zone.BATTLEFIELD, playerA, "Plains", 2);
|
||||
|
||||
playLand(1, PhaseStep.PRECOMBAT_MAIN, playerA, vista);
|
||||
|
||||
setStopAt(1, PhaseStep.BEGIN_COMBAT);
|
||||
execute();
|
||||
|
||||
assertTapped(vista, false);
|
||||
}
|
||||
|
||||
/**
|
||||
* Clifftop Retreat enters the battlefield tapped unless you control a Mountain or a Plains.
|
||||
*/
|
||||
private static final String retreat = "Clifftop Retreat";
|
||||
|
||||
@Test
|
||||
public void test_CheckLand_NotMet() {
|
||||
setStrictChooseMode(true);
|
||||
|
||||
addCard(Zone.HAND, playerA, retreat);
|
||||
addCard(Zone.BATTLEFIELD, playerA, "Forest", 1);
|
||||
|
||||
playLand(1, PhaseStep.PRECOMBAT_MAIN, playerA, retreat);
|
||||
|
||||
setStopAt(1, PhaseStep.BEGIN_COMBAT);
|
||||
execute();
|
||||
|
||||
assertTapped(retreat, true);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void test_CheckLand_Met() {
|
||||
setStrictChooseMode(true);
|
||||
|
||||
addCard(Zone.HAND, playerA, retreat);
|
||||
addCard(Zone.BATTLEFIELD, playerA, "Scrubland", 1);
|
||||
|
||||
playLand(1, PhaseStep.PRECOMBAT_MAIN, playerA, retreat);
|
||||
|
||||
setStopAt(1, PhaseStep.BEGIN_COMBAT);
|
||||
execute();
|
||||
|
||||
assertTapped(retreat, false);
|
||||
}
|
||||
|
||||
/**
|
||||
* Dwarven Mine enters the battlefield tapped unless you control three or more other Mountains.
|
||||
*/
|
||||
private static final String mine = "Dwarven Mine";
|
||||
|
||||
@Test
|
||||
public void test_EldraineAdamantLands_NotMet() {
|
||||
setStrictChooseMode(true);
|
||||
|
||||
addCard(Zone.HAND, playerA, mine);
|
||||
addCard(Zone.BATTLEFIELD, playerA, "Mountain", 2);
|
||||
|
||||
playLand(1, PhaseStep.PRECOMBAT_MAIN, playerA, mine);
|
||||
|
||||
setStopAt(1, PhaseStep.BEGIN_COMBAT);
|
||||
execute();
|
||||
|
||||
assertTapped(mine, true);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void test_EldraineAdamantLands_Met() {
|
||||
setStrictChooseMode(true);
|
||||
|
||||
addCard(Zone.HAND, playerA, mine);
|
||||
addCard(Zone.BATTLEFIELD, playerA, "Mountain", 3);
|
||||
|
||||
playLand(1, PhaseStep.PRECOMBAT_MAIN, playerA, mine);
|
||||
|
||||
setStopAt(1, PhaseStep.BEGIN_COMBAT);
|
||||
execute();
|
||||
|
||||
assertTapped(mine, false);
|
||||
}
|
||||
|
||||
/**
|
||||
* Barad-dûr enters the battlefield tapped unless you control a legendary creature.
|
||||
*/
|
||||
private static final String barad = "Barad-dur";
|
||||
|
||||
@Test
|
||||
public void test_LTRLegendary_NotMet() {
|
||||
setStrictChooseMode(true);
|
||||
|
||||
addCard(Zone.HAND, playerA, barad);
|
||||
addCard(Zone.BATTLEFIELD, playerA, "Memnite");
|
||||
|
||||
playLand(1, PhaseStep.PRECOMBAT_MAIN, playerA, barad);
|
||||
|
||||
setStopAt(1, PhaseStep.BEGIN_COMBAT);
|
||||
execute();
|
||||
|
||||
assertTapped(barad, true);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void test_LTRLegendary_Met() {
|
||||
setStrictChooseMode(true);
|
||||
|
||||
addCard(Zone.HAND, playerA, barad);
|
||||
addCard(Zone.BATTLEFIELD, playerA, "Six");
|
||||
|
||||
playLand(1, PhaseStep.PRECOMBAT_MAIN, playerA, barad);
|
||||
|
||||
setStopAt(1, PhaseStep.BEGIN_COMBAT);
|
||||
execute();
|
||||
|
||||
assertTapped(barad, false);
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,32 @@
|
|||
|
||||
package mage.abilities.common;
|
||||
|
||||
import mage.abilities.condition.Condition;
|
||||
import mage.abilities.decorator.ConditionalOneShotEffect;
|
||||
import mage.abilities.effects.common.TapSourceEffect;
|
||||
|
||||
/**
|
||||
* @author Susucr
|
||||
*/
|
||||
public class EntersBattlefieldTappedUnlessAbility extends EntersBattlefieldAbility {
|
||||
|
||||
public EntersBattlefieldTappedUnlessAbility(Condition condition) {
|
||||
this(condition, condition.toString());
|
||||
}
|
||||
|
||||
public EntersBattlefieldTappedUnlessAbility(Condition condition, String conditionText) {
|
||||
super(
|
||||
new ConditionalOneShotEffect(null, new TapSourceEffect(true), condition, null),
|
||||
"tapped unless " + conditionText
|
||||
);
|
||||
}
|
||||
|
||||
private EntersBattlefieldTappedUnlessAbility(final EntersBattlefieldTappedUnlessAbility ability) {
|
||||
super(ability);
|
||||
}
|
||||
|
||||
@Override
|
||||
public EntersBattlefieldTappedUnlessAbility copy() {
|
||||
return new EntersBattlefieldTappedUnlessAbility(this);
|
||||
}
|
||||
}
|
||||
|
|
@ -6,15 +6,15 @@ import mage.abilities.condition.Condition;
|
|||
import mage.game.Game;
|
||||
|
||||
public enum MyTurnCondition implements Condition {
|
||||
instance;
|
||||
instance;
|
||||
|
||||
@Override
|
||||
public boolean apply(Game game, Ability source) {
|
||||
return game.isActivePlayer(source.getControllerId());
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "during your turn";
|
||||
return "during your turn";
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -17,9 +17,9 @@ import mage.game.Game;
|
|||
*/
|
||||
public class PermanentsOnTheBattlefieldCondition implements Condition {
|
||||
|
||||
private final FilterPermanent filter;
|
||||
private final ComparisonType type;
|
||||
private final int count;
|
||||
protected final FilterPermanent filter;
|
||||
protected final ComparisonType type;
|
||||
protected final int count;
|
||||
private final boolean onlyControlled;
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -9,21 +9,20 @@ import java.util.Objects;
|
|||
/**
|
||||
* @author TheElk801
|
||||
*/
|
||||
public enum OneOpponentCondition implements Condition {
|
||||
|
||||
public enum TwoOrMoreOpponentsCondition implements Condition {
|
||||
instance;
|
||||
|
||||
|
||||
@Override
|
||||
public boolean apply(Game game, Ability source) {
|
||||
return game.getOpponents(source.getControllerId(), true)
|
||||
.stream()
|
||||
.map(game::getPlayer)
|
||||
.filter(Objects::nonNull)
|
||||
.count() <= 1;
|
||||
.count() >= 2;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "you have one opponent";
|
||||
return "you have two or more opponents";
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,59 @@
|
|||
package mage.abilities.condition.common;
|
||||
|
||||
import mage.abilities.hint.ConditionHint;
|
||||
import mage.abilities.hint.Hint;
|
||||
import mage.constants.ComparisonType;
|
||||
import mage.filter.FilterPermanent;
|
||||
import mage.util.CardUtil;
|
||||
|
||||
/**
|
||||
* PermanentsOnTheBattlefieldCondition with onlyControlled parameter at true
|
||||
* Separate as it has a name closer to card's text, so easier to find.
|
||||
*
|
||||
* @author Susucr
|
||||
*/
|
||||
public class YouControlPermanentCondition extends PermanentsOnTheBattlefieldCondition {
|
||||
|
||||
public Hint getHint() {
|
||||
return new ConditionHint(this);
|
||||
}
|
||||
|
||||
public YouControlPermanentCondition(FilterPermanent filter) {
|
||||
this(filter, ComparisonType.OR_GREATER, 1);
|
||||
}
|
||||
|
||||
public YouControlPermanentCondition(FilterPermanent filter, ComparisonType comparisonType, int count) {
|
||||
super(filter, comparisonType, count, true);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
String text = "you control ";
|
||||
String filterText = filter.getMessage();
|
||||
if (filterText.endsWith(" you control")) {
|
||||
filterText = filterText.substring(0, filterText.length() - " you control".length());
|
||||
}
|
||||
switch (type) {
|
||||
case OR_LESS:
|
||||
text += CardUtil.numberToText(count) + " or fewer " + filterText;
|
||||
break;
|
||||
case OR_GREATER:
|
||||
if (count == 1) {
|
||||
text += CardUtil.addArticle(filterText);
|
||||
} else {
|
||||
text += CardUtil.numberToText(count) + " or more " + filterText;
|
||||
}
|
||||
break;
|
||||
case EQUAL_TO:
|
||||
if (count == 0) {
|
||||
text += "no " + filterText;
|
||||
} else {
|
||||
text += "exactly " + CardUtil.numberToText(count) + " " + filterText;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
throw new IllegalArgumentException("Wrong code usage: ComparisonType not handled in text generation: " + type);
|
||||
}
|
||||
return text;
|
||||
}
|
||||
}
|
||||
|
|
@ -5,6 +5,7 @@ import mage.abilities.Mode;
|
|||
import mage.abilities.condition.Condition;
|
||||
import mage.abilities.effects.Effects;
|
||||
import mage.abilities.effects.OneShotEffect;
|
||||
import mage.constants.Outcome;
|
||||
import mage.game.Game;
|
||||
import mage.util.CardUtil;
|
||||
|
||||
|
|
@ -27,8 +28,18 @@ public class ConditionalOneShotEffect extends OneShotEffect {
|
|||
this(effect, null, condition, text);
|
||||
}
|
||||
|
||||
private static Outcome generateOutcome(OneShotEffect effect, OneShotEffect otherwiseEffect) {
|
||||
if (effect != null) {
|
||||
return effect.getOutcome();
|
||||
}
|
||||
if (otherwiseEffect != null) {
|
||||
return Outcome.inverse(otherwiseEffect.getOutcome());
|
||||
}
|
||||
throw new IllegalArgumentException("Wrong code usage: ConditionalOneShot should start with an effect to generate Outcome.");
|
||||
}
|
||||
|
||||
public ConditionalOneShotEffect(OneShotEffect effect, OneShotEffect otherwiseEffect, Condition condition, String text) {
|
||||
super(effect.getOutcome());
|
||||
super(generateOutcome(effect, otherwiseEffect));
|
||||
if (effect != null) {
|
||||
this.effects.add(effect);
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue