Added 2+ gates control hint for cards and other;

This commit is contained in:
Oleg Agafonov 2019-02-09 04:08:17 +04:00
parent 60a0ec03c0
commit 5d2a56e542
8 changed files with 108 additions and 58 deletions

View file

@ -4,6 +4,7 @@ import mage.abilities.Ability;
import mage.abilities.dynamicvalue.DynamicValue; import mage.abilities.dynamicvalue.DynamicValue;
import mage.abilities.effects.Effect; import mage.abilities.effects.Effect;
import mage.abilities.effects.common.CreateTokenEffect; import mage.abilities.effects.common.CreateTokenEffect;
import mage.abilities.hint.ValueHint;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.CardType; import mage.constants.CardType;
@ -27,6 +28,7 @@ public final class GoblinGathering extends CardImpl {
this.getSpellAbility().addEffect(new CreateTokenEffect( this.getSpellAbility().addEffect(new CreateTokenEffect(
new GoblinToken(), GoblinGatheringDynamicValue.instance new GoblinToken(), GoblinGatheringDynamicValue.instance
)); ));
this.getSpellAbility().addHint(new ValueHint("You can create tokens", GoblinGatheringDynamicValue.instance));
} }
private GoblinGathering(final GoblinGathering card) { private GoblinGathering(final GoblinGathering card) {

View file

@ -1,18 +1,16 @@
package mage.cards.m; package mage.cards.m;
import java.util.ArrayList;
import java.util.List;
import java.util.UUID;
import mage.abilities.Ability; import mage.abilities.Ability;
import mage.abilities.common.EntersBattlefieldTappedAbility; import mage.abilities.common.EntersBattlefieldTappedAbility;
import mage.abilities.common.SimpleActivatedAbility; import mage.abilities.common.SimpleActivatedAbility;
import mage.abilities.costs.common.ReturnToHandFromBattlefieldSourceCost; import mage.abilities.costs.common.ReturnToHandFromBattlefieldSourceCost;
import mage.abilities.costs.common.TapSourceCost; import mage.abilities.costs.common.TapSourceCost;
import mage.abilities.costs.mana.GenericManaCost; import mage.abilities.costs.mana.GenericManaCost;
import mage.abilities.dynamicvalue.DynamicValue;
import mage.abilities.effects.Effect;
import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.OneShotEffect;
import mage.abilities.effects.common.search.SearchLibraryPutInPlayEffect; import mage.abilities.effects.common.search.SearchLibraryPutInPlayEffect;
import mage.abilities.hint.ValueHint;
import mage.abilities.mana.ColorlessManaAbility; import mage.abilities.mana.ColorlessManaAbility;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
@ -27,20 +25,24 @@ import mage.game.permanent.Permanent;
import mage.players.Player; import mage.players.Player;
import mage.target.common.TargetCardInLibrary; import mage.target.common.TargetCardInLibrary;
import java.util.ArrayList;
import java.util.List;
import java.util.UUID;
/** /**
*
* @author LevelX2 * @author LevelX2
*/ */
public final class MazesEnd extends CardImpl { public final class MazesEnd extends CardImpl {
private static final FilterCard filterCard = new FilterCard("Gate card"); private static final FilterCard filterCard = new FilterCard("Gate card");
static { static {
filterCard.add(new SubtypePredicate(SubType.GATE)); filterCard.add(new SubtypePredicate(SubType.GATE));
} }
public MazesEnd(UUID ownerId, CardSetInfo setInfo) { public MazesEnd(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},""); super(ownerId, setInfo, new CardType[]{CardType.LAND}, "");
// Maze's End enters the battlefield tapped. // Maze's End enters the battlefield tapped.
@ -54,8 +56,8 @@ public final class MazesEnd extends CardImpl {
ability.addEffect(new MazesEndEffect()); ability.addEffect(new MazesEndEffect());
ability.addCost(new TapSourceCost()); ability.addCost(new TapSourceCost());
ability.addCost(new ReturnToHandFromBattlefieldSourceCost()); ability.addCost(new ReturnToHandFromBattlefieldSourceCost());
ability.addHint(new ValueHint("Gates with different names you control", GatesWithDifferentNamesYouControlCount.instance));
this.addAbility(ability); this.addAbility(ability);
} }
public MazesEnd(final MazesEnd card) { public MazesEnd(final MazesEnd card) {
@ -68,6 +70,40 @@ public final class MazesEnd extends CardImpl {
} }
} }
enum GatesWithDifferentNamesYouControlCount implements DynamicValue {
instance;
@Override
public int calculate(Game game, Ability sourceAbility, Effect effect) {
List<String> names = new ArrayList<>();
for (Permanent permanent : game.getBattlefield().getAllActivePermanents(sourceAbility.getControllerId())) {
if (permanent.hasSubtype(SubType.GATE, game)) {
if (!names.contains(permanent.getName())) {
names.add(permanent.getName());
}
}
}
return names.size();
}
@Override
public GatesWithDifferentNamesYouControlCount copy() {
return instance;
}
@Override
public String toString() {
return "X";
}
@Override
public String getMessage() {
return "Gates with different names you control";
}
}
class MazesEndEffect extends OneShotEffect { class MazesEndEffect extends OneShotEffect {
public MazesEndEffect() { public MazesEndEffect() {
@ -86,15 +122,8 @@ class MazesEndEffect extends OneShotEffect {
@Override @Override
public boolean apply(Game game, Ability source) { public boolean apply(Game game, Ability source) {
List<String> names = new ArrayList<>(); int count = GatesWithDifferentNamesYouControlCount.instance.calculate(game, source, this);
for (Permanent permanent : game.getBattlefield().getAllActivePermanents(source.getControllerId())) { if (count >= 10) {
if (permanent.hasSubtype(SubType.GATE, game)) {
if (!names.contains(permanent.getName())) {
names.add(permanent.getName());
}
}
}
if (names.size() >= 10) {
Player controller = game.getPlayer(source.getControllerId()); Player controller = game.getPlayer(source.getControllerId());
if (controller != null) { if (controller != null) {
controller.won(game); controller.won(game);
@ -102,5 +131,4 @@ class MazesEndEffect extends OneShotEffect {
} }
return false; return false;
} }
} }

View file

@ -1,13 +1,12 @@
package mage.cards.o; package mage.cards.o;
import java.util.UUID;
import mage.MageInt; import mage.MageInt;
import mage.abilities.common.EntersBattlefieldTriggeredAbility; import mage.abilities.common.EntersBattlefieldTriggeredAbility;
import mage.abilities.condition.Condition;
import mage.abilities.condition.common.PermanentsOnTheBattlefieldCondition; import mage.abilities.condition.common.PermanentsOnTheBattlefieldCondition;
import mage.abilities.decorator.ConditionalInterveningIfTriggeredAbility; import mage.abilities.decorator.ConditionalInterveningIfTriggeredAbility;
import mage.abilities.effects.common.DrawCardSourceControllerEffect; import mage.abilities.effects.common.DrawCardSourceControllerEffect;
import mage.abilities.hint.ConditionHint;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.CardType; import mage.constants.CardType;
@ -16,8 +15,9 @@ import mage.constants.SubType;
import mage.filter.common.FilterControlledPermanent; import mage.filter.common.FilterControlledPermanent;
import mage.filter.predicate.mageobject.SubtypePredicate; import mage.filter.predicate.mageobject.SubtypePredicate;
import java.util.UUID;
/** /**
*
* @author LevelX2 * @author LevelX2
*/ */
@ -25,12 +25,15 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
public final class OpalLakeGatekeepers extends CardImpl { public final class OpalLakeGatekeepers extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent(); private static final FilterControlledPermanent filter = new FilterControlledPermanent();
static { static {
filter.add(new SubtypePredicate(SubType.GATE)); filter.add(new SubtypePredicate(SubType.GATE));
} }
public OpalLakeGatekeepers (UUID ownerId, CardSetInfo setInfo) { private static final Condition gatesCondition = new PermanentsOnTheBattlefieldCondition(filter, ComparisonType.MORE_THAN, 1);
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{U}");
public OpalLakeGatekeepers(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{U}");
this.subtype.add(SubType.VEDALKEN); this.subtype.add(SubType.VEDALKEN);
this.subtype.add(SubType.SOLDIER); this.subtype.add(SubType.SOLDIER);
@ -40,11 +43,12 @@ public final class OpalLakeGatekeepers extends CardImpl {
// When Opal Lake Gatekeepers enters the battlefield, if you control two or more Gates, you may draw a card. // When Opal Lake Gatekeepers enters the battlefield, if you control two or more Gates, you may draw a card.
this.addAbility(new ConditionalInterveningIfTriggeredAbility( this.addAbility(new ConditionalInterveningIfTriggeredAbility(
new EntersBattlefieldTriggeredAbility(new DrawCardSourceControllerEffect(1)), new EntersBattlefieldTriggeredAbility(new DrawCardSourceControllerEffect(1)),
new PermanentsOnTheBattlefieldCondition(filter, ComparisonType.MORE_THAN, 1), gatesCondition,
"When Opal Lake Gatekeepers enters the battlefield, if you control two or more Gates, you may draw a card.")); "When Opal Lake Gatekeepers enters the battlefield, if you control two or more Gates, you may draw a card.")
.addHint(new ConditionHint(gatesCondition, "You control two or more Gates")));
} }
public OpalLakeGatekeepers (final OpalLakeGatekeepers card) { public OpalLakeGatekeepers(final OpalLakeGatekeepers card) {
super(card); super(card);
} }

View file

@ -5,6 +5,7 @@ import mage.abilities.condition.Condition;
import mage.abilities.condition.common.PermanentsOnTheBattlefieldCondition; import mage.abilities.condition.common.PermanentsOnTheBattlefieldCondition;
import mage.abilities.decorator.ConditionalInterveningIfTriggeredAbility; import mage.abilities.decorator.ConditionalInterveningIfTriggeredAbility;
import mage.abilities.effects.common.GainLifeEffect; import mage.abilities.effects.common.GainLifeEffect;
import mage.abilities.hint.ConditionHint;
import mage.abilities.mana.AnyColorLandsProduceManaAbility; import mage.abilities.mana.AnyColorLandsProduceManaAbility;
import mage.abilities.mana.ColorlessManaAbility; import mage.abilities.mana.ColorlessManaAbility;
import mage.cards.CardImpl; import mage.cards.CardImpl;
@ -42,7 +43,7 @@ public final class PlazaOfHarmony extends CardImpl {
new EntersBattlefieldTriggeredAbility(new GainLifeEffect(3)), new EntersBattlefieldTriggeredAbility(new GainLifeEffect(3)),
condition, "When {this} enters the battlefield, " + condition, "When {this} enters the battlefield, " +
"if you control two or more Gates, you gain 3 life." "if you control two or more Gates, you gain 3 life."
)); ).addHint(new ConditionHint(condition, "You control two or more Gates")));
// {T}: Add {C}. // {T}: Add {C}.
this.addAbility(new ColorlessManaAbility()); this.addAbility(new ColorlessManaAbility());

View file

@ -1,13 +1,12 @@
package mage.cards.s; package mage.cards.s;
import java.util.UUID;
import mage.MageInt; import mage.MageInt;
import mage.abilities.common.EntersBattlefieldTriggeredAbility; import mage.abilities.common.EntersBattlefieldTriggeredAbility;
import mage.abilities.condition.Condition;
import mage.abilities.condition.common.PermanentsOnTheBattlefieldCondition; import mage.abilities.condition.common.PermanentsOnTheBattlefieldCondition;
import mage.abilities.decorator.ConditionalInterveningIfTriggeredAbility; import mage.abilities.decorator.ConditionalInterveningIfTriggeredAbility;
import mage.abilities.effects.common.GainLifeEffect; import mage.abilities.effects.common.GainLifeEffect;
import mage.abilities.hint.ConditionHint;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.CardType; import mage.constants.CardType;
@ -16,8 +15,9 @@ import mage.constants.SubType;
import mage.filter.common.FilterControlledPermanent; import mage.filter.common.FilterControlledPermanent;
import mage.filter.predicate.mageobject.SubtypePredicate; import mage.filter.predicate.mageobject.SubtypePredicate;
import java.util.UUID;
/** /**
*
* @author LevelX2 * @author LevelX2
*/ */
@ -25,12 +25,15 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
public final class SaruliGatekeepers extends CardImpl { public final class SaruliGatekeepers extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent(); private static final FilterControlledPermanent filter = new FilterControlledPermanent();
static { static {
filter.add(new SubtypePredicate(SubType.GATE)); filter.add(new SubtypePredicate(SubType.GATE));
} }
public SaruliGatekeepers (UUID ownerId, CardSetInfo setInfo) { private static final Condition gatesCondition = new PermanentsOnTheBattlefieldCondition(filter, ComparisonType.MORE_THAN, 1);
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G}");
public SaruliGatekeepers(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{G}");
this.subtype.add(SubType.ELF); this.subtype.add(SubType.ELF);
this.subtype.add(SubType.WARRIOR); this.subtype.add(SubType.WARRIOR);
@ -40,11 +43,12 @@ public final class SaruliGatekeepers extends CardImpl {
// When Saruli Gatekeepers enters the battlefield, if you control two or more Gates, gain 7 life. // When Saruli Gatekeepers enters the battlefield, if you control two or more Gates, gain 7 life.
this.addAbility(new ConditionalInterveningIfTriggeredAbility( this.addAbility(new ConditionalInterveningIfTriggeredAbility(
new EntersBattlefieldTriggeredAbility(new GainLifeEffect(7)), new EntersBattlefieldTriggeredAbility(new GainLifeEffect(7)),
new PermanentsOnTheBattlefieldCondition(filter, ComparisonType.MORE_THAN, 1), gatesCondition,
"When {this} enters the battlefield, if you control two or more Gates, gain 7 life.")); "When {this} enters the battlefield, if you control two or more Gates, gain 7 life.")
.addHint(new ConditionHint(gatesCondition, "You control two or more Gates")));
} }
public SaruliGatekeepers (final SaruliGatekeepers card) { public SaruliGatekeepers(final SaruliGatekeepers card) {
super(card); super(card);
} }

View file

@ -1,16 +1,15 @@
package mage.cards.s; package mage.cards.s;
import java.util.UUID;
import mage.MageInt; import mage.MageInt;
import mage.abilities.Ability; import mage.abilities.Ability;
import mage.abilities.common.EntersBattlefieldTriggeredAbility; import mage.abilities.common.EntersBattlefieldTriggeredAbility;
import mage.abilities.condition.Condition;
import mage.abilities.condition.common.PermanentsOnTheBattlefieldCondition; import mage.abilities.condition.common.PermanentsOnTheBattlefieldCondition;
import mage.abilities.decorator.ConditionalInterveningIfTriggeredAbility; import mage.abilities.decorator.ConditionalInterveningIfTriggeredAbility;
import mage.abilities.effects.common.UntapTargetEffect; import mage.abilities.effects.common.UntapTargetEffect;
import mage.abilities.effects.common.continuous.GainAbilityTargetEffect; import mage.abilities.effects.common.continuous.GainAbilityTargetEffect;
import mage.abilities.effects.common.continuous.GainControlTargetEffect; import mage.abilities.effects.common.continuous.GainControlTargetEffect;
import mage.abilities.hint.ConditionHint;
import mage.abilities.keyword.HasteAbility; import mage.abilities.keyword.HasteAbility;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
@ -22,8 +21,9 @@ import mage.filter.predicate.permanent.ControllerPredicate;
import mage.target.Target; import mage.target.Target;
import mage.target.common.TargetCreaturePermanent; import mage.target.common.TargetCreaturePermanent;
import java.util.UUID;
/** /**
*
* @author LevelX2 * @author LevelX2
*/ */
@ -32,13 +32,16 @@ public final class SmeltWardGatekeepers extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent(); private static final FilterControlledPermanent filter = new FilterControlledPermanent();
private static final FilterCreaturePermanent targetFilter = new FilterCreaturePermanent("creature an opponent controls"); private static final FilterCreaturePermanent targetFilter = new FilterCreaturePermanent("creature an opponent controls");
static { static {
filter.add(new SubtypePredicate(SubType.GATE)); filter.add(new SubtypePredicate(SubType.GATE));
targetFilter.add(new ControllerPredicate(TargetController.OPPONENT)); targetFilter.add(new ControllerPredicate(TargetController.OPPONENT));
} }
public SmeltWardGatekeepers (UUID ownerId, CardSetInfo setInfo) { private static final Condition gatesCondition = new PermanentsOnTheBattlefieldCondition(filter, ComparisonType.MORE_THAN, 1);
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{R}");
public SmeltWardGatekeepers(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{R}");
this.subtype.add(SubType.HUMAN); this.subtype.add(SubType.HUMAN);
this.subtype.add(SubType.WARRIOR); this.subtype.add(SubType.WARRIOR);
@ -48,16 +51,17 @@ public final class SmeltWardGatekeepers extends CardImpl {
// When Smelt-Ward Gatekeepers enters the battlefield, if you control two or more Gates, gain control of target creature an opponent controls until end of turn. Untap that creature. That creature gains haste until end of turn. // When Smelt-Ward Gatekeepers enters the battlefield, if you control two or more Gates, gain control of target creature an opponent controls until end of turn. Untap that creature. That creature gains haste until end of turn.
Ability ability = new ConditionalInterveningIfTriggeredAbility( Ability ability = new ConditionalInterveningIfTriggeredAbility(
new EntersBattlefieldTriggeredAbility(new GainControlTargetEffect(Duration.EndOfTurn)), new EntersBattlefieldTriggeredAbility(new GainControlTargetEffect(Duration.EndOfTurn)),
new PermanentsOnTheBattlefieldCondition(filter, ComparisonType.MORE_THAN, 1), gatesCondition,
"When {this} enters the battlefield, if you control two or more Gates, gain control of target creature an opponent controls until end of turn. Untap that creature. That creature gains haste until end of turn."); "When {this} enters the battlefield, if you control two or more Gates, gain control of target creature an opponent controls until end of turn. Untap that creature. That creature gains haste until end of turn.");
ability.addEffect(new UntapTargetEffect()); ability.addEffect(new UntapTargetEffect());
ability.addEffect(new GainAbilityTargetEffect(HasteAbility.getInstance(), Duration.EndOfTurn)); ability.addEffect(new GainAbilityTargetEffect(HasteAbility.getInstance(), Duration.EndOfTurn));
Target target = new TargetCreaturePermanent(targetFilter); Target target = new TargetCreaturePermanent(targetFilter);
ability.addTarget(target); ability.addTarget(target);
ability.addHint(new ConditionHint(gatesCondition, "You control two or more Gates"));
this.addAbility(ability); this.addAbility(ability);
} }
public SmeltWardGatekeepers (final SmeltWardGatekeepers card) { public SmeltWardGatekeepers(final SmeltWardGatekeepers card) {
super(card); super(card);
} }

View file

@ -1,12 +1,12 @@
package mage.cards.s; package mage.cards.s;
import mage.MageInt; import mage.MageInt;
import mage.abilities.common.EntersBattlefieldTriggeredAbility; import mage.abilities.common.EntersBattlefieldTriggeredAbility;
import mage.abilities.condition.Condition;
import mage.abilities.condition.common.PermanentsOnTheBattlefieldCondition; import mage.abilities.condition.common.PermanentsOnTheBattlefieldCondition;
import mage.abilities.decorator.ConditionalInterveningIfTriggeredAbility; import mage.abilities.decorator.ConditionalInterveningIfTriggeredAbility;
import mage.abilities.effects.common.CreateTokenEffect; import mage.abilities.effects.common.CreateTokenEffect;
import mage.abilities.hint.ConditionHint;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.CardType; import mage.constants.CardType;
@ -19,7 +19,6 @@ import mage.game.permanent.token.KnightToken;
import java.util.UUID; import java.util.UUID;
/** /**
*
* @author LevelX2 * @author LevelX2
*/ */
@ -27,12 +26,15 @@ import java.util.UUID;
public final class SunspireGatekeepers extends CardImpl { public final class SunspireGatekeepers extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent(); private static final FilterControlledPermanent filter = new FilterControlledPermanent();
static { static {
filter.add(new SubtypePredicate(SubType.GATE)); filter.add(new SubtypePredicate(SubType.GATE));
} }
public SunspireGatekeepers (UUID ownerId, CardSetInfo setInfo) { private static final Condition gatesCondition = new PermanentsOnTheBattlefieldCondition(filter, ComparisonType.MORE_THAN, 1);
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{W}");
public SunspireGatekeepers(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{W}");
this.subtype.add(SubType.HUMAN); this.subtype.add(SubType.HUMAN);
this.subtype.add(SubType.SOLDIER); this.subtype.add(SubType.SOLDIER);
@ -42,11 +44,12 @@ public final class SunspireGatekeepers extends CardImpl {
// When Sunspire Gatekeepers enter the battlefield, if you control two or more Gates, create a 2/2 white Knight creature token with vigilance. // When Sunspire Gatekeepers enter the battlefield, if you control two or more Gates, create a 2/2 white Knight creature token with vigilance.
this.addAbility(new ConditionalInterveningIfTriggeredAbility( this.addAbility(new ConditionalInterveningIfTriggeredAbility(
new EntersBattlefieldTriggeredAbility(new CreateTokenEffect(new KnightToken())), new EntersBattlefieldTriggeredAbility(new CreateTokenEffect(new KnightToken())),
new PermanentsOnTheBattlefieldCondition(filter, ComparisonType.MORE_THAN, 1), gatesCondition,
"When {this} enters the battlefield, if you control two or more Gates, create a 2/2 white Knight creature token with vigilance.")); "When {this} enters the battlefield, if you control two or more Gates, create a 2/2 white Knight creature token with vigilance.")
.addHint(new ConditionHint(gatesCondition, "you control two or more Gates")));
} }
public SunspireGatekeepers (final SunspireGatekeepers card) { public SunspireGatekeepers(final SunspireGatekeepers card) {
super(card); super(card);
} }

View file

@ -1,13 +1,13 @@
package mage.cards.u; package mage.cards.u;
import java.util.UUID;
import mage.MageInt; import mage.MageInt;
import mage.abilities.Ability; import mage.abilities.Ability;
import mage.abilities.common.EntersBattlefieldTriggeredAbility; import mage.abilities.common.EntersBattlefieldTriggeredAbility;
import mage.abilities.condition.Condition;
import mage.abilities.condition.common.PermanentsOnTheBattlefieldCondition; import mage.abilities.condition.common.PermanentsOnTheBattlefieldCondition;
import mage.abilities.decorator.ConditionalInterveningIfTriggeredAbility; import mage.abilities.decorator.ConditionalInterveningIfTriggeredAbility;
import mage.abilities.effects.common.continuous.BoostTargetEffect; import mage.abilities.effects.common.continuous.BoostTargetEffect;
import mage.abilities.hint.ConditionHint;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.*; import mage.constants.*;
@ -18,8 +18,9 @@ import mage.filter.predicate.permanent.ControllerPredicate;
import mage.target.Target; import mage.target.Target;
import mage.target.common.TargetCreaturePermanent; import mage.target.common.TargetCreaturePermanent;
import java.util.UUID;
/** /**
*
* @author LevelX2 * @author LevelX2
*/ */
public final class UbulSarGatekeepers extends CardImpl { public final class UbulSarGatekeepers extends CardImpl {
@ -32,8 +33,10 @@ public final class UbulSarGatekeepers extends CardImpl {
targetFilter.add(new ControllerPredicate(TargetController.OPPONENT)); targetFilter.add(new ControllerPredicate(TargetController.OPPONENT));
} }
private static final Condition gatesCondition = new PermanentsOnTheBattlefieldCondition(filter, ComparisonType.MORE_THAN, 1);
public UbulSarGatekeepers(UUID ownerId, CardSetInfo setInfo) { public UbulSarGatekeepers(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{B}"); super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{B}");
this.subtype.add(SubType.ZOMBIE); this.subtype.add(SubType.ZOMBIE);
this.subtype.add(SubType.SOLDIER); this.subtype.add(SubType.SOLDIER);
@ -43,10 +46,11 @@ public final class UbulSarGatekeepers extends CardImpl {
// Whenever Ubul Sar Gatekeepers enters the battlefield, if you control two or more Gates, target creature an opponent controls gets -2/-2 until end of turn. // Whenever Ubul Sar Gatekeepers enters the battlefield, if you control two or more Gates, target creature an opponent controls gets -2/-2 until end of turn.
Ability ability = new ConditionalInterveningIfTriggeredAbility( Ability ability = new ConditionalInterveningIfTriggeredAbility(
new EntersBattlefieldTriggeredAbility(new BoostTargetEffect(-2, -2, Duration.EndOfTurn)), new EntersBattlefieldTriggeredAbility(new BoostTargetEffect(-2, -2, Duration.EndOfTurn)),
new PermanentsOnTheBattlefieldCondition(filter, ComparisonType.MORE_THAN, 1), gatesCondition,
"Whenever {this} enters the battlefield, if you control two or more Gates, target creature an opponent controls gets -2/-2 until end of turn."); "Whenever {this} enters the battlefield, if you control two or more Gates, target creature an opponent controls gets -2/-2 until end of turn.");
Target target = new TargetCreaturePermanent(targetFilter); Target target = new TargetCreaturePermanent(targetFilter);
ability.addTarget(target); ability.addTarget(target);
ability.addHint(new ConditionHint(gatesCondition, "You control two or more Gates"));
this.addAbility(ability); this.addAbility(ability);
} }