Implemented Griffin Aerie

This commit is contained in:
Evan Kranzler 2020-06-12 19:57:57 -04:00
parent 053214dcde
commit 0f75915b82
3 changed files with 51 additions and 13 deletions

View file

@ -0,0 +1,45 @@
package mage.cards.g;
import mage.abilities.common.BeginningOfEndStepTriggeredAbility;
import mage.abilities.condition.Condition;
import mage.abilities.condition.common.YouGainedLifeCondition;
import mage.abilities.decorator.ConditionalInterveningIfTriggeredAbility;
import mage.abilities.effects.common.CreateTokenEffect;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.ComparisonType;
import mage.constants.TargetController;
import mage.game.permanent.token.GriffinToken;
import mage.watchers.common.PlayerGainedLifeWatcher;
import java.util.UUID;
/**
* @author TheElk801
*/
public final class GriffinAerie extends CardImpl {
private static final Condition condition = new YouGainedLifeCondition(ComparisonType.MORE_THAN, 2);
public GriffinAerie(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{1}{W}");
// At the beginning of your end step, if you gained 3 or more life this turn, create a 2/2 white Griffin creature token with flying.
this.addAbility(new ConditionalInterveningIfTriggeredAbility(
new BeginningOfEndStepTriggeredAbility(
new CreateTokenEffect(new GriffinToken()), TargetController.YOU, false
), condition, "At the beginning of your end step, " +
"if you gained 3 or more life this turn, create a 2/2 white Griffin creature token with flying."
), new PlayerGainedLifeWatcher());
}
private GriffinAerie(final GriffinAerie card) {
super(card);
}
@Override
public GriffinAerie copy() {
return new GriffinAerie(this);
}
}

View file

@ -1,9 +1,9 @@
package mage.cards.i; package mage.cards.i;
import mage.MageInt; import mage.MageInt;
import mage.abilities.Ability;
import mage.abilities.common.BeginningOfEndStepTriggeredAbility; import mage.abilities.common.BeginningOfEndStepTriggeredAbility;
import mage.abilities.condition.Condition; import mage.abilities.condition.Condition;
import mage.abilities.condition.common.YouGainedLifeCondition;
import mage.abilities.decorator.ConditionalInterveningIfTriggeredAbility; import mage.abilities.decorator.ConditionalInterveningIfTriggeredAbility;
import mage.abilities.effects.common.LoseLifeOpponentsEffect; import mage.abilities.effects.common.LoseLifeOpponentsEffect;
import mage.abilities.keyword.FlyingAbility; import mage.abilities.keyword.FlyingAbility;
@ -11,9 +11,9 @@ import mage.abilities.keyword.LifelinkAbility;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.CardType; import mage.constants.CardType;
import mage.constants.ComparisonType;
import mage.constants.SubType; import mage.constants.SubType;
import mage.constants.TargetController; import mage.constants.TargetController;
import mage.game.Game;
import mage.watchers.common.PlayerGainedLifeWatcher; import mage.watchers.common.PlayerGainedLifeWatcher;
import java.util.UUID; import java.util.UUID;
@ -23,6 +23,8 @@ import java.util.UUID;
*/ */
public final class IndulgingPatrician extends CardImpl { public final class IndulgingPatrician extends CardImpl {
private static final Condition condition = new YouGainedLifeCondition(ComparisonType.MORE_THAN, 2);
public IndulgingPatrician(UUID ownerId, CardSetInfo setInfo) { public IndulgingPatrician(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{W}{B}"); super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{W}{B}");
@ -41,7 +43,7 @@ public final class IndulgingPatrician extends CardImpl {
this.addAbility(new ConditionalInterveningIfTriggeredAbility( this.addAbility(new ConditionalInterveningIfTriggeredAbility(
new BeginningOfEndStepTriggeredAbility( new BeginningOfEndStepTriggeredAbility(
new LoseLifeOpponentsEffect(3), TargetController.YOU, false new LoseLifeOpponentsEffect(3), TargetController.YOU, false
), IndulgingPatricianCondition.instance, "At the beginning of your end step, " + ), condition, "At the beginning of your end step, " +
"if you gained 3 or more life this turn, each opponent loses 3 life." "if you gained 3 or more life this turn, each opponent loses 3 life."
), new PlayerGainedLifeWatcher()); ), new PlayerGainedLifeWatcher());
} }
@ -55,13 +57,3 @@ public final class IndulgingPatrician extends CardImpl {
return new IndulgingPatrician(this); return new IndulgingPatrician(this);
} }
} }
enum IndulgingPatricianCondition implements Condition {
instance;
@Override
public boolean apply(Game game, Ability source) {
PlayerGainedLifeWatcher watcher = game.getState().getWatcher(PlayerGainedLifeWatcher.class);
return watcher != null && watcher.getLifeGained(source.getControllerId()) >= 3;
}
}

View file

@ -79,6 +79,7 @@ public final class CoreSet2021 extends ExpansionSet {
cards.add(new SetCardInfo("Garruk, Savage Herald", 336, Rarity.MYTHIC, mage.cards.g.GarrukSavageHerald.class)); cards.add(new SetCardInfo("Garruk, Savage Herald", 336, Rarity.MYTHIC, mage.cards.g.GarrukSavageHerald.class));
cards.add(new SetCardInfo("Goblin Arsonist", 147, Rarity.COMMON, mage.cards.g.GoblinArsonist.class)); cards.add(new SetCardInfo("Goblin Arsonist", 147, Rarity.COMMON, mage.cards.g.GoblinArsonist.class));
cards.add(new SetCardInfo("Grasp of Darkness", 102, Rarity.COMMON, mage.cards.g.GraspOfDarkness.class)); cards.add(new SetCardInfo("Grasp of Darkness", 102, Rarity.COMMON, mage.cards.g.GraspOfDarkness.class));
cards.add(new SetCardInfo("Griffin Aerie", 22, Rarity.UNCOMMON, mage.cards.g.GriffinAerie.class));
cards.add(new SetCardInfo("Grim Tutor", 103, Rarity.MYTHIC, mage.cards.g.GrimTutor.class)); cards.add(new SetCardInfo("Grim Tutor", 103, Rarity.MYTHIC, mage.cards.g.GrimTutor.class));
cards.add(new SetCardInfo("Havoc Jester", 149, Rarity.UNCOMMON, mage.cards.h.HavocJester.class)); cards.add(new SetCardInfo("Havoc Jester", 149, Rarity.UNCOMMON, mage.cards.h.HavocJester.class));
cards.add(new SetCardInfo("Heartfire Immolator", 150, Rarity.UNCOMMON, mage.cards.h.HeartfireImmolator.class)); cards.add(new SetCardInfo("Heartfire Immolator", 150, Rarity.UNCOMMON, mage.cards.h.HeartfireImmolator.class));