[NEO] Implemented Azusa's Many Journeys / Likeness of the Seeker

This commit is contained in:
Daniel Bomar 2022-02-03 14:04:48 -06:00
parent 94b1472ad6
commit 8477260070
No known key found for this signature in database
GPG key ID: C86C8658F4023918
4 changed files with 109 additions and 3 deletions

View file

@ -0,0 +1,53 @@
package mage.cards.a;
import java.util.UUID;
import mage.abilities.common.SagaAbility;
import mage.abilities.effects.common.ExileSagaAndReturnTransformedEffect;
import mage.abilities.effects.common.GainLifeEffect;
import mage.abilities.effects.common.continuous.PlayAdditionalLandsControllerEffect;
import mage.abilities.keyword.TransformAbility;
import mage.constants.Duration;
import mage.constants.SagaChapter;
import mage.constants.SubType;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
/**
*
* @author weirddan455
*/
public final class AzusasManyJourneys extends CardImpl {
public AzusasManyJourneys(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{1}{G}");
this.subtype.add(SubType.SAGA);
this.secondSideCardClazz = mage.cards.l.LikenessOfTheSeeker.class;
// (As this Saga enters and after your draw step, add a lore counter.)
SagaAbility sagaAbility = new SagaAbility(this);
// I You may play an additional land this turn.
sagaAbility.addChapterEffect(this, SagaChapter.CHAPTER_I, new PlayAdditionalLandsControllerEffect(1, Duration.EndOfTurn));
// II You gain 3 life.
sagaAbility.addChapterEffect(this, SagaChapter.CHAPTER_II, new GainLifeEffect(3));
// III Exile this Saga, then return it to the battlefield transformed under your control.
this.addAbility(new TransformAbility());
sagaAbility.addChapterEffect(this, SagaChapter.CHAPTER_III, new ExileSagaAndReturnTransformedEffect());
this.addAbility(sagaAbility);
}
private AzusasManyJourneys(final AzusasManyJourneys card) {
super(card);
}
@Override
public AzusasManyJourneys copy() {
return new AzusasManyJourneys(this);
}
}

View file

@ -0,0 +1,40 @@
package mage.cards.l;
import java.util.UUID;
import mage.MageInt;
import mage.abilities.common.BecomesBlockedSourceTriggeredAbility;
import mage.abilities.effects.common.UntapLandsEffect;
import mage.constants.SubType;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
/**
*
* @author weirddan455
*/
public final class LikenessOfTheSeeker extends CardImpl {
public LikenessOfTheSeeker(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT, CardType.CREATURE}, "");
this.subtype.add(SubType.HUMAN);
this.subtype.add(SubType.MONK);
this.power = new MageInt(3);
this.toughness = new MageInt(3);
this.color.setGreen(true);
this.nightCard = true;
// Whenever Likeness of the Seeker becomes blocked, untap up to three lands you control.
this.addAbility(new BecomesBlockedSourceTriggeredAbility(new UntapLandsEffect(3, true, true), false));
}
private LikenessOfTheSeeker(final LikenessOfTheSeeker card) {
super(card);
}
@Override
public LikenessOfTheSeeker copy() {
return new LikenessOfTheSeeker(this);
}
}

View file

@ -38,6 +38,7 @@ public final class KamigawaNeonDynasty extends ExpansionSet {
cards.add(new SetCardInfo("Assassin's Ink", 87, Rarity.UNCOMMON, mage.cards.a.AssassinsInk.class));
cards.add(new SetCardInfo("Atsushi, the Blazing Sky", 134, Rarity.MYTHIC, mage.cards.a.AtsushiTheBlazingSky.class));
cards.add(new SetCardInfo("Awakened Awareness", 47, Rarity.UNCOMMON, mage.cards.a.AwakenedAwareness.class));
cards.add(new SetCardInfo("Azusa's Many Journeys", 172, Rarity.UNCOMMON, mage.cards.a.AzusasManyJourneys.class));
cards.add(new SetCardInfo("Bamboo Grove Archer", 173, Rarity.COMMON, mage.cards.b.BambooGroveArcher.class));
cards.add(new SetCardInfo("Banishing Slash", 3, Rarity.UNCOMMON, mage.cards.b.BanishingSlash.class));
cards.add(new SetCardInfo("Befriending the Moths", 4, Rarity.COMMON, mage.cards.b.BefriendingTheMoths.class));
@ -94,6 +95,7 @@ public final class KamigawaNeonDynasty extends ExpansionSet {
cards.add(new SetCardInfo("Leech Gauntlet", 106, Rarity.UNCOMMON, mage.cards.l.LeechGauntlet.class));
cards.add(new SetCardInfo("Life of Toshiro Umezawa", 108, Rarity.UNCOMMON, mage.cards.l.LifeOfToshiroUmezawa.class));
cards.add(new SetCardInfo("Light the Way", 24, Rarity.COMMON, mage.cards.l.LightTheWay.class));
cards.add(new SetCardInfo("Likeness of the Seeker", 172, Rarity.UNCOMMON, mage.cards.l.LikenessOfTheSeeker.class));
cards.add(new SetCardInfo("Lion Sash", 26, Rarity.RARE, mage.cards.l.LionSash.class));
cards.add(new SetCardInfo("Lizard Blades", 153, Rarity.RARE, mage.cards.l.LizardBlades.class));
cards.add(new SetCardInfo("Malicious Malfunction", 110, Rarity.UNCOMMON, mage.cards.m.MaliciousMalfunction.class));

View file

@ -4,6 +4,7 @@ import java.util.UUID;
import mage.abilities.Ability;
import mage.abilities.effects.OneShotEffect;
import mage.constants.Outcome;
import mage.constants.TargetController;
import mage.filter.common.FilterLandPermanent;
import mage.filter.predicate.permanent.TappedPredicate;
import mage.game.Game;
@ -17,11 +18,15 @@ import mage.util.CardUtil;
*/
public class UntapLandsEffect extends OneShotEffect {
private static final FilterLandPermanent filter = new FilterLandPermanent("land(s) to untap");
private static final FilterLandPermanent filterAll = new FilterLandPermanent("land(s) to untap");
private static final FilterLandPermanent filterControlled = new FilterLandPermanent("land(s) to untap");
static {
filter.add(TappedPredicate.TAPPED);
filterAll.add(TappedPredicate.TAPPED);
filterControlled.add(TappedPredicate.TAPPED);
filterControlled.add(TargetController.YOU.getControllerPredicate());
}
private final FilterLandPermanent filter;
private final int amount;
private final boolean upTo;
@ -30,16 +35,22 @@ public class UntapLandsEffect extends OneShotEffect {
}
public UntapLandsEffect(int amount, boolean upTo) {
this(amount, upTo, false);
}
public UntapLandsEffect(int amount, boolean upTo, boolean onlyControlled) {
super(Outcome.Untap);
this.amount = amount;
this.upTo = upTo;
staticText = "untap " + (upTo ? "up to " : "") + CardUtil.numberToText(amount, staticText) + " lands";
this.filter = onlyControlled ? filterControlled : filterAll;
staticText = "untap " + (upTo ? "up to " : "") + CardUtil.numberToText(amount, staticText) + " lands" + (onlyControlled ? " you control" : "");
}
public UntapLandsEffect(final UntapLandsEffect effect) {
super(effect);
this.amount = effect.amount;
this.upTo = effect.upTo;
this.filter = effect.filter;
}
@Override